feat: add auth
perso/opencode-dispatch/pipeline/head Build queued...

This commit is contained in:
Julien Cabillot
2026-03-28 15:53:19 -04:00
parent be3edc0e14
commit 8de37679ae
+27 -3
View File
@@ -25,6 +25,8 @@ logging.basicConfig(
logger = logging.getLogger(__name__)
OPENCODE_API_URL = os.getenv("OPENCODE_API_URL", "http://127.0.0.1:4096")
OPENCODE_SERVER_USERNAME = os.getenv("OPENCODE_SERVER_USERNAME", "opencode")
OPENCODE_SERVER_PASSWORD = os.getenv("OPENCODE_SERVER_PASSWORD")
BOT_TOKEN = os.getenv("TELEGRAM_BOT_TOKEN")
ALLOWED_CHAT_ID = os.getenv("TELEGRAM_ALLOWED_CHAT_ID")
@@ -47,7 +49,13 @@ def get_session():
if SESSION_ID:
return SESSION_ID
try:
r = requests.get(f"{OPENCODE_API_URL}/session", timeout=10)
r = requests.get(
f"{OPENCODE_API_URL}/session",
timeout=10,
auth=(OPENCODE_SERVER_USERNAME, OPENCODE_SERVER_PASSWORD)
if OPENCODE_SERVER_PASSWORD
else None,
)
if r.ok:
sessions = r.json()
if sessions:
@@ -56,7 +64,14 @@ def get_session():
except Exception:
logger.exception("Failed to fetch existing sessions")
try:
r = requests.post(f"{OPENCODE_API_URL}/session", json={}, timeout=10)
r = requests.post(
f"{OPENCODE_API_URL}/session",
json={},
timeout=10,
auth=(OPENCODE_SERVER_USERNAME, OPENCODE_SERVER_PASSWORD)
if OPENCODE_SERVER_PASSWORD
else None,
)
if r.ok:
SESSION_ID = r.json()["id"]
return SESSION_ID
@@ -76,6 +91,9 @@ def send_to_opencode(message):
f"{OPENCODE_API_URL}/session/{session_id}/message",
json={"parts": [{"type": "text", "text": f"[Telegram] {message}"}]},
timeout=1200,
auth=(OPENCODE_SERVER_USERNAME, OPENCODE_SERVER_PASSWORD)
if OPENCODE_SERVER_PASSWORD
else None,
)
if r.ok:
data = r.json()
@@ -128,7 +146,13 @@ async def status_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
if not is_authorized(update):
return
try:
r = requests.get(f"{OPENCODE_API_URL}/global/health", timeout=5)
r = requests.get(
f"{OPENCODE_API_URL}/global/health",
timeout=5,
auth=(OPENCODE_SERVER_USERNAME, OPENCODE_SERVER_PASSWORD)
if OPENCODE_SERVER_PASSWORD
else None,
)
healthy = r.ok
except Exception:
healthy = False