v
This commit is contained in:
@@ -3,6 +3,5 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
rex "doas sqlite3 /4server/data/contracts.db <<'EOF'
|
rex "doas sqlite3 /4server/data/contracts.db <<'EOF'
|
||||||
ALTER TABLE containers
|
ALTER TABLE containers RENAME COLUMN secrets TO secret;
|
||||||
ADD COLUMN secrets TEXT;
|
|
||||||
EOF"
|
EOF"
|
||||||
|
|||||||
43
app/sbin/api
43
app/sbin/api
@@ -59,7 +59,8 @@ def init_db():
|
|||||||
domains TEXT,
|
domains TEXT,
|
||||||
status CHAR(20),
|
status CHAR(20),
|
||||||
created DATE,
|
created DATE,
|
||||||
bump DATE
|
bump DATE,
|
||||||
|
secret TEXT
|
||||||
)
|
)
|
||||||
''')
|
''')
|
||||||
conn.commit()
|
conn.commit()
|
||||||
@@ -94,7 +95,7 @@ class ContainerModel(BaseModel):
|
|||||||
status: Optional[str] = None
|
status: Optional[str] = None
|
||||||
created: Optional[str] = None
|
created: Optional[str] = None
|
||||||
bump: Optional[str] = None
|
bump: Optional[str] = None
|
||||||
|
secret: Optional[Dict[str, Any]] = None
|
||||||
|
|
||||||
class UUIDRequest(BaseModel):
|
class UUIDRequest(BaseModel):
|
||||||
UUID: str
|
UUID: str
|
||||||
@@ -109,27 +110,27 @@ def redirect_to_odoo():
|
|||||||
@app.post("/container/update", dependencies=[Depends(verify_api_key)])
|
@app.post("/container/update", dependencies=[Depends(verify_api_key)])
|
||||||
def update_container(request: ContainerModel):
|
def update_container(request: ContainerModel):
|
||||||
env_str = json.dumps(request.env) if isinstance(request.env, dict) else request.env
|
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)
|
existing = execute_db("SELECT * FROM containers WHERE UUID = ?", (request.UUID,), fetch=True)
|
||||||
if existing:
|
if existing:
|
||||||
execute_db("""
|
execute_db("""
|
||||||
UPDATE containers SET email=?, expires=?, tags=?, env=?, affiliate=?, image=?,
|
UPDATE containers SET email=?, expires=?, tags=?, env=?, affiliate=?, image=?,
|
||||||
history=?, comment=?, domains=?, status=?, created=?, bump=?
|
history=?, comment=?, domains=?, status=?, created=?, bump=?, secret=?
|
||||||
WHERE UUID=?
|
WHERE UUID=?
|
||||||
""", (
|
""", (
|
||||||
request.email, request.expires, request.tags, env_str, request.affiliate,
|
request.email, request.expires, request.tags, env_str, request.affiliate,
|
||||||
request.image, request.history, request.comment, request.domains, request.status,
|
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:
|
else:
|
||||||
execute_db("""
|
execute_db("""
|
||||||
INSERT INTO containers (UUID, email, expires, tags, env, affiliate, image, history,
|
INSERT INTO containers (UUID, email, expires, tags, env, affiliate, image, history,
|
||||||
comment, domains, status, created, bump)
|
comment, domains, status, created, bump, secret)
|
||||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
||||||
""", (
|
""", (
|
||||||
request.UUID, request.email, request.expires, request.tags, env_str,
|
request.UUID, request.email, request.expires, request.tags, env_str,
|
||||||
request.affiliate, request.image, request.history, request.comment,
|
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"}
|
return {"message": "Container updated or created"}
|
||||||
|
|
||||||
@@ -154,11 +155,31 @@ def nuke_container(request: UUIDRequest):
|
|||||||
|
|
||||||
@app.post("/container/info", dependencies=[Depends(verify_api_key)])
|
@app.post("/container/info", dependencies=[Depends(verify_api_key)])
|
||||||
def info_container(request: Optional[UUIDRequest] = None):
|
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:
|
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:
|
else:
|
||||||
rows = execute_db("SELECT * FROM containers", fetch=True)
|
rows = execute_db(
|
||||||
return {"containers": rows}
|
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)])
|
@app.post("/container/bump", dependencies=[Depends(verify_api_key)])
|
||||||
|
|||||||
@@ -30,9 +30,12 @@ update_container() {
|
|||||||
"domains": "N8N.local",
|
"domains": "N8N.local",
|
||||||
"status":"hot",
|
"status":"hot",
|
||||||
"env": {
|
"env": {
|
||||||
"p": "123",
|
|
||||||
"BRANCH": "release"
|
"BRANCH": "release"
|
||||||
|
},
|
||||||
|
"secret": {
|
||||||
|
"psql": "5Sg9gDxYQH44QNSPyOx"
|
||||||
}
|
}
|
||||||
|
|
||||||
}'
|
}'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
Reference in New Issue
Block a user