ysk-server-core 1.0.0 → 1.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -6
- package/dist/agents/probe.d.ts +2 -0
- package/dist/agents/probe.d.ts.map +1 -1
- package/dist/agents/probe.js +58 -1
- package/dist/agents/probe.js.map +1 -1
- package/dist/db/database.d.ts +1 -1
- package/dist/db/database.js +1 -1
- package/dist/db/document-store.d.ts +6 -2
- package/dist/db/document-store.d.ts.map +1 -1
- package/dist/db/document-store.js +5 -5
- package/dist/db/document-store.js.map +1 -1
- package/dist/db/store.d.ts +31 -2
- package/dist/db/store.d.ts.map +1 -1
- package/dist/db/store.js +286 -40
- package/dist/db/store.js.map +1 -1
- package/dist/email/autodiscover.d.ts +3 -0
- package/dist/email/autodiscover.d.ts.map +1 -1
- package/dist/email/autodiscover.js +57 -17
- package/dist/email/autodiscover.js.map +1 -1
- package/dist/email/dns-records.d.ts.map +1 -1
- package/dist/email/dns-records.js +3 -1
- package/dist/email/dns-records.js.map +1 -1
- package/dist/email/live-checks.d.ts.map +1 -1
- package/dist/email/live-checks.js +13 -4
- package/dist/email/live-checks.js.map +1 -1
- package/dist/email/mail-queue.d.ts +13 -4
- package/dist/email/mail-queue.d.ts.map +1 -1
- package/dist/email/mail-queue.js +69 -14
- package/dist/email/mail-queue.js.map +1 -1
- package/dist/email/mail-tls-apply.d.ts.map +1 -1
- package/dist/email/mail-tls-apply.js +22 -0
- package/dist/email/mail-tls-apply.js.map +1 -1
- package/dist/files/index.d.ts +1 -0
- package/dist/files/index.d.ts.map +1 -1
- package/dist/files/index.js +1 -0
- package/dist/files/index.js.map +1 -1
- package/dist/files/manager.d.ts +25 -6
- package/dist/files/manager.d.ts.map +1 -1
- package/dist/files/manager.js +166 -33
- package/dist/files/manager.js.map +1 -1
- package/dist/files/name-conflict.d.ts +9 -0
- package/dist/files/name-conflict.d.ts.map +1 -0
- package/dist/files/name-conflict.js +36 -0
- package/dist/files/name-conflict.js.map +1 -0
- package/dist/files/shares.d.ts.map +1 -1
- package/dist/files/shares.js +17 -1
- package/dist/files/shares.js.map +1 -1
- package/dist/host/executor.d.ts +3 -0
- package/dist/host/executor.d.ts.map +1 -1
- package/dist/host/executor.js +169 -7
- package/dist/host/executor.js.map +1 -1
- package/dist/host-browse/browser-engine.d.ts.map +1 -1
- package/dist/host-browse/browser-engine.js +2 -1
- package/dist/host-browse/browser-engine.js.map +1 -1
- package/dist/host-browse/chrome-as-user.d.ts.map +1 -1
- package/dist/host-browse/chrome-as-user.js +2 -1
- package/dist/host-browse/chrome-as-user.js.map +1 -1
- package/dist/host-browse/chrome-path.d.ts +13 -0
- package/dist/host-browse/chrome-path.d.ts.map +1 -0
- package/dist/host-browse/chrome-path.js +76 -0
- package/dist/host-browse/chrome-path.js.map +1 -0
- package/dist/host-browse/chrome-probe.d.ts.map +1 -1
- package/dist/host-browse/chrome-probe.js +3 -2
- package/dist/host-browse/chrome-probe.js.map +1 -1
- package/dist/host-browse/index.d.ts +1 -0
- package/dist/host-browse/index.d.ts.map +1 -1
- package/dist/host-browse/index.js +1 -0
- package/dist/host-browse/index.js.map +1 -1
- package/dist/host-browse/ssrf.d.ts.map +1 -1
- package/dist/host-browse/ssrf.js +2 -2
- package/dist/host-browse/ssrf.js.map +1 -1
- package/dist/host-browse/types.d.ts.map +1 -1
- package/dist/host-browse/types.js +4 -3
- package/dist/host-browse/types.js.map +1 -1
- package/dist/hosting/apache/render-site.d.ts.map +1 -1
- package/dist/hosting/apache/render-site.js +2 -1
- package/dist/hosting/apache/render-site.js.map +1 -1
- package/dist/hosting/apache/sync.d.ts +2 -0
- package/dist/hosting/apache/sync.d.ts.map +1 -1
- package/dist/hosting/apache/sync.js +25 -0
- package/dist/hosting/apache/sync.js.map +1 -1
- package/dist/hosting/app-templates.js +1 -1
- package/dist/hosting/app-templates.js.map +1 -1
- package/dist/hosting/backup-cron.d.ts +44 -1
- package/dist/hosting/backup-cron.d.ts.map +1 -1
- package/dist/hosting/backup-cron.js +432 -39
- package/dist/hosting/backup-cron.js.map +1 -1
- package/dist/hosting/backup-remote.d.ts +17 -0
- package/dist/hosting/backup-remote.d.ts.map +1 -1
- package/dist/hosting/backup-remote.js +341 -55
- package/dist/hosting/backup-remote.js.map +1 -1
- package/dist/hosting/bt-tracker/index.d.ts +3 -0
- package/dist/hosting/bt-tracker/index.d.ts.map +1 -1
- package/dist/hosting/bt-tracker/index.js +3 -0
- package/dist/hosting/bt-tracker/index.js.map +1 -1
- package/dist/hosting/bt-tracker/library-ops.d.ts +86 -0
- package/dist/hosting/bt-tracker/library-ops.d.ts.map +1 -0
- package/dist/hosting/bt-tracker/library-ops.js +481 -0
- package/dist/hosting/bt-tracker/library-ops.js.map +1 -0
- package/dist/hosting/bt-tracker/library.d.ts +12 -0
- package/dist/hosting/bt-tracker/library.d.ts.map +1 -0
- package/dist/hosting/bt-tracker/library.js +109 -0
- package/dist/hosting/bt-tracker/library.js.map +1 -0
- package/dist/hosting/bt-tracker/restore-library.d.ts +16 -0
- package/dist/hosting/bt-tracker/restore-library.d.ts.map +1 -0
- package/dist/hosting/bt-tracker/restore-library.js +67 -0
- package/dist/hosting/bt-tracker/restore-library.js.map +1 -0
- package/dist/hosting/bt-tracker/restore-shares.d.ts.map +1 -1
- package/dist/hosting/bt-tracker/restore-shares.js +8 -0
- package/dist/hosting/bt-tracker/restore-shares.js.map +1 -1
- package/dist/hosting/bt-tracker/seeder.d.ts +55 -16
- package/dist/hosting/bt-tracker/seeder.d.ts.map +1 -1
- package/dist/hosting/bt-tracker/seeder.js +103 -3
- package/dist/hosting/bt-tracker/seeder.js.map +1 -1
- package/dist/hosting/bt-tracker/service.d.ts.map +1 -1
- package/dist/hosting/bt-tracker/service.js +28 -4
- package/dist/hosting/bt-tracker/service.js.map +1 -1
- package/dist/hosting/bt-tracker/settings.d.ts +14 -1
- package/dist/hosting/bt-tracker/settings.d.ts.map +1 -1
- package/dist/hosting/bt-tracker/settings.js +102 -3
- package/dist/hosting/bt-tracker/settings.js.map +1 -1
- package/dist/hosting/cdn/fan-out.d.ts.map +1 -1
- package/dist/hosting/cdn/fan-out.js +64 -32
- package/dist/hosting/cdn/fan-out.js.map +1 -1
- package/dist/hosting/cdn/from-project.d.ts +6 -0
- package/dist/hosting/cdn/from-project.d.ts.map +1 -1
- package/dist/hosting/cdn/from-project.js +55 -1
- package/dist/hosting/cdn/from-project.js.map +1 -1
- package/dist/hosting/cdn/http-probe-error.d.ts +7 -0
- package/dist/hosting/cdn/http-probe-error.d.ts.map +1 -0
- package/dist/hosting/cdn/http-probe-error.js +44 -0
- package/dist/hosting/cdn/http-probe-error.js.map +1 -0
- package/dist/hosting/cdn/nodes.d.ts +8 -0
- package/dist/hosting/cdn/nodes.d.ts.map +1 -1
- package/dist/hosting/cdn/nodes.js +69 -1
- package/dist/hosting/cdn/nodes.js.map +1 -1
- package/dist/hosting/cdn/sites.d.ts +2 -0
- package/dist/hosting/cdn/sites.d.ts.map +1 -1
- package/dist/hosting/cdn/sites.js +5 -1
- package/dist/hosting/cdn/sites.js.map +1 -1
- package/dist/hosting/cdn/ssl.d.ts.map +1 -1
- package/dist/hosting/cdn/ssl.js +3 -25
- package/dist/hosting/cdn/ssl.js.map +1 -1
- package/dist/hosting/db-cluster/apply-local.d.ts +1 -1
- package/dist/hosting/db-cluster/apply-local.js +7 -7
- package/dist/hosting/db-cluster/apply-local.js.map +1 -1
- package/dist/hosting/db-cluster/probe.js +1 -1
- package/dist/hosting/db-cluster/probe.js.map +1 -1
- package/dist/hosting/db-cluster/push-peer.d.ts +3 -0
- package/dist/hosting/db-cluster/push-peer.d.ts.map +1 -1
- package/dist/hosting/db-cluster/push-peer.js +41 -21
- package/dist/hosting/db-cluster/push-peer.js.map +1 -1
- package/dist/hosting/db-cluster/store.d.ts +1 -0
- package/dist/hosting/db-cluster/store.d.ts.map +1 -1
- package/dist/hosting/db-cluster/store.js +11 -0
- package/dist/hosting/db-cluster/store.js.map +1 -1
- package/dist/hosting/db-cluster/types.d.ts +1 -1
- package/dist/hosting/db-cluster/types.d.ts.map +1 -1
- package/dist/hosting/db-service-config.d.ts +13 -0
- package/dist/hosting/db-service-config.d.ts.map +1 -1
- package/dist/hosting/db-service-config.js +51 -1
- package/dist/hosting/db-service-config.js.map +1 -1
- package/dist/hosting/defense/automation.js +1 -1
- package/dist/hosting/defense/automation.js.map +1 -1
- package/dist/hosting/defense/defense-service.d.ts.map +1 -1
- package/dist/hosting/defense/defense-service.js +62 -39
- package/dist/hosting/defense/defense-service.js.map +1 -1
- package/dist/hosting/defense/geoip/index.d.ts.map +1 -1
- package/dist/hosting/defense/geoip/index.js +9 -7
- package/dist/hosting/defense/geoip/index.js.map +1 -1
- package/dist/hosting/defense/presets.js +2 -2
- package/dist/hosting/defense/presets.js.map +1 -1
- package/dist/hosting/defense/signals.d.ts +5 -0
- package/dist/hosting/defense/signals.d.ts.map +1 -1
- package/dist/hosting/defense/signals.js +26 -10
- package/dist/hosting/defense/signals.js.map +1 -1
- package/dist/hosting/defense/types.d.ts +2 -0
- package/dist/hosting/defense/types.d.ts.map +1 -1
- package/dist/hosting/dns-health.d.ts.map +1 -1
- package/dist/hosting/dns-health.js +34 -26
- package/dist/hosting/dns-health.js.map +1 -1
- package/dist/hosting/dns-lookup.d.ts.map +1 -1
- package/dist/hosting/dns-lookup.js +11 -0
- package/dist/hosting/dns-lookup.js.map +1 -1
- package/dist/hosting/dns-zone.d.ts +18 -0
- package/dist/hosting/dns-zone.d.ts.map +1 -1
- package/dist/hosting/dns-zone.js +59 -0
- package/dist/hosting/dns-zone.js.map +1 -1
- package/dist/hosting/docker/argv.d.ts +10 -0
- package/dist/hosting/docker/argv.d.ts.map +1 -0
- package/dist/hosting/docker/argv.js +274 -0
- package/dist/hosting/docker/argv.js.map +1 -0
- package/dist/hosting/docker/daemon.d.ts +27 -0
- package/dist/hosting/docker/daemon.d.ts.map +1 -0
- package/dist/hosting/docker/daemon.js +125 -0
- package/dist/hosting/docker/daemon.js.map +1 -0
- package/dist/hosting/docker/honesty.d.ts +27 -0
- package/dist/hosting/docker/honesty.d.ts.map +1 -0
- package/dist/hosting/docker/honesty.js +50 -0
- package/dist/hosting/docker/honesty.js.map +1 -0
- package/dist/hosting/docker/index.d.ts +6 -0
- package/dist/hosting/docker/index.d.ts.map +1 -0
- package/dist/hosting/docker/index.js +6 -0
- package/dist/hosting/docker/index.js.map +1 -0
- package/dist/hosting/docker/manager.d.ts +131 -0
- package/dist/hosting/docker/manager.d.ts.map +1 -0
- package/dist/hosting/docker/manager.js +681 -0
- package/dist/hosting/docker/manager.js.map +1 -0
- package/dist/hosting/docker/parse.d.ts +22 -0
- package/dist/hosting/docker/parse.d.ts.map +1 -0
- package/dist/hosting/docker/parse.js +205 -0
- package/dist/hosting/docker/parse.js.map +1 -0
- package/dist/hosting/extras.d.ts.map +1 -1
- package/dist/hosting/extras.js +7 -1
- package/dist/hosting/extras.js.map +1 -1
- package/dist/hosting/fail2ban-ops.d.ts +2 -0
- package/dist/hosting/fail2ban-ops.d.ts.map +1 -1
- package/dist/hosting/fail2ban-ops.js +11 -9
- package/dist/hosting/fail2ban-ops.js.map +1 -1
- package/dist/hosting/firewall-ops.d.ts +4 -0
- package/dist/hosting/firewall-ops.d.ts.map +1 -1
- package/dist/hosting/firewall-ops.js +43 -2
- package/dist/hosting/firewall-ops.js.map +1 -1
- package/dist/hosting/ftps-service.d.ts +34 -0
- package/dist/hosting/ftps-service.d.ts.map +1 -1
- package/dist/hosting/ftps-service.js +141 -13
- package/dist/hosting/ftps-service.js.map +1 -1
- package/dist/hosting/git-auth.d.ts +77 -0
- package/dist/hosting/git-auth.d.ts.map +1 -0
- package/dist/hosting/git-auth.js +314 -0
- package/dist/hosting/git-auth.js.map +1 -0
- package/dist/hosting/git-control.d.ts +110 -0
- package/dist/hosting/git-control.d.ts.map +1 -0
- package/dist/hosting/git-control.js +333 -0
- package/dist/hosting/git-control.js.map +1 -0
- package/dist/hosting/git-deploy.d.ts +2 -0
- package/dist/hosting/git-deploy.d.ts.map +1 -1
- package/dist/hosting/git-deploy.js +50 -7
- package/dist/hosting/git-deploy.js.map +1 -1
- package/dist/hosting/git-errors.d.ts +7 -0
- package/dist/hosting/git-errors.d.ts.map +1 -0
- package/dist/hosting/git-errors.js +45 -0
- package/dist/hosting/git-errors.js.map +1 -0
- package/dist/hosting/git-hook.d.ts +33 -0
- package/dist/hosting/git-hook.d.ts.map +1 -0
- package/dist/hosting/git-hook.js +174 -0
- package/dist/hosting/git-hook.js.map +1 -0
- package/dist/hosting/global-search.d.ts.map +1 -1
- package/dist/hosting/global-search.js +22 -4
- package/dist/hosting/global-search.js.map +1 -1
- package/dist/hosting/host-migrate/bootstrap-target.d.ts +1 -1
- package/dist/hosting/host-migrate/bootstrap-target.js +6 -6
- package/dist/hosting/host-migrate/bootstrap-target.js.map +1 -1
- package/dist/hosting/host-migrate/index.d.ts +1 -0
- package/dist/hosting/host-migrate/index.d.ts.map +1 -1
- package/dist/hosting/host-migrate/index.js +1 -0
- package/dist/hosting/host-migrate/index.js.map +1 -1
- package/dist/hosting/host-migrate/inventory.d.ts.map +1 -1
- package/dist/hosting/host-migrate/inventory.js +20 -0
- package/dist/hosting/host-migrate/inventory.js.map +1 -1
- package/dist/hosting/host-migrate/orphan-homes.d.ts +19 -0
- package/dist/hosting/host-migrate/orphan-homes.d.ts.map +1 -0
- package/dist/hosting/host-migrate/orphan-homes.js +46 -0
- package/dist/hosting/host-migrate/orphan-homes.js.map +1 -0
- package/dist/hosting/host-migrate/temp-key.d.ts.map +1 -1
- package/dist/hosting/host-migrate/temp-key.js +7 -1
- package/dist/hosting/host-migrate/temp-key.js.map +1 -1
- package/dist/hosting/index.d.ts +9 -0
- package/dist/hosting/index.d.ts.map +1 -1
- package/dist/hosting/index.js +9 -0
- package/dist/hosting/index.js.map +1 -1
- package/dist/hosting/leftover-apply.d.ts +34 -0
- package/dist/hosting/leftover-apply.d.ts.map +1 -0
- package/dist/hosting/leftover-apply.js +187 -0
- package/dist/hosting/leftover-apply.js.map +1 -0
- package/dist/hosting/leftover-probe.d.ts +40 -0
- package/dist/hosting/leftover-probe.d.ts.map +1 -0
- package/dist/hosting/leftover-probe.js +181 -0
- package/dist/hosting/leftover-probe.js.map +1 -0
- package/dist/hosting/log-center/catalog.d.ts.map +1 -1
- package/dist/hosting/log-center/catalog.js +9 -0
- package/dist/hosting/log-center/catalog.js.map +1 -1
- package/dist/hosting/log-center/journal.d.ts.map +1 -1
- package/dist/hosting/log-center/journal.js +3 -0
- package/dist/hosting/log-center/journal.js.map +1 -1
- package/dist/hosting/managed-resources.d.ts.map +1 -1
- package/dist/hosting/managed-resources.js +18 -2
- package/dist/hosting/managed-resources.js.map +1 -1
- package/dist/hosting/nginx-sites-list.d.ts.map +1 -1
- package/dist/hosting/nginx-sites-list.js +39 -3
- package/dist/hosting/nginx-sites-list.js.map +1 -1
- package/dist/hosting/nginx-ssl.d.ts +4 -0
- package/dist/hosting/nginx-ssl.d.ts.map +1 -1
- package/dist/hosting/nginx-ssl.js +52 -7
- package/dist/hosting/nginx-ssl.js.map +1 -1
- package/dist/hosting/nginx-sync.d.ts +34 -0
- package/dist/hosting/nginx-sync.d.ts.map +1 -1
- package/dist/hosting/nginx-sync.js +258 -11
- package/dist/hosting/nginx-sync.js.map +1 -1
- package/dist/hosting/ops-log.d.ts +23 -0
- package/dist/hosting/ops-log.d.ts.map +1 -0
- package/dist/hosting/ops-log.js +15 -0
- package/dist/hosting/ops-log.js.map +1 -0
- package/dist/hosting/panel-tls.d.ts +9 -0
- package/dist/hosting/panel-tls.d.ts.map +1 -1
- package/dist/hosting/panel-tls.js +50 -2
- package/dist/hosting/panel-tls.js.map +1 -1
- package/dist/hosting/pm2-apply.d.ts.map +1 -1
- package/dist/hosting/pm2-apply.js +9 -2
- package/dist/hosting/pm2-apply.js.map +1 -1
- package/dist/hosting/postgres-provision.d.ts.map +1 -1
- package/dist/hosting/postgres-provision.js +43 -19
- package/dist/hosting/postgres-provision.js.map +1 -1
- package/dist/hosting/production-readiness.d.ts.map +1 -1
- package/dist/hosting/production-readiness.js +67 -10
- package/dist/hosting/production-readiness.js.map +1 -1
- package/dist/hosting/project-create-extras.d.ts +37 -0
- package/dist/hosting/project-create-extras.d.ts.map +1 -0
- package/dist/hosting/project-create-extras.js +47 -0
- package/dist/hosting/project-create-extras.js.map +1 -0
- package/dist/hosting/project-isolation-status.d.ts.map +1 -1
- package/dist/hosting/project-isolation-status.js +10 -2
- package/dist/hosting/project-isolation-status.js.map +1 -1
- package/dist/hosting/project-ops.d.ts +67 -0
- package/dist/hosting/project-ops.d.ts.map +1 -1
- package/dist/hosting/project-ops.js +377 -7
- package/dist/hosting/project-ops.js.map +1 -1
- package/dist/hosting/project-service.d.ts +3 -0
- package/dist/hosting/project-service.d.ts.map +1 -1
- package/dist/hosting/project-service.js +9 -0
- package/dist/hosting/project-service.js.map +1 -1
- package/dist/hosting/public-files.d.ts +4 -0
- package/dist/hosting/public-files.d.ts.map +1 -1
- package/dist/hosting/public-files.js +46 -7
- package/dist/hosting/public-files.js.map +1 -1
- package/dist/hosting/rebuild.d.ts +1 -0
- package/dist/hosting/rebuild.d.ts.map +1 -1
- package/dist/hosting/rebuild.js +14 -4
- package/dist/hosting/rebuild.js.map +1 -1
- package/dist/hosting/runtime-probe.d.ts +7 -0
- package/dist/hosting/runtime-probe.d.ts.map +1 -1
- package/dist/hosting/runtime-probe.js +74 -7
- package/dist/hosting/runtime-probe.js.map +1 -1
- package/dist/hosting/runtime.d.ts.map +1 -1
- package/dist/hosting/runtime.js +5 -3
- package/dist/hosting/runtime.js.map +1 -1
- package/dist/hosting/service-catalog/redis.d.ts.map +1 -1
- package/dist/hosting/service-catalog/redis.js +2 -1
- package/dist/hosting/service-catalog/redis.js.map +1 -1
- package/dist/hosting/service-console.d.ts +1 -1
- package/dist/hosting/service-console.d.ts.map +1 -1
- package/dist/hosting/service-console.js +4 -3
- package/dist/hosting/service-console.js.map +1 -1
- package/dist/hosting/service-matrix.d.ts +1 -1
- package/dist/hosting/service-matrix.d.ts.map +1 -1
- package/dist/hosting/service-matrix.js +24 -1
- package/dist/hosting/service-matrix.js.map +1 -1
- package/dist/hosting/sftp-keys.d.ts.map +1 -1
- package/dist/hosting/sftp-keys.js +2 -1
- package/dist/hosting/sftp-keys.js.map +1 -1
- package/dist/hosting/software-catalog.d.ts +2 -2
- package/dist/hosting/software-catalog.d.ts.map +1 -1
- package/dist/hosting/software-catalog.js +12 -2
- package/dist/hosting/software-catalog.js.map +1 -1
- package/dist/hosting/software-install.d.ts +4 -0
- package/dist/hosting/software-install.d.ts.map +1 -1
- package/dist/hosting/software-install.js +21 -0
- package/dist/hosting/software-install.js.map +1 -1
- package/dist/hosting/software-probe/HostSoftwareProbe.d.ts.map +1 -1
- package/dist/hosting/software-probe/HostSoftwareProbe.js +4 -0
- package/dist/hosting/software-probe/HostSoftwareProbe.js.map +1 -1
- package/dist/hosting/software-probe/registry.d.ts.map +1 -1
- package/dist/hosting/software-probe/registry.js +13 -0
- package/dist/hosting/software-probe/registry.js.map +1 -1
- package/dist/hosting/software-uninstall.d.ts.map +1 -1
- package/dist/hosting/software-uninstall.js +22 -0
- package/dist/hosting/software-uninstall.js.map +1 -1
- package/dist/hosting/sql-engine-switch/migrate.d.ts.map +1 -1
- package/dist/hosting/sql-engine-switch/migrate.js +62 -5
- package/dist/hosting/sql-engine-switch/migrate.js.map +1 -1
- package/dist/hosting/sql-engine-switch/preview.d.ts +9 -0
- package/dist/hosting/sql-engine-switch/preview.d.ts.map +1 -1
- package/dist/hosting/sql-engine-switch/preview.js +48 -0
- package/dist/hosting/sql-engine-switch/preview.js.map +1 -1
- package/dist/hosting/ssl-certs.js +1 -1
- package/dist/hosting/ssl-certs.js.map +1 -1
- package/dist/hosting/stack/definitions.js +1 -1
- package/dist/hosting/stack/definitions.js.map +1 -1
- package/dist/hosting/system-apply.d.ts.map +1 -1
- package/dist/hosting/system-apply.js +16 -6
- package/dist/hosting/system-apply.js.map +1 -1
- package/dist/hosting/temp-db-user.d.ts +10 -0
- package/dist/hosting/temp-db-user.d.ts.map +1 -1
- package/dist/hosting/temp-db-user.js +31 -0
- package/dist/hosting/temp-db-user.js.map +1 -1
- package/dist/hosting/validators/adapters/ada.d.ts +16 -0
- package/dist/hosting/validators/adapters/ada.d.ts.map +1 -0
- package/dist/hosting/validators/adapters/ada.js +72 -0
- package/dist/hosting/validators/adapters/ada.js.map +1 -0
- package/dist/hosting/validators/adapters/avax.d.ts +17 -0
- package/dist/hosting/validators/adapters/avax.d.ts.map +1 -0
- package/dist/hosting/validators/adapters/avax.js +66 -0
- package/dist/hosting/validators/adapters/avax.js.map +1 -0
- package/dist/hosting/validators/adapters/base.d.ts +61 -0
- package/dist/hosting/validators/adapters/base.d.ts.map +1 -0
- package/dist/hosting/validators/adapters/base.js +4 -0
- package/dist/hosting/validators/adapters/base.js.map +1 -0
- package/dist/hosting/validators/adapters/eth-clients.d.ts +16 -0
- package/dist/hosting/validators/adapters/eth-clients.d.ts.map +1 -0
- package/dist/hosting/validators/adapters/eth-clients.js +247 -0
- package/dist/hosting/validators/adapters/eth-clients.js.map +1 -0
- package/dist/hosting/validators/adapters/eth.d.ts +18 -0
- package/dist/hosting/validators/adapters/eth.d.ts.map +1 -0
- package/dist/hosting/validators/adapters/eth.js +102 -0
- package/dist/hosting/validators/adapters/eth.js.map +1 -0
- package/dist/hosting/validators/adapters/index.d.ts +5 -0
- package/dist/hosting/validators/adapters/index.d.ts.map +1 -0
- package/dist/hosting/validators/adapters/index.js +39 -0
- package/dist/hosting/validators/adapters/index.js.map +1 -0
- package/dist/hosting/validators/adapters/near.d.ts +15 -0
- package/dist/hosting/validators/adapters/near.d.ts.map +1 -0
- package/dist/hosting/validators/adapters/near.js +72 -0
- package/dist/hosting/validators/adapters/near.js.map +1 -0
- package/dist/hosting/validators/adapters/phase2.d.ts +33 -0
- package/dist/hosting/validators/adapters/phase2.d.ts.map +1 -0
- package/dist/hosting/validators/adapters/phase2.js +294 -0
- package/dist/hosting/validators/adapters/phase2.js.map +1 -0
- package/dist/hosting/validators/compose-runner.d.ts +88 -0
- package/dist/hosting/validators/compose-runner.d.ts.map +1 -0
- package/dist/hosting/validators/compose-runner.js +178 -0
- package/dist/hosting/validators/compose-runner.js.map +1 -0
- package/dist/hosting/validators/disk.d.ts +29 -0
- package/dist/hosting/validators/disk.d.ts.map +1 -0
- package/dist/hosting/validators/disk.js +208 -0
- package/dist/hosting/validators/disk.js.map +1 -0
- package/dist/hosting/validators/extras.d.ts +82 -0
- package/dist/hosting/validators/extras.d.ts.map +1 -0
- package/dist/hosting/validators/extras.js +391 -0
- package/dist/hosting/validators/extras.js.map +1 -0
- package/dist/hosting/validators/health.d.ts +21 -0
- package/dist/hosting/validators/health.d.ts.map +1 -0
- package/dist/hosting/validators/health.js +65 -0
- package/dist/hosting/validators/health.js.map +1 -0
- package/dist/hosting/validators/honesty.d.ts +33 -0
- package/dist/hosting/validators/honesty.d.ts.map +1 -0
- package/dist/hosting/validators/honesty.js +54 -0
- package/dist/hosting/validators/honesty.js.map +1 -0
- package/dist/hosting/validators/index.d.ts +26 -0
- package/dist/hosting/validators/index.d.ts.map +1 -0
- package/dist/hosting/validators/index.js +26 -0
- package/dist/hosting/validators/index.js.map +1 -0
- package/dist/hosting/validators/manager.d.ts +78 -0
- package/dist/hosting/validators/manager.d.ts.map +1 -0
- package/dist/hosting/validators/manager.js +455 -0
- package/dist/hosting/validators/manager.js.map +1 -0
- package/dist/hosting/validators/mithril.d.ts +30 -0
- package/dist/hosting/validators/mithril.d.ts.map +1 -0
- package/dist/hosting/validators/mithril.js +146 -0
- package/dist/hosting/validators/mithril.js.map +1 -0
- package/dist/hosting/validators/native-prune.d.ts +12 -0
- package/dist/hosting/validators/native-prune.d.ts.map +1 -0
- package/dist/hosting/validators/native-prune.js +40 -0
- package/dist/hosting/validators/native-prune.js.map +1 -0
- package/dist/hosting/validators/ports.d.ts +7 -0
- package/dist/hosting/validators/ports.d.ts.map +1 -0
- package/dist/hosting/validators/ports.js +75 -0
- package/dist/hosting/validators/ports.js.map +1 -0
- package/dist/hosting/validators/registry.d.ts +22 -0
- package/dist/hosting/validators/registry.d.ts.map +1 -0
- package/dist/hosting/validators/registry.js +311 -0
- package/dist/hosting/validators/registry.js.map +1 -0
- package/dist/hosting/validators/releases.d.ts +30 -0
- package/dist/hosting/validators/releases.d.ts.map +1 -0
- package/dist/hosting/validators/releases.js +149 -0
- package/dist/hosting/validators/releases.js.map +1 -0
- package/dist/hosting/validators/runtime-status.d.ts +13 -0
- package/dist/hosting/validators/runtime-status.d.ts.map +1 -0
- package/dist/hosting/validators/runtime-status.js +19 -0
- package/dist/hosting/validators/runtime-status.js.map +1 -0
- package/dist/hosting/validators/settings.d.ts +4 -0
- package/dist/hosting/validators/settings.d.ts.map +1 -0
- package/dist/hosting/validators/settings.js +28 -0
- package/dist/hosting/validators/settings.js.map +1 -0
- package/dist/hosting/validators/snapshots.d.ts +40 -0
- package/dist/hosting/validators/snapshots.d.ts.map +1 -0
- package/dist/hosting/validators/snapshots.js +221 -0
- package/dist/hosting/validators/snapshots.js.map +1 -0
- package/dist/hosting/validators/software-catalog.d.ts +24 -0
- package/dist/hosting/validators/software-catalog.d.ts.map +1 -0
- package/dist/hosting/validators/software-catalog.js +125 -0
- package/dist/hosting/validators/software-catalog.js.map +1 -0
- package/dist/hosting/validators/store.d.ts +29 -0
- package/dist/hosting/validators/store.d.ts.map +1 -0
- package/dist/hosting/validators/store.js +186 -0
- package/dist/hosting/validators/store.js.map +1 -0
- package/dist/hosting/validators/upgrade.d.ts +35 -0
- package/dist/hosting/validators/upgrade.d.ts.map +1 -0
- package/dist/hosting/validators/upgrade.js +251 -0
- package/dist/hosting/validators/upgrade.js.map +1 -0
- package/dist/hosting/validators/versions.d.ts +9 -0
- package/dist/hosting/validators/versions.d.ts.map +1 -0
- package/dist/hosting/validators/versions.js +20 -0
- package/dist/hosting/validators/versions.js.map +1 -0
- package/dist/hosting/version-discovery.d.ts.map +1 -1
- package/dist/hosting/version-discovery.js +15 -6
- package/dist/hosting/version-discovery.js.map +1 -1
- package/dist/hosting/vnc/client-profiles.d.ts.map +1 -1
- package/dist/hosting/vnc/client-profiles.js +12 -6
- package/dist/hosting/vnc/client-profiles.js.map +1 -1
- package/dist/hosting/vnc/hostname-hosts.d.ts +28 -0
- package/dist/hosting/vnc/hostname-hosts.d.ts.map +1 -0
- package/dist/hosting/vnc/hostname-hosts.js +177 -0
- package/dist/hosting/vnc/hostname-hosts.js.map +1 -0
- package/dist/hosting/vnc/index.d.ts +1 -0
- package/dist/hosting/vnc/index.d.ts.map +1 -1
- package/dist/hosting/vnc/index.js +1 -0
- package/dist/hosting/vnc/index.js.map +1 -1
- package/dist/hosting/vnc/passwd.d.ts.map +1 -1
- package/dist/hosting/vnc/passwd.js +14 -3
- package/dist/hosting/vnc/passwd.js.map +1 -1
- package/dist/hosting/vnc/server-session.d.ts.map +1 -1
- package/dist/hosting/vnc/server-session.js +5 -0
- package/dist/hosting/vnc/server-session.js.map +1 -1
- package/dist/hosting/vnc/service.d.ts +1 -0
- package/dist/hosting/vnc/service.d.ts.map +1 -1
- package/dist/hosting/vnc/service.js +80 -9
- package/dist/hosting/vnc/service.js.map +1 -1
- package/dist/hosting/vnc/types.d.ts +8 -0
- package/dist/hosting/vnc/types.d.ts.map +1 -1
- package/dist/hosting/vnc/types.js +22 -0
- package/dist/hosting/vnc/types.js.map +1 -1
- package/dist/hosting/vpn/client-conf-protect.d.ts +5 -0
- package/dist/hosting/vpn/client-conf-protect.d.ts.map +1 -1
- package/dist/hosting/vpn/client-conf-protect.js +15 -0
- package/dist/hosting/vpn/client-conf-protect.js.map +1 -1
- package/dist/hosting/vpn/openvpn-ops.d.ts.map +1 -1
- package/dist/hosting/vpn/openvpn-ops.js +13 -3
- package/dist/hosting/vpn/openvpn-ops.js.map +1 -1
- package/dist/hosting/vpn/outline-ops.d.ts.map +1 -1
- package/dist/hosting/vpn/outline-ops.js +7 -3
- package/dist/hosting/vpn/outline-ops.js.map +1 -1
- package/dist/hosting/vpn/ports.d.ts +3 -0
- package/dist/hosting/vpn/ports.d.ts.map +1 -1
- package/dist/hosting/vpn/ports.js +8 -0
- package/dist/hosting/vpn/ports.js.map +1 -1
- package/dist/hosting/vpn/service.d.ts +11 -0
- package/dist/hosting/vpn/service.d.ts.map +1 -1
- package/dist/hosting/vpn/service.js +102 -27
- package/dist/hosting/vpn/service.js.map +1 -1
- package/dist/hosting/web-stats.d.ts.map +1 -1
- package/dist/hosting/web-stats.js +0 -1
- package/dist/hosting/web-stats.js.map +1 -1
- package/dist/hosting/wizard.d.ts.map +1 -1
- package/dist/hosting/wizard.js +53 -63
- package/dist/hosting/wizard.js.map +1 -1
- package/dist/llm/http-transport.d.ts.map +1 -1
- package/dist/llm/http-transport.js +11 -3
- package/dist/llm/http-transport.js.map +1 -1
- package/dist/monitoring/notifications.d.ts.map +1 -1
- package/dist/monitoring/notifications.js +86 -0
- package/dist/monitoring/notifications.js.map +1 -1
- package/dist/monitoring/process-snapshot.d.ts +2 -0
- package/dist/monitoring/process-snapshot.d.ts.map +1 -1
- package/dist/monitoring/process-snapshot.js +14 -2
- package/dist/monitoring/process-snapshot.js.map +1 -1
- package/dist/net/ssrf.d.ts +6 -0
- package/dist/net/ssrf.d.ts.map +1 -1
- package/dist/net/ssrf.js +80 -15
- package/dist/net/ssrf.js.map +1 -1
- package/dist/repositories/project-repo.d.ts +1 -1
- package/dist/repositories/project-repo.d.ts.map +1 -1
- package/dist/repositories/project-repo.js +12 -0
- package/dist/repositories/project-repo.js.map +1 -1
- package/dist/repositories/settings-repo.d.ts.map +1 -1
- package/dist/repositories/settings-repo.js +6 -1
- package/dist/repositories/settings-repo.js.map +1 -1
- package/dist/security/mfa/rate-limit.d.ts +11 -0
- package/dist/security/mfa/rate-limit.d.ts.map +1 -1
- package/dist/security/mfa/rate-limit.js +18 -0
- package/dist/security/mfa/rate-limit.js.map +1 -1
- package/dist/security/mfa/webauthn.d.ts +5 -0
- package/dist/security/mfa/webauthn.d.ts.map +1 -1
- package/dist/security/mfa/webauthn.js +13 -4
- package/dist/security/mfa/webauthn.js.map +1 -1
- package/dist/security/ssh-identity/install.d.ts.map +1 -1
- package/dist/security/ssh-identity/install.js +12 -0
- package/dist/security/ssh-identity/install.js.map +1 -1
- package/dist/security/ssh-identity/ops.d.ts +16 -0
- package/dist/security/ssh-identity/ops.d.ts.map +1 -1
- package/dist/security/ssh-identity/ops.js +73 -3
- package/dist/security/ssh-identity/ops.js.map +1 -1
- package/dist/services/auth.d.ts +9 -0
- package/dist/services/auth.d.ts.map +1 -1
- package/dist/services/auth.js +27 -9
- package/dist/services/auth.js.map +1 -1
- package/dist/services/protection-probe.d.ts.map +1 -1
- package/dist/services/protection-probe.js +7 -5
- package/dist/services/protection-probe.js.map +1 -1
- package/dist/services/scheduler.d.ts +5 -0
- package/dist/services/scheduler.d.ts.map +1 -1
- package/dist/services/scheduler.js +11 -0
- package/dist/services/scheduler.js.map +1 -1
- package/dist/services/users-admin.d.ts +1 -0
- package/dist/services/users-admin.d.ts.map +1 -1
- package/dist/services/users-admin.js +42 -4
- package/dist/services/users-admin.js.map +1 -1
- package/dist/update/index.d.ts +2 -0
- package/dist/update/index.d.ts.map +1 -1
- package/dist/update/index.js +2 -0
- package/dist/update/index.js.map +1 -1
- package/dist/update/inventory.d.ts +2 -0
- package/dist/update/inventory.d.ts.map +1 -1
- package/dist/update/inventory.js +13 -5
- package/dist/update/inventory.js.map +1 -1
- package/dist/update/self-update-apply.d.ts +55 -0
- package/dist/update/self-update-apply.d.ts.map +1 -1
- package/dist/update/self-update-apply.js +238 -66
- package/dist/update/self-update-apply.js.map +1 -1
- package/dist/update/self-update-overlay.d.ts +54 -0
- package/dist/update/self-update-overlay.d.ts.map +1 -0
- package/dist/update/self-update-overlay.js +360 -0
- package/dist/update/self-update-overlay.js.map +1 -0
- package/dist/update/update-hub.d.ts +45 -0
- package/dist/update/update-hub.d.ts.map +1 -0
- package/dist/update/update-hub.js +217 -0
- package/dist/update/update-hub.js.map +1 -0
- package/package.json +10 -13
|
@@ -52,6 +52,24 @@ export function parseUfwNumbered(lines) {
|
|
|
52
52
|
}
|
|
53
53
|
return out;
|
|
54
54
|
}
|
|
55
|
+
/** Parse `/etc/ufw/user.rules` DROP/REJECT source IPs (inactive UFW still stores these). */
|
|
56
|
+
export function parseUfwUserRulesDenyIps(body) {
|
|
57
|
+
const ips = [];
|
|
58
|
+
for (const line of String(body ?? '').split('\n')) {
|
|
59
|
+
const t = line.trim();
|
|
60
|
+
if (!t || t.startsWith('#'))
|
|
61
|
+
continue;
|
|
62
|
+
if (!/-j\s+(DROP|REJECT)\b/i.test(t))
|
|
63
|
+
continue;
|
|
64
|
+
const m = t.match(/-s\s+(\S+)/);
|
|
65
|
+
if (!m)
|
|
66
|
+
continue;
|
|
67
|
+
const n = normalizeIp(m[1].replace(/\/32$/, ''));
|
|
68
|
+
if (n && isValidIp(n))
|
|
69
|
+
ips.push(n);
|
|
70
|
+
}
|
|
71
|
+
return [...new Set(ips)];
|
|
72
|
+
}
|
|
55
73
|
export function extractDenyFromIps(rules) {
|
|
56
74
|
const ips = [];
|
|
57
75
|
for (const r of rules) {
|
|
@@ -114,9 +132,26 @@ export async function probeFirewallDeep(host) {
|
|
|
114
132
|
notes.push(tl('notes.auto.n0197'));
|
|
115
133
|
}
|
|
116
134
|
const rules = parseUfwNumbered(numberedRules);
|
|
117
|
-
const
|
|
135
|
+
const liveDenyFromIps = extractDenyFromIps(rules);
|
|
118
136
|
const allowCount = rules.filter((r) => /ALLOW/i.test(r.action)).length;
|
|
119
|
-
const
|
|
137
|
+
const liveDenyCount = rules.filter((r) => /DENY|REJECT/i.test(r.action)).length;
|
|
138
|
+
let configuredDenyFromIps = [];
|
|
139
|
+
if (installed) {
|
|
140
|
+
try {
|
|
141
|
+
if (host.pathExists('/etc/ufw/user.rules')) {
|
|
142
|
+
const body = await host.readFile('/etc/ufw/user.rules');
|
|
143
|
+
configuredDenyFromIps = parseUfwUserRulesDenyIps(body);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
/* optional */
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
if (active !== 'active' && configuredDenyFromIps.length) {
|
|
151
|
+
notes.push(tl('notes.auto.n1611', { n: configuredDenyFromIps.length }));
|
|
152
|
+
}
|
|
153
|
+
const denyFromIps = active === 'active' ? liveDenyFromIps : [];
|
|
154
|
+
const denyCount = active === 'active' ? liveDenyCount : 0;
|
|
120
155
|
return {
|
|
121
156
|
installed,
|
|
122
157
|
active,
|
|
@@ -127,6 +162,8 @@ export async function probeFirewallDeep(host) {
|
|
|
127
162
|
denyFromIps,
|
|
128
163
|
allowCount,
|
|
129
164
|
denyCount,
|
|
165
|
+
configuredDenyFromIps,
|
|
166
|
+
configuredDenyCount: configuredDenyFromIps.length,
|
|
130
167
|
defaultIncoming,
|
|
131
168
|
defaultOutgoing,
|
|
132
169
|
executeEnabled: host.executeEnabled(),
|
|
@@ -177,6 +214,10 @@ export async function firewallDenyIp(host, ip) {
|
|
|
177
214
|
if (!safe || !isValidIp(safe)) {
|
|
178
215
|
return { ok: false, notes: [tl('notes.invalidIp46')] };
|
|
179
216
|
}
|
|
217
|
+
const fw = await probeFirewallDeep(host);
|
|
218
|
+
if (fw.active !== 'active') {
|
|
219
|
+
return { ok: false, notes: [tl('notes.auto.n1612')] };
|
|
220
|
+
}
|
|
180
221
|
const r = await host.runCommand(['ufw', 'deny', 'from', safe], { timeoutMs: 12_000 });
|
|
181
222
|
return {
|
|
182
223
|
ok: r.exitCode === 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firewall-ops.js","sourceRoot":"","sources":["../../src/hosting/firewall-ops.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"firewall-ops.js","sourceRoot":"","sources":["../../src/hosting/firewall-ops.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,11 @@ export interface FtpsSettings {
|
|
|
18
18
|
*/
|
|
19
19
|
listenIpv6: boolean;
|
|
20
20
|
listenPort: number;
|
|
21
|
+
/**
|
|
22
|
+
* New installs bind loopback. Missing stored field = public (do not
|
|
23
|
+
* silently shrink an existing public listener).
|
|
24
|
+
*/
|
|
25
|
+
bindAddress?: 'localhost' | 'public';
|
|
21
26
|
sslEnable: boolean;
|
|
22
27
|
forceSsl: boolean;
|
|
23
28
|
/** Domain used to locate cert under dataDir/certs or LE path */
|
|
@@ -48,7 +53,21 @@ export interface FtpsStatus {
|
|
|
48
53
|
accountCount: number;
|
|
49
54
|
settings: FtpsSettings;
|
|
50
55
|
lastAppliedAt?: string;
|
|
56
|
+
/** Values currently in /etc/vsftpd.conf (not panel draft) */
|
|
57
|
+
liveListen?: boolean | null;
|
|
58
|
+
liveListenIpv6?: boolean | null;
|
|
59
|
+
listenConflict?: boolean;
|
|
51
60
|
}
|
|
61
|
+
export declare function parseVsftpdListenFlags(conf: string): {
|
|
62
|
+
listen: boolean | null;
|
|
63
|
+
listenIpv6: boolean | null;
|
|
64
|
+
conflict: boolean;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* FTP jail must sit under dataDir/ftps/homes or a registered project home.
|
|
68
|
+
* Rejects /etc, /root, and other host paths.
|
|
69
|
+
*/
|
|
70
|
+
export declare function isFtpHomeAllowed(dataDir: string, db: JsonStore, homePath: string): boolean;
|
|
52
71
|
/**
|
|
53
72
|
* Create a jailed FTP account rooted at a project home (or home/app).
|
|
54
73
|
* Virtual user maps to project linuxUser on apply (guest_username per user_conf).
|
|
@@ -69,6 +88,19 @@ export declare function createProjectFtpAccount(db: JsonStore, input: {
|
|
|
69
88
|
notes: string[];
|
|
70
89
|
written: string[];
|
|
71
90
|
};
|
|
91
|
+
export declare function normalizeFtpBindAddress(raw: unknown, present: boolean): 'localhost' | 'public';
|
|
92
|
+
export declare function ftpBindIsPublic(settings: Pick<FtpsSettings, 'bindAddress'>): boolean;
|
|
93
|
+
/** Public plaintext start needs an explicit allow flag (UI types PLAINTEXT). */
|
|
94
|
+
export declare function assertFtpStartAllowed(input: {
|
|
95
|
+
settings: Pick<FtpsSettings, 'bindAddress' | 'sslEnable'>;
|
|
96
|
+
sslReady: boolean;
|
|
97
|
+
allowPlaintextPublic?: boolean;
|
|
98
|
+
}): {
|
|
99
|
+
ok: true;
|
|
100
|
+
} | {
|
|
101
|
+
ok: false;
|
|
102
|
+
blockMessage: string;
|
|
103
|
+
};
|
|
72
104
|
export declare function loadFtpsSettings(db: JsonStore): FtpsSettings;
|
|
73
105
|
export declare function saveFtpsSettings(db: JsonStore, patch: Partial<FtpsSettings>): FtpsSettings;
|
|
74
106
|
export declare function ftpsPaths(dataDir: string): {
|
|
@@ -138,6 +170,8 @@ export declare function applyFtpsService(input: {
|
|
|
138
170
|
/** Install packages + copy to system + enable (default true for panel) */
|
|
139
171
|
applySystem?: boolean;
|
|
140
172
|
settingsPatch?: Partial<FtpsSettings>;
|
|
173
|
+
/** One-shot: allow public bind without FTPS (operator typed PLAINTEXT). */
|
|
174
|
+
allowPlaintextPublic?: boolean;
|
|
141
175
|
}): Promise<ApplyResult & {
|
|
142
176
|
requiresExecute: boolean;
|
|
143
177
|
requiresRoot: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ftps-service.d.ts","sourceRoot":"","sources":["../../src/hosting/ftps-service.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAqB,KAAK,WAAW,EAAoB,MAAM,mBAAmB,CAAC;AAQ1F;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAyBrD;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAQ1D;AAED,eAAO,MAAM,iBAAiB,kBAAkB,CAAC;AAEjD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,OAAO,CAAC;IAChB;;;;;OAKG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"ftps-service.d.ts","sourceRoot":"","sources":["../../src/hosting/ftps-service.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@ import { tl } from 'ysk-server-shared';
|
|
|
4
4
|
* Panel-only execution — never asks the user to run CLI.
|
|
5
5
|
*/
|
|
6
6
|
import { existsSync, mkdirSync, writeFileSync, chmodSync } from 'node:fs';
|
|
7
|
-
import { join } from 'node:path';
|
|
7
|
+
import { join, resolve, sep } from 'node:path';
|
|
8
8
|
import { execFileSync } from 'node:child_process';
|
|
9
9
|
import { createHash, randomBytes } from 'node:crypto';
|
|
10
10
|
import { panelBlockMessage } from './system-apply.js';
|
|
@@ -59,8 +59,9 @@ export const DEFAULT_FTPS_SETTINGS = {
|
|
|
59
59
|
listen: true,
|
|
60
60
|
listenIpv6: false,
|
|
61
61
|
listenPort: 21,
|
|
62
|
-
|
|
63
|
-
|
|
62
|
+
bindAddress: 'localhost',
|
|
63
|
+
sslEnable: false,
|
|
64
|
+
forceSsl: false,
|
|
64
65
|
sslDomain: '',
|
|
65
66
|
pasvMin: 30000,
|
|
66
67
|
pasvMax: 30100,
|
|
@@ -70,6 +71,42 @@ export const DEFAULT_FTPS_SETTINGS = {
|
|
|
70
71
|
banner: 'YSK FTPS',
|
|
71
72
|
guestUsername: 'ftp'
|
|
72
73
|
};
|
|
74
|
+
export function parseVsftpdListenFlags(conf) {
|
|
75
|
+
const listen = /^\s*listen\s*=\s*(YES|NO)\b/im.exec(conf);
|
|
76
|
+
const v6 = /^\s*listen_ipv6\s*=\s*(YES|NO)\b/im.exec(conf);
|
|
77
|
+
const listenYes = listen ? listen[1].toUpperCase() === 'YES' : null;
|
|
78
|
+
const v6Yes = v6 ? v6[1].toUpperCase() === 'YES' : null;
|
|
79
|
+
return {
|
|
80
|
+
listen: listenYes,
|
|
81
|
+
listenIpv6: v6Yes,
|
|
82
|
+
conflict: listenYes === true && v6Yes === true,
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* FTP jail must sit under dataDir/ftps/homes or a registered project home.
|
|
87
|
+
* Rejects /etc, /root, and other host paths.
|
|
88
|
+
*/
|
|
89
|
+
export function isFtpHomeAllowed(dataDir, db, homePath) {
|
|
90
|
+
const raw = String(homePath || '').trim();
|
|
91
|
+
if (!raw || raw.includes('\0'))
|
|
92
|
+
return false;
|
|
93
|
+
const abs = resolve(raw);
|
|
94
|
+
if (abs === '/' || abs === '/etc' || abs === '/root' || abs === '/home')
|
|
95
|
+
return false;
|
|
96
|
+
const under = (root) => {
|
|
97
|
+
const r = resolve(root);
|
|
98
|
+
return abs === r || abs.startsWith(r.endsWith(sep) ? r : r + sep);
|
|
99
|
+
};
|
|
100
|
+
if (under(dataDir))
|
|
101
|
+
return true;
|
|
102
|
+
const projects = (db.snapshot.projects ?? []);
|
|
103
|
+
for (const p of projects) {
|
|
104
|
+
const h = String(p.homeDir ?? p.home_dir ?? '').trim();
|
|
105
|
+
if (h && under(h))
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
73
110
|
/**
|
|
74
111
|
* Create a jailed FTP account rooted at a project home (or home/app).
|
|
75
112
|
* Virtual user maps to project linuxUser on apply (guest_username per user_conf).
|
|
@@ -159,13 +196,38 @@ export function createProjectFtpAccount(db, input) {
|
|
|
159
196
|
written: [homePath]
|
|
160
197
|
};
|
|
161
198
|
}
|
|
199
|
+
export function normalizeFtpBindAddress(raw, present) {
|
|
200
|
+
const s = String(raw ?? '').trim().toLowerCase();
|
|
201
|
+
if (s === 'localhost' || s === '127.0.0.1' || s === '::1')
|
|
202
|
+
return 'localhost';
|
|
203
|
+
if (s === 'public' || s === '0.0.0.0' || s === '*' || s === '::')
|
|
204
|
+
return 'public';
|
|
205
|
+
return present ? 'localhost' : 'public';
|
|
206
|
+
}
|
|
207
|
+
export function ftpBindIsPublic(settings) {
|
|
208
|
+
return normalizeFtpBindAddress(settings.bindAddress, settings.bindAddress != null) === 'public';
|
|
209
|
+
}
|
|
210
|
+
/** Public plaintext start needs an explicit allow flag (UI types PLAINTEXT). */
|
|
211
|
+
export function assertFtpStartAllowed(input) {
|
|
212
|
+
const ftpsOn = Boolean(input.settings.sslEnable && input.sslReady);
|
|
213
|
+
if (ftpsOn || !ftpBindIsPublic(input.settings))
|
|
214
|
+
return { ok: true };
|
|
215
|
+
if (input.allowPlaintextPublic)
|
|
216
|
+
return { ok: true };
|
|
217
|
+
return { ok: false, blockMessage: tl('notes.ftp.publicPlaintextBlocked') };
|
|
218
|
+
}
|
|
162
219
|
export function loadFtpsSettings(db) {
|
|
163
220
|
const raw = db.snapshot.settings?.[FTPS_SETTINGS_KEY];
|
|
164
221
|
if (!raw)
|
|
165
222
|
return { ...DEFAULT_FTPS_SETTINGS };
|
|
166
223
|
try {
|
|
167
|
-
const parsed = typeof raw === 'string' ? JSON.parse(raw) : raw;
|
|
168
|
-
|
|
224
|
+
const parsed = (typeof raw === 'string' ? JSON.parse(raw) : raw);
|
|
225
|
+
const present = parsed != null && typeof parsed === 'object' && 'bindAddress' in parsed;
|
|
226
|
+
return {
|
|
227
|
+
...DEFAULT_FTPS_SETTINGS,
|
|
228
|
+
...parsed,
|
|
229
|
+
bindAddress: normalizeFtpBindAddress(parsed.bindAddress, present),
|
|
230
|
+
};
|
|
169
231
|
}
|
|
170
232
|
catch {
|
|
171
233
|
return { ...DEFAULT_FTPS_SETTINGS };
|
|
@@ -182,6 +244,7 @@ export function saveFtpsSettings(db, patch) {
|
|
|
182
244
|
next.sslDomain = String(next.sslDomain ?? '').trim().toLowerCase();
|
|
183
245
|
next.guestUsername = String(next.guestUsername || 'ftp').replace(/[^a-z0-9_-]/gi, '') || 'ftp';
|
|
184
246
|
next.banner = String(next.banner || 'YSK FTPS').slice(0, 120);
|
|
247
|
+
next.bindAddress = normalizeFtpBindAddress(next.bindAddress, true);
|
|
185
248
|
db.snapshot.settings[FTPS_SETTINGS_KEY] = JSON.stringify(next);
|
|
186
249
|
db.persist();
|
|
187
250
|
return next;
|
|
@@ -236,8 +299,10 @@ export function resolveCertPaths(dataDir, settings) {
|
|
|
236
299
|
}
|
|
237
300
|
export function buildVsftpdConf(input) {
|
|
238
301
|
const paths = ftpsPaths(input.dataDir);
|
|
239
|
-
const
|
|
302
|
+
const resolved = resolveCertPaths(input.dataDir, input.settings);
|
|
303
|
+
const { cert, key } = resolved;
|
|
240
304
|
const s = input.settings;
|
|
305
|
+
const sslOn = Boolean(s.sslEnable && resolved.ok && cert && key);
|
|
241
306
|
// vsftpd: listen and listen_ipv6 are mutually exclusive on many builds.
|
|
242
307
|
// dual: listen=NO + listen_ipv6=YES (IPv6 socket; v4-mapped if bindv6only=0)
|
|
243
308
|
// ipv6-only: same as dual with listen flag false
|
|
@@ -252,6 +317,11 @@ export function buildVsftpdConf(input) {
|
|
|
252
317
|
listenV4 ? 'listen=YES' : 'listen=NO',
|
|
253
318
|
listenV6 ? 'listen_ipv6=YES' : 'listen_ipv6=NO',
|
|
254
319
|
`listen_port=${s.listenPort}`,
|
|
320
|
+
...(normalizeFtpBindAddress(s.bindAddress, s.bindAddress != null) === 'localhost'
|
|
321
|
+
? listenV6
|
|
322
|
+
? ['listen_address6=::1']
|
|
323
|
+
: ['listen_address=127.0.0.1']
|
|
324
|
+
: []),
|
|
255
325
|
'anonymous_enable=NO',
|
|
256
326
|
'local_enable=YES',
|
|
257
327
|
s.writeEnable ? 'write_enable=YES' : 'write_enable=NO',
|
|
@@ -275,20 +345,20 @@ export function buildVsftpdConf(input) {
|
|
|
275
345
|
`pasv_max_port=${s.pasvMax}`,
|
|
276
346
|
s.pasvAddress ? `pasv_address=${s.pasvAddress}` : '# pasv_address=',
|
|
277
347
|
`ftpd_banner=${s.banner.replace(/[\r\n]/g, ' ')}`,
|
|
278
|
-
|
|
279
|
-
s.forceSsl &&
|
|
280
|
-
s.forceSsl &&
|
|
348
|
+
sslOn ? 'ssl_enable=YES' : 'ssl_enable=NO',
|
|
349
|
+
s.forceSsl && sslOn ? 'force_local_data_ssl=YES' : 'force_local_data_ssl=NO',
|
|
350
|
+
s.forceSsl && sslOn ? 'force_local_logins_ssl=YES' : 'force_local_logins_ssl=NO',
|
|
281
351
|
'ssl_tlsv1=YES',
|
|
282
352
|
'ssl_sslv2=NO',
|
|
283
353
|
'ssl_sslv3=NO',
|
|
284
354
|
'require_ssl_reuse=NO',
|
|
285
355
|
'ssl_ciphers=HIGH',
|
|
286
356
|
];
|
|
287
|
-
if (
|
|
357
|
+
if (sslOn && cert && key) {
|
|
288
358
|
lines.push(`rsa_cert_file=${cert}`, `rsa_private_key_file=${key}`);
|
|
289
359
|
}
|
|
290
|
-
else if (s.sslEnable) {
|
|
291
|
-
lines.push(
|
|
360
|
+
else if (s.sslEnable && !resolved.ok) {
|
|
361
|
+
lines.push('# ssl_enable skipped — no certificate for sslDomain');
|
|
292
362
|
}
|
|
293
363
|
return lines.join('\n') + '\n';
|
|
294
364
|
}
|
|
@@ -365,6 +435,10 @@ export function writeManagedFtpAccounts(input) {
|
|
|
365
435
|
continue;
|
|
366
436
|
}
|
|
367
437
|
const home = String(a.homePath || join(paths.homes, username));
|
|
438
|
+
if (!isFtpHomeAllowed(input.dataDir, input.db, home)) {
|
|
439
|
+
notes.push(tl('notes.auto.t0272'));
|
|
440
|
+
continue;
|
|
441
|
+
}
|
|
368
442
|
mkdirSync(home, { recursive: true });
|
|
369
443
|
// crypt hash for pam_userdb. Fresh password_plain wins (create / reset);
|
|
370
444
|
// otherwise reuse stored password_hash. Never leave plaintext after write.
|
|
@@ -463,6 +537,21 @@ export async function probeFtpsStatus(input) {
|
|
|
463
537
|
active = 'not_installed';
|
|
464
538
|
}
|
|
465
539
|
const meta = input.db.snapshot.settings?.['ftps_last_applied_at'];
|
|
540
|
+
let liveListen = null;
|
|
541
|
+
let liveListenIpv6 = null;
|
|
542
|
+
let listenConflict = false;
|
|
543
|
+
try {
|
|
544
|
+
const { readFileSync } = await import('node:fs');
|
|
545
|
+
if (existsSync('/etc/vsftpd.conf')) {
|
|
546
|
+
const flags = parseVsftpdListenFlags(readFileSync('/etc/vsftpd.conf', 'utf8'));
|
|
547
|
+
liveListen = flags.listen;
|
|
548
|
+
liveListenIpv6 = flags.listenIpv6;
|
|
549
|
+
listenConflict = flags.conflict;
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
catch {
|
|
553
|
+
/* optional */
|
|
554
|
+
}
|
|
466
555
|
return {
|
|
467
556
|
installed,
|
|
468
557
|
active,
|
|
@@ -470,7 +559,10 @@ export async function probeFtpsStatus(input) {
|
|
|
470
559
|
confSystemExists: existsSync('/etc/vsftpd.conf'),
|
|
471
560
|
accountCount: listResources(input.db, 'ftp_accounts').length,
|
|
472
561
|
settings,
|
|
473
|
-
lastAppliedAt: typeof meta === 'string' ? meta : undefined
|
|
562
|
+
lastAppliedAt: typeof meta === 'string' ? meta : undefined,
|
|
563
|
+
liveListen,
|
|
564
|
+
liveListenIpv6,
|
|
565
|
+
listenConflict,
|
|
474
566
|
};
|
|
475
567
|
}
|
|
476
568
|
/**
|
|
@@ -486,6 +578,10 @@ export async function applyFtpsService(input) {
|
|
|
486
578
|
const written = [];
|
|
487
579
|
const notes = [];
|
|
488
580
|
const commandResults = [];
|
|
581
|
+
const certs = resolveCertPaths(input.dataDir, settings);
|
|
582
|
+
if (settings.sslEnable && !certs.ok) {
|
|
583
|
+
notes.push('TLS is on but no certificate was found (set sslDomain to an issued cert, or leave TLS off). Writing ssl_enable=NO so vsftpd can start.');
|
|
584
|
+
}
|
|
489
585
|
// 1. conf
|
|
490
586
|
const conf = buildVsftpdConf({ dataDir: input.dataDir, settings });
|
|
491
587
|
writeFileSync(paths.conf, conf, 'utf8');
|
|
@@ -531,6 +627,35 @@ export async function applyFtpsService(input) {
|
|
|
531
627
|
};
|
|
532
628
|
}
|
|
533
629
|
if (can) {
|
|
630
|
+
const startGate = assertFtpStartAllowed({
|
|
631
|
+
settings,
|
|
632
|
+
sslReady: Boolean(settings.sslEnable && certs.ok),
|
|
633
|
+
allowPlaintextPublic: input.allowPlaintextPublic === true,
|
|
634
|
+
});
|
|
635
|
+
if (!startGate.ok) {
|
|
636
|
+
notes.push(startGate.blockMessage);
|
|
637
|
+
steps.push({
|
|
638
|
+
name: tl('notes.ftp.startVsftpd'),
|
|
639
|
+
status: 'blocked',
|
|
640
|
+
detail: startGate.blockMessage,
|
|
641
|
+
});
|
|
642
|
+
return {
|
|
643
|
+
ok: false,
|
|
644
|
+
executed: false,
|
|
645
|
+
blocked: true,
|
|
646
|
+
blockReason: 'validation',
|
|
647
|
+
blockMessage: startGate.blockMessage,
|
|
648
|
+
written,
|
|
649
|
+
commands: [],
|
|
650
|
+
commandResults,
|
|
651
|
+
notes,
|
|
652
|
+
steps,
|
|
653
|
+
requiresExecute: false,
|
|
654
|
+
requiresRoot: false,
|
|
655
|
+
settings,
|
|
656
|
+
status: await probeFtpsStatus(input),
|
|
657
|
+
};
|
|
658
|
+
}
|
|
534
659
|
// ensure guest user exists
|
|
535
660
|
const gu = settings.guestUsername;
|
|
536
661
|
const idr = await input.host.runCommand(['bash', '-c', `id -u ${gu} >/dev/null 2>&1 || useradd -r -d ${paths.homes} -s /usr/sbin/nologin ${gu}`], { timeoutMs: 30_000 });
|
|
@@ -742,6 +867,9 @@ export async function applyFtpAccountReal(input) {
|
|
|
742
867
|
return { ok: false, notes: [tl('notes.auto.n0011')] };
|
|
743
868
|
const paths = ftpsPaths(input.dataDir);
|
|
744
869
|
const home = String(acc.homePath || join(paths.homes, String(acc.username)));
|
|
870
|
+
if (!isFtpHomeAllowed(input.dataDir, input.db, home)) {
|
|
871
|
+
return { ok: false, notes: [tl('notes.auto.n0878')] };
|
|
872
|
+
}
|
|
745
873
|
mkdirSync(home, { recursive: true });
|
|
746
874
|
updateResource(input.db, 'ftp_accounts', input.id, { homePath: home });
|
|
747
875
|
// Always rewrite managed files for all accounts
|