changemaker.lite/api/dist/services/pangolin.client.d.ts

141 lines
3.9 KiB
TypeScript

export interface PangolinSite {
siteId: string;
name: string;
orgId: string;
niceId: string;
pubKey?: string;
subnet?: string;
megabytesIn?: number;
megabytesOut?: number;
lastSeen?: string;
online?: boolean;
type?: string;
}
export interface PangolinExitNode {
exitNodeId: string;
name: string;
location?: string;
region?: string;
online: boolean;
capacity?: number;
latency?: number;
}
export interface PangolinResource {
resourceId: string;
siteId: string;
orgId: string;
name: string;
subdomain?: string;
fullDomain?: string;
ssl?: boolean;
blockAccess?: boolean;
active?: boolean;
proxyPort?: number;
protocol?: string;
domainBindings?: string[];
}
export interface PangolinNewt {
newtId: string;
secret: string;
siteId: string;
}
export interface CreateSitePayload {
name: string;
type?: string;
subnet?: string;
exitNodeId?: string;
}
export interface CreateHttpResourcePayload {
name: string;
type: 'http';
domainId: string;
subdomain?: string;
http?: boolean;
ssl?: boolean;
enabled?: boolean;
}
export interface CreateRawResourcePayload {
name: string;
type: 'tcp' | 'udp';
proxyPort: number;
stickySession?: boolean;
enabled?: boolean;
}
export type CreateResourcePayload = CreateHttpResourcePayload | CreateRawResourcePayload;
export interface CreateTargetPayload {
method: 'http' | 'https';
host: string;
port: number;
}
export interface PangolinDomain {
domainId: string;
baseDomain: string;
verified: boolean;
type?: string;
failed?: boolean;
configManaged?: boolean;
}
export interface UpdateResourcePayload {
name?: string;
subdomain?: string;
fullDomain?: string;
ssl?: boolean;
active?: boolean;
blockAccess?: boolean;
proxyPort?: number;
protocol?: string;
domainBindings?: string[];
}
export interface PangolinCertificate {
certId: string;
domainId: string;
domain: string;
status: 'PENDING' | 'ACTIVE' | 'EXPIRED' | 'FAILED';
issuedAt?: string;
expiresAt?: string;
autoRenew?: boolean;
issuer?: string;
}
export interface UpdateCertificatePayload {
autoRenew?: boolean;
}
export interface PangolinConnectedClient {
clientId: string;
resourceId: string;
ipAddress: string;
connectedAt: string;
lastSeen: string;
bytesIn: number;
bytesOut: number;
online: boolean;
}
declare class PangolinClient {
private get baseUrl();
private get apiKey();
private get orgId();
get configured(): boolean;
private request;
healthCheck(): Promise<boolean>;
listSites(): Promise<PangolinSite[]>;
listExitNodes(): Promise<PangolinExitNode[]>;
getSite(siteId: string): Promise<PangolinSite>;
createSite(data: CreateSitePayload): Promise<PangolinSite & {
newt?: PangolinNewt;
}>;
deleteSite(siteId: string): Promise<void>;
listResources(): Promise<PangolinResource[]>;
getResource(resourceId: string): Promise<PangolinResource>;
createResource(data: CreateResourcePayload): Promise<PangolinResource>;
updateResource(resourceId: string, data: UpdateResourcePayload): Promise<PangolinResource>;
deleteResource(resourceId: string): Promise<void>;
createTarget(resourceId: string, data: CreateTargetPayload): Promise<unknown>;
listDomains(): Promise<PangolinDomain[]>;
listResourcesForSite(siteId: string): Promise<PangolinResource[]>;
getResourceByNiceId(siteId: string, niceId: string): Promise<PangolinResource>;
getCertificate(domainId: string, domain: string): Promise<PangolinCertificate>;
updateCertificate(certId: string, data: UpdateCertificatePayload): Promise<PangolinCertificate>;
listClients(siteResourceId: string): Promise<PangolinConnectedClient[]>;
}
export declare const pangolinClient: PangolinClient;
export {};
//# sourceMappingURL=pangolin.client.d.ts.map