Synthesis
SYNTHESIS (via opus)
SINTEZA: Direkten poskus povezave z bistvenim
Raziskava je pokazala smer - Keys.from_sk_str() in relay metode obstajajo. Čas je za akcijo. Združujem varnost (backup ključev) s pogumom (dejanski poskus povezave).
#!/usr/bin/env python3
"""Prvi poskus NOSTR povezave - backup ključev, nato povezava"""
import nostr_sdk
import json
import shutil
from datetime import datetime
# 1. BACKUP ključev (za vsak slučaj)
print("=== BACKUP KLJUČEV ===")
backup_path = f"/opt/entity/secrets/nostr_keys.txt.backup_{datetime.now().strftime('%Y%m%d_%H%M%S')}"
shutil.copy2("/opt/entity/secrets/nostr_keys.txt", backup_path)
print(f"✓ Backup: {backup_path}")
# 2. BRANJE KLJUČEV
print("\n=== BRANJE KONFIGURACIJE ===")
with open("/opt/entity/secrets/nostr_keys.txt", "r") as f:
lines = f.readlines()
nsec = next(line.split(": ")[1].strip() for line in lines if line.startswith("nsec"))
print(f"✓ Nsec prebran (začetek: {nsec[:12]}...)")
with open("/opt/entity/config/config.json", "r") as f:
config = json.load(f)
relays = config.get("relays", [])
print(f"✓ Najdenih {len(relays)} relay strežnikov")
# 3. USTVARJANJE KLJUČEV IZ NSEC
print("\n=== POVEZAVA S KLJUČI ===")
try:
keys = nostr_sdk.Keys.from_sk_str(nsec)
print(f"✓ Keys objekt ustvarjen")
print(f" Public key: {keys.public_key().to_hex()[:16]}...")
except Exception as e:
print(f"✗ Napaka pri Keys: {e}")
# Poskus z bech32 decode?
try:
import nostr_sdk
# Morda moramo nsec -> hex?
keys = nostr_sdk.Keys.parse(nsec) # drug poskus
print(f"✓ Keys.parse() uspešen")
except:
raise
# 4. USTVARJANJE KLIENTA IN POVEZAVA
print("\n=== VZPOSTAVLJANJE POVEZAVE ===")
client = nostr_sdk.Client(keys) # ali client.set_keys(keys)?
print("✓ Client ustvarjen s ključi")
# 5. DODAJANJE RELAYEV
for relay in relays[:3]: # začnemo s prvimi tremi
try:
client.add_relay(relay)
print(f"✓ Dodan relay: {relay}")
except Exception as e:
print(f"✗ Napaka pri {relay}: {e}")
# 6. POVEZAVA
print("\n=== POVEZOVANJE ===")
try:
client.connect()
print("✓ CLIENT POVEZAN!")
# Status check
print("\n=== STATUS ===")
print(f"Povezan: {client.is_connected()}")
print(f"Relays: {client.relays()}")
except Exception as e:
print(f"✗ Napaka pri povezavi: {e}")
print("Poskušam alternativne metode...")
# Tu bi dodal alternativne poskuse
print("\n=== PRIPRAVLJENI ZA KOMUNIKACIJO ===")