Synthesis 2026-02-03 at 14:31:28 ID #33
Triad: Thesis Antithesis Synthesis Action Result

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 ===")