@underpostnet/cyberia 3.2.90 → 3.3.73
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/.dockerignore +1 -0
- package/.env.example +16 -0
- package/.github/workflows/coverall.cyberia.ci.yml +107 -0
- package/.github/workflows/cyberia-client.cd.yml +6 -18
- package/.github/workflows/cyberia-server.cd.yml +6 -18
- package/.github/workflows/docker-image.cyberia-client.ci.yml +8 -5
- package/.github/workflows/docker-image.cyberia-client.dev.ci.yml +8 -3
- package/.github/workflows/docker-image.cyberia-server.ci.yml +8 -5
- package/.github/workflows/docker-image.cyberia-server.dev.ci.yml +8 -5
- package/.github/workflows/docker-image.engine-cyberia.ci.yml +15 -1
- package/.github/workflows/docker-image.engine-cyberia.dev.ci.yml +15 -1
- package/.github/workflows/engine-cyberia.cd.yml +6 -78
- package/.github/workflows/engine-cyberia.ci.yml +4 -5
- package/.github/workflows/ghpkg.ci.yml +42 -21
- package/.github/workflows/hardhat.ci.yml +12 -11
- package/.github/workflows/npmpkg.ci.yml +17 -15
- package/.github/workflows/pwa-microservices-template-page.cd.yml +1 -16
- package/.github/workflows/pwa-microservices-template-test.ci.yml +2 -2
- package/.github/workflows/release.cd.yml +2 -9
- package/.prettierignore +1 -0
- package/AGENTS.md +47 -0
- package/CHANGELOG.md +581 -2417
- package/CLI-HELP.md +416 -127
- package/Dockerfile +25 -9
- package/Dockerfile.dev +25 -9
- package/Dockerfile.test +4 -4
- package/README.md +21 -1
- package/bin/build.js +70 -43
- package/bin/build.template.js +8 -3
- package/bin/cyberia.js +372 -135
- package/bin/deploy.js +18 -104
- package/bin/index.js +372 -135
- package/compose.env +16 -0
- package/conf.js +93 -4
- package/deploy/cyberia-client/deploy.sh +47 -0
- package/deploy/cyberia-client/package.sh +18 -0
- package/deploy/cyberia-client/state.sh +14 -0
- package/deploy/cyberia-server/deploy.sh +47 -0
- package/deploy/cyberia-server/package.sh +18 -0
- package/deploy/cyberia-server/state.sh +14 -0
- package/deploy/dd-cyberia/deploy.sh +22 -0
- package/deploy/dd-cyberia/init.sh +55 -0
- package/deploy/dd-cyberia/package.sh +17 -0
- package/deploy/dd-cyberia/state.sh +14 -0
- package/deploy/dd-cyberia/sync-deploy.sh +116 -0
- package/deploy/lib/github-actions-logging.sh +594 -0
- package/deploy/lib/host.sh +185 -0
- package/deploy/lib/state.sh +62 -0
- package/deploy/pwa-microservices-template/deploy.sh +45 -0
- package/deploy/release/deploy.sh +32 -0
- package/deployment.yaml +7 -2
- package/docker-compose.yml +31 -37
- package/examples/static-page/README.md +19 -19
- package/examples/static-page/ssr-components/CustomPage.js +2 -2
- package/hardhat/hardhat.config.js +1 -6
- package/hardhat/package-lock.json +104 -43
- package/hardhat/package.json +3 -3
- package/manifests/alertmanager/deployment.yaml +81 -0
- package/manifests/blackbox-exporter/deployment.yaml +75 -0
- package/manifests/cronjobs/dd-cron/dd-cron-backup.yaml +36 -7
- package/manifests/cronjobs/dd-cron/dd-cron-vultr.yaml +77 -0
- package/manifests/deployment/dd-cyberia-development/deployment.yaml +7 -2
- package/manifests/deployment/dd-default-development/deployment.yaml +2 -2
- package/manifests/grafana/deployment.yaml +26 -7
- package/manifests/grafana/kustomization.yaml +1 -0
- package/manifests/grafana/service.yaml +6 -1
- package/manifests/mariadb/pv.yaml +1 -0
- package/manifests/mongodb/statefulset.yaml +9 -2
- package/manifests/mysql/pv-pvc.yaml +14 -1
- package/manifests/postgresql/pv.yaml +12 -1
- package/manifests/postgresql/pvc.yaml +1 -0
- package/manifests/prometheus/deployment.yaml +18 -22
- package/package.json +83 -10
- package/scripts/audit-selinux.sh +64 -0
- package/scripts/event-monitor.sh +56 -0
- package/scripts/gpu-diag.sh +0 -0
- package/scripts/ip-info.sh +0 -0
- package/scripts/k3s-node-setup.sh +30 -14
- package/scripts/kubeadm-node-setup.sh +40 -31
- package/scripts/lxd-vm-setup.sh +0 -0
- package/scripts/maas-nat-firewalld.sh +0 -0
- package/scripts/maas-setup.sh +8 -8
- package/scripts/nat-iptables.sh +2 -0
- package/scripts/rhel-grpc-setup.sh +0 -0
- package/scripts/rocky-kickstart.sh +25 -9
- package/scripts/selinux-normalize.sh +907 -0
- package/scripts/shutdown-machine.sh +843 -0
- package/scripts/test-monitor.sh +3 -3
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.controller.js +1 -1
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.router.js +2 -2
- package/src/api/atlas-sprite-sheet/atlas-sprite-sheet.service.js +2 -2
- package/src/api/core/core.controller.js +1 -1
- package/src/api/core/core.router.js +2 -2
- package/src/api/core/core.service.js +2 -2
- package/src/api/crypto/crypto.controller.js +1 -1
- package/src/api/crypto/crypto.service.js +1 -1
- package/src/api/cyberia-action/cyberia-action.controller.js +1 -1
- package/src/api/cyberia-action/cyberia-action.router.js +1 -1
- package/src/api/cyberia-action/cyberia-action.service.js +2 -2
- package/src/api/cyberia-client-hints/cyberia-client-hints.controller.js +1 -1
- package/src/api/cyberia-client-hints/cyberia-client-hints.router.js +1 -1
- package/src/api/cyberia-client-hints/cyberia-client-hints.service.js +2 -2
- package/src/api/cyberia-dialogue/cyberia-dialogue.controller.js +1 -1
- package/src/api/cyberia-dialogue/cyberia-dialogue.router.js +1 -1
- package/src/api/cyberia-dialogue/cyberia-dialogue.service.js +2 -2
- package/src/api/cyberia-entity/cyberia-entity.controller.js +1 -1
- package/src/api/cyberia-entity/cyberia-entity.router.js +1 -1
- package/src/api/cyberia-entity/cyberia-entity.service.js +2 -2
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.controller.js +1 -1
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.router.js +1 -1
- package/src/api/cyberia-entity-type-default/cyberia-entity-type-default.service.js +2 -2
- package/src/api/cyberia-instance/cyberia-fallback-capture.js +466 -0
- package/src/api/cyberia-instance/cyberia-fallback-default-items.js +63 -0
- package/src/api/cyberia-instance/cyberia-fallback-world.js +16 -1
- package/src/api/cyberia-instance/cyberia-instance-map.service.js +1 -1
- package/src/api/cyberia-instance/cyberia-instance.controller.js +4 -1
- package/src/api/cyberia-instance/cyberia-instance.router.js +15 -2
- package/src/api/cyberia-instance/cyberia-instance.service.js +45 -2
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.controller.js +1 -1
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.model.js +1 -0
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.router.js +1 -1
- package/src/api/cyberia-instance-conf/cyberia-instance-conf.service.js +2 -2
- package/src/api/cyberia-map/cyberia-map.controller.js +1 -1
- package/src/api/cyberia-map/cyberia-map.router.js +1 -1
- package/src/api/cyberia-map/cyberia-map.service.js +2 -2
- package/src/api/cyberia-quest/cyberia-quest.controller.js +1 -1
- package/src/api/cyberia-quest/cyberia-quest.router.js +1 -1
- package/src/api/cyberia-quest/cyberia-quest.service.js +2 -2
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.controller.js +1 -1
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.router.js +1 -1
- package/src/api/cyberia-quest-progress/cyberia-quest-progress.service.js +2 -2
- package/src/api/cyberia-saga/cyberia-saga.controller.js +1 -1
- package/src/api/cyberia-saga/cyberia-saga.router.js +1 -1
- package/src/api/cyberia-saga/cyberia-saga.service.js +2 -2
- package/src/api/cyberia-server-defaults/cyberia-server-defaults.js +16 -29
- package/src/api/cyberia-skill/cyberia-skill.controller.js +1 -1
- package/src/api/cyberia-skill/cyberia-skill.router.js +1 -1
- package/src/api/cyberia-skill/cyberia-skill.service.js +2 -2
- package/src/api/default/default.controller.js +1 -1
- package/src/api/default/default.router.js +1 -1
- package/src/api/default/default.service.js +2 -2
- package/src/api/document/document.controller.js +1 -1
- package/src/api/document/document.router.js +1 -1
- package/src/api/document/document.service.js +2 -2
- package/src/api/file/file.controller.js +1 -1
- package/src/api/file/file.router.js +1 -1
- package/src/api/file/file.service.js +2 -2
- package/src/api/instance/instance.controller.js +1 -1
- package/src/api/instance/instance.router.js +1 -1
- package/src/api/instance/instance.service.js +2 -2
- package/src/api/ipfs/ipfs.controller.js +1 -1
- package/src/api/ipfs/ipfs.router.js +2 -2
- package/src/api/ipfs/ipfs.service.js +2 -2
- package/src/api/object-layer/object-layer.controller.js +1 -1
- package/src/api/object-layer/object-layer.model.js +204 -3
- package/src/api/object-layer/object-layer.router.js +2 -2
- package/src/api/object-layer/object-layer.service.js +4 -17
- package/src/api/object-layer-render-frames/object-layer-render-frames.controller.js +1 -1
- package/src/api/object-layer-render-frames/object-layer-render-frames.router.js +1 -1
- package/src/api/object-layer-render-frames/object-layer-render-frames.service.js +2 -2
- package/src/api/test/test.controller.js +1 -1
- package/src/api/test/test.service.js +1 -1
- package/src/api/user/guest.service.js +3 -3
- package/src/api/user/user.controller.js +1 -1
- package/src/api/user/user.router.js +2 -2
- package/src/api/user/user.service.js +4 -4
- package/src/api.js +5 -9
- package/src/cli/app.js +391 -0
- package/src/cli/baremetal.js +30 -36
- package/src/cli/client.js +306 -0
- package/src/cli/cloud-init.js +3 -3
- package/src/cli/cluster.js +242 -135
- package/src/cli/db.js +126 -67
- package/src/cli/deploy.js +158 -60
- package/src/cli/docker-compose.js +5 -5
- package/src/cli/domains.js +184 -0
- package/src/cli/dotenv-store.js +143 -0
- package/src/cli/event.js +2281 -0
- package/src/cli/fs.js +3 -3
- package/src/cli/host.js +672 -0
- package/src/cli/image.js +4 -7
- package/src/cli/index.js +426 -134
- package/src/cli/ipfs.js +34 -30
- package/src/cli/kickstart.js +1 -1
- package/src/cli/kubectl.js +218 -41
- package/src/cli/lxd.js +3 -3
- package/src/cli/monitor.js +1359 -26
- package/src/cli/package.js +90 -0
- package/src/cli/release.js +73 -34
- package/src/cli/repository.js +564 -367
- package/src/cli/run.js +362 -654
- package/src/cli/secrets.js +2158 -964
- package/src/cli/ssh.js +651 -331
- package/src/cli/state.js +394 -0
- package/src/cli/static.js +2 -2
- package/src/cli/system.js +26 -13
- package/src/cli/test.js +199 -125
- package/src/cli/vultr.js +623 -0
- package/src/cli/wireguard.js +2930 -0
- package/src/client/components/core/CalendarCore.js +53 -96
- package/src/client/components/core/Docs.js +258 -211
- package/src/client/components/core/FileExplorer.js +0 -21
- package/src/client/components/core/PanelForm.js +4 -4
- package/src/client/components/core/Repository.js +56 -0
- package/src/client/components/core/Translate.js +7 -0
- package/src/client/components/core/{FullScreen.js → ViewModeController.js} +42 -39
- package/src/client/components/core/Wallet.js +0 -11
- package/src/client/components/core/Worker.js +7 -1
- package/src/client/components/cryptokoyn/SettingsCryptokoyn.js +2 -2
- package/src/client/components/cyberia/FallbackWorldEngineCyberia.js +368 -0
- package/src/client/components/cyberia-portal/AppShellCyberiaPortal.js +35 -1
- package/src/client/components/cyberia-portal/RouterCyberiaPortal.js +4 -0
- package/src/client/components/cyberia-portal/SettingsCyberiaPortal.js +2 -2
- package/src/client/components/cyberia-portal/TranslateCyberiaPortal.js +4 -0
- package/src/client/components/default/AppShellDefault.js +1 -1
- package/src/client/components/default/SettingsDefault.js +2 -2
- package/src/client/components/itemledger/SettingsItemledger.js +2 -2
- package/src/client/components/underpost/AppShellUnderpost.js +3 -2
- package/src/client/components/underpost/SettingsUnderpost.js +2 -2
- package/src/client/public/cyberia-docs/ARCHITECTURE.md +17 -3
- package/src/client/public/cyberia-docs/CYBERIA-CLI.md +32 -5
- package/src/client/public/cyberia-docs/CYBERIA-SERVER.md +1 -1
- package/src/client/public/cyberia-docs/CYBERIA.md +21 -1
- package/src/client/public/cyberia-docs/HARDHAT-MODULE.md +23 -6
- package/src/client/public/cyberia-docs/ROADMAP.md +1 -1
- package/src/client/public/cyberia-docs/WHITE-PAPER.md +1 -1
- package/src/client/public/default/android-chrome-144x144.png +0 -0
- package/src/client/public/default/android-chrome-192x192.png +0 -0
- package/src/client/public/default/android-chrome-256x256.png +0 -0
- package/src/client/public/default/android-chrome-36x36.png +0 -0
- package/src/client/public/default/android-chrome-384x384.png +0 -0
- package/src/client/public/default/android-chrome-48x48.png +0 -0
- package/src/client/public/default/android-chrome-512x512.png +0 -0
- package/src/client/public/default/android-chrome-72x72.png +0 -0
- package/src/client/public/default/android-chrome-96x96.png +0 -0
- package/src/client/public/default/apple-touch-icon-1024x1024.png +0 -0
- package/src/client/public/default/apple-touch-icon-114x114.png +0 -0
- package/src/client/public/default/apple-touch-icon-120x120.png +0 -0
- package/src/client/public/default/apple-touch-icon-144x144.png +0 -0
- package/src/client/public/default/apple-touch-icon-152x152.png +0 -0
- package/src/client/public/default/apple-touch-icon-167x167.png +0 -0
- package/src/client/public/default/apple-touch-icon-180x180.png +0 -0
- package/src/client/public/default/apple-touch-icon-57x57.png +0 -0
- package/src/client/public/default/apple-touch-icon-60x60.png +0 -0
- package/src/client/public/default/apple-touch-icon-72x72.png +0 -0
- package/src/client/public/default/apple-touch-icon-76x76.png +0 -0
- package/src/client/public/default/apple-touch-icon-precomposed.png +0 -0
- package/src/client/public/default/apple-touch-icon.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1125x2436.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1136x640.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1170x2532.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1179x2556.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1242x2208.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1242x2688.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1284x2778.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1290x2796.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1334x750.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1488x2266.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1536x2048.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1620x2160.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1640x2160.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1668x2224.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1668x2388.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-1792x828.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2048x1536.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2048x2732.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2160x1620.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2160x1640.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2208x1242.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2224x1668.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2266x1488.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2388x1668.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2436x1125.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2532x1170.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2556x1179.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2688x1242.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2732x2048.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2778x1284.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-2796x1290.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-640x1136.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-750x1334.png +0 -0
- package/src/client/public/default/apple-touch-startup-image-828x1792.png +0 -0
- package/src/client/public/default/assets/background/white.jpg +0 -0
- package/src/client/public/default/browserconfig.xml +1 -1
- package/src/client/public/default/favicon-16x16.png +0 -0
- package/src/client/public/default/favicon-32x32.png +0 -0
- package/src/client/public/default/favicon-48x48.png +0 -0
- package/src/client/public/default/favicon.ico +0 -0
- package/src/client/public/default/manifest.webmanifest +5 -5
- package/src/client/public/default/mstile-144x144.png +0 -0
- package/src/client/public/default/mstile-150x150.png +0 -0
- package/src/client/public/default/mstile-310x150.png +0 -0
- package/src/client/public/default/mstile-310x310.png +0 -0
- package/src/client/public/default/mstile-70x70.png +0 -0
- package/src/client/public/default/yandex-browser-50x50.png +0 -0
- package/src/client/public/default/yandex-browser-manifest.json +1 -1
- package/src/client/services/cyberia-instance/cyberia-instance.service.js +40 -0
- package/src/client/services/object-layer/object-layer.management.js +4 -4
- package/src/client/ssr/RootDocument.js +1 -1
- package/src/client/ssr/body/404.js +1 -1
- package/src/client/ssr/body/500.js +1 -1
- package/src/client/ssr/body/CacheControl.js +1 -1
- package/src/client/ssr/body/CyberiaDefaultSplashScreen.js +1 -1
- package/src/client/ssr/body/DefaultSplashScreen.js +1 -1
- package/src/client/ssr/body/SwaggerDarkMode.js +1 -1
- package/src/client/ssr/body/UnderpostDefaultSplashScreen.js +1 -1
- package/src/client/ssr/head/CryptokoynScripts.js +1 -1
- package/src/client/ssr/head/Css.js +1 -1
- package/src/client/ssr/head/CyberiaPortalScripts.js +1 -1
- package/src/client/ssr/head/DefaultScripts.js +1 -1
- package/src/client/ssr/head/ItemledgerScripts.js +1 -1
- package/src/client/ssr/head/Microdata.js +1 -1
- package/src/client/ssr/head/Production.js +1 -1
- package/src/client/ssr/head/Pwa.js +1 -1
- package/src/client/ssr/head/PwaItemledger.js +1 -1
- package/src/client/ssr/head/Seo.js +1 -1
- package/src/client/ssr/head/UnderpostScripts.js +1 -1
- package/src/client/ssr/mailer/DefaultRecoverEmail.js +1 -1
- package/src/client/ssr/mailer/DefaultVerifyEmail.js +1 -1
- package/src/client/ssr/views/Cyberia404.js +7 -5
- package/src/client/ssr/views/CyberiaServerMetrics.js +1 -1
- package/src/client/ssr/views/Maintenance.js +1 -1
- package/src/client/ssr/views/NoNetworkConnection.js +1 -1
- package/src/client/ssr/views/Test.js +1 -1
- package/src/client/sw/core.sw.js +20 -14
- package/src/client-builder/client-build-docs.js +61 -46
- package/src/client-builder/client-build-live.js +2 -2
- package/src/client-builder/client-build.js +58 -44
- package/src/client-builder/client-dev-server.js +3 -3
- package/src/client-builder/client-icons.js +2 -2
- package/src/client-builder/ssr.js +3 -3
- package/src/client.build.js +3 -6
- package/src/client.dev.js +3 -6
- package/src/db/DataBaseProvider.js +186 -3
- package/src/db/mariadb/MariaDB.js +3 -2
- package/src/db/mongo/MongoBootstrap.js +273 -101
- package/src/db/mongo/MongooseDB.js +11 -8
- package/src/{server/valkey.js → db/valkey/Valkey.js} +5 -4
- package/src/grpc/cyberia/grpc-server.js +1 -1
- package/src/index.js +103 -23
- package/src/mailer/EmailRender.js +2 -2
- package/src/mailer/MailerInterceptor.js +87 -0
- package/src/mailer/MailerProvider.js +50 -6
- package/src/projects/cyberia/atlas-sprite-sheet-generator.js +1 -1
- package/src/projects/cyberia/besu-genesis-generator.js +3 -3
- package/src/projects/cyberia/catalog-cyberia.js +54 -6
- package/src/projects/cyberia/gemini-client.js +1 -1
- package/src/projects/cyberia/generate-saga.js +15 -24
- package/src/projects/cyberia/hot-reload-trigger.js +1 -1
- package/src/projects/cyberia/instance-data.js +22 -3
- package/src/projects/cyberia/ipfs-client.js +4 -4
- package/src/projects/cyberia/map-preview-generator.js +1 -1
- package/src/projects/cyberia/object-layer.js +12 -22
- package/src/projects/cyberia/semantic-layer-generator.js +1 -1
- package/src/projects/underpost/catalog-underpost.js +13 -2
- package/src/proxy.js +4 -7
- package/src/runtime/cyberia-client/Dockerfile +9 -4
- package/src/runtime/cyberia-client/Dockerfile.dev +8 -2
- package/src/runtime/cyberia-server/Dockerfile +9 -4
- package/src/runtime/cyberia-server/Dockerfile.dev +8 -2
- package/src/runtime/engine-cyberia/Dockerfile +25 -9
- package/src/runtime/engine-cyberia/Dockerfile.dev +25 -9
- package/src/runtime/engine-cyberia/Dockerfile.test +4 -4
- package/src/runtime/engine-cyberia/compose.env +16 -0
- package/src/runtime/engine-cyberia/docker-compose.yml +31 -37
- package/src/runtime/express/Express.js +32 -27
- package/src/runtime/lampp/Lampp.js +22 -70
- package/src/runtime/nginx/Nginx.js +1 -1
- package/src/runtime/wp/Wp.js +16 -48
- package/src/server/{catalog.js → build/catalog.js} +15 -5
- package/src/server/build/coverage.js +117 -0
- package/src/server/build/execution.js +402 -0
- package/src/server/build/package.js +465 -0
- package/src/server/build/testing.js +528 -0
- package/src/server/{dns.js → network/dns.js} +241 -14
- package/src/server/network/forward-proxy.js +541 -0
- package/src/server/{middlewares.js → network/middlewares.js} +59 -4
- package/src/server/network/node-capability.js +98 -0
- package/src/server/{peer.js → network/peer.js} +3 -3
- package/src/server/{proxy.js → network/proxy.js} +7 -13
- package/src/server/network/router.js +356 -0
- package/src/server/{tls.js → network/tls.js} +2 -2
- package/src/server/network/underpost-compression.js +186 -0
- package/src/server/{underpost-gateway.js → network/underpost-gateway.js} +26 -16
- package/src/server/{underpost-ingress.js → network/underpost-ingress.js} +19 -3
- package/src/server/{cri.js → ops/cri.js} +2 -2
- package/src/server/ops/cron.js +949 -0
- package/src/server/ops/event-notification.js +284 -0
- package/src/server/{logger.js → ops/logger.js} +108 -23
- package/src/server/ops/monitoring.js +1724 -0
- package/src/server/ops/systemd.js +259 -0
- package/src/server/{conf.js → runtime/conf.js} +521 -520
- package/src/server/runtime/config-scope.js +215 -0
- package/src/server/runtime/environment.js +149 -0
- package/src/server/{process.js → runtime/process.js} +153 -13
- package/src/server/{runtime-status.js → runtime/runtime-status.js} +155 -16
- package/src/server/{runtime.js → runtime/runtime.js} +12 -8
- package/src/server/{start.js → runtime/start.js} +128 -39
- package/src/server/{auth.js → security/auth.js} +7 -8
- package/src/server/security/container-storage.js +382 -0
- package/src/server/{crypto.js → security/crypto.js} +1 -1
- package/src/server/security/selinux.js +185 -0
- package/src/server/{backup.js → storage/backup.js} +17 -8
- package/src/server/{data-query.js → storage/data-query.js} +1 -1
- package/src/server/{downloader.js → storage/downloader.js} +2 -2
- package/src/server/storage/repository.js +68 -0
- package/src/server.js +4 -7
- package/src/ws/IoInterface.js +1 -1
- package/src/ws/IoServer.js +1 -1
- package/src/ws/core/core.ws.connection.js +1 -1
- package/src/ws/core/core.ws.emit.js +1 -1
- package/src/ws/core/core.ws.server.js +1 -1
- package/src/ws/default/default.ws.connection.js +1 -1
- package/src/ws/default/default.ws.emit.js +1 -1
- package/src/ws/default/default.ws.server.js +1 -1
- package/test/e2e/event-e2e-public-ingress-down.js +45 -0
- package/test/e2e/event-e2e-wireguard-server-down.js +38 -0
- package/test/e2e/event-e2e-wireguard-spoke-down.js +40 -0
- package/test/{api.test.js → integration/app/api.test.js} +33 -14
- package/test/integration/app/cyberia/cyberia-cli-plain-reads.test.js +30 -0
- package/test/{cyberia-instance-conf-defaults.test.js → integration/app/cyberia/cyberia-instance-conf-defaults.test.js} +2 -1
- package/test/integration/app/cyberia/cyberia-load.test.js +467 -0
- package/test/integration/app/cyberia/fallback-world-capture.test.js +253 -0
- package/test/integration/app/cyberia/object-layer-item-id.test.js +327 -0
- package/test/{shape-generator.test.js → integration/app/cyberia/shape-generator.test.js} +1 -1
- package/test/integration/infra/1-security/config-scope.test.js +305 -0
- package/test/integration/infra/1-security/container-storage.test.js +356 -0
- package/test/integration/infra/1-security/in-pod-cli-surface.test.js +86 -0
- package/test/integration/infra/1-security/secret-onboarding.test.js +930 -0
- package/test/integration/infra/1-security/selinux.test.js +69 -0
- package/test/{sops-secret-store.test.js → integration/infra/1-security/sops-secret-store.test.js} +415 -61
- package/test/integration/infra/1-security/systemd-service.test.js +70 -0
- package/test/integration/infra/1-security/underpost-config-secret.test.js +367 -0
- package/test/integration/infra/2-network/dns-firewall.test.js +566 -0
- package/test/integration/infra/2-network/node-capability.test.js +182 -0
- package/test/integration/infra/2-network/wireguard-cli.test.js +1163 -0
- package/test/integration/infra/2-network/wireguard-edge.test.js +1731 -0
- package/test/{cluster-instances.test.js → integration/infra/3-cluster/cluster-instances.test.js} +11 -15
- package/test/{deploy-node-placement.test.js → integration/infra/3-cluster/deploy-node-placement.test.js} +3 -3
- package/test/integration/infra/3-cluster/docker-compose-stack.test.js +313 -0
- package/test/integration/infra/4-ingress/deploy-routes.test.js +379 -0
- package/test/integration/infra/4-ingress/gateway-static-assets.test.js +453 -0
- package/test/{instance-traffic-plan.test.js → integration/infra/4-ingress/instance-traffic-plan.test.js} +10 -6
- package/test/{underpost-gateway.test.js → integration/infra/4-ingress/underpost-gateway.test.js} +47 -6
- package/test/{underpost-ingress.test.js → integration/infra/4-ingress/underpost-ingress.test.js} +56 -4
- package/test/integration/infra/5-observability/cron-jobs.test.js +652 -0
- package/test/{deploy-monitor.test.js → integration/infra/5-observability/deploy-monitor.test.js} +29 -31
- package/test/integration/infra/5-observability/event-notification.test.js +197 -0
- package/test/integration/infra/5-observability/event-remediation.test.js +502 -0
- package/test/integration/infra/5-observability/event-targets.test.js +1174 -0
- package/test/integration/infra/5-observability/monitoring-stack.test.js +902 -0
- package/test/support/shell-harness.js +73 -0
- package/test/unit/build-template.test.js +97 -0
- package/test/unit/build-workflow-offline.test.js +132 -0
- package/test/unit/catalog.test.js +71 -0
- package/test/unit/client-build-docs.test.js +334 -0
- package/test/unit/conf-loading.test.js +303 -0
- package/test/unit/conf-resolution.test.js +979 -0
- package/test/unit/coverage-artifact.test.js +130 -0
- package/test/{crypto.test.js → unit/crypto.test.js} +1 -1
- package/test/unit/deploy-env-resolution.test.js +38 -0
- package/test/unit/deploy-log-table.test.js +447 -0
- package/test/unit/execution-profiles.test.js +219 -0
- package/test/unit/fleet-sync-source.test.js +149 -0
- package/test/unit/logger-redaction.test.js +112 -0
- package/test/unit/package.test.js +403 -0
- package/test/unit/prepare-host.test.js +299 -0
- package/test/unit/process-environment.test.js +18 -0
- package/test/unit/propagation-message.test.js +78 -0
- package/test/unit/redeploy-plan.test.js +24 -0
- package/test/unit/release-bump.test.js +474 -0
- package/test/unit/ssh-output-redaction.test.js +28 -0
- package/test/unit/start-options.test.js +46 -0
- package/test/unit/test-tiers.test.js +193 -0
- package/vitest.config.js +58 -0
- package/.nycrc +0 -9
- package/manifests/cronjobs/dd-cron/dd-cron-dns.yaml +0 -48
- package/manifests/mongodb/pv-pvc.yaml +0 -59
- package/scripts/link-local-underpost-cli.sh +0 -6
- package/src/api/user/user.build.js +0 -16
- package/src/cli/env.js +0 -177
- package/src/client/components/core/Blockchain.js +0 -41
- package/src/client/components/core/Blog.js +0 -9
- package/src/client/components/core/KeyboardAvoidance.js +0 -145
- package/src/client/public/default/assets/background/dark.jpg +0 -0
- package/src/client/public/default/assets/background/white0-min.jpg +0 -0
- package/src/client/public/default/assets/background/white0.jpg +0 -0
- package/src/client/public/doc/favicon.ico +0 -0
- package/src/client/public/doc/sitemap +0 -148
- package/src/server/cron.js +0 -476
|
@@ -1,19 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Provides a comprehensive set of DNS and IP management utilities,
|
|
3
3
|
* primarily focused on dynamic DNS (DDNS) updates and network checks.
|
|
4
|
-
* @module src/server/dns.js
|
|
4
|
+
* @module src/server/network/dns.js
|
|
5
5
|
* @namespace UnderpostDns
|
|
6
6
|
*/
|
|
7
7
|
import axios from 'axios';
|
|
8
|
-
import fs from 'fs';
|
|
9
8
|
import validator from 'validator';
|
|
10
|
-
import { loggerFactory } from '
|
|
9
|
+
import { loggerFactory } from '../ops/logger.js';
|
|
11
10
|
import dns from 'node:dns';
|
|
12
11
|
import os from 'node:os';
|
|
13
|
-
import { shellExec, pbcopy } from '
|
|
14
|
-
import Underpost from '
|
|
15
|
-
import {
|
|
16
|
-
import { resolveDeployId } from './cron.js';
|
|
12
|
+
import { shellExec, pbcopy } from '../runtime/process.js';
|
|
13
|
+
import Underpost from '../../index.js';
|
|
14
|
+
import { readConfJson } from '../runtime/conf.js';
|
|
17
15
|
|
|
18
16
|
const logger = loggerFactory(import.meta);
|
|
19
17
|
|
|
@@ -271,6 +269,206 @@ class Dns {
|
|
|
271
269
|
logger.info('Cleared all egress bans.');
|
|
272
270
|
}
|
|
273
271
|
|
|
272
|
+
/**
|
|
273
|
+
* Blocks all outbound traffic from this host, except for established/related connections.
|
|
274
|
+
* This is useful for security purposes, especially in a dynamic DNS context where you want to prevent
|
|
275
|
+
* any new outbound connections while still allowing existing ones (like SSH) to continue.
|
|
276
|
+
* @static
|
|
277
|
+
* @memberof UnderpostDns
|
|
278
|
+
*/
|
|
279
|
+
static ensureFilterChains(chains = ['output', 'forward']) {
|
|
280
|
+
// A stock RHEL 9 host with firewalld keeps its rules in `inet firewalld`;
|
|
281
|
+
// there is no `inet filter` table, so every policy command below fails with
|
|
282
|
+
// "No such file or directory". They used to fail silently, which is the
|
|
283
|
+
// worst possible outcome for this subsystem: the caller logged a successful
|
|
284
|
+
// block, the bandwidth guard latched, and the overage it exists to stop
|
|
285
|
+
// kept accruing against a host that was never blocked.
|
|
286
|
+
//
|
|
287
|
+
// Creating our own base chains is additive rather than a firewalld
|
|
288
|
+
// takeover — nftables evaluates every table, so a drop here still wins.
|
|
289
|
+
const ran = (command) => shellExec(command, { silent: true, silentOnError: true })?.code === 0;
|
|
290
|
+
const chainExists = (chain) => ran(`sudo nft list chain inet filter ${chain}`);
|
|
291
|
+
const missing = chains.filter((chain) => !chainExists(chain));
|
|
292
|
+
if (missing.length === 0) return true;
|
|
293
|
+
if (!ran(`sudo nft add table inet filter`)) return false;
|
|
294
|
+
for (const chain of missing) {
|
|
295
|
+
const hook = chain === 'input' ? 'input' : chain;
|
|
296
|
+
if (!ran(`sudo nft add chain inet filter ${chain} '{ type filter hook ${hook} priority 0; policy accept; }'`))
|
|
297
|
+
return false;
|
|
298
|
+
}
|
|
299
|
+
return chains.every(chainExists);
|
|
300
|
+
}
|
|
301
|
+
|
|
302
|
+
/**
|
|
303
|
+
* Whether a chain currently carries the given policy.
|
|
304
|
+
* @static
|
|
305
|
+
* @param {string} chain - Chain name in `inet filter`.
|
|
306
|
+
* @param {string} policy - `accept` or `drop`.
|
|
307
|
+
* @returns {boolean} True when the chain reports that policy.
|
|
308
|
+
* @memberof UnderpostDns
|
|
309
|
+
*/
|
|
310
|
+
static chainPolicyIs(chain, policy) {
|
|
311
|
+
const listing = shellExec(`sudo nft list chain inet filter ${chain}`, {
|
|
312
|
+
silent: true,
|
|
313
|
+
stdout: true,
|
|
314
|
+
silentOnError: true,
|
|
315
|
+
});
|
|
316
|
+
return `${listing || ''}`.includes(`policy ${policy}`);
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
static blockAllEgress() {
|
|
320
|
+
if (!Dns.ensureFilterChains(['output', 'forward']))
|
|
321
|
+
throw new Error('[dns] could not create the inet filter chains; egress is NOT blocked');
|
|
322
|
+
|
|
323
|
+
// Clear any existing egress rules.
|
|
324
|
+
shellExec(`sudo nft flush chain inet filter output`, { silent: true });
|
|
325
|
+
shellExec(`sudo nft flush chain inet filter forward`, { silent: true });
|
|
326
|
+
|
|
327
|
+
// Allow return traffic for established/related connections.
|
|
328
|
+
// This keeps existing inbound connections such as SSH alive.
|
|
329
|
+
shellExec(`sudo nft add rule inet filter output ct state established,related counter accept`, { silent: true });
|
|
330
|
+
|
|
331
|
+
// Block all new outbound connections from this host and forwarded traffic.
|
|
332
|
+
shellExec(`sudo nft chain inet filter output '{ policy drop; }'`, { silent: true });
|
|
333
|
+
shellExec(`sudo nft chain inet filter forward '{ policy drop; }'`, { silent: true });
|
|
334
|
+
|
|
335
|
+
// Read the policy back. The caller latches on this command's exit code, so
|
|
336
|
+
// reporting a block that did not land is what lets an overage run unbounded.
|
|
337
|
+
for (const chain of ['output', 'forward'])
|
|
338
|
+
if (!Dns.chainPolicyIs(chain, 'drop'))
|
|
339
|
+
throw new Error(`[dns] inet filter ${chain} is not 'policy drop'; egress is NOT blocked`);
|
|
340
|
+
|
|
341
|
+
logger.info('All outbound traffic blocked.');
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
/**
|
|
345
|
+
* Unblocks all outbound traffic from this host and forwarded interfaces.
|
|
346
|
+
* Restores default output and forward chain policies to ACCEPT and clears egress rules.
|
|
347
|
+
* @static
|
|
348
|
+
* @memberof UnderpostDns
|
|
349
|
+
*/
|
|
350
|
+
static unblockAllEgress() {
|
|
351
|
+
// Nothing to restore when the chains were never created — that host was
|
|
352
|
+
// never blocked, and saying so beats failing on a missing table.
|
|
353
|
+
if (!Dns.ensureFilterChains(['output', 'forward'])) {
|
|
354
|
+
logger.info('No inet filter chains on this host; egress was never blocked.');
|
|
355
|
+
return;
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
// Restore default chain policies to accept all traffic.
|
|
359
|
+
shellExec(`sudo nft chain inet filter output '{ policy accept; }'`, { silent: true });
|
|
360
|
+
shellExec(`sudo nft chain inet filter forward '{ policy accept; }'`, { silent: true });
|
|
361
|
+
|
|
362
|
+
// Clear any existing egress blocking rules.
|
|
363
|
+
shellExec(`sudo nft flush chain inet filter output`, { silent: true });
|
|
364
|
+
shellExec(`sudo nft flush chain inet filter forward`, { silent: true });
|
|
365
|
+
|
|
366
|
+
for (const chain of ['output', 'forward'])
|
|
367
|
+
if (!Dns.chainPolicyIs(chain, 'accept'))
|
|
368
|
+
throw new Error(`[dns] inet filter ${chain} is still not 'policy accept'; egress remains blocked`);
|
|
369
|
+
|
|
370
|
+
logger.info('All outbound traffic unblocked and restored to default ACCEPT policy.');
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
/**
|
|
374
|
+
* Ensures the chain every ingress rule is installed into exists.
|
|
375
|
+
*
|
|
376
|
+
* `inet filter` can be present with no `input` chain — a firewalld host keeps
|
|
377
|
+
* its rules in `inet firewalld` and never creates one — and every ingress
|
|
378
|
+
* command below then fails on a table that looks like it is there. Creating it
|
|
379
|
+
* with an accept policy and no rules changes nothing by itself.
|
|
380
|
+
* @static
|
|
381
|
+
* @memberof UnderpostDns
|
|
382
|
+
*/
|
|
383
|
+
static ensureIngressChain() {
|
|
384
|
+
shellExec(`sudo nft add table inet filter`, { silent: true });
|
|
385
|
+
shellExec(`sudo nft add chain inet filter input '{ type filter hook input priority 0; policy accept; }'`, {
|
|
386
|
+
silent: true,
|
|
387
|
+
});
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Blocks all new inbound traffic to this host, except for established/related connections.
|
|
392
|
+
* This prevents any new incoming connections while keeping existing sessions (like SSH) alive.
|
|
393
|
+
* @static
|
|
394
|
+
* @memberof UnderpostDns
|
|
395
|
+
*/
|
|
396
|
+
static blockAllIngress() {
|
|
397
|
+
Dns.ensureIngressChain();
|
|
398
|
+
// Clear any existing ingress rules.
|
|
399
|
+
shellExec(`sudo nft flush chain inet filter input`, { silent: true });
|
|
400
|
+
|
|
401
|
+
// Allow return traffic for established/related connections.
|
|
402
|
+
// This keeps active inbound/outbound sessions alive.
|
|
403
|
+
shellExec(`sudo nft add rule inet filter input ct state established,related counter accept`, { silent: true });
|
|
404
|
+
|
|
405
|
+
// Block all new inbound connections to this host.
|
|
406
|
+
shellExec(`sudo nft chain inet filter input '{ policy drop; }'`, { silent: true });
|
|
407
|
+
|
|
408
|
+
logger.info('All new inbound traffic blocked.');
|
|
409
|
+
}
|
|
410
|
+
|
|
411
|
+
/**
|
|
412
|
+
* Blocks new inbound traffic to specific TCP ports, leaving every other port
|
|
413
|
+
* reachable.
|
|
414
|
+
*
|
|
415
|
+
* Unlike {@link UnderpostDns.blockAllIngress}, the management path survives:
|
|
416
|
+
* blocking the public edge ports takes published services down while the host
|
|
417
|
+
* can still be reached to put them back. That is the only form of induced
|
|
418
|
+
* ingress outage a remote operator can recover from.
|
|
419
|
+
* @static
|
|
420
|
+
* @param {string} ports - Comma-separated TCP ports.
|
|
421
|
+
* @memberof UnderpostDns
|
|
422
|
+
*/
|
|
423
|
+
static blockIngressPort(ports) {
|
|
424
|
+
Dns.ensureIngressChain();
|
|
425
|
+
for (const port of Dns.portListFactory(ports))
|
|
426
|
+
shellExec(`sudo nft insert rule inet filter input tcp dport ${port} counter drop`, { silent: true });
|
|
427
|
+
logger.info('Inbound traffic blocked on ports', { ports: Dns.portListFactory(ports) });
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
/**
|
|
431
|
+
* Withdraws the port rules {@link UnderpostDns.blockIngressPort} installed.
|
|
432
|
+
* @static
|
|
433
|
+
* @param {string} ports - Comma-separated TCP ports.
|
|
434
|
+
* @memberof UnderpostDns
|
|
435
|
+
*/
|
|
436
|
+
static unblockIngressPort(ports) {
|
|
437
|
+
Dns.ensureIngressChain();
|
|
438
|
+
for (const port of Dns.portListFactory(ports))
|
|
439
|
+
shellExec(
|
|
440
|
+
`sudo sh -c "nft -a list chain inet filter input | awk '/tcp dport ${port} .*drop/ {print \\$NF}' | ` +
|
|
441
|
+
`xargs -r -n1 nft delete rule inet filter input handle"`,
|
|
442
|
+
{ silent: true },
|
|
443
|
+
);
|
|
444
|
+
logger.info('Inbound traffic unblocked on ports', { ports: Dns.portListFactory(ports) });
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
/** Parses a comma-separated port list, keeping only valid TCP ports. */
|
|
448
|
+
static portListFactory(ports = '') {
|
|
449
|
+
return `${ports || ''}`
|
|
450
|
+
.split(',')
|
|
451
|
+
.map((port) => Number(`${port}`.trim()))
|
|
452
|
+
.filter((port) => Number.isInteger(port) && port > 0 && port <= 65535);
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
/**
|
|
456
|
+
* Unblocks all inbound traffic to this host.
|
|
457
|
+
* Restores default input chain policy to ACCEPT and clears ingress rules.
|
|
458
|
+
* @static
|
|
459
|
+
* @memberof UnderpostDns
|
|
460
|
+
*/
|
|
461
|
+
static unblockAllIngress() {
|
|
462
|
+
Dns.ensureIngressChain();
|
|
463
|
+
// Restore default chain policy to accept all incoming traffic.
|
|
464
|
+
shellExec(`sudo nft chain inet filter input '{ policy accept; }'`, { silent: true });
|
|
465
|
+
|
|
466
|
+
// Clear any existing ingress blocking rules.
|
|
467
|
+
shellExec(`sudo nft flush chain inet filter input`, { silent: true });
|
|
468
|
+
|
|
469
|
+
logger.info('All inbound traffic unblocked and restored to default ACCEPT policy.');
|
|
470
|
+
}
|
|
471
|
+
|
|
274
472
|
/**
|
|
275
473
|
* Performs the dynamic DNS update logic.
|
|
276
474
|
* It checks if the public IP has changed and, if so, updates the configured DNS records.
|
|
@@ -281,8 +479,6 @@ class Dns {
|
|
|
281
479
|
* @returns {Promise<void>}
|
|
282
480
|
*/
|
|
283
481
|
static async callback(deployList) {
|
|
284
|
-
// loadCronDeployEnv();
|
|
285
|
-
|
|
286
482
|
const isOnline = await Dns.isInternetConnection();
|
|
287
483
|
|
|
288
484
|
if (!isOnline) return;
|
|
@@ -295,11 +491,11 @@ class Dns {
|
|
|
295
491
|
logger.error(error, { testIp, stack: error.stack });
|
|
296
492
|
}
|
|
297
493
|
|
|
298
|
-
const currentIp = Underpost.
|
|
494
|
+
const currentIp = Underpost.host.store.get('ip');
|
|
299
495
|
|
|
300
|
-
if (validator.isIP(testIp) && currentIp !== testIp) {
|
|
496
|
+
if (testIp && validator.isIP(testIp) && currentIp !== testIp) {
|
|
301
497
|
logger.info(`New IP detected`, testIp);
|
|
302
|
-
Underpost.
|
|
498
|
+
Underpost.host.store.set('monitor-input', 'pause');
|
|
303
499
|
|
|
304
500
|
for (const _deployId of deployList.split(',')) {
|
|
305
501
|
const deployId = _deployId.trim();
|
|
@@ -342,8 +538,8 @@ class Dns {
|
|
|
342
538
|
logger.info(ipUrlTest + ' verify ip', verifyIp);
|
|
343
539
|
if (verifyIp === testIp) {
|
|
344
540
|
logger.info('IP updated successfully and verified', testIp);
|
|
345
|
-
Underpost.
|
|
346
|
-
Underpost.
|
|
541
|
+
Underpost.host.store.set('ip', testIp);
|
|
542
|
+
Underpost.host.store.delete('monitor-input');
|
|
347
543
|
} else {
|
|
348
544
|
logger.error('IP not updated or verification failed', { expected: testIp, received: verifyIp });
|
|
349
545
|
}
|
|
@@ -440,6 +636,12 @@ class Dns {
|
|
|
440
636
|
* @property {boolean} [options.banEgressClear=false] - Clear all banned egress IPs.
|
|
441
637
|
* @property {boolean} [options.banBothAdd=false] - Ban IPs from both ingress and egress.
|
|
442
638
|
* @property {boolean} [options.banBothRemove=false] - Unban IPs from both ingress and egress.
|
|
639
|
+
* @property {boolean} [options.blockAllEgress=false] - Block all outbound traffic from this host.
|
|
640
|
+
* @property {boolean} [options.unblockAllEgress=false] - Unblock all outbound traffic.
|
|
641
|
+
* @property {boolean} [options.blockAllIngress=false] - Block all new inbound traffic to this host.
|
|
642
|
+
* @property {boolean} [options.unblockAllIngress=false] - Unblock all inbound traffic.
|
|
643
|
+
* @property {string} [options.blockIngressPort=''] - Comma-separated TCP ports to block inbound.
|
|
644
|
+
* @property {string} [options.unblockIngressPort=''] - Comma-separated TCP ports to unblock inbound.
|
|
443
645
|
* @property {boolean} [options.dhcp=false] - Get local DHCP IP instead of public IP.
|
|
444
646
|
* @property {boolean} [options.copy=false] - Copy the public IP to clipboard.
|
|
445
647
|
* @return {Promise<string|void>} The public IP if no ban/unban action is taken.
|
|
@@ -457,6 +659,12 @@ class Dns {
|
|
|
457
659
|
banEgressClear: false,
|
|
458
660
|
banBothAdd: false,
|
|
459
661
|
banBothRemove: false,
|
|
662
|
+
blockAllEgress: false,
|
|
663
|
+
unblockAllEgress: false,
|
|
664
|
+
blockAllIngress: false,
|
|
665
|
+
unblockAllIngress: false,
|
|
666
|
+
blockIngressPort: '',
|
|
667
|
+
unblockIngressPort: '',
|
|
460
668
|
copy: false,
|
|
461
669
|
dhcp: false,
|
|
462
670
|
},
|
|
@@ -507,6 +715,25 @@ class Dns {
|
|
|
507
715
|
});
|
|
508
716
|
}
|
|
509
717
|
|
|
718
|
+
if (options.blockAllEgress) {
|
|
719
|
+
return Dns.blockAllEgress();
|
|
720
|
+
}
|
|
721
|
+
if (options.unblockAllEgress) {
|
|
722
|
+
return Dns.unblockAllEgress();
|
|
723
|
+
}
|
|
724
|
+
if (options.blockIngressPort) {
|
|
725
|
+
return Dns.blockIngressPort(options.blockIngressPort);
|
|
726
|
+
}
|
|
727
|
+
if (options.unblockIngressPort) {
|
|
728
|
+
return Dns.unblockIngressPort(options.unblockIngressPort);
|
|
729
|
+
}
|
|
730
|
+
if (options.blockAllIngress) {
|
|
731
|
+
return Dns.blockAllIngress();
|
|
732
|
+
}
|
|
733
|
+
if (options.unblockAllIngress) {
|
|
734
|
+
return Dns.unblockAllIngress();
|
|
735
|
+
}
|
|
736
|
+
|
|
510
737
|
if (options.mac) {
|
|
511
738
|
const mac = Dns.getMainInterfaceMac();
|
|
512
739
|
console.log(mac);
|