Initial YakPanel commit

This commit is contained in:
Niranjan
2026-04-07 02:04:22 +05:30
commit 2826d3e7f3
5359 changed files with 1390724 additions and 0 deletions

View File

@@ -0,0 +1,4 @@
# YakPanel - Celery tasks
from app.tasks.celery_app import celery_app
__all__ = ["celery_app"]

View File

@@ -0,0 +1,20 @@
"""YakPanel - Celery application"""
from celery import Celery
from app.core.config import get_settings
settings = get_settings()
celery_app = Celery(
"cit_panel",
broker=settings.redis_url,
backend=settings.redis_url,
include=["app.tasks.install"],
)
celery_app.conf.update(
task_serializer="json",
accept_content=["json"],
result_serializer="json",
timezone="UTC",
enable_utc=True,
)

View File

@@ -0,0 +1,42 @@
"""YakPanel - Install tasks (one-click install via apt)"""
import subprocess
from app.tasks.celery_app import celery_app
# Map panel package IDs to apt package names (same as soft.py)
PKG_MAP = {
"nginx": "nginx",
"mysql-server": "mysql-server",
"mariadb-server": "mariadb-server",
"php": "php",
"php-fpm": "php-fpm",
"redis-server": "redis-server",
"postgresql": "postgresql",
"mongodb": "mongodb",
"certbot": "certbot",
"docker": "docker.io",
"nodejs": "nodejs",
"npm": "npm",
"git": "git",
"python3": "python3",
}
@celery_app.task
def install_software(name: str, version: str = ""):
"""Install software via apt (Debian/Ubuntu). name = package id from soft list."""
pkg = PKG_MAP.get(name, name)
try:
result = subprocess.run(
f"apt-get update && apt-get install -y {pkg}",
shell=True,
capture_output=True,
timeout=300,
)
if result.returncode != 0:
err = (result.stderr or result.stdout or b"").decode("utf-8", errors="replace")
return {"status": "failed", "name": name, "error": err.strip()[:500]}
return {"status": "ok", "name": name, "version": version}
except subprocess.TimeoutExpired:
return {"status": "failed", "name": name, "error": "Installation timed out"}
except Exception as e:
return {"status": "failed", "name": name, "error": str(e)}