security: remove internal operational file docs/publish_crates_slow.py

This commit is contained in:
2026-04-21 16:27:28 +00:00
parent e37d7382f8
commit f9debfd9be
-107
View File
@@ -1,107 +0,0 @@
#!/usr/bin/env python3
"""
Slow Crate Publisher - 6 dakikada bir 1 crate publish eder
Rate limit'e takilmamak icin yavas yavas publish yapar.
Kullanim:
nohup python3 publish_crates_slow.py > publish_log.txt 2>&1 &
"""
import subprocess
import os
import time
from datetime import datetime
PLACEHOLDER_DIR = '/home/mamostehp/kurdistan-sdk/crate_placeholders'
LOG_FILE = '/home/mamostehp/kurdistan-sdk/publish_log.txt'
INTERVAL_SECONDS = 360 # 6 dakika
def log(msg):
timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
line = f"[{timestamp}] {msg}"
print(line, flush=True)
with open(LOG_FILE, 'a') as f:
f.write(line + '\n')
def is_published(name):
"""crates.io'da mevcut mu kontrol et"""
result = subprocess.run(
['cargo', 'search', name, '--limit', '1'],
capture_output=True, text=True, timeout=30
)
return f'{name} = ' in result.stdout
def publish_crate(name):
"""Tek bir crate publish et"""
crate_dir = os.path.join(PLACEHOLDER_DIR, name)
manifest = os.path.join(crate_dir, 'Cargo.toml')
if not os.path.exists(manifest):
return False, "Cargo.toml not found"
result = subprocess.run(
['cargo', 'publish', '--manifest-path', manifest],
capture_output=True, text=True, cwd=crate_dir, timeout=180
)
if result.returncode == 0:
return True, "Success"
elif 'already uploaded' in result.stderr or 'already exists' in result.stderr:
return True, "Already exists"
elif '429' in result.stderr or 'Too Many Requests' in result.stderr:
return False, "Rate limited"
else:
return False, result.stderr[:200]
def get_unpublished_crates():
"""Henuz publish edilmemis crate'leri bul"""
crates = sorted([d for d in os.listdir(PLACEHOLDER_DIR)
if os.path.isdir(os.path.join(PLACEHOLDER_DIR, d))])
unpublished = []
for crate in crates:
if not is_published(crate):
unpublished.append(crate)
return unpublished
def main():
log("=" * 60)
log("Slow Crate Publisher baslatildi")
log(f"Interval: {INTERVAL_SECONDS} saniye (6 dakika)")
log("=" * 60)
unpublished = get_unpublished_crates()
total = len(unpublished)
log(f"Toplam {total} crate publish edilecek")
success_count = 0
fail_count = 0
for i, crate in enumerate(unpublished, 1):
log(f"[{i}/{total}] Publishing: {crate}")
success, msg = publish_crate(crate)
if success:
log(f"{msg}")
success_count += 1
else:
log(f"{msg}")
fail_count += 1
# Rate limit durumunda ekstra bekle
if "Rate limited" in msg:
log(" Rate limited! 10 dakika bekleniyor...")
time.sleep(600)
# Sonraki crate icin bekle
if i < total:
log(f" Sonraki crate icin {INTERVAL_SECONDS}s bekleniyor...")
time.sleep(INTERVAL_SECONDS)
log("=" * 60)
log(f"Tamamlandi! Basarili: {success_count}, Basarisiz: {fail_count}")
log("=" * 60)
if __name__ == "__main__":
main()