This commit is contained in:
Oliver
2025-10-11 18:55:02 -03:00
parent 7953190b37
commit 8ed294f3b7
6 changed files with 29 additions and 27 deletions

View File

@@ -4,5 +4,5 @@
rex "doas sqlite3 /4server/data/contracts.db <<'EOF'
ALTER TABLE containers
ADD COLUMN config TEXT NOT NULL DEFAULT '';
ALTER COLUMN contract DROP NOT NULL;
EOF"

View File

@@ -71,7 +71,8 @@ def init_db():
status CHAR(20),
created DATE,
bump DATE,
secret TEXT
secret TEXT,
contract TEXT
)
''')
conn.commit()
@@ -92,6 +93,12 @@ def execute_db(query: str, params: tuple = (), fetch: bool = False):
# ---------------------- Models ----------------------
class ContractItem(BaseModel):
quantity: int
name: str
product_id: int
features: Dict[str, Any]
class ContainerModel(BaseModel):
UUID: str
email: Optional[str] = None
@@ -107,7 +114,7 @@ class ContainerModel(BaseModel):
created: Optional[str] = None
bump: Optional[str] = None
secret: Optional[Dict[str, Any]] = None
contract: Optional[str] = None
class UUIDRequest(BaseModel):
UUID: str
@@ -129,22 +136,6 @@ import json
app = FastAPI()
# ---------------------- Models ----------------------
class ContainerModel(BaseModel):
UUID: str
email: Optional[str] = None
expires: Optional[str] = None
tags: Optional[str] = None
env: Optional[Dict[str, Any]] = None
affiliate: Optional[str] = None
image: Optional[str] = None
history: Optional[str] = None
comment: Optional[str] = None
domains: Optional[str] = None
status: Optional[str] = None
created: Optional[str] = None
bump: Optional[str] = None
secret: Optional[Dict[str, Any]] = None
# ---------------------- Routes ----------------------
@app.get("/", include_in_schema=False)
@@ -157,6 +148,8 @@ def update_container(request: ContainerModel):
# Convert dict fields to JSON strings
env_str = json.dumps(request.env) if isinstance(request.env, dict) else None
secret_str = json.dumps(request.secret) if isinstance(request.secret, dict) else None
contract_str = json.dumps(request.contract) if isinstance(request.contract, dict) else None
# Fetch existing record
existing = execute_db("SELECT * FROM containers WHERE UUID = ?", (request.UUID,), fetch=True)
@@ -164,12 +157,12 @@ def update_container(request: ContainerModel):
# If record does not exist, insert a new one with all given fields
execute_db("""
INSERT INTO containers (UUID, email, expires, tags, env, affiliate, image, history,
comment, domains, status, created, bump, secret)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
comment, domains, status, created, bump, secret, contract)
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, secret_str
request.domains, request.status, request.created, request.bump, secret_str, contract_str
))
return {"UUID": request.UUID, "status": "created"}
@@ -184,8 +177,9 @@ def update_container(request: ContainerModel):
continue
value = getattr(request, field)
if value is not None:
if field in ["env", "secret"]:
if field in ["env", "secret", "contract"]:
value = json.dumps(value)
updates[field] = value
params.append(value)
@@ -222,7 +216,7 @@ def info_container(request: Optional[UUIDRequest] = None):
# Fields to select
fields = [
"ID", "UUID", "email", "expires", "tags", "env", "affiliate",
"image", "history", "comment", "domains", "status", "created"
"image", "history", "comment", "domains", "status", "created", "contract"
]
field_str = ", ".join(fields)

View File

@@ -42,7 +42,7 @@ doas docker exec "$UUID" chown odoo:odoo -R /mnt/backup
# Remove old backups beyond the configured slots
ls -t "$BACKUP_DIR"/[0-9]*.zip 2>/dev/null | tail -n +$((BACKUP_SLOTS + 1)) | while read -r file; do
echo "Deleting old backup: $file"
rm -f "$file"
doas rm -f "$file"
done

View File

@@ -1,8 +1,8 @@
#!/bin/bash
while true; do
find /tmp -type f -atime +2 -delete
find /tmp -type d -empty -delete
find /4server/tmp -type f -atime +2 -delete
find /4server/tmp -type d -empty -delete
sleep 1d
done

View File

@@ -12,6 +12,14 @@ rex doas mkdir -p /BACKUP
rex doas chmod 777 /BACKUP
rex doas chown 4server:4server /BACKUP
### TMP DIR
rex doas mkdir -p /4server/tmp
rex doas chmod 777 /4server/tmp
rex doas chown 4server:4server /4server/tmp
template templates/.profile /home/4server/.profile
### PACKAGES

Binary file not shown.