"""Deploy robots.txt to gfil-lab.com (216.144.233.14) and gfil-intel.xyz (107.174.186.162) via JD Cloud""" import paramiko import os import time JD_HOST = "111.228.37.165" JD_USER = "root" JD_PASS = "Liudecai110" # gfil-lab.com server LAB_HOST = "216.144.233.14" LAB_USER = "root" LAB_PASS = "Kt9V72Tx2c48ChikKU" # from .env GFIL_SSH_PASSWORD # gfil-intel.xyz server (same as blog) RN_HOST = "107.174.186.162" RN_USER = "root" RN_PASS = "liudapao2026" TEMP_DIR = r"C:\Users\thinkpad\AppData\Local\Temp\kilo" def deploy(): # Step 1: Connect to JD Cloud print("[1/4] Connecting to JD Cloud...") jd = paramiko.SSHClient() jd.set_missing_host_key_policy(paramiko.AutoAddPolicy()) jd.connect(JD_HOST, port=22, username=JD_USER, password=JD_PASS, timeout=20, banner_timeout=60, allow_agent=False, look_for_keys=False) sftp = jd.open_sftp() print(" Connected") # Step 2: Upload robots.txt files to JD Cloud print("\n[2/4] Uploading robots.txt files to JD Cloud...") sftp.put(os.path.join(TEMP_DIR, "robots_gfil_lab.txt"), "/tmp/robots_gfil_lab.txt") sftp.put(os.path.join(TEMP_DIR, "robots_gfil_intel.txt"), "/tmp/robots_gfil_intel.txt") print(" Uploaded") # Step 3: Deploy to gfil-lab.com (216.144.233.14) print("\n[3/4] Deploying to gfil-lab.com (216.144.233.14)...") # Find the web root - could be /GFIL/static/ or Nginx serves from elsewhere # The Flask app serves static from /GFIL/static/, but robots.txt needs to be at web root # Nginx config shows: location /static/ { alias /GFIL/static/; } # For robots.txt at root, we need to place it where Nginx can serve it # Best approach: add to Nginx config or put in a root directory deploy_cmd = f"""sshpass -p '{LAB_PASS}' ssh -o StrictHostKeyChecking=no {LAB_USER}@{LAB_HOST} ' # Find Nginx config and web root echo "=== Finding web root ===" grep -r "root " /etc/nginx/sites-enabled/ 2>/dev/null | head -5 grep -r "root " /etc/nginx/conf.d/ 2>/dev/null | head -5 ls -la /var/www/ 2>/dev/null ls -la /GFIL/static/ 2>/dev/null | head -5 # Deploy robots.txt - try multiple locations cp /tmp/robots_gfil_lab.txt /GFIL/robots.txt 2>/dev/null cp /tmp/robots_gfil_lab.txt /GFIL/static/robots.txt 2>/dev/null cp /tmp/robots_gfil_lab.txt /var/www/html/robots.txt 2>/dev/null mkdir -p /var/www/gfil-lab.com 2>/dev/null cp /tmp/robots_gfil_lab.txt /var/www/gfil-lab.com/robots.txt 2>/dev/null # Check if Nginx has a root directive we can use cat /etc/nginx/sites-enabled/gfil-lab.com 2>/dev/null || cat /etc/nginx/conf.d/gfil-lab.com.conf 2>/dev/null || echo "No gfil-lab nginx config found" echo "=== Verifying ===" find / -name "robots.txt" -maxdepth 4 2>/dev/null | head -5 '""" stdin, stdout, stderr = jd.exec_command(deploy_cmd, timeout=30) output = stdout.read().decode() print(output[:2000]) # Step 4: Deploy to gfil-intel.xyz (107.174.186.162 - RackNerd) print("\n[4/4] Deploying to gfil-intel.xyz (RackNerd 107.174.186.162)...") deploy_cmd2 = f"""sshpass -p '{RN_PASS}' ssh -o StrictHostKeyChecking=no {RN_USER}@{RN_HOST} ' # Find where gfil-intel.xyz is served from echo "=== Finding gfil-intel.xyz web root ===" grep -r "gfil-intel" /etc/nginx/ 2>/dev/null | head -10 ls -la /var/www/ 2>/dev/null | head -10 find /var/www -name "index.html" -maxdepth 3 2>/dev/null | head -5 # Deploy robots.txt to likely locations cp /tmp/robots_gfil_intel.txt /var/www/gfil-intel.xyz/robots.txt 2>/dev/null cp /tmp/robots_gfil_intel.txt /var/www/html/robots.txt 2>/dev/null cp /tmp/robots_gfil_intel.txt /var/www/blog/robots.txt 2>/dev/null echo "=== Nginx config ===" grep -l "gfil-intel" /etc/nginx/sites-enabled/ 2>/dev/null cat /etc/nginx/sites-enabled/gfil-intel* 2>/dev/null | head -30 echo "=== Verifying ===" find /var/www -name "robots.txt" -maxdepth 3 2>/dev/null '""" stdin, stdout, stderr = jd.exec_command(deploy_cmd2, timeout=30) output = stdout.read().decode() print(output[:2000]) # Cleanup jd.exec_command("rm -f /tmp/robots_gfil_lab.txt /tmp/robots_gfil_intel.txt", timeout=5) sftp.close() jd.close() print("\nDone!") if __name__ == "__main__": deploy()