From 0d34b35e089486bbbe04631d6025a0dc4d2ba725 Mon Sep 17 00:00:00 2001 From: defiQUG Date: Tue, 28 Jul 2026 13:48:33 -0700 Subject: [PATCH] package project atlas as submodule --- .github/workflows/ci.yml | 12 + .github/workflows/deploy-dev.yml | 5 +- .github/workflows/deploy-prod.yml | 5 +- .github/workflows/deploy-staging.yml | 5 +- .github/workflows/portal-ci.yml | 17 +- .gitmodules | 4 + portal/src/data/project-atlas | 1 + .../project-atlas/dns-e2e-reverse-map.v1.json | 922 ------------------ .../network-architecture.v1.json | 316 ------ .../data/project-atlas/project-atlas.v1.json | 84 -- portal/src/lib/atlas.ts | 20 +- .../ci/bootstrap-project-atlas-submodule.sh | 24 + 12 files changed, 79 insertions(+), 1336 deletions(-) create mode 160000 portal/src/data/project-atlas delete mode 100644 portal/src/data/project-atlas/dns-e2e-reverse-map.v1.json delete mode 100644 portal/src/data/project-atlas/network-architecture.v1.json delete mode 100644 portal/src/data/project-atlas/project-atlas.v1.json create mode 100755 scripts/ci/bootstrap-project-atlas-submodule.sh diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8fc909b..016e4a9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -12,6 +12,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - name: Bootstrap Project Atlas submodule + env: + PROJECT_ATLAS_SSH_PRIVATE_KEY: ${{ secrets.PROJECT_ATLAS_SSH_PRIVATE_KEY }} + run: bash ./scripts/ci/bootstrap-project-atlas-submodule.sh - name: Setup Node.js uses: actions/setup-node@v4 @@ -112,6 +116,10 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 + - name: Bootstrap Project Atlas submodule + env: + PROJECT_ATLAS_SSH_PRIVATE_KEY: ${{ secrets.PROJECT_ATLAS_SSH_PRIVATE_KEY }} + run: bash ./scripts/ci/bootstrap-project-atlas-submodule.sh - name: Setup Node.js uses: actions/setup-node@v4 @@ -145,6 +153,10 @@ jobs: needs: [lint-and-type-check] steps: - uses: actions/checkout@v4 + - name: Bootstrap Project Atlas submodule + env: + PROJECT_ATLAS_SSH_PRIVATE_KEY: ${{ secrets.PROJECT_ATLAS_SSH_PRIVATE_KEY }} + run: bash ./scripts/ci/bootstrap-project-atlas-submodule.sh - name: Setup Node.js uses: actions/setup-node@v4 diff --git a/.github/workflows/deploy-dev.yml b/.github/workflows/deploy-dev.yml index 56e845d..41ce821 100644 --- a/.github/workflows/deploy-dev.yml +++ b/.github/workflows/deploy-dev.yml @@ -13,6 +13,10 @@ jobs: name: development steps: - uses: actions/checkout@v4 + - name: Bootstrap Project Atlas submodule + env: + PROJECT_ATLAS_SSH_PRIVATE_KEY: ${{ secrets.PROJECT_ATLAS_SSH_PRIVATE_KEY }} + run: bash ./scripts/ci/bootstrap-project-atlas-submodule.sh - uses: pnpm/action-setup@v2 with: version: 8 @@ -26,4 +30,3 @@ jobs: run: | echo "Deploying to development..." # Add your deployment commands here - diff --git a/.github/workflows/deploy-prod.yml b/.github/workflows/deploy-prod.yml index cfc5578..d2e1d15 100644 --- a/.github/workflows/deploy-prod.yml +++ b/.github/workflows/deploy-prod.yml @@ -16,6 +16,10 @@ jobs: name: production steps: - uses: actions/checkout@v4 + - name: Bootstrap Project Atlas submodule + env: + PROJECT_ATLAS_SSH_PRIVATE_KEY: ${{ secrets.PROJECT_ATLAS_SSH_PRIVATE_KEY }} + run: bash ./scripts/ci/bootstrap-project-atlas-submodule.sh - uses: pnpm/action-setup@v2 with: version: 8 @@ -29,4 +33,3 @@ jobs: run: | echo "Deploying version ${{ github.event.inputs.version }} to production..." # Add your deployment commands here - diff --git a/.github/workflows/deploy-staging.yml b/.github/workflows/deploy-staging.yml index 63d631f..bd4f983 100644 --- a/.github/workflows/deploy-staging.yml +++ b/.github/workflows/deploy-staging.yml @@ -13,6 +13,10 @@ jobs: name: staging steps: - uses: actions/checkout@v4 + - name: Bootstrap Project Atlas submodule + env: + PROJECT_ATLAS_SSH_PRIVATE_KEY: ${{ secrets.PROJECT_ATLAS_SSH_PRIVATE_KEY }} + run: bash ./scripts/ci/bootstrap-project-atlas-submodule.sh - uses: pnpm/action-setup@v2 with: version: 8 @@ -26,4 +30,3 @@ jobs: run: | echo "Deploying to staging..." # Add your deployment commands here - diff --git a/.github/workflows/portal-ci.yml b/.github/workflows/portal-ci.yml index 7d4f81a..adc3c60 100644 --- a/.github/workflows/portal-ci.yml +++ b/.github/workflows/portal-ci.yml @@ -20,6 +20,10 @@ jobs: working-directory: ./portal steps: - uses: actions/checkout@v4 + - name: Bootstrap Project Atlas submodule + env: + PROJECT_ATLAS_SSH_PRIVATE_KEY: ${{ secrets.PROJECT_ATLAS_SSH_PRIVATE_KEY }} + run: bash ./scripts/ci/bootstrap-project-atlas-submodule.sh - uses: actions/setup-node@v4 with: node-version: '20' @@ -36,6 +40,10 @@ jobs: working-directory: ./portal steps: - uses: actions/checkout@v4 + - name: Bootstrap Project Atlas submodule + env: + PROJECT_ATLAS_SSH_PRIVATE_KEY: ${{ secrets.PROJECT_ATLAS_SSH_PRIVATE_KEY }} + run: bash ./scripts/ci/bootstrap-project-atlas-submodule.sh - uses: actions/setup-node@v4 with: node-version: '20' @@ -52,6 +60,10 @@ jobs: working-directory: ./portal steps: - uses: actions/checkout@v4 + - name: Bootstrap Project Atlas submodule + env: + PROJECT_ATLAS_SSH_PRIVATE_KEY: ${{ secrets.PROJECT_ATLAS_SSH_PRIVATE_KEY }} + run: bash ./scripts/ci/bootstrap-project-atlas-submodule.sh - uses: actions/setup-node@v4 with: node-version: '20' @@ -73,6 +85,10 @@ jobs: working-directory: ./portal steps: - uses: actions/checkout@v4 + - name: Bootstrap Project Atlas submodule + env: + PROJECT_ATLAS_SSH_PRIVATE_KEY: ${{ secrets.PROJECT_ATLAS_SSH_PRIVATE_KEY }} + run: bash ./scripts/ci/bootstrap-project-atlas-submodule.sh - uses: actions/setup-node@v4 with: node-version: '20' @@ -80,4 +96,3 @@ jobs: cache-dependency-path: portal/package-lock.json - run: npm ci - run: npm run build - diff --git a/.gitmodules b/.gitmodules index a9c988c..38c3f01 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,7 @@ [submodule "marketplace/as4-411"] path = marketplace/as4-411 url = https://gitea.d-bis.org/d-bis/as4-411.git +[submodule "portal/src/data/project-atlas"] + path = portal/src/data/project-atlas + url = git@gitea.d-bis.org:Sankofa_Phoenix/projectAtlas.git + branch = main diff --git a/portal/src/data/project-atlas b/portal/src/data/project-atlas new file mode 160000 index 0000000..7c5d22a --- /dev/null +++ b/portal/src/data/project-atlas @@ -0,0 +1 @@ +Subproject commit 7c5d22ad3aba7ca05d257f46cce63f1cf8de20d3 diff --git a/portal/src/data/project-atlas/dns-e2e-reverse-map.v1.json b/portal/src/data/project-atlas/dns-e2e-reverse-map.v1.json deleted file mode 100644 index 37a9a0b..0000000 --- a/portal/src/data/project-atlas/dns-e2e-reverse-map.v1.json +++ /dev/null @@ -1,922 +0,0 @@ -{ - "endpointCount": 61, - "endpoints": [ - { - "checks": { - "app": "curl -skI https://admin.sankofa.nexus", - "dns": "dig +short admin.sankofa.nexus", - "edge": "curl -skI https://admin.sankofa.nexus", - "origin": "nc -vz 192.168.11.50 8080" - }, - "domain": "admin.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Phoenix admin surface; see system atlas / OMNL architecture", - "reverseTarget": "192.168.11.50:8080", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://admin.sankofa.nexus" - }, - { - "checks": { - "app": "curl -skI https://besu-sentry-ali.sankofa.nexus", - "dns": "dig +short besu-sentry-ali.sankofa.nexus", - "edge": "curl -skI https://besu-sentry-ali.sankofa.nexus", - "origin": "nc -vz 192.168.11.154 9545" - }, - "domain": "besu-sentry-ali.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Ali sentry metrics", - "reverseTarget": "192.168.11.154:9545", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://besu-sentry-ali.sankofa.nexus" - }, - { - "checks": { - "app": "curl -skI https://blockscout.defi-oracle.io", - "dns": "dig +short blockscout.defi-oracle.io", - "edge": "curl -skI https://blockscout.defi-oracle.io", - "origin": "nc -vz 192.168.11.142 80" - }, - "domain": "blockscout.defi-oracle.io", - "ecosystem": "proxmox", - "reverseNote": "Standard Blockscout / VMID 5011", - "reverseTarget": "192.168.11.142:80", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://blockscout.defi-oracle.io" - }, - { - "checks": { - "app": "curl -skI https://cacti-alltra.d-bis.org", - "dns": "dig +short cacti-alltra.d-bis.org", - "edge": "curl -skI https://cacti-alltra.d-bis.org", - "origin": "nc -vz 192.168.11.80 80" - }, - "domain": "cacti-alltra.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Cacti monitoring", - "reverseTarget": "192.168.11.80:80", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://cacti-alltra.d-bis.org" - }, - { - "checks": { - "app": "curl -skI https://cacti-hybx.d-bis.org", - "dns": "dig +short cacti-hybx.d-bis.org", - "edge": "curl -skI https://cacti-hybx.d-bis.org", - "origin": "nc -vz 192.168.11.80 80" - }, - "domain": "cacti-hybx.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Cacti monitoring", - "reverseTarget": "192.168.11.80:80", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://cacti-hybx.d-bis.org" - }, - { - "checks": { - "app": "curl -skI https://codespaces.d-bis.org", - "dns": "dig +short codespaces.d-bis.org", - "edge": "curl -skI https://codespaces.d-bis.org", - "origin": "nc -vz 192.168.11.170 443" - }, - "domain": "codespaces.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Fourth NPMplus / dev or Codespaces ingress", - "reverseTarget": "192.168.11.170:443", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://codespaces.d-bis.org" - }, - { - "checks": { - "app": "curl -skI https://dapp.d-bis.org", - "dns": "dig +short dapp.d-bis.org", - "edge": "curl -skI https://dapp.d-bis.org", - "origin": "nc -vz 192.168.11.58 80" - }, - "domain": "dapp.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "DApp frontend / VMID 5801", - "reverseTarget": "192.168.11.58:80", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://dapp.d-bis.org" - }, - { - "checks": { - "app": "curl -skI https://dash.sankofa.nexus", - "dns": "dig +short dash.sankofa.nexus", - "edge": "curl -skI https://dash.sankofa.nexus", - "origin": "nc -vz 192.168.11.50 8080" - }, - "domain": "dash.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Sankofa operator dashboard", - "reverseTarget": "192.168.11.50:8080", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://dash.sankofa.nexus" - }, - { - "checks": { - "app": "curl -skI https://dbis-admin.d-bis.org", - "dns": "dig +short dbis-admin.d-bis.org", - "edge": "curl -skI https://dbis-admin.d-bis.org", - "origin": "nc -vz 192.168.11.130 80" - }, - "domain": "dbis-admin.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "DBIS admin console / VMID 10130", - "reverseTarget": "192.168.11.130:80", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://dbis-admin.d-bis.org" - }, - { - "checks": { - "app": "curl -sk https://dbis-api-2.d-bis.org", - "dns": "dig +short dbis-api-2.d-bis.org", - "edge": "curl -skI https://dbis-api-2.d-bis.org", - "origin": "nc -vz 192.168.11.156 3000" - }, - "domain": "dbis-api-2.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "DBIS API secondary / VMID 10151", - "reverseTarget": "192.168.11.156:3000", - "triagePath": "DNS -> edge -> origin -> app", - "type": "api", - "url": "https://dbis-api-2.d-bis.org" - }, - { - "checks": { - "app": "curl -sk https://dbis-api.d-bis.org", - "dns": "dig +short dbis-api.d-bis.org", - "edge": "curl -skI https://dbis-api.d-bis.org", - "origin": "nc -vz 192.168.11.155 3000" - }, - "domain": "dbis-api.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "DBIS API primary / VMID 10150", - "reverseTarget": "192.168.11.155:3000", - "triagePath": "DNS -> edge -> origin -> app", - "type": "api", - "url": "https://dbis-api.d-bis.org" - }, - { - "checks": { - "app": "curl -skI https://dealflow.d-bis.org", - "dns": "dig +short dealflow.d-bis.org", - "edge": "curl -skI https://dealflow.d-bis.org", - "origin": "nc -vz 192.168.11.94 443" - }, - "domain": "dealflow.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "DealFlow Command Center / VMID 10381", - "reverseTarget": "192.168.11.94:443", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://dealflow.d-bis.org" - }, - { - "checks": { - "app": "curl -skI https://dev.d-bis.org", - "dns": "dig +short dev.d-bis.org", - "edge": "curl -skI https://dev.d-bis.org", - "origin": "nc -vz 192.168.11.170 443" - }, - "domain": "dev.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Fourth NPMplus / dev ingress", - "reverseTarget": "192.168.11.170:443", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://dev.d-bis.org" - }, - { - "checks": { - "app": "curl -skI https://docs.d-bis.org", - "dns": "dig +short docs.d-bis.org", - "edge": "curl -skI https://docs.d-bis.org", - "origin": "nc -vz 192.168.11.140 4000" - }, - "domain": "docs.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Explorer nginx / docs host (same edge as explorer)", - "reverseTarget": "192.168.11.140:4000", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://docs.d-bis.org" - }, - { - "checks": { - "app": "curl -skI https://explorer.d-bis.org", - "dns": "dig +short explorer.d-bis.org", - "edge": "curl -skI https://explorer.d-bis.org", - "origin": "nc -vz 192.168.11.140 4000" - }, - "domain": "explorer.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Direct Blockscout route on port 4000", - "reverseTarget": "192.168.11.140:4000", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://explorer.d-bis.org" - }, - { - "checks": { - "app": "curl -sk https://firefly-ali.sankofa.nexus", - "dns": "dig +short firefly-ali.sankofa.nexus", - "edge": "curl -skI https://firefly-ali.sankofa.nexus", - "origin": "nc -vz 192.168.11.57 5000" - }, - "domain": "firefly-ali.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Firefly Ali instance / VMID 6201", - "reverseTarget": "192.168.11.57:5000", - "triagePath": "DNS -> edge -> origin -> app", - "type": "api", - "url": "https://firefly-ali.sankofa.nexus" - }, - { - "checks": { - "app": "curl -skI https://gitea.d-bis.org", - "dns": "dig +short gitea.d-bis.org", - "edge": "curl -skI https://gitea.d-bis.org", - "origin": "nc -vz 192.168.11.59 3000" - }, - "domain": "gitea.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Dev VM Gitea endpoint", - "reverseTarget": "192.168.11.59:3000", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://gitea.d-bis.org" - }, - { - "checks": { - "app": "curl -skI https://hermes.sankofa.nexus", - "dns": "dig +short hermes.sankofa.nexus", - "edge": "curl -skI https://hermes.sankofa.nexus", - "origin": "nc -vz 192.168.11.77 3020" - }, - "domain": "hermes.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Hermes underwiting intelligence / VMID 7817", - "reverseTarget": "192.168.11.77:3020", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://hermes.sankofa.nexus" - }, - { - "checks": { - "app": "curl -skI https://howtothinkwithai.sankofa.nexus", - "dns": "dig +short howtothinkwithai.sankofa.nexus", - "edge": "curl -skI https://howtothinkwithai.sankofa.nexus", - "origin": "nc -vz 192.168.11.79 3021" - }, - "domain": "howtothinkwithai.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "HowToThinkWithAI / VMID 7819", - "reverseTarget": "192.168.11.79:3021", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://howtothinkwithai.sankofa.nexus" - }, - { - "checks": { - "app": "curl -skI https://keycloak.sankofa.nexus", - "dns": "dig +short keycloak.sankofa.nexus", - "edge": "curl -skI https://keycloak.sankofa.nexus", - "origin": "nc -vz 192.168.11.52 8080" - }, - "domain": "keycloak.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Sankofa Keycloak / VMID 7802", - "reverseTarget": "192.168.11.52:8080", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://keycloak.sankofa.nexus" - }, - { - "checks": { - "app": "curl -skI https://mail.d-bis.org", - "dns": "dig +short mail.d-bis.org", - "edge": "curl -skI https://mail.d-bis.org", - "origin": "nc -vz 192.168.11.32 25 && nc -vz 192.168.11.32 587 && nc -vz 192.168.11.32 465" - }, - "domain": "mail.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Mail gateway / PMG", - "reverseTarget": "192.168.11.32:25/587/465", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://mail.d-bis.org" - }, - { - "checks": { - "app": "curl -skI https://mifos.d-bis.org", - "dns": "dig +short mifos.d-bis.org", - "edge": "curl -skI https://mifos.d-bis.org", - "origin": "nc -vz 192.168.11.85 80" - }, - "domain": "mifos.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Mifos/Fineract / VMID 5800", - "reverseTarget": "192.168.11.85:80", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://mifos.d-bis.org" - }, - { - "checks": { - "app": "curl -skI https://mim4u.org", - "dns": "dig +short mim4u.org", - "edge": "curl -skI https://mim4u.org", - "origin": "nc -vz 192.168.11.37 80" - }, - "domain": "mim4u.org", - "ecosystem": "other", - "reverseNote": "MIM4U web / VMID 7810", - "reverseTarget": "192.168.11.37:80", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://mim4u.org" - }, - { - "checks": { - "app": "curl -skI https://phoenix.sankofa.nexus", - "dns": "dig +short phoenix.sankofa.nexus", - "edge": "curl -skI https://phoenix.sankofa.nexus", - "origin": "nc -vz 192.168.11.50 8080" - }, - "domain": "phoenix.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Phoenix API hub / VMID 7800", - "reverseTarget": "192.168.11.50:8080", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://phoenix.sankofa.nexus" - }, - { - "checks": { - "app": "curl -skI https://portal.sankofa.nexus", - "dns": "dig +short portal.sankofa.nexus", - "edge": "curl -skI https://portal.sankofa.nexus", - "origin": "nc -vz 192.168.11.51 3000" - }, - "domain": "portal.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Sankofa portal / VMID 7801", - "reverseTarget": "192.168.11.51:3000", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://portal.sankofa.nexus" - }, - { - "checks": { - "app": "curl -skI https://reserve.d-bis.org", - "dns": "dig +short reserve.d-bis.org", - "edge": "curl -skI https://reserve.d-bis.org", - "origin": "nc -vz 192.168.11.140 4000" - }, - "domain": "reserve.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Explorer / reserve shared backend", - "reverseTarget": "192.168.11.140:4000", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://reserve.d-bis.org" - }, - { - "checks": { - "app": "curl -sk https://rpc-ali-0x1.sankofa.nexus -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc-ali-0x1.sankofa.nexus", - "edge": "curl -skI https://rpc-ali-0x1.sankofa.nexus", - "origin": "nc -vz 192.168.11.234 8545 && nc -vz 192.168.11.234 8546" - }, - "domain": "rpc-ali-0x1.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Ali Besu RPC 0x1 / VMID 2304", - "reverseTarget": "192.168.11.234:8545/8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-http", - "url": "https://rpc-ali-0x1.sankofa.nexus" - }, - { - "checks": { - "app": "curl -sk https://rpc-ali-0x8a.sankofa.nexus -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc-ali-0x8a.sankofa.nexus", - "edge": "curl -skI https://rpc-ali-0x8a.sankofa.nexus", - "origin": "nc -vz 192.168.11.233 8545 && nc -vz 192.168.11.233 8546" - }, - "domain": "rpc-ali-0x8a.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Ali Besu RPC 0x8a / VMID 2303", - "reverseTarget": "192.168.11.233:8545/8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-http", - "url": "https://rpc-ali-0x8a.sankofa.nexus" - }, - { - "checks": { - "app": "curl -sk https://rpc-alltra-2.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc-alltra-2.d-bis.org", - "edge": "curl -skI https://rpc-alltra-2.d-bis.org", - "origin": "nc -vz 192.168.11.173 8545 && nc -vz 192.168.11.173 8546" - }, - "domain": "rpc-alltra-2.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "ALLTRA internal RPC 2 / VMID 2501", - "reverseTarget": "192.168.11.173:8545/8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-http", - "url": "https://rpc-alltra-2.d-bis.org" - }, - { - "checks": { - "app": "curl -sk https://rpc-alltra-3.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc-alltra-3.d-bis.org", - "edge": "curl -skI https://rpc-alltra-3.d-bis.org", - "origin": "nc -vz 192.168.11.174 8545 && nc -vz 192.168.11.174 8546" - }, - "domain": "rpc-alltra-3.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "ALLTRA internal RPC 3 / VMID 2502", - "reverseTarget": "192.168.11.174:8545/8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-http", - "url": "https://rpc-alltra-3.d-bis.org" - }, - { - "checks": { - "app": "curl -sk https://rpc-alltra.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc-alltra.d-bis.org", - "edge": "curl -skI https://rpc-alltra.d-bis.org", - "origin": "nc -vz 192.168.11.172 8545 && nc -vz 192.168.11.172 8546" - }, - "domain": "rpc-alltra.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "ALLTRA internal RPC 1 / VMID 2500", - "reverseTarget": "192.168.11.172:8545/8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-http", - "url": "https://rpc-alltra.d-bis.org" - }, - { - "checks": { - "app": "curl -sk https://rpc-fireblocks.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc-fireblocks.d-bis.org", - "edge": "curl -skI https://rpc-fireblocks.d-bis.org", - "origin": "nc -vz 192.168.11.211 8545 && nc -vz 192.168.11.211 8546" - }, - "domain": "rpc-fireblocks.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Fireblocks dedicated RPC / VMID 2101", - "reverseTarget": "192.168.11.211:8545/8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-http", - "url": "https://rpc-fireblocks.d-bis.org" - }, - { - "checks": { - "app": "curl -sk https://rpc-http-prv.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc-http-prv.d-bis.org", - "edge": "curl -skI https://rpc-http-prv.d-bis.org", - "origin": "nc -vz 192.168.11.211 8545 && nc -vz 192.168.11.211 8546" - }, - "domain": "rpc-http-prv.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Private RPC / VMID 2101", - "reverseTarget": "192.168.11.211:8545/8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-http", - "url": "https://rpc-http-prv.d-bis.org" - }, - { - "checks": { - "app": "curl -sk https://rpc-http-pub.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc-http-pub.d-bis.org", - "edge": "curl -skI https://rpc-http-pub.d-bis.org", - "origin": "nc -vz 192.168.11.221 8545 && nc -vz 192.168.11.221 8546" - }, - "domain": "rpc-http-pub.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Public RPC / VMID 2201", - "reverseTarget": "192.168.11.221:8545/8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-http", - "url": "https://rpc-http-pub.d-bis.org" - }, - { - "checks": { - "app": "curl -sk https://rpc-hybx-2.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc-hybx-2.d-bis.org", - "edge": "curl -skI https://rpc-hybx-2.d-bis.org", - "origin": "nc -vz 192.168.11.247 8545 && nc -vz 192.168.11.247 8546" - }, - "domain": "rpc-hybx-2.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "HYBX internal RPC 2 / VMID 2504", - "reverseTarget": "192.168.11.247:8545/8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-http", - "url": "https://rpc-hybx-2.d-bis.org" - }, - { - "checks": { - "app": "curl -sk https://rpc-hybx-3.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc-hybx-3.d-bis.org", - "edge": "curl -skI https://rpc-hybx-3.d-bis.org", - "origin": "nc -vz 192.168.11.248 8545 && nc -vz 192.168.11.248 8546" - }, - "domain": "rpc-hybx-3.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "HYBX internal RPC 3 / VMID 2505", - "reverseTarget": "192.168.11.248:8545/8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-http", - "url": "https://rpc-hybx-3.d-bis.org" - }, - { - "checks": { - "app": "curl -sk https://rpc-hybx.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc-hybx.d-bis.org", - "edge": "curl -skI https://rpc-hybx.d-bis.org", - "origin": "nc -vz 192.168.11.246 8545 && nc -vz 192.168.11.246 8546" - }, - "domain": "rpc-hybx.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "HYBX internal RPC 1 / VMID 2503", - "reverseTarget": "192.168.11.246:8545/8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-http", - "url": "https://rpc-hybx.d-bis.org" - }, - { - "checks": { - "app": "npx wscat -c wss://rpc-ws-prv.d-bis.org -x '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc-ws-prv.d-bis.org", - "edge": "npx wscat -c wss://rpc-ws-prv.d-bis.org", - "origin": "nc -vz 192.168.11.211 8546" - }, - "domain": "rpc-ws-prv.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Private WebSocket RPC / VMID 2101", - "reverseTarget": "192.168.11.211:8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-ws", - "url": "https://rpc-ws-prv.d-bis.org" - }, - { - "checks": { - "app": "npx wscat -c wss://rpc-ws-pub.d-bis.org -x '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc-ws-pub.d-bis.org", - "edge": "npx wscat -c wss://rpc-ws-pub.d-bis.org", - "origin": "nc -vz 192.168.11.221 8546" - }, - "domain": "rpc-ws-pub.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Public WebSocket RPC / VMID 2201", - "reverseTarget": "192.168.11.221:8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-ws", - "url": "https://rpc-ws-pub.d-bis.org" - }, - { - "checks": { - "app": "curl -sk https://rpc.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc.d-bis.org", - "edge": "curl -skI https://rpc.d-bis.org", - "origin": "nc -vz 192.168.11.221 8545 && nc -vz 192.168.11.221 8546" - }, - "domain": "rpc.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Canonical public RPC / VMID 2201", - "reverseTarget": "192.168.11.221:8545/8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-http", - "url": "https://rpc.d-bis.org" - }, - { - "checks": { - "app": "curl -sk https://rpc.defi-oracle.io -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc.defi-oracle.io", - "edge": "curl -skI https://rpc.defi-oracle.io", - "origin": "nc -vz 192.168.11.221 8545 && nc -vz 192.168.11.221 8546" - }, - "domain": "rpc.defi-oracle.io", - "ecosystem": "proxmox", - "reverseNote": "Defi Oracle RPC alias", - "reverseTarget": "192.168.11.221:8545/8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-http", - "url": "https://rpc.defi-oracle.io" - }, - { - "checks": { - "app": "curl -sk https://rpc.public-0138.defi-oracle.io -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc.public-0138.defi-oracle.io", - "edge": "curl -skI https://rpc.public-0138.defi-oracle.io", - "origin": "nc -vz 192.168.11.221 8545 && nc -vz 192.168.11.221 8546" - }, - "domain": "rpc.public-0138.defi-oracle.io", - "ecosystem": "proxmox", - "reverseNote": "Defi Oracle public RPC", - "reverseTarget": "192.168.11.221:8545/8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-http", - "url": "https://rpc.public-0138.defi-oracle.io" - }, - { - "checks": { - "app": "curl -sk https://rpc2.d-bis.org -H 'content-type: application/json' --data '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short rpc2.d-bis.org", - "edge": "curl -skI https://rpc2.d-bis.org", - "origin": "nc -vz 192.168.11.221 8545 && nc -vz 192.168.11.221 8546" - }, - "domain": "rpc2.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Canonical public RPC alias / VMID 2201", - "reverseTarget": "192.168.11.221:8545/8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-http", - "url": "https://rpc2.d-bis.org" - }, - { - "checks": { - "app": "curl -skI https://sankofa.nexus", - "dns": "dig +short sankofa.nexus", - "edge": "curl -skI https://sankofa.nexus", - "origin": "nc -vz 192.168.11.51 3000" - }, - "domain": "sankofa.nexus", - "ecosystem": "other", - "reverseNote": "Sankofa portal / VMID 7801", - "reverseTarget": "192.168.11.51:3000", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://sankofa.nexus" - }, - { - "checks": { - "app": "curl -skI https://secure.d-bis.org", - "dns": "dig +short secure.d-bis.org", - "edge": "curl -skI https://secure.d-bis.org", - "origin": "nc -vz 192.168.11.130 80 && nc -vz 192.168.11.130 443" - }, - "domain": "secure.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "DBIS admin / secure portal", - "reverseTarget": "192.168.11.130:80/443", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://secure.d-bis.org" - }, - { - "checks": { - "app": "curl -skI https://secure.mim4u.org", - "dns": "dig +short secure.mim4u.org", - "edge": "curl -skI https://secure.mim4u.org", - "origin": "nc -vz 192.168.11.37 80" - }, - "domain": "secure.mim4u.org", - "ecosystem": "proxmox", - "reverseNote": "MIM4U secure", - "reverseTarget": "192.168.11.37:80", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://secure.mim4u.org" - }, - { - "checks": { - "app": "curl -skI https://solace-treasury-mgmt.defi-oracle.io", - "dns": "dig +short solace-treasury-mgmt.defi-oracle.io", - "edge": "curl -skI https://solace-treasury-mgmt.defi-oracle.io", - "origin": "nc -vz 192.168.11.60 443" - }, - "domain": "solace-treasury-mgmt.defi-oracle.io", - "ecosystem": "proxmox", - "reverseNote": "Solace treasury frontend / VMID 3000", - "reverseTarget": "192.168.11.60:443", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://solace-treasury-mgmt.defi-oracle.io" - }, - { - "checks": { - "app": "curl -skI https://studio.sankofa.nexus", - "dns": "dig +short studio.sankofa.nexus", - "edge": "curl -skI https://studio.sankofa.nexus", - "origin": "nc -vz 192.168.11.72 8000" - }, - "domain": "studio.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Sankofa Studio / VMID 7805", - "reverseTarget": "192.168.11.72:8000", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://studio.sankofa.nexus" - }, - { - "checks": { - "app": "curl -skI https://the-order.sankofa.nexus", - "dns": "dig +short the-order.sankofa.nexus", - "edge": "curl -skI https://the-order.sankofa.nexus", - "origin": "nc -vz 192.168.11.39 80" - }, - "domain": "the-order.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Order HAProxy / VMID 10210", - "reverseTarget": "192.168.11.39:80", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://the-order.sankofa.nexus" - }, - { - "checks": { - "app": "curl -skI https://training.mim4u.org", - "dns": "dig +short training.mim4u.org", - "edge": "curl -skI https://training.mim4u.org", - "origin": "nc -vz 192.168.11.37 80" - }, - "domain": "training.mim4u.org", - "ecosystem": "proxmox", - "reverseNote": "MIM4U training", - "reverseTarget": "192.168.11.37:80", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://training.mim4u.org" - }, - { - "checks": { - "app": "curl -skI https://webmail.d-bis.org", - "dns": "dig +short webmail.d-bis.org", - "edge": "curl -skI https://webmail.d-bis.org", - "origin": "nc -vz 192.168.11.35 443" - }, - "domain": "webmail.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Mailcow webmail", - "reverseTarget": "192.168.11.35:443", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://webmail.d-bis.org" - }, - { - "checks": { - "app": "npx wscat -c wss://ws-rpc-ali-0x1.sankofa.nexus -x '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short ws-rpc-ali-0x1.sankofa.nexus", - "edge": "npx wscat -c wss://ws-rpc-ali-0x1.sankofa.nexus", - "origin": "nc -vz 192.168.11.234 8546" - }, - "domain": "ws-rpc-ali-0x1.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Ali Besu WS RPC 0x1 / VMID 2304", - "reverseTarget": "192.168.11.234:8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-ws", - "url": "https://ws-rpc-ali-0x1.sankofa.nexus" - }, - { - "checks": { - "app": "npx wscat -c wss://ws-rpc-ali-0x8a.sankofa.nexus -x '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short ws-rpc-ali-0x8a.sankofa.nexus", - "edge": "npx wscat -c wss://ws-rpc-ali-0x8a.sankofa.nexus", - "origin": "nc -vz 192.168.11.233 8546" - }, - "domain": "ws-rpc-ali-0x8a.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Ali Besu WS RPC 0x8a / VMID 2303", - "reverseTarget": "192.168.11.233:8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-ws", - "url": "https://ws-rpc-ali-0x8a.sankofa.nexus" - }, - { - "checks": { - "app": "npx wscat -c wss://ws.rpc-fireblocks.d-bis.org -x '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short ws.rpc-fireblocks.d-bis.org", - "edge": "npx wscat -c wss://ws.rpc-fireblocks.d-bis.org", - "origin": "nc -vz 192.168.11.211 8546" - }, - "domain": "ws.rpc-fireblocks.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Fireblocks WS RPC / VMID 2101", - "reverseTarget": "192.168.11.211:8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-ws", - "url": "https://ws.rpc-fireblocks.d-bis.org" - }, - { - "checks": { - "app": "npx wscat -c wss://ws.rpc.d-bis.org -x '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short ws.rpc.d-bis.org", - "edge": "npx wscat -c wss://ws.rpc.d-bis.org", - "origin": "nc -vz 192.168.11.221 8546" - }, - "domain": "ws.rpc.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Public WS RPC / VMID 2201", - "reverseTarget": "192.168.11.221:8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-ws", - "url": "https://ws.rpc.d-bis.org" - }, - { - "checks": { - "app": "npx wscat -c wss://ws.rpc2.d-bis.org -x '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short ws.rpc2.d-bis.org", - "edge": "npx wscat -c wss://ws.rpc2.d-bis.org", - "origin": "nc -vz 192.168.11.221 8546" - }, - "domain": "ws.rpc2.d-bis.org", - "ecosystem": "proxmox", - "reverseNote": "Public WS RPC alias / VMID 2201", - "reverseTarget": "192.168.11.221:8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-ws", - "url": "https://ws.rpc2.d-bis.org" - }, - { - "checks": { - "app": "npx wscat -c wss://wss.defi-oracle.io -x '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"web3_clientVersion\",\"params\":[]}'", - "dns": "dig +short wss.defi-oracle.io", - "edge": "npx wscat -c wss://wss.defi-oracle.io", - "origin": "nc -vz 192.168.11.221 8546" - }, - "domain": "wss.defi-oracle.io", - "ecosystem": "proxmox", - "reverseNote": "Defi Oracle WS RPC", - "reverseTarget": "192.168.11.221:8546", - "triagePath": "DNS -> edge -> origin -> app", - "type": "rpc-ws", - "url": "https://wss.defi-oracle.io" - }, - { - "checks": { - "app": "curl -skI https://www.mim4u.org", - "dns": "dig +short www.mim4u.org", - "edge": "curl -skI https://www.mim4u.org", - "origin": "nc -vz 192.168.11.37 80" - }, - "domain": "www.mim4u.org", - "ecosystem": "proxmox", - "reverseNote": "MIM4U www redirect", - "reverseTarget": "192.168.11.37:80", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://www.mim4u.org" - }, - { - "checks": { - "app": "curl -skI https://www.phoenix.sankofa.nexus", - "dns": "dig +short www.phoenix.sankofa.nexus", - "edge": "curl -skI https://www.phoenix.sankofa.nexus", - "origin": "nc -vz 192.168.11.50 8080" - }, - "domain": "www.phoenix.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Phoenix www redirect", - "reverseTarget": "192.168.11.50:8080", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://www.phoenix.sankofa.nexus" - }, - { - "checks": { - "app": "curl -skI https://www.sankofa.nexus", - "dns": "dig +short www.sankofa.nexus", - "edge": "curl -skI https://www.sankofa.nexus", - "origin": "nc -vz 192.168.11.51 3000" - }, - "domain": "www.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Sankofa www redirect", - "reverseTarget": "192.168.11.51:3000", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://www.sankofa.nexus" - }, - { - "checks": { - "app": "curl -skI https://www.the-order.sankofa.nexus", - "dns": "dig +short www.the-order.sankofa.nexus", - "edge": "curl -skI https://www.the-order.sankofa.nexus", - "origin": "nc -vz 192.168.11.39 80" - }, - "domain": "www.the-order.sankofa.nexus", - "ecosystem": "sankofa", - "reverseNote": "Order www redirect", - "reverseTarget": "192.168.11.39:80", - "triagePath": "DNS -> edge -> origin -> app", - "type": "web", - "url": "https://www.the-order.sankofa.nexus" - } - ], - "name": "Project Atlas DNS Reverse E2E Map", - "version": "v1" -} diff --git a/portal/src/data/project-atlas/network-architecture.v1.json b/portal/src/data/project-atlas/network-architecture.v1.json deleted file mode 100644 index 0f3b81b..0000000 --- a/portal/src/data/project-atlas/network-architecture.v1.json +++ /dev/null @@ -1,316 +0,0 @@ -{ - "name": "Project Atlas Network Architecture", - "version": "v1", - "traceOrder": [ - "dns", - "edge-routing", - "host-port", - "namespace-origin", - "application-route", - "content-marker" - ], - "e2eReverseCoverage": { - "command": "bash /home/intlc/projects/proxmox/scripts/verify/verify-end-to-end-routing.sh --list-endpoints --profile=all", - "endpointCount": 61, - "artifact": "manifest/dns-e2e-reverse-map.v1.json" - }, - "cloudflaredLayers": [ - { - "layer": "public", - "description": "Cloudflared Tunnel mapped to managed public DNS" - }, - { - "layer": "sd-wan", - "description": "Cloudflared Tunnels for ecosystem-to-ecosystem routing" - }, - { - "layer": "admin", - "description": "Cloudflared Tunnel access for admin tasks and redeployments" - } - ], - "ecosystems": [ - { - "name": "Nathan / AnakaTech", - "surfaces": [ - { - "label": "CT59 SSH", - "hostname": "192.168.1.59", - "alias": "ssh ct59", - "port": 22, - "state": "verified" - }, - { - "label": "PVE SSH", - "hostname": "192.168.1.50", - "alias": "ssh pve", - "port": 22, - "state": "verified" - }, - { - "label": "Astra", - "hostname": "192.168.1.100", - "alias": "not granted", - "port": 8006, - "state": "blocked" - } - ], - "tunnelName": "wg0-p", - "auth": [ - "WireGuard VPN", - "SSH key", - "ssh_config alias" - ], - "failureModes": [ - "network unreachable", - "wrong SSH target" - ] - }, - { - "name": "Sankofa / local Proxmox infrastructure", - "surfaces": [ - { - "label": "Local Proxmox workspace", - "hostname": "this checkout", - "alias": "projectAtlas", - "port": null, - "state": "live" - }, - { - "label": "Live canary", - "hostname": "scripts/maintenance/verify-pve-cluster-health.sh", - "alias": "cluster health", - "port": null, - "state": "available" - }, - { - "label": "Public E2E verifier", - "hostname": "scripts/verify/verify-end-to-end-routing.sh", - "alias": "dns / routing sweep", - "port": null, - "state": "available" - } - ], - "auth": [ - "local shell", - "live validation scripts" - ], - "failureModes": [ - "stale docs", - "repo-only readiness claims", - "uncorroborated localhost" - ] - }, - { - "name": "Nova App / Zardasht dual production", - "surfaces": [ - { - "label": "Nova Plus local machine", - "hostname": "localhost", - "alias": "nova-plus-server", - "port": 3099, - "state": "local-production" - }, - { - "label": "Nova Bank local machine", - "hostname": "localhost", - "alias": "nova-api-1", - "port": 3000, - "state": "local-production" - }, - { - "label": "Local edge shim", - "hostname": "localhost", - "alias": "novabank-uk-edge", - "port": 9080, - "state": "local-production" - }, - { - "label": "Cloudflare tunnel ingress", - "hostname": "novabank.uk / novablockchainsystem.com", - "alias": "public ingress", - "port": 80, - "state": "mixed" - }, - { - "label": "Legacy VPS origin", - "hostname": "51.75.64.28", - "alias": "public origin", - "port": 80, - "state": "blocked" - } - ], - "auth": [ - "local shell", - "Docker Desktop", - "compose", - "remote VPS access" - ], - "cloudflareDomains": [ - { - "domain": "novablockchainsystem.com", - "zoneId": "0711dce56ea228b3fc8625b96c486eb2", - "accountId": "197663c4dea180dc3310fea5702905ac", - "accountName": "Dsbullock" - }, - { - "domain": "d-bis.org", - "zoneId": "43599eed5d83f1fa641f2aaa276d3c4d", - "accountId": "52ad57a71671c5fc009edf0744658196", - "accountName": "SGI PARTNERS, LLC" - }, - { - "domain": "novabank.uk", - "zoneId": "1f7e82b672f78a862abcbe384509841c", - "accountId": "52ad57a71671c5fc009edf0744658196", - "accountName": "SGI PARTNERS, LLC" - }, - { - "domain": "omdnl.org", - "zoneId": "b9f8979a4088c2d6cfdfe0f952a46d89", - "accountId": "52ad57a71671c5fc009edf0744658196", - "accountName": "SGI PARTNERS, LLC" - }, - { - "domain": "z-bank.uk", - "zoneId": "1790b5b392c07b181e6ba1fc421cd347", - "accountId": "52ad57a71671c5fc009edf0744658196", - "accountName": "SGI PARTNERS, LLC" - } - ], - "publicTunnelHostnames": [ - { - "hostname": "novablockchainsystem.com", - "type": "CNAME", - "target": "Railway apex", - "status": "live", - "accountName": "Dsbullock" - }, - { - "hostname": "www.novablockchainsystem.com", - "type": "CNAME", - "target": "novablockchainsystem.com", - "status": "redirect-live", - "accountName": "Dsbullock" - }, - { - "hostname": "novabank.uk", - "type": "CNAME", - "target": "aa9d668a-43bb-487d-9189-edf7300e35e8.cfargotunnel.com", - "status": "configured-pending-connector", - "accountName": "SGI PARTNERS, LLC" - }, - { - "hostname": "www.novabank.uk", - "type": "CNAME", - "target": "novabank.uk", - "status": "configured-pending-connector", - "accountName": "SGI PARTNERS, LLC" - }, - { - "hostname": "devops.novabank.uk", - "type": "CNAME", - "target": "e979ef06-cb71-4550-a1ba-326ee4d1753d.cfargotunnel.com", - "status": "operator-tunnel", - "accountName": "SGI PARTNERS, LLC" - } - ], - "publicStaticIpPlan": [ - { - "ip": "76.53.10.43", - "plannedUse": "spare / unassigned", - "status": "unused" - }, - { - "ip": "76.53.10.44", - "plannedUse": "Zardasht public service IP", - "status": "planned" - }, - { - "ip": "76.53.10.45", - "plannedUse": "Zardasht public service IP", - "status": "planned" - }, - { - "ip": "76.53.10.46", - "plannedUse": "Zardasht devops host / tunnel ingress", - "status": "planned" - } - ], - "devopsTunnel": { - "hostname": "devops.novabank.uk", - "publicIp": "76.53.10.46", - "purpose": "operator-only tunnel for pushes, admin SSH, and deploy tooling", - "ports": [ - 22, - 3000, - 3099, - 9080 - ], - "access": "Cloudflare Access app/policy + SSH + TCP", - "verifiedWith": "ssh -l novac -o ProxyCommand=cloudflared access ssh --hostname %h devops.novabank.uk" - }, - "targetTopology": [ - { - "role": "edge / ingress", - "hostname": "zardasht-edge", - "exposure": "public + SD-WAN", - "services": [ - "Cloudflared ingress", - "reverse proxy", - "route fanout" - ] - }, - { - "role": "Nova Plus app", - "hostname": "zardasht-plus", - "exposure": "internal only", - "services": [ - "nova-plus-server", - "portal runtime" - ] - }, - { - "role": "Nova Bank API", - "hostname": "zardasht-bank", - "exposure": "internal only", - "services": [ - "nova-api-1", - "bank API" - ] - }, - { - "role": "data / state", - "hostname": "zardasht-data", - "exposure": "internal only", - "services": [ - "Postgres", - "Redis", - "uploads", - "persistent volumes" - ] - }, - { - "role": "admin / ops", - "hostname": "zardasht-ops", - "exposure": "admin-only", - "services": [ - "deploy scripts", - "health checks", - "SSH/SCP", - "logs" - ] - } - ], - "failureModes": [ - "localhost used as public target", - "container unhealthy", - "wrong port mapping", - "compose not up", - "tunnel connector unhealthy", - "VPS origin unreachable", - "DNS points at the wrong origin", - "missing Proxmox LXC target definitions" - ] - } - ] -} diff --git a/portal/src/data/project-atlas/project-atlas.v1.json b/portal/src/data/project-atlas/project-atlas.v1.json deleted file mode 100644 index 766bdd6..0000000 --- a/portal/src/data/project-atlas/project-atlas.v1.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "name": "Project Atlas", - "version": "v1", - "statusLegend": { - "blocked": "The ecosystem endpoint or access path is known but not reachable or not yet provisioned.", - "partial": "Some access exists, but the ecosystem is not fully usable or not fully public.", - "live": "The endpoint is reachable and the service is available now.", - "verified": "A live check has been run and matched the expected output." - }, - "statusEnum": [ - "blocked", - "partial", - "live", - "verified" - ], - "ecosystems": [ - { - "name": "Nathan / AnakaTech", - "status": "verified-wireguard-ct59-pve-astra-denied", - "access": { - "type": "wireguard-and-ssh", - "state": "verified", - "tunnelName": "wg0-p", - "scopeBoundary": "Astra denied, not granted" - }, - "sourceDocs": [ - "/home/intlc/Downloads/from_Nathan/P-ANAKATECH-ACCESS.md" - ], - "verificationCommands": [ - "wg-quick up wg0-p", - "ssh ct59", - "ssh pve", - "ssh -i /home/intlc/Downloads/from_Nathan/p_anakatech_key -o BatchMode=yes -o ConnectTimeout=5 root@192.168.1.100 'hostname && id'" - ], - "nextDependency": "Astra remains denied" - }, - { - "name": "Sankofa / local Proxmox infrastructure", - "status": "available", - "access": { - "type": "workspace-and-live-ops", - "state": "available" - }, - "sourceDocs": [ - "/home/intlc/projects/proxmox/docs/02-architecture/OMNL_BANKING_PORTAL_SMOM_AND_NOVA_TRUST_ARCHITECTURE.md", - "/home/intlc/projects/proxmox/docs/MASTER_INDEX.md", - "/home/intlc/projects/projectAtlas/docs/network-architecture.md" - ], - "verificationCommands": [ - "bash /home/intlc/projects/proxmox/scripts/maintenance/verify-pve-cluster-health.sh" - ], - "nextDependency": "ongoing-live-validation" - }, - { - "name": "Nova App / Zardasht dual production", - "status": "partial-dual-production-local-live-devops-live-public-tunnel-configured-pending-health", - "access": { - "type": "dual-production", - "state": "partial", - "tunnelName": "local-machine-and-vps", - "scopeBoundary": "Local machine and devops tunnel are live; the Dsbullock apex is live on Railway with www redirecting to apex, while novabank.uk is published but still connector-pending" - }, - "sourceDocs": [ - "/home/intlc/projects/projectAtlas/atlas.md", - "/home/intlc/projects/projectAtlas/docs/network-architecture.md", - "/home/intlc/projects/projectAtlas/ecosystems/zardasht-dual-production.md", - "/home/intlc/projects/projectAtlas/ecosystems/zardasht-migration-runbook.md", - "/home/intlc/projects/nova-trust/docs/architecture/system-atlas.md" - ], - "verificationCommands": [ - "docker ps --format '{{.Names}}\\t{{.Status}}\\t{{.Ports}}'", - "ipconfig", - "curl -I http://localhost:3099", - "curl -I http://localhost:3000", - "curl -I http://localhost:9080", - "curl -I http://51.75.64.28/", - "curl -I https://novablockchainsystem.com", - "curl -I https://novabank.uk", - "ssh -l novac -o ProxyCommand=\"cloudflared access ssh --hostname %h\" devops.novabank.uk 'hostname && id'" - ], - "nextDependency": "define-proxmox-lxc-targets-and-public-cutover" - } - ] -} diff --git a/portal/src/lib/atlas.ts b/portal/src/lib/atlas.ts index e500f95..9f3b051 100644 --- a/portal/src/lib/atlas.ts +++ b/portal/src/lib/atlas.ts @@ -1,7 +1,7 @@ import { itReadApiBaseUrl, itReadApiKey } from '@/app/api/it/_auth'; -import projectAtlasReverseMapJson from '@/data/project-atlas/dns-e2e-reverse-map.v1.json'; -import projectAtlasNetworkJson from '@/data/project-atlas/network-architecture.v1.json'; -import projectAtlasRegistryJson from '@/data/project-atlas/project-atlas.v1.json'; +import projectAtlasReverseMapJson from '@/data/project-atlas/manifest/dns-e2e-reverse-map.v1.json'; +import projectAtlasNetworkJson from '@/data/project-atlas/manifest/network-architecture.v1.json'; +import projectAtlasRegistryJson from '@/data/project-atlas/manifest/project-atlas.v1.json'; export type AtlasRouteRow = { hostnames: string[]; @@ -289,37 +289,37 @@ function buildHiddenRows(): AtlasHiddenRow[] { { label: 'Project Atlas source-of-truth', detail: 'Project Atlas is the canonical mapping source for the Sankofa atlas page and is vendored locally for production rendering.', - source: 'portal/src/data/project-atlas/project-atlas.v1.json', + source: 'portal/src/data/project-atlas/manifest/project-atlas.v1.json', }, { label: 'Nathan / AnakaTech', detail: `${nathan?.status ?? 'unknown'} · ${nathan?.access?.scopeBoundary ?? 'no access boundary recorded'}`, - source: 'portal/src/data/project-atlas/project-atlas.v1.json', + source: 'portal/src/data/project-atlas/manifest/project-atlas.v1.json', }, { label: 'Sankofa / local Proxmox infrastructure', detail: `${sankofa?.status ?? 'unknown'} · ${sankofa?.nextDependency ?? 'no next dependency recorded'}`, - source: 'portal/src/data/project-atlas/project-atlas.v1.json', + source: 'portal/src/data/project-atlas/manifest/project-atlas.v1.json', }, { label: 'Nova App / Zardasht dual production', detail: `${zardasht?.status ?? 'unknown'} · ${zardasht?.access?.scopeBoundary ?? 'no scope boundary recorded'}`, - source: 'portal/src/data/project-atlas/project-atlas.v1.json', + source: 'portal/src/data/project-atlas/manifest/project-atlas.v1.json', }, { label: 'Reverse coverage', detail: `${reverseCoverage?.endpointCount ?? projectAtlasReverseMap.endpointCount} endpoints mapped with DNS -> edge -> origin -> app trace order.`, - source: 'portal/src/data/project-atlas/network-architecture.v1.json', + source: 'portal/src/data/project-atlas/manifest/network-architecture.v1.json', }, { label: 'Cloudflared layers', detail: cloudflaredLayers.map((layer) => `${layer.layer}: ${layer.description}`).join(' · '), - source: 'portal/src/data/project-atlas/network-architecture.v1.json', + source: 'portal/src/data/project-atlas/manifest/network-architecture.v1.json', }, { label: 'Public IP plan', detail: publicIpPlan.map((entry) => `${entry.ip} (${entry.status})`).join(' · '), - source: 'portal/src/data/project-atlas/network-architecture.v1.json', + source: 'portal/src/data/project-atlas/manifest/network-architecture.v1.json', }, ]; } diff --git a/scripts/ci/bootstrap-project-atlas-submodule.sh b/scripts/ci/bootstrap-project-atlas-submodule.sh new file mode 100755 index 0000000..ef93efb --- /dev/null +++ b/scripts/ci/bootstrap-project-atlas-submodule.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +set -euo pipefail + +repo_root="$(git rev-parse --show-toplevel)" +submodule_path="${PROJECT_ATLAS_SUBMODULE_PATH:-portal/src/data/project-atlas}" +ssh_key="${PROJECT_ATLAS_SSH_PRIVATE_KEY:-}" +key_file="${RUNNER_TEMP:-/tmp}/project-atlas-submodule-key" + +if git -C "$repo_root" submodule status -- "$submodule_path" | grep -q '^-'; then + if [[ -z "$ssh_key" ]]; then + echo "PROJECT_ATLAS_SSH_PRIVATE_KEY is required to initialize the private projectAtlas submodule." >&2 + exit 1 + fi + + install -d -m 700 "$HOME/.ssh" + printf '%s\n' "$ssh_key" > "$key_file" + chmod 600 "$key_file" + ssh-keyscan -H gitea.d-bis.org >> "$HOME/.ssh/known_hosts" + + git -C "$repo_root" submodule sync -- "$submodule_path" + GIT_SSH_COMMAND="ssh -i $key_file -o IdentitiesOnly=yes -o StrictHostKeyChecking=yes" \ + git -C "$repo_root" submodule update --init --recursive -- "$submodule_path" +fi