mirror of
https://github.com/openziti/zrok.git
synced 2025-08-17 19:31:12 +02:00
re-enable oauth and basic auth; logging lint (#893)
This commit is contained in:
@ -21,7 +21,7 @@
|
|||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@openziti/ziti-sdk-nodejs": "^0.19.0",
|
"@openziti/ziti-sdk-nodejs": "^0.20.0",
|
||||||
"express": "^4.21.2"
|
"express": "^4.21.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
@ -7,11 +7,13 @@ import {
|
|||||||
loadRoot,
|
loadRoot,
|
||||||
PROXY_BACKEND_MODE,
|
PROXY_BACKEND_MODE,
|
||||||
PUBLIC_SHARE_MODE,
|
PUBLIC_SHARE_MODE,
|
||||||
|
setLogLevel,
|
||||||
ShareRequest
|
ShareRequest
|
||||||
} from "@openziti/zrok";
|
} from "@openziti/zrok";
|
||||||
|
|
||||||
const httpServer = async () => {
|
const httpServer = async () => {
|
||||||
let root = loadRoot();
|
let root = loadRoot();
|
||||||
|
setLogLevel(0);
|
||||||
await init(root)
|
await init(root)
|
||||||
.catch((err: Error) => {
|
.catch((err: Error) => {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
|
@ -11,6 +11,7 @@ import {
|
|||||||
listener,
|
listener,
|
||||||
loadRoot,
|
loadRoot,
|
||||||
PRIVATE_SHARE_MODE,
|
PRIVATE_SHARE_MODE,
|
||||||
|
setLogLevel,
|
||||||
ShareRequest,
|
ShareRequest,
|
||||||
TCP_TUNNEL_BACKEND_MODE,
|
TCP_TUNNEL_BACKEND_MODE,
|
||||||
write
|
write
|
||||||
@ -20,6 +21,7 @@ import readlineSync = require('readline-sync');
|
|||||||
const copyto = async () => {
|
const copyto = async () => {
|
||||||
let text = readlineSync.question("enter some text: ");
|
let text = readlineSync.question("enter some text: ");
|
||||||
let root = loadRoot();
|
let root = loadRoot();
|
||||||
|
setLogLevel(0);
|
||||||
await init(root)
|
await init(root)
|
||||||
.catch((err: Error) => {
|
.catch((err: Error) => {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
@ -40,6 +42,7 @@ const copyto = async () => {
|
|||||||
|
|
||||||
const pastefrom = async (shareToken: string) => {
|
const pastefrom = async (shareToken: string) => {
|
||||||
let root = loadRoot();
|
let root = loadRoot();
|
||||||
|
setLogLevel(0);
|
||||||
await init(root).catch((err: Error) => {
|
await init(root).catch((err: Error) => {
|
||||||
console.log(err);
|
console.log(err);
|
||||||
return process.exit(1);
|
return process.exit(1);
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
import {Root} from "./environment";
|
import {Root} from "./environment";
|
||||||
import {
|
import {
|
||||||
|
AuthUser,
|
||||||
ShareApi,
|
ShareApi,
|
||||||
ShareRequest as ApiShareRequest,
|
ShareRequest as ApiShareRequest,
|
||||||
ShareRequestBackendModeEnum,
|
ShareRequestBackendModeEnum, ShareRequestOauthProviderEnum,
|
||||||
ShareRequestShareModeEnum,
|
ShareRequestShareModeEnum,
|
||||||
UnshareRequest
|
UnshareRequest
|
||||||
} from "../api";
|
} from "../api";
|
||||||
@ -16,23 +17,32 @@ export const PROXY_BACKEND_MODE: BackendMode = "proxy";
|
|||||||
export const TCP_TUNNEL_BACKEND_MODE: BackendMode = "tcpTunnel";
|
export const TCP_TUNNEL_BACKEND_MODE: BackendMode = "tcpTunnel";
|
||||||
export const UDP_TUNNEL_BACKEND_MODE: BackendMode = "udpTunnel";
|
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 type PermissionMode = string;
|
||||||
export const OPEN_PERMISSION_MODE = "open";
|
export const OPEN_PERMISSION_MODE = "open";
|
||||||
export const CLOSED_PERMISSION_MODE = "closed";
|
export const CLOSED_PERMISSION_MODE = "closed";
|
||||||
|
|
||||||
export class ShareRequest {
|
export class ShareRequest {
|
||||||
reserved: boolean;
|
reserved: boolean;
|
||||||
uniqueName: string|undefined;
|
uniqueName: string | undefined;
|
||||||
backendMode: BackendMode;
|
backendMode: BackendMode;
|
||||||
shareMode: ShareMode;
|
shareMode: ShareMode;
|
||||||
target: string;
|
target: string;
|
||||||
frontends: string[]|undefined;
|
frontends: string[] | undefined;
|
||||||
basicAuth: string[]|undefined;
|
basicAuth: string[] | undefined;
|
||||||
oauthProvider: string|undefined;
|
oauthProvider: string | undefined;
|
||||||
oauthEmailAddressPatterns: string[]|undefined;
|
oauthEmailAddressPatterns: string[] | undefined;
|
||||||
oauthAuthorizationCheckInterval: string|undefined;
|
oauthAuthorizationCheckInterval: string | undefined;
|
||||||
permissionMode: PermissionMode;
|
permissionMode: PermissionMode;
|
||||||
accessGrants: string[]|undefined;
|
accessGrants: string[] | undefined;
|
||||||
|
|
||||||
constructor(shareMode: ShareMode, backendMode: BackendMode, target: string) {
|
constructor(shareMode: ShareMode, backendMode: BackendMode, target: string) {
|
||||||
this.reserved = false;
|
this.reserved = false;
|
||||||
@ -52,9 +62,9 @@ export class ShareRequest {
|
|||||||
|
|
||||||
export class Share {
|
export class Share {
|
||||||
shareToken: string;
|
shareToken: string;
|
||||||
frontendEndpoints: string[]|undefined;
|
frontendEndpoints: string[] | undefined;
|
||||||
|
|
||||||
constructor(shareToken: string, frontendEndpoints: string[]|undefined) {
|
constructor(shareToken: string, frontendEndpoints: string[] | undefined) {
|
||||||
this.shareToken = shareToken;
|
this.shareToken = shareToken;
|
||||||
this.frontendEndpoints = frontendEndpoints;
|
this.frontendEndpoints = frontendEndpoints;
|
||||||
}
|
}
|
||||||
@ -105,22 +115,44 @@ const toPrivateApiShareRequest = (root: Root, request: ShareRequest): ApiShareRe
|
|||||||
shareMode: ShareRequestShareModeEnum.Private,
|
shareMode: ShareRequestShareModeEnum.Private,
|
||||||
backendMode: toApiBackendMode(request.backendMode),
|
backendMode: toApiBackendMode(request.backendMode),
|
||||||
backendProxyEndpoint: request.target,
|
backendProxyEndpoint: request.target,
|
||||||
authScheme: "none",
|
authScheme: AUTH_SCHEME_NONE,
|
||||||
|
permissionMode: CLOSED_PERMISSION_MODE,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
const toPublicApiShareRequest = (root: Root, request: ShareRequest): ApiShareRequest => {
|
const toPublicApiShareRequest = (root: Root, request: ShareRequest): ApiShareRequest => {
|
||||||
return {
|
let out: ApiShareRequest = {
|
||||||
envZId: root.environment?.zId,
|
envZId: root.environment?.zId,
|
||||||
shareMode: ShareRequestShareModeEnum.Public,
|
shareMode: ShareRequestShareModeEnum.Public,
|
||||||
frontendSelection: request.frontends,
|
frontendSelection: request.frontends,
|
||||||
backendMode: toApiBackendMode(request.backendMode),
|
backendMode: toApiBackendMode(request.backendMode),
|
||||||
backendProxyEndpoint: request.target,
|
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) {
|
switch(mode) {
|
||||||
case PROXY_BACKEND_MODE:
|
case PROXY_BACKEND_MODE:
|
||||||
return ShareRequestBackendModeEnum.Proxy;
|
return ShareRequestBackendModeEnum.Proxy;
|
||||||
@ -132,3 +164,14 @@ const toApiBackendMode = (mode: BackendMode): ShareRequestBackendModeEnum|undefi
|
|||||||
return undefined;
|
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;
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user