#!/usr/bin/env python3 """Deploy portal/MeSomb hotspot fixes to the Ubuntu billing server.""" from __future__ import annotations import io import sys import time from pathlib import Path ROOT = Path(r"c:\laragon\www\light-otantik-nux") sys.path.insert(0, str(ROOT / "scripts")) from deploy_remote import connect, sudo # noqa: E402 FILES = [ ( ROOT / "deploy/nux-custom/system/paymentgateway/mesomb.php", "/var/www/phpnuxbill/system/paymentgateway/mesomb.php", ), ( ROOT / "deploy/nux-custom/system/controllers/portal.php", "/var/www/phpnuxbill/system/controllers/portal.php", ), ( ROOT / "deploy/nux-custom/ui/ui/portal/index.tpl", "/var/www/phpnuxbill/ui/ui/portal/index.tpl", ), ( ROOT / "deploy/nux-custom/ui/ui/portal/pay.tpl", "/var/www/phpnuxbill/ui/ui/portal/pay.tpl", ), ( ROOT / "deploy/nux-custom/ui/ui/portal/voucher.tpl", "/var/www/phpnuxbill/ui/ui/portal/voucher.tpl", ), ( ROOT / "deploy/nux-custom/ui/ui/portal/wait.tpl", "/var/www/phpnuxbill/ui/ui/portal/wait.tpl", ), ( ROOT / "deploy/nux-custom/ui/ui/admin/paymentgateway/mesomb.tpl", "/var/www/phpnuxbill/ui/ui/admin/paymentgateway/mesomb.tpl", ), ] def main() -> int: client = connect() sftp = client.open_sftp() for local, remote in FILES: data = local.read_bytes().replace(b"\r\n", b"\n") tmp = "/tmp/" + Path(remote).name with sftp.file(tmp, "wb") as f: f.write(data) print(f"uploaded {local.name} ({len(data)} bytes)", flush=True) sftp.close() dest_cmds = " && ".join( f"install -m 644 /tmp/{Path(remote).name} {remote}" for _, remote in FILES ) code, out = sudo( client, f"{dest_cmds} && chown -R www-data:www-data /var/www/phpnuxbill/system/paymentgateway/mesomb.php /var/www/phpnuxbill/system/controllers/portal.php /var/www/phpnuxbill/ui/ui/portal /var/www/phpnuxbill/ui/ui/admin/paymentgateway/mesomb.tpl && php -l /var/www/phpnuxbill/system/paymentgateway/mesomb.php && php -l /var/www/phpnuxbill/system/controllers/portal.php", timeout=60, ) print(out) print("INSTALL", code, flush=True) if code != 0: return code code, out = sudo( client, r""" set -a . /root/woyla.env set +a mysql -N -u nuxbill -p"$DB_PASS" phpnuxbill -e "SELECT setting, value FROM tbl_appconfig WHERE setting IN ('mesomb_emergency_phone','phone','CompanyName','mesomb_emergency_email','mesomb_hotspot_login_url');" """, timeout=20, ) print("--- CONFIG ---") print(out) client.close() return 0 if __name__ == "__main__": raise SystemExit(main())