diff --git a/app/migrate b/app/migrate index 337f443..8d037fe 100755 --- a/app/migrate +++ b/app/migrate @@ -3,6 +3,5 @@ #!/bin/bash rex "doas sqlite3 /4server/data/contracts.db <<'EOF' -ALTER TABLE containers -ADD COLUMN secrets TEXT; +ALTER TABLE containers RENAME COLUMN secrets TO secret; EOF" diff --git a/app/sbin/api b/app/sbin/api index f03a775..5b25ef0 100755 --- a/app/sbin/api +++ b/app/sbin/api @@ -59,7 +59,8 @@ def init_db(): domains TEXT, status CHAR(20), created DATE, - bump DATE + bump DATE, + secret TEXT ) ''') conn.commit() @@ -94,7 +95,7 @@ class ContainerModel(BaseModel): status: Optional[str] = None created: Optional[str] = None bump: Optional[str] = None - + secret: Optional[Dict[str, Any]] = None class UUIDRequest(BaseModel): UUID: str @@ -109,27 +110,27 @@ def redirect_to_odoo(): @app.post("/container/update", dependencies=[Depends(verify_api_key)]) def update_container(request: ContainerModel): env_str = json.dumps(request.env) if isinstance(request.env, dict) else request.env - + secret_str = json.dumps(request.secret) if isinstance(request.secret, dict) else request.secret existing = execute_db("SELECT * FROM containers WHERE UUID = ?", (request.UUID,), fetch=True) if existing: execute_db(""" UPDATE containers SET email=?, expires=?, tags=?, env=?, affiliate=?, image=?, - history=?, comment=?, domains=?, status=?, created=?, bump=? + history=?, comment=?, domains=?, status=?, created=?, bump=?, secret=? WHERE UUID=? """, ( request.email, request.expires, request.tags, env_str, request.affiliate, request.image, request.history, request.comment, request.domains, request.status, - request.created, request.bump, request.UUID + request.created, request.bump, secret_str, request.UUID )) else: execute_db(""" INSERT INTO containers (UUID, email, expires, tags, env, affiliate, image, history, - comment, domains, status, created, bump) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + comment, domains, status, created, bump, secret) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) """, ( request.UUID, request.email, request.expires, request.tags, env_str, request.affiliate, request.image, request.history, request.comment, - request.domains, request.status, request.created, request.bump + request.domains, request.status, request.created, request.bump, secret_str )) return {"message": "Container updated or created"} @@ -154,11 +155,31 @@ def nuke_container(request: UUIDRequest): @app.post("/container/info", dependencies=[Depends(verify_api_key)]) def info_container(request: Optional[UUIDRequest] = None): + fields = [ + "ID", "UUID", "email", "expires", "tags", "env", "affiliate", + "image", "history", "comment", "domains", "status", "created" + ] + field_str = ", ".join(fields) + if request: - rows = execute_db("SELECT * FROM containers WHERE UUID=?", (request.UUID,), fetch=True) + rows = execute_db( + f"SELECT {field_str} FROM containers WHERE UUID=?", + (request.UUID,), + fetch=True + ) else: - rows = execute_db("SELECT * FROM containers", fetch=True) - return {"containers": rows} + rows = execute_db( + f"SELECT {field_str} FROM containers", + fetch=True + ) + + # Map rows to dicts with field names + containers = [dict(zip(fields, row)) for row in rows] + + # Wrap in N8N JSON format + n8n_items = [{"json": container} for container in containers] + + return n8n_items @app.post("/container/bump", dependencies=[Depends(verify_api_key)]) diff --git a/app/test/test b/app/test/test index 8939cd5..7e125a7 100755 --- a/app/test/test +++ b/app/test/test @@ -30,9 +30,12 @@ update_container() { "domains": "N8N.local", "status":"hot", "env": { - "p": "123", "BRANCH": "release" + }, + "secret": { + "psql": "5Sg9gDxYQH44QNSPyOx" } + }' } diff --git a/app/vault/host_vars.img b/app/vault/host_vars.img index be98ed9..441d394 100644 Binary files a/app/vault/host_vars.img and b/app/vault/host_vars.img differ