• דף הבית
    • אינדקס קישורים
    • פוסטים אחרונים
    • משתמשים
    • חיפוש בהגדרות המתקדמות
    • חיפוש גוגל בפורום
    • ניהול המערכת
    • ניהול המערכת - שרת private
    • הרשמה
    • התחברות

    סקריפט לתזמון עדכון שבועי של הIP של Cloudflare

    מתוזמן נעוץ נעול הועבר פורום מפתחים API
    1 פוסטים 1 כותבים 7 צפיות 1 עוקבים
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • תגובה כנושא
    התחברו כדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • י מנותק
      יעקב יצחק
      נערך לאחרונה על ידי יעקב יצחק

      עריכה: כאן יש משהו דומה.

      #!/bin/bash
      
      # ==============================================
      # ONLYCF - Cloudflare IP Firewall Manager
      # ==============================================
      # תיאור: סקריפט לעדכון אוטומטי של חומת האש
      #         כך שרק תעבורה משרתי Cloudflare תתקבל.
      #         תומך ב- UFW ו- iptables.
      # ==============================================
      
      # צבעים לפלט
      RED='\033[0;31m'
      GREEN='\033[0;32m'
      YELLOW='\033[1;33m'
      BLUE='\033[0;34m'
      NC='\033[0m' # No Color
      
      # משתני ברירת מחדל
      FIREWALL="ufw"  # או iptables
      PORTS="80,443"
      IPV4_URL="https://www.cloudflare.com/ips-v4"
      IPV6_URL="https://www.cloudflare.com/ips-v6"
      
      # ==============================================
      # פונקציות עזר
      # ==============================================
      
      print_info() {
          echo -e "${BLUE}[INFO]${NC} $1"
      }
      
      print_success() {
          echo -e "${GREEN}[SUCCESS]${NC} $1"
      }
      
      print_error() {
          echo -e "${RED}[ERROR]${NC} $1"
      }
      
      print_warning() {
          echo -e "${YELLOW}[WARNING]${NC} $1"
      }
      
      # בדיקת הרשאות root
      check_root() {
          if [[ $EUID -ne 0 ]]; then
              print_error "יש להריץ את הסקריפט עם הרשאות root (sudo)"
              exit 1
          fi
      }
      
      # בדיקת תלות
      check_dependencies() {
          local deps=("curl" "grep" "awk")
          for dep in "${deps[@]}"; do
              if ! command -v $dep &> /dev/null; then
                  print_error "הפקודה $dep לא נמצאה. אנא התקן אותה."
                  exit 1
              fi
          done
      
          if [[ "$FIREWALL" == "ufw" ]] && ! command -v ufw &> /dev/null; then
              print_error "UFW לא נמצא. התקן עם: apt install ufw"
              exit 1
          fi
      
          if [[ "$FIREWALL" == "iptables" ]] && ! command -v iptables &> /dev/null; then
              print_error "iptables לא נמצא."
              exit 1
          fi
      }
      
      # ==============================================
      # פונקציות עיקריות
      # ==============================================
      
      # הורדת רשימת ה-IP
      fetch_cloudflare_ips() {
          local temp_dir=$(mktemp -d)
          local ipv4_file="$temp_dir/ips-v4"
          local ipv6_file="$temp_dir/ips-v6"
      
          print_info "מוריד רשימות IP מ-Cloudflare..."
      
          if ! curl -s "$IPV4_URL" -o "$ipv4_file"; then
              print_error "נכשל בהורדת רשימת IPv4"
              rm -rf "$temp_dir"
              exit 1
          fi
      
          if ! curl -s "$IPV6_URL" -o "$ipv6_file"; then
              print_error "נכשל בהורדת רשימת IPv6"
              rm -rf "$temp_dir"
              exit 1
          fi
      
          echo "$ipv4_file"
          echo "$ipv6_file"
          echo "$temp_dir"
      }
      
      # הסרת חוקים ישנים (UFW)
      remove_old_rules_ufw() {
          print_info "מסיר חוקי Cloudflare ישנים..."
          
          local old_rules=$(ufw status numbered 2>/dev/null | grep -E 'Cloudflare' | awk -F'[][]' '{print $2}' | tac)
          
          for rule_num in $old_rules; do
              echo "y" | ufw delete "$rule_num" > /dev/null 2>&1
              print_info "חוק מספר $rule_num הוסר"
          done
      }
      
      # הסרת חוקים ישנים (iptables)
      remove_old_rules_iptables() {
          print_info "מסיר חוקי Cloudflare ישנים..."
          
          # IPv4
          local chains=$(iptables -L INPUT -n --line-numbers 2>/dev/null | grep -E 'Cloudflare' | awk '{print $1}' | tac)
          for rule_num in $chains; do
              iptables -D INPUT "$rule_num" 2>/dev/null
              print_info "חוק IPv4 מספר $rule_num הוסר"
          done
          
          # IPv6
          chains=$(ip6tables -L INPUT -n --line-numbers 2>/dev/null | grep -E 'Cloudflare' | awk '{print $1}' | tac)
          for rule_num in $chains; do
              ip6tables -D INPUT "$rule_num" 2>/dev/null
              print_info "חוק IPv6 מספר $rule_num הוסר"
          done
      }
      
      # הוספת חוקים חדשים (UFW)
      add_rules_ufw() {
          local ipv4_file=$1
          local ipv6_file=$2
          local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
          
          print_info "מוסיף חוקי IPv4..."
          while read -r ip; do
              [[ -z "$ip" ]] && continue
              ufw allow proto tcp from "$ip" to any port "$PORTS" comment "Cloudflare IPv4 - $timestamp" > /dev/null 2>&1
          done < "$ipv4_file"
          print_success "חוקי IPv4 נוספו"
      
          print_info "מוסיף חוקי IPv6..."
          while read -r ip; do
              [[ -z "$ip" ]] && continue
              ufw allow proto tcp from "$ip" to any port "$PORTS" comment "Cloudflare IPv6 - $timestamp" > /dev/null 2>&1
          done < "$ipv6_file"
          print_success "חוקי IPv6 נוספו"
      }
      
      # הוספת חוקים חדשים (iptables)
      add_rules_iptables() {
          local ipv4_file=$1
          local ipv6_file=$2
          local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
          local ports_array=(${PORTS//,/ })
          
          print_info "מוסיף חוקי IPv4..."
          while read -r ip; do
              [[ -z "$ip" ]] && continue
              for port in "${ports_array[@]}"; do
                  iptables -A INPUT -p tcp -s "$ip" --dport "$port" -j ACCEPT -m comment --comment "Cloudflare IPv4 - $timestamp" 2>/dev/null
              done
          done < "$ipv4_file"
          print_success "חוקי IPv4 נוספו"
      
          print_info "מוסיף חוקי IPv6..."
          while read -r ip; do
              [[ -z "$ip" ]] && continue
              for port in "${ports_array[@]}"; do
                  ip6tables -A INPUT -p tcp -s "$ip" --dport "$port" -j ACCEPT -m comment --comment "Cloudflare IPv6 - $timestamp" 2>/dev/null
              done
          done < "$ipv6_file"
          print_success "חוקי IPv6 נוספו"
      }
      
      # ==============================================
      # פונקציה ראשית
      # ==============================================
      
      main() {
          echo "=============================================="
          echo "  ONLYCF - Cloudflare IP Firewall Manager"
          echo "=============================================="
          echo ""
          
          check_root
          check_dependencies
      
          # הורדת IP
          local ipv4_file ipv6_file temp_dir
          ipv4_file=$(fetch_cloudflare_ips | sed -n '1p')
          ipv6_file=$(fetch_cloudflare_ips | sed -n '2p')
          temp_dir=$(fetch_cloudflare_ips | sed -n '3p')
          
          print_info "רשימת IPv4: $(wc -l < "$ipv4_file") כתובות"
          print_info "רשימת IPv6: $(wc -l < "$ipv6_file") כתובות"
      
          # הסרת חוקים ישנים
          if [[ "$FIREWALL" == "ufw" ]]; then
              remove_old_rules_ufw
          else
              remove_old_rules_iptables
          fi
      
          # הוספת חוקים חדשים
          if [[ "$FIREWALL" == "ufw" ]]; then
              add_rules_ufw "$ipv4_file" "$ipv6_file"
              ufw reload > /dev/null 2>&1
              print_success "UFW הוטען מחדש"
          else
              add_rules_iptables "$ipv4_file" "$ipv6_file"
              print_success "iptables עודכן"
          fi
      
          # ניקוי
          rm -rf "$temp_dir"
          
          echo ""
          print_success "✅ Cloudflare IPs עודכנו בהצלחה!"
          
          # הצגת מצב
          if [[ "$FIREWALL" == "ufw" ]]; then
              print_info "מצב UFW:"
              ufw status | grep -E "Cloudflare|Status"
          else
              print_info "מצב iptables:"
              iptables -L INPUT -n | grep -E "Cloudflare|Chain" | head -5
          fi
          
          echo ""
          print_info "להרצה אוטומטית, הוסף ל-crontab:"
          echo "  0 3 * * * root $(realpath $0) >> /var/log/cloudflare-ip-update.log 2>&1"
      }
      
      # ==============================================
      # בדיקת פרמטרים
      # ==============================================
      
      while [[ $# -gt 0 ]]; do
          case $1 in
              -p|--ports)
                  PORTS="$2"
                  shift 2
                  ;;
              -f|--firewall)
                  FIREWALL="$2"
                  shift 2
                  ;;
              -h|--help)
                  echo "שימוש: $0 [אפשרויות]"
                  echo ""
                  echo "אפשרויות:"
                  echo "  -p, --ports PORT1,PORT2  פורטים להגנה (ברירת מחדל: 80,443)"
                  echo "  -f, --firewall TYPE     ufw או iptables (ברירת מחדל: ufw)"
                  echo "  -h, --help              הצגת עזרה"
                  exit 0
                  ;;
              *)
                  print_error "פרמטר לא ידוע: $1"
                  exit 1
                  ;;
          esac
      done
      
      # הרצת הסקריפט
      main
      

      יכול להיות שזה הפתרון לכאן: פעולה בתשובת error code: 502 משרת api

      תגובה 1 תגובה אחרונה תגובה ציטוט 0

      שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.

      נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.

      בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗

      הרשמה התחברות
      • פוסט ראשון
        פוסט אחרון