Add web server, certificates and Samba/AD management tabs, a web server config generator, toggleable feature menus and an animated start page background
- Web server tab (nginx, Apache, Caddy, PHP-FPM): service control with autostart, config test and live logs, sites list with enable/disable/edit/delete, new site wizard (static, reverse proxy, PHP) and a code editor for all config files; every change is checked (nginx -t, apachectl configtest, caddy validate, php-fpm -t) before reloading and rolled back if the check fails - Config generator: all options grouped and searchable (reverse proxy with load balancing and WebSockets, HTTPS/TLS, HSTS, security headers, IP allow list, basic auth, rate limit, gzip, caching, upload size, PHP, redirects, logs, custom directives), presets, live preview for nginx/Apache/Caddy; save as a site (needed Apache modules are enabled) or open in the editor first - Certificates tab: Let's Encrypt via certbot (request with nginx/Apache/webroot/standalone/DNS challenge, renew, dry run, delete) in a terminal tab, acme.sh certificates, expiry of all found certificate files, auto-renew timer, self-signed certificates and a TLS endpoint check from this computer - Samba/AD tab: shares (smb.conf edited section by section, checked with testparm), Samba users, services and connected clients; create a new AD domain (samba-tool domain provision), join or leave a domain (realmd/sssd) and manage domain users, groups, members and computers; passwords are passed via stdin - Settings: feature menus (Docker, firewall, network, web server, certificates, Samba/AD) can be enabled or disabled for the host menu, terminal toolbar and quick search - Start page: slowly drifting, blurred colour glows in the theme colours behind the vault (can be turned off in the design settings, respects reduced motion) Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -11,6 +11,9 @@ const { SshManager } = require('../main/ssh');
|
||||
const { DockerManager } = require('../main/docker');
|
||||
const { FirewallManager } = require('../main/firewall');
|
||||
const { NetworkConfigManager } = require('../main/network');
|
||||
const { WebServerManager } = require('../main/webserver');
|
||||
const { CertManager, probe: probeTls } = require('../main/certs');
|
||||
const { SambaManager } = require('../main/samba');
|
||||
const { AiAssistant } = require('../main/ai');
|
||||
const i18n = require('../i18n');
|
||||
const backup = require('./backup');
|
||||
@@ -35,6 +38,7 @@ function createBackend({ store, send, platform, version = '0.0.0', withSync = fa
|
||||
const docker = new DockerManager(ssh);
|
||||
const firewall = new FirewallManager(ssh);
|
||||
const network = new NetworkConfigManager(ssh);
|
||||
const admins = { web: new WebServerManager(ssh), certs: new CertManager(ssh), samba: new SambaManager(ssh) };
|
||||
const ai = new AiAssistant(store, send);
|
||||
let sync = null;
|
||||
if (withSync) {
|
||||
@@ -207,6 +211,13 @@ function createBackend({ store, send, platform, version = '0.0.0', withSync = fa
|
||||
handle('network:readFile', (id, path) => network.readFile(id, path));
|
||||
handle('network:writeFile', (id, path, content, verify) => network.writeFile(id, path, content, verify));
|
||||
handle('network:close', (id) => network.close(id));
|
||||
for (const [p, m] of Object.entries(admins)) {
|
||||
handle(`${p}:open`, (id, ref) => m.open(id, hostWithOverrides(ref), () => send(`${p}:closed`, id)));
|
||||
handle(`${p}:read`, (id) => m.read(id));
|
||||
handle(`${p}:op`, (id, op, ...args) => m.op(id, op, ...args));
|
||||
handle(`${p}:close`, (id) => m.close(id));
|
||||
}
|
||||
handle('certs:probe', (host, port) => probeTls(host, port));
|
||||
|
||||
// ---------- Support-Assistent (Ollama) ----------
|
||||
handle('ai:models', (url) => ai.models(url));
|
||||
|
||||
Reference in New Issue
Block a user