feat(remote-ingress): add Remote Ingress hub integration, OpsServer UI, APIs, and docs
This commit is contained in:
@@ -82,6 +82,14 @@ interface IIdentity {
|
||||
| `INetworkMetrics` | Bandwidth, connection counts, top endpoints |
|
||||
| `ILogEntry` | Timestamp, level, category, message, metadata |
|
||||
|
||||
#### Remote Ingress Interfaces
|
||||
| Interface | Description |
|
||||
|-----------|-------------|
|
||||
| `IRemoteIngress` | Edge registration: id, name, secret, listenPorts, enabled, autoDerivePorts, tags |
|
||||
| `IRemoteIngressStatus` | Runtime status: connected, publicIp, activeTunnels, lastHeartbeat |
|
||||
| `IRouteRemoteIngress` | Route-level config: enabled flag and optional edgeFilter |
|
||||
| `IDcRouterRouteConfig` | Extended SmartProxy route config with optional `remoteIngress` property |
|
||||
|
||||
### Request Interfaces (`requests`)
|
||||
|
||||
TypedRequest interfaces for the OpsServer API, organized by domain:
|
||||
@@ -134,6 +142,9 @@ TypedRequest interfaces for the OpsServer API, organized by domain:
|
||||
| `IReq_GetCertificateOverview` | `getCertificateOverview` | Domain-centric certificate status |
|
||||
| `IReq_ReprovisionCertificate` | `reprovisionCertificate` | Reprovision by route name (legacy) |
|
||||
| `IReq_ReprovisionCertificateDomain` | `reprovisionCertificateDomain` | Reprovision by domain (preferred) |
|
||||
| `IReq_ImportCertificate` | `importCertificate` | Import a certificate |
|
||||
| `IReq_ExportCertificate` | `exportCertificate` | Export a certificate |
|
||||
| `IReq_DeleteCertificate` | `deleteCertificate` | Delete a certificate |
|
||||
|
||||
#### Certificate Types
|
||||
```typescript
|
||||
@@ -159,6 +170,17 @@ interface ICertificateInfo {
|
||||
}
|
||||
```
|
||||
|
||||
#### 🌍 Remote Ingress
|
||||
| Interface | Method | Description |
|
||||
|-----------|--------|-------------|
|
||||
| `IReq_CreateRemoteIngress` | `createRemoteIngress` | Register a new edge node |
|
||||
| `IReq_DeleteRemoteIngress` | `deleteRemoteIngress` | Remove an edge registration |
|
||||
| `IReq_UpdateRemoteIngress` | `updateRemoteIngress` | Update edge settings |
|
||||
| `IReq_RegenerateRemoteIngressSecret` | `regenerateRemoteIngressSecret` | Issue a new secret |
|
||||
| `IReq_GetRemoteIngresses` | `getRemoteIngresses` | List all edge registrations |
|
||||
| `IReq_GetRemoteIngressStatus` | `getRemoteIngressStatus` | Runtime status of all edges |
|
||||
| `IReq_GetRemoteIngressConnectionToken` | `getRemoteIngressConnectionToken` | Generate a connection token |
|
||||
|
||||
#### 📡 RADIUS
|
||||
| Interface | Method | Description |
|
||||
|-----------|--------|-------------|
|
||||
@@ -183,7 +205,7 @@ import { data, requests } from '@serve.zone/dcrouter-interfaces';
|
||||
// 1. Login
|
||||
const loginClient = new typedrequest.TypedRequest<requests.IReq_AdminLoginWithUsernameAndPassword>(
|
||||
'https://your-dcrouter:3000/typedrequest',
|
||||
'adminLogin'
|
||||
'adminLoginWithUsernameAndPassword'
|
||||
);
|
||||
|
||||
const loginResponse = await loginClient.fire({
|
||||
@@ -199,10 +221,8 @@ const metricsClient = new typedrequest.TypedRequest<requests.IReq_GetCombinedMet
|
||||
);
|
||||
|
||||
const metrics = await metricsClient.fire({ identity });
|
||||
console.log('Server:', metrics.serverStats);
|
||||
console.log('Email:', metrics.emailStats);
|
||||
console.log('DNS:', metrics.dnsStats);
|
||||
console.log('Security:', metrics.securityMetrics);
|
||||
console.log('Server:', metrics.metrics.server);
|
||||
console.log('Email:', metrics.metrics.email);
|
||||
|
||||
// 3. Check certificate status
|
||||
const certClient = new typedrequest.TypedRequest<requests.IReq_GetCertificateOverview>(
|
||||
@@ -213,14 +233,23 @@ const certClient = new typedrequest.TypedRequest<requests.IReq_GetCertificateOve
|
||||
const certs = await certClient.fire({ identity });
|
||||
console.log(`Certificates: ${certs.summary.valid} valid, ${certs.summary.failed} failed`);
|
||||
|
||||
// 4. Check email queues
|
||||
const queueClient = new typedrequest.TypedRequest<requests.IReq_GetQueuedEmails>(
|
||||
// 4. List remote ingress edges
|
||||
const edgesClient = new typedrequest.TypedRequest<requests.IReq_GetRemoteIngresses>(
|
||||
'https://your-dcrouter:3000/typedrequest',
|
||||
'getQueuedEmails'
|
||||
'getRemoteIngresses'
|
||||
);
|
||||
|
||||
const queued = await queueClient.fire({ identity });
|
||||
console.log('Queued emails:', queued.emails.length);
|
||||
const edges = await edgesClient.fire({ identity });
|
||||
console.log('Registered edges:', edges.edges.length);
|
||||
|
||||
// 5. Generate a connection token for an edge
|
||||
const tokenClient = new typedrequest.TypedRequest<requests.IReq_GetRemoteIngressConnectionToken>(
|
||||
'https://your-dcrouter:3000/typedrequest',
|
||||
'getRemoteIngressConnectionToken'
|
||||
);
|
||||
|
||||
const tokenResponse = await tokenClient.fire({ identity, edgeId: edges.edges[0].id });
|
||||
console.log('Connection token:', tokenResponse.token);
|
||||
```
|
||||
|
||||
## License and Legal Information
|
||||
|
||||
Reference in New Issue
Block a user