chore(omnl): consolidate portal and domain routing updates

Capture non-secret OMNL portal, journal, chain, and nginx routing updates from the operator cleanup session while leaving generated auth includes unstaged.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
defiQUG
2026-07-07 09:57:01 -07:00
parent 8ee8930b5b
commit 6dcadc86a2
10 changed files with 159 additions and 60 deletions

View File

@@ -100,9 +100,8 @@ func (s *ReserveManagerContract) CreateReserve(ctx contractapi.TransactionContex
return fmt.Errorf("reserve %s already exists", request.ReserveID)
}
// Parse total amount
totalAmount, err := strconv.ParseFloat(request.TotalAmount, 64)
if err != nil {
// Validate total amount parses as a number
if _, err := strconv.ParseFloat(request.TotalAmount, 64); err != nil {
return fmt.Errorf("invalid total amount: %v", err)
}

View File

@@ -1,5 +1,5 @@
{
"description": "IPSAS double-entry journal matrix for OMNL Hybx (Fineract). Every entry debits one GL and credits a distinct GL. Phase C interoffice: HO leg 21002410, branch leg 14102100. Served path: smom-dbis-138/config/omnl-journal-matrix.json (override OMNL_JOURNAL_MATRIX_PATH).",
"description": "IPSAS double-entry journal matrix for OMNL Hybx (Fineract). Every entry debits one GL and credits a distinct GL. Phase C interoffice: HO leg 2100\u21922410, branch leg 1410\u21922100. Served path: smom-dbis-138/config/omnl-journal-matrix.json (override OMNL_JOURNAL_MATRIX_PATH).",
"source": "OMNL_IPSAS_COMPLIANCE_MATRIX",
"currencyCode": "USD",
"dateFormat": "yyyy-MM-dd",
@@ -13,7 +13,7 @@
"debitGlCode": "1000",
"creditGlCode": "2000",
"amount": 900000000000,
"narrative": "Opening Balance Migration (Head Office) Dr settlement asset / Cr M1 central pool",
"narrative": "Opening Balance Migration (Head Office) \u2014 Dr settlement asset / Cr M1 central pool",
"ipsasRef": "IPSAS 3, 28",
"moneyLayer": "M1"
},
@@ -23,7 +23,7 @@
"debitGlCode": "1050",
"creditGlCode": "2000",
"amount": 250000000000,
"narrative": "Treasury Conversion Dr M0 reserve / Cr M1 central pool (Head Office)",
"narrative": "Treasury Conversion \u2014 Dr M0 reserve / Cr M1 central pool (Head Office)",
"ipsasRef": "IPSAS 28, 29",
"moneyLayer": "M0"
},
@@ -33,7 +33,7 @@
"debitGlCode": "2100",
"creditGlCode": "2410",
"amount": 2900000000,
"narrative": "Phase C HO leg Shamrayan Available (M1) Office 2: Dr M1 circulating / Cr due to branch",
"narrative": "Phase C HO leg \u2014 Shamrayan Available (M1) Office 2: Dr M1 circulating / Cr due to branch",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
},
@@ -43,7 +43,7 @@
"debitGlCode": "1410",
"creditGlCode": "2100",
"amount": 2900000000,
"narrative": "Phase C branch leg Shamrayan Available (M1) Office 2: Dr due from HO / Cr M1 circulating",
"narrative": "Phase C branch leg \u2014 Shamrayan Available (M1) Office 2: Dr due from HO / Cr M1 circulating",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
},
@@ -53,7 +53,7 @@
"debitGlCode": "2000",
"creditGlCode": "2100",
"amount": 2100000000,
"narrative": "Shamrayan Restricted Dr M1 central pool / Cr M1 restricted escrow (Office 2)",
"narrative": "Shamrayan Restricted \u2014 Dr M1 central pool / Cr M1 restricted escrow (Office 2)",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
},
@@ -63,7 +63,7 @@
"debitGlCode": "2000",
"creditGlCode": "2100",
"amount": 350000000000,
"narrative": "HYBX Capitalization Escrow Dr M1 central pool / Cr M1 restricted (Office 3)",
"narrative": "HYBX Capitalization Escrow \u2014 Dr M1 central pool / Cr M1 restricted (Office 3)",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
},
@@ -73,7 +73,7 @@
"debitGlCode": "2100",
"creditGlCode": "2410",
"amount": 5000000000,
"narrative": "Phase C HO leg TAJ Allocation (M1) Office 4",
"narrative": "Phase C HO leg \u2014 TAJ Allocation (M1) Office 4",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
},
@@ -83,7 +83,7 @@
"debitGlCode": "1410",
"creditGlCode": "2100",
"amount": 5000000000,
"narrative": "Phase C branch leg TAJ Allocation (M1) Office 4",
"narrative": "Phase C branch leg \u2014 TAJ Allocation (M1) Office 4",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
},
@@ -93,7 +93,7 @@
"debitGlCode": "2100",
"creditGlCode": "2410",
"amount": 5000000000,
"narrative": "Phase C HO leg Aseret Allocation (M1) Office 5",
"narrative": "Phase C HO leg \u2014 Aseret Allocation (M1) Office 5",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
},
@@ -103,7 +103,7 @@
"debitGlCode": "1410",
"creditGlCode": "2100",
"amount": 5000000000,
"narrative": "Phase C branch leg Aseret Allocation (M1) Office 5",
"narrative": "Phase C branch leg \u2014 Aseret Allocation (M1) Office 5",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
},
@@ -113,7 +113,7 @@
"debitGlCode": "2100",
"creditGlCode": "2410",
"amount": 5000000000,
"narrative": "Phase C HO leg Mann Li Allocation (M1) Office 6",
"narrative": "Phase C HO leg \u2014 Mann Li Allocation (M1) Office 6",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
},
@@ -123,7 +123,7 @@
"debitGlCode": "1410",
"creditGlCode": "2100",
"amount": 5000000000,
"narrative": "Phase C branch leg Mann Li Allocation (M1) Office 6",
"narrative": "Phase C branch leg \u2014 Mann Li Allocation (M1) Office 6",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
},
@@ -133,7 +133,7 @@
"debitGlCode": "2100",
"creditGlCode": "2410",
"amount": 50000000000,
"narrative": "Phase C HO leg OSJ Allocation (M1) Office 7",
"narrative": "Phase C HO leg \u2014 OSJ Allocation (M1) Office 7",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
},
@@ -143,7 +143,7 @@
"debitGlCode": "1410",
"creditGlCode": "2100",
"amount": 50000000000,
"narrative": "Phase C branch leg OSJ Allocation (M1) Office 7",
"narrative": "Phase C branch leg \u2014 OSJ Allocation (M1) Office 7",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
},
@@ -153,7 +153,7 @@
"debitGlCode": "2100",
"creditGlCode": "2410",
"amount": 50000000000,
"narrative": "Phase C HO leg Alltra Allocation (M1) Office 8",
"narrative": "Phase C HO leg \u2014 Alltra Allocation (M1) Office 8",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
},
@@ -163,7 +163,7 @@
"debitGlCode": "1410",
"creditGlCode": "2100",
"amount": 50000000000,
"narrative": "Phase C branch leg Alltra Allocation (M1) Office 8",
"narrative": "Phase C branch leg \u2014 Alltra Allocation (M1) Office 8",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
},
@@ -173,7 +173,7 @@
"debitGlCode": "2100",
"creditGlCode": "2410",
"amount": 1000000000,
"narrative": "HOSPITALLERS-24 opening HO leg Dr M1 circulating / Cr due to Office 24",
"narrative": "HOSPITALLERS-24 opening HO leg \u2014 Dr M1 circulating / Cr due to Office 24",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
},
@@ -183,19 +183,80 @@
"debitGlCode": "1410",
"creditGlCode": "2100",
"amount": 1000000000,
"narrative": "HOSPITALLERS-24 opening branch leg Dr due from HO / Cr M1 circulating (live $1B post)",
"narrative": "HOSPITALLERS-24 opening branch leg \u2014 Dr due from HO / Cr M1 circulating (live $1B post)",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
},
{
"memo": "T-H24-S1-HO",
"officeId": 1,
"debitGlCode": "2100",
"creditGlCode": "2410",
"amount": 100000000000,
"narrative": "HOSPITALLERS-24 supplement S1 HO leg",
"ipsasRef": "IPSAS 28, 29",
"moneyLayer": "M1"
},
{
"memo": "T-H24-S1-BR",
"officeId": 24,
"debitGlCode": "1410",
"creditGlCode": "2100",
"amount": 100000000000,
"narrative": "HOSPITALLERS-24 supplement S1 branch leg",
"ipsasRef": "IPSAS 28, 29",
"moneyLayer": "M1"
},
{
"memo": "T-H24-S2-HO",
"officeId": 1,
"debitGlCode": "2100",
"creditGlCode": "2410",
"amount": 100000000000,
"narrative": "HOSPITALLERS-24 supplement S2 HO leg",
"ipsasRef": "IPSAS 28, 29",
"moneyLayer": "M1"
},
{
"memo": "T-H24-S2-BR",
"officeId": 24,
"debitGlCode": "1410",
"creditGlCode": "2100",
"amount": 100000000000,
"narrative": "HOSPITALLERS-24 supplement S2 branch leg",
"ipsasRef": "IPSAS 28, 29",
"moneyLayer": "M1"
},
{
"memo": "T-H24-S3-HO",
"officeId": 1,
"debitGlCode": "2100",
"creditGlCode": "2410",
"amount": 99000000000,
"narrative": "HOSPITALLERS-24 supplement S3 HO leg",
"ipsasRef": "IPSAS 28, 29",
"moneyLayer": "M1"
},
{
"memo": "T-H24-S3-BR",
"officeId": 24,
"debitGlCode": "1410",
"creditGlCode": "2100",
"amount": 99000000000,
"narrative": "HOSPITALLERS-24 supplement S3 branch leg",
"ipsasRef": "IPSAS 28, 29",
"moneyLayer": "M1"
},
{
"memo": "T-M1M2",
"officeId": 24,
"debitGlCode": "2100",
"creditGlCode": "2200",
"amount": 0,
"narrative": "M1M2 broad-money conversion Dr M1 circulating / Cr M2 broad money",
"narrative": "M1\u2192M2 broad-money conversion \u2014 Dr M1 circulating / Cr M2 broad money",
"ipsasRef": "IPSAS 28, 29",
"moneyLayer": "M2"
"moneyLayer": "M2",
"variableAmount": true
},
{
"memo": "T-M2M3",
@@ -203,9 +264,10 @@
"debitGlCode": "2200",
"creditGlCode": "2300",
"amount": 0,
"narrative": "M2M3 token load Dr M2 broad money / Cr M3 on-chain token liability",
"narrative": "M2\u2192M3 token load \u2014 Dr M2 broad money / Cr M3 on-chain token liability",
"ipsasRef": "IPSAS 28, 29",
"moneyLayer": "M3"
"moneyLayer": "M3",
"variableAmount": true
},
{
"memo": "T-M2M4",
@@ -213,9 +275,10 @@
"debitGlCode": "2200",
"creditGlCode": "1000",
"amount": 0,
"narrative": "M2M4 SWIFT/RTGS outbound Dr M2 broad money / Cr settlement suspense (GL 1000)",
"narrative": "M2\u2192M4 SWIFT/RTGS outbound \u2014 Dr M2 broad money / Cr settlement suspense (GL 1000)",
"ipsasRef": "IPSAS 2, 28",
"moneyLayer": "M4"
"moneyLayer": "M4",
"variableAmount": true
},
{
"memo": "T-M1M4",
@@ -223,9 +286,10 @@
"debitGlCode": "2100",
"creditGlCode": "1000",
"amount": 0,
"narrative": "M1M4 SWIFT/RTGS outbound Dr M1 circulating / Cr settlement suspense (GL 1000)",
"narrative": "M1\u2192M4 SWIFT/RTGS outbound \u2014 Dr M1 circulating / Cr settlement suspense (GL 1000)",
"ipsasRef": "IPSAS 2, 28",
"moneyLayer": "M4"
"moneyLayer": "M4",
"variableAmount": true
},
{
"memo": "T-M4-IN",
@@ -233,9 +297,10 @@
"debitGlCode": "1000",
"creditGlCode": "2200",
"amount": 0,
"narrative": "M4 inbound SWIFT settled Dr settlement suspense / Cr M2 broad money",
"narrative": "M4 inbound SWIFT settled \u2014 Dr settlement suspense / Cr M2 broad money",
"ipsasRef": "IPSAS 2, 28",
"moneyLayer": "M4"
"moneyLayer": "M4",
"variableAmount": true
},
{
"memo": "T-SBLC",
@@ -243,9 +308,10 @@
"debitGlCode": "1410",
"creditGlCode": "2100",
"amount": 0,
"narrative": "SBLC trade finance Dr inter-office receivable / Cr M1",
"narrative": "SBLC trade finance \u2014 Dr inter-office receivable / Cr M1",
"ipsasRef": "IPSAS 28, 29",
"moneyLayer": "M4"
"moneyLayer": "M4",
"variableAmount": true
},
{
"memo": "T-DLC",
@@ -253,9 +319,10 @@
"debitGlCode": "1410",
"creditGlCode": "1000",
"amount": 0,
"narrative": "Documentary LC Dr contingent receivable / Cr M4 settlement suspense",
"narrative": "Documentary LC \u2014 Dr contingent receivable / Cr M4 settlement suspense",
"ipsasRef": "IPSAS 2, 28",
"moneyLayer": "M4"
"moneyLayer": "M4",
"variableAmount": true
},
{
"memo": "T-BG",
@@ -263,9 +330,10 @@
"debitGlCode": "1410",
"creditGlCode": "2100",
"amount": 0,
"narrative": "Bank guarantee Dr contingent receivable / Cr M1",
"narrative": "Bank guarantee \u2014 Dr contingent receivable / Cr M1",
"ipsasRef": "IPSAS 28, 29",
"moneyLayer": "M4"
"moneyLayer": "M4",
"variableAmount": true
},
{
"memo": "T-LS",
@@ -273,9 +341,10 @@
"debitGlCode": "1000",
"creditGlCode": "2200",
"amount": 0,
"narrative": "Letter of settlement Dr M4 suspense / Cr M2",
"narrative": "Letter of settlement \u2014 Dr M4 suspense / Cr M2",
"ipsasRef": "IPSAS 2, 28",
"moneyLayer": "M4"
"moneyLayer": "M4",
"variableAmount": true
},
{
"memo": "SETTLE-NOSTRO",
@@ -283,9 +352,10 @@
"debitGlCode": "13010",
"creditGlCode": "2000",
"amount": 0,
"narrative": "Nostro settlement Dr FX nostro asset / Cr M1 central pool",
"narrative": "Nostro settlement \u2014 Dr FX nostro asset / Cr M1 central pool",
"ipsasRef": "IPSAS 28",
"moneyLayer": "M1"
"moneyLayer": "M1",
"variableAmount": true
}
]
}

View File

@@ -48,6 +48,23 @@
"host": "office24.omdnl.org",
"product": "office-24",
"defaultRoute": "/office-24"
},
{
"host": "bank.omnl.omdnl.org",
"product": "office-24",
"defaultRoute": "/office-24",
"aliasOf": "office24.omdnl.org",
"dnsZone": "omdnl.org",
"notes": "Cloudflare A + NPMplus; operator-controlled"
},
{
"host": "bank.omnl.hybxfinance.io",
"product": "office-24",
"defaultRoute": "/office-24",
"aliasOf": "office24.omdnl.org",
"dnsZone": "hybxfinance.io",
"externalOnly": true,
"notes": "HYBX Route53 — optional; use bank.omnl.omdnl.org if operator lacks AWS access"
}
]
}

View File

@@ -6,7 +6,7 @@
"primaryChainId": 138,
"mirrorChainId": 651940,
"settlementOfficeId": 24,
"generatedAt": "2026-06-28T15:22:27.822Z",
"generatedAt": "2026-07-06T00:25:58.964Z",
"chains": [
{
"chainId": 138,

View File

@@ -33,6 +33,17 @@ location /exchange/ {
proxy_read_timeout 120s;
}
location /assets/ {
proxy_pass http://omnl_frontend;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_request_buffering off;
}
# token-aggregation HTML consoles (/omnl/compliance, /omnl/dashboard, /omnl/terminal)
location /omnl/ {
include /etc/nginx/omnl-portal-auth-current.conf.inc;

View File

@@ -28,7 +28,7 @@ server {
add_header X-OMNL-Chains "128" always;
location = / {
return 302 /trade;
return 302 https://$host/trade;
}
include /etc/nginx/snippets/omnl-common-locations.conf;
@@ -44,7 +44,7 @@ server {
add_header X-OMNL-Chains "128" always;
location = / {
return 302 /central-bank;
return 302 https://$host/central-bank;
}
include /etc/nginx/snippets/omnl-common-locations.conf;
@@ -60,7 +60,7 @@ server {
add_header X-OMNL-Chains "128" always;
location = / {
return 302 /central-bank;
return 302 https://$host/central-bank;
}
include /etc/nginx/snippets/omnl-common-locations.conf;
@@ -76,7 +76,7 @@ server {
add_header X-OMNL-Chains "128" always;
location = / {
return 302 /trade;
return 302 https://$host/trade;
}
include /etc/nginx/snippets/omnl-common-locations.conf;
@@ -92,23 +92,23 @@ server {
add_header X-OMNL-Chains "128" always;
location = / {
return 302 /swap;
return 302 https://$host/swap;
}
include /etc/nginx/snippets/omnl-common-locations.conf;
}
# Office 24 settlement — office24.omdnl.org
# Office 24 settlement — office24.omdnl.org + operator alias bank.omnl.omdnl.org
server {
listen 80;
listen [::]:80;
server_name office24.omdnl.org;
server_name office24.omdnl.org bank.omnl.omdnl.org;
add_header X-OMNL-Product "office-24" always;
add_header X-OMNL-Chains "128" always;
location = / {
return 302 /office-24;
return 302 https://$host/office-24;
}
include /etc/nginx/snippets/omnl-common-locations.conf;

View File

@@ -3,7 +3,6 @@ package main
import (
"encoding/json"
"fmt"
"strconv"
"github.com/hyperledger/fabric-contract-api-go/contractapi"
)

View File

@@ -12,7 +12,7 @@ Location: `smom-dbis-138/frontend-dapp/.env`
1. **Reown/WalletConnect Project ID**
```
VITE_WALLETCONNECT_PROJECT_ID=b890bbeeff48275b4a115e2ef105195a
VITE_WALLETCONNECT_PROJECT_ID=56972cec44a77f83975463494711e8fa
```
- Used by wagmi for WalletConnect connector
- Configured in `src/config/wagmi.ts`

View File

@@ -13,6 +13,8 @@
"test:coverage": "vitest --coverage"
},
"dependencies": {
"@emotion/react": "^11.14.0",
"@emotion/styled": "^11.14.1",
"@safe-global/api-kit": "^4.0.1",
"@safe-global/protocol-kit": "^1.3.0",
"@tanstack/react-query": "^5.90.21",
@@ -22,6 +24,9 @@
"@walletconnect/ethereum-provider": "^2.23.5",
"autoprefixer": "^10.4.24",
"ethers": "^5.8.0",
"lit": "^3.3.3",
"lit-element": "^4.2.2",
"lit-html": "^3.3.3",
"postcss": "^8.5.6",
"react": "^18.3.1",
"react-dom": "^18.3.1",

View File

@@ -1,14 +1,10 @@
import { Link, useLocation } from 'react-router-dom'
import { Link, Outlet, useLocation } from 'react-router-dom'
import { useRef } from 'react'
import WalletConnect from '../wallet/WalletConnect'
import WalletDisconnectNotice from '../wallet/WalletDisconnectNotice'
import { defaultFrontendExplorerUrl } from '../../config/networks'
interface LayoutProps {
children: React.ReactNode
}
export default function Layout({ children }: LayoutProps) {
export default function Layout() {
const location = useLocation()
const userInitiatedDisconnectRef = useRef(false)
@@ -73,7 +69,9 @@ export default function Layout({ children }: LayoutProps) {
</div>
</div>
</nav>
<main className="flex-1">{children}</main>
<main className="flex-1">
<Outlet />
</main>
<footer className="border-t border-white/10 py-6 mt-auto">
<div className="container mx-auto px-4 max-w-7xl">
<div className="flex flex-wrap justify-center items-center gap-x-6 gap-y-2 text-sm text-[#A0A0A0]">