re-enable oauth and basic auth; logging lint (#893)

This commit is contained in:
Michael Quigley
2025-03-05 11:26:00 -05:00
parent d851dc449b
commit 6221325d1e
4 changed files with 63 additions and 15 deletions

View File

@ -21,7 +21,7 @@
"version": "1.0.0",
"license": "Apache-2.0",
"dependencies": {
"@openziti/ziti-sdk-nodejs": "^0.19.0",
"@openziti/ziti-sdk-nodejs": "^0.20.0",
"express": "^4.21.2"
},
"devDependencies": {

View File

@ -7,11 +7,13 @@ import {
loadRoot,
PROXY_BACKEND_MODE,
PUBLIC_SHARE_MODE,
setLogLevel,
ShareRequest
} from "@openziti/zrok";
const httpServer = async () => {
let root = loadRoot();
setLogLevel(0);
await init(root)
.catch((err: Error) => {
console.log(err);

View File

@ -11,6 +11,7 @@ import {
listener,
loadRoot,
PRIVATE_SHARE_MODE,
setLogLevel,
ShareRequest,
TCP_TUNNEL_BACKEND_MODE,
write
@ -20,6 +21,7 @@ import readlineSync = require('readline-sync');
const copyto = async () => {
let text = readlineSync.question("enter some text: ");
let root = loadRoot();
setLogLevel(0);
await init(root)
.catch((err: Error) => {
console.log(err);
@ -40,6 +42,7 @@ const copyto = async () => {
const pastefrom = async (shareToken: string) => {
let root = loadRoot();
setLogLevel(0);
await init(root).catch((err: Error) => {
console.log(err);
return process.exit(1);

View File

@ -1,8 +1,9 @@
import {Root} from "./environment";
import {
AuthUser,
ShareApi,
ShareRequest as ApiShareRequest,
ShareRequestBackendModeEnum,
ShareRequestBackendModeEnum, ShareRequestOauthProviderEnum,
ShareRequestShareModeEnum,
UnshareRequest
} from "../api";
@ -16,23 +17,32 @@ export const PROXY_BACKEND_MODE: BackendMode = "proxy";
export const TCP_TUNNEL_BACKEND_MODE: BackendMode = "tcpTunnel";
export const UDP_TUNNEL_BACKEND_MODE: BackendMode = "udpTunnel";
export type AuthScheme = string;
export const AUTH_SCHEME_NONE = "none";
export const AUTH_SCHEME_BASIC = "basic";
export const AUTH_SCHEME_OAUTH = "oauth";
export type OauthProvider = string;
export const OAUTH_PROVIDER_GOOGLE = "google";
export const OAUTH_PROVIDER_GITHUB = "github";
export type PermissionMode = string;
export const OPEN_PERMISSION_MODE = "open";
export const CLOSED_PERMISSION_MODE = "closed";
export class ShareRequest {
reserved: boolean;
uniqueName: string|undefined;
uniqueName: string | undefined;
backendMode: BackendMode;
shareMode: ShareMode;
target: string;
frontends: string[]|undefined;
basicAuth: string[]|undefined;
oauthProvider: string|undefined;
oauthEmailAddressPatterns: string[]|undefined;
oauthAuthorizationCheckInterval: string|undefined;
frontends: string[] | undefined;
basicAuth: string[] | undefined;
oauthProvider: string | undefined;
oauthEmailAddressPatterns: string[] | undefined;
oauthAuthorizationCheckInterval: string | undefined;
permissionMode: PermissionMode;
accessGrants: string[]|undefined;
accessGrants: string[] | undefined;
constructor(shareMode: ShareMode, backendMode: BackendMode, target: string) {
this.reserved = false;
@ -52,9 +62,9 @@ export class ShareRequest {
export class Share {
shareToken: string;
frontendEndpoints: string[]|undefined;
frontendEndpoints: string[] | undefined;
constructor(shareToken: string, frontendEndpoints: string[]|undefined) {
constructor(shareToken: string, frontendEndpoints: string[] | undefined) {
this.shareToken = shareToken;
this.frontendEndpoints = frontendEndpoints;
}
@ -105,22 +115,44 @@ const toPrivateApiShareRequest = (root: Root, request: ShareRequest): ApiShareRe
shareMode: ShareRequestShareModeEnum.Private,
backendMode: toApiBackendMode(request.backendMode),
backendProxyEndpoint: request.target,
authScheme: "none",
authScheme: AUTH_SCHEME_NONE,
permissionMode: CLOSED_PERMISSION_MODE,
};
}
const toPublicApiShareRequest = (root: Root, request: ShareRequest): ApiShareRequest => {
return {
let out: ApiShareRequest = {
envZId: root.environment?.zId,
shareMode: ShareRequestShareModeEnum.Public,
frontendSelection: request.frontends,
backendMode: toApiBackendMode(request.backendMode),
backendProxyEndpoint: request.target,
authScheme: "none",
authScheme: AUTH_SCHEME_NONE,
};
if(request.oauthProvider !== undefined) {
out.authScheme = AUTH_SCHEME_OAUTH;
out.oauthProvider = toApiOauthProvider(request.oauthProvider);
out.oauthEmailDomains = request.oauthEmailAddressPatterns;
out.oauthAuthorizationCheckInterval = request.oauthAuthorizationCheckInterval;
} else if(request.basicAuth?.length! > 0) {
out.authScheme = AUTH_SCHEME_BASIC;
for(let pair in request.basicAuth) {
let tokens = pair.split(":");
if(tokens.length === 2) {
if(out.authUsers === undefined) {
out.authUsers = new Array<AuthUser>();
}
out.authUsers.push({username: tokens[0].trim(), password: tokens[1].trim()})
}
}
}
return out;
}
const toApiBackendMode = (mode: BackendMode): ShareRequestBackendModeEnum|undefined => {
const toApiBackendMode = (mode: BackendMode): ShareRequestBackendModeEnum | undefined => {
switch(mode) {
case PROXY_BACKEND_MODE:
return ShareRequestBackendModeEnum.Proxy;
@ -132,3 +164,14 @@ const toApiBackendMode = (mode: BackendMode): ShareRequestBackendModeEnum|undefi
return undefined;
}
}
const toApiOauthProvider = (provider: OauthProvider): ShareRequestOauthProviderEnum | undefined => {
switch(provider) {
case OAUTH_PROVIDER_GITHUB:
return ShareRequestOauthProviderEnum.Github;
case OAUTH_PROVIDER_GOOGLE:
return ShareRequestOauthProviderEnum.Google;
default:
return undefined;
}
}