checkpoint

This commit is contained in:
Curt Tudor 2024-03-25 09:43:34 -06:00
parent 6c905538db
commit 3a9f26eeaf
No known key found for this signature in database
GPG Key ID: B3CD225AF4EC8E96
13 changed files with 2473 additions and 51 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,19 @@
{
"dependencies": {
"@openziti/ziti-sdk-nodejs": "^0.14.2",
"commander": "^11.1.0",
"express": "^4.18.2",
"path": "^0.12.7",
"readline-sync": "^1.4.10",
"zrok": "../../sdk/dist"
},
"devDependencies": {
"@types/node": "^20.9.0",
"nodemon": "^3.0.1",
"ts-node": "^10.9.1",
"typescript": "^5.4.3"
},
"scripts": {
"build": "npx tsc"
}
}

View File

@ -0,0 +1,55 @@
const { Command } = require("commander");
const zrok = require("zrok")
const program = new Command();
program
.command('http-server')
.version("1.0.0")
.description("command to host an HTTP Server")
.action(async () => {
// Load the zrok env
let root = zrok.Load()
// Authenticate with the Ziti network
await zrok.init( root ).catch(( err: Error ) => { console.error(err); return process.exit(1) });
// Set this to a larger value (e.g. 10) to trace lower-level Ziti SDK activity
zrok.setLogLevel(0)
// Create the zrok private share that will represent this web server
console.log("Now creating your private zrok share...")
let shr = await zrok.CreateShare(root, new zrok.ShareRequest(zrok.TCP_TUNNEL_BACKEND_MODE, zrok.PRIVATE_SHARE_MODE, "http-server", ["private"]));
console.log(`access your private HTTP Server on another machine using: 'zrok access private ${shr.Token}'`)
// Create a NodeJS Express web server that listens NOT on a TCP port, but for incoming Ziti connections to the private zrok share
let app = zrok.express( shr.Token );
// Set up a simple route
let reqCtr = 0;
app.get('/', function(_: Request, res: any){
reqCtr++;
console.log(`received a GET request... reqCtr[${reqCtr}]`);
res.write(`Hello zrok! reqCtr[${reqCtr}]`)
res.end()
});
// Start listening for incoming requests
app.listen(undefined, () => {
console.log(`private HTTP Server is now listening for incoming requests`)
})
// Delete the private share upon CTRL-C
process.on('SIGINT', async () => {
console.log("Now deleting your private zrok share...")
await zrok.DeleteShare(root, shr)
process.exit(15);
});
});
program.parse(process.argv)
const options = program.opts();

View File

@ -0,0 +1,12 @@
{
"compilerOptions": {
"rootDir": "src",
"outDir": "dist",
"strict": true,
"target": "es6",
"module": "commonjs",
"sourceMap": true,
"esModuleInterop": true,
"moduleResolution": "node"
}
}

View File

@ -8,53 +8,88 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
step((generator = generator.apply(thisArg, _arguments || [])).next()); step((generator = generator.apply(thisArg, _arguments || [])).next());
}); });
}; };
Object.defineProperty(exports, "__esModule", { value: true });
const { Command } = require("commander"); const { Command } = require("commander");
const zrok = require("zrok"); const zrok = require("zrok");
const ziti = require('@openziti/ziti-sdk-nodejs'); const ziti = require('@openziti/ziti-sdk-nodejs');
const express = require('express'); const express = require('express');
var readlineSync = require('readline-sync');
const program = new Command(); const program = new Command();
program program
.command('copyto') .command('copyto')
.version("1.0.0") .version("1.0.0")
.description("command to host content to be pastedfrom'd") .description("command to host content to be pastedfrom'd")
.action(() => __awaiter(void 0, void 0, void 0, function* () { .action(() => __awaiter(void 0, void 0, void 0, function* () {
var data = readlineSync.question('Input some text... ');
console.log("data is: ", data);
let root = zrok.Load(); let root = zrok.Load();
yield zrok.init(root); yield zrok.init(root);
//await ziti.init( root.env.ZitiIdentity ).catch(( err: Error ) => { console.error(err); return process.exit(1) }); //await ziti.init( root.env.ZitiIdentity ).catch(( err: Error ) => { console.error(err); return process.exit(1) });
ziti.setLogLevel(10); ziti.setLogLevel(0);
console.log("setting up zrok.CreateShare...");
let shr = yield zrok.CreateShare(root, new zrok.ShareRequest(zrok.TCP_TUNNEL_BACKEND_MODE, zrok.PUBLIC_SHARE_MODE, "pastebin", ["public"])); let shr = yield zrok.CreateShare(root, new zrok.ShareRequest(zrok.TCP_TUNNEL_BACKEND_MODE, zrok.PUBLIC_SHARE_MODE, "pastebin", ["public"]));
console.log("setting up app"); // console.log("zrok share is: ",shr)
let service = "ns5ix2brb61f"; // console.log("setting up app")
console.log("attempting to bind to service: " + shr.Token); // let service = "ns5ix2brb61f"
// console.log("attempting to bind to service: "+ shr.Token)
console.log("access your pastebin using 'pastefrom ", shr.Token);
// let listener = await zrok.NewListener(shr.Token, root)
// console.log("zrok listener is: ", listener)
let app = ziti.express(express, shr.Token); let app = ziti.express(express, shr.Token);
console.log("after setting up app"); // console.log("after setting up app")
app.get('/', function (_, res) { app.get('/', function (_, res) {
res.write("Test"); // console.log("received a GET request")
res.write(data);
res.end();
}); });
console.log("after setting up get"); // console.log("after setting up get")
app.listen(undefined, () => { app.listen(undefined, () => {
console.log(`Example app listening!`); // console.log(`Example app listening!`)
}); });
console.log("after listen"); // console.log("after listen")
zrok.DeleteShare(root, shr); // zrok.DeleteShare(root, shr);
})); }));
program program
.command('pastefrom <shrToken>') .command('pastefrom <shrToken>')
.version("1.0.0") .version("1.0.0")
.description("command to paste content from coptyo") .description("command to paste content from coptyo")
.action((shrToken) => __awaiter(void 0, void 0, void 0, function* () { .action((shrToken) => __awaiter(void 0, void 0, void 0, function* () {
//ziti.setLogLevel(10) // ziti.setLogLevel(99)
console.log('pastefrom command called', shrToken);
let root = zrok.Load(); let root = zrok.Load();
yield zrok.init(root).catch((err) => { yield zrok.init(root).catch((err) => {
console.log(err); console.log(err);
}); });
let acc = yield zrok.CreateAccess(root, new zrok.AccessRequest(shrToken)); let acc = yield zrok.CreateAccess(root, new zrok.AccessRequest(shrToken));
console.log("about to dial"); // console.log("zrok.CreateAccess returned: ", acc)
zrok.dialer(root, shrToken, (data) => { // console.log("about to ziti.httpRequest: ", shrToken)
console.log("in callback"); // setTimeout(function() {
console.log(data.toString()); ziti.httpRequest(shrToken, undefined, 'GET', '/', [], (data) => {
console.log("in on_req_cb");
console.log("data is: ", data);
}, (data) => {
console.log("in on_resp_cb");
console.log("data is: ", data);
}, (data) => {
console.log("in on_resp_data_cb");
console.log("data is: ", data);
if (data.body) {
console.log('----------- pastefrom is: ', data.body.toString());
process.exit(0);
}
}); });
// }, 5000);
// zrok.dialer(
// root,
// shrToken,
// (conn: any) => {
// console.log("in connectCallback")
// console.log("conn is: ", conn)
// },
// (dataData: any) => {
// console.log("in dataCallback")
// console.log(dataData.toString())
// }
// );
})); }));
program.parse(process.argv); program.parse(process.argv);
const options = program.opts(); const options = program.opts();

View File

@ -1 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AACzC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,MAAM,IAAI,GAAI,OAAO,CAAC,2BAA2B,CAAC,CAAA;AAClD,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAA;AAClC,IAAI,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;AAI5C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,GAAS,EAAE;IACjB,IAAI,IAAI,GAAG,YAAY,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IAExD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAC9B,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IACtB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,mHAAmH;IACnH,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAA;IACnB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;IAC7C,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC5I,qCAAqC;IACrC,gCAAgC;IAChC,+BAA+B;IAC/B,4DAA4D;IAC5D,OAAO,CAAC,GAAG,CAAC,wCAAwC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAA;IAEhE,yDAAyD;IACzD,+CAA+C;IAG/C,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAE,CAAC;IAC7C,sCAAsC;IACtC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAC,UAAS,CAAU,EAAC,GAAQ;QACtC,wCAAwC;QACxC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;QACf,GAAG,CAAC,GAAG,EAAE,CAAA;IACX,CAAC,CAAC,CAAC;IACH,sCAAsC;IACtC,GAAG,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE;QACzB,wCAAwC;IAC1C,CAAC,CAAC,CAAA;IACF,8BAA8B;IAC9B,+BAA+B;AACjC,CAAC,CAAA,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,sBAAsB,CAAC;KAC/B,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,CAAO,QAAgB,EAAE,EAAE;IAEjC,uBAAuB;IACvB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IACvB,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAQ,EAAE,EAAE;QACvC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAClB,CAAC,CAAC,CAAC;IACH,IAAI,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAA;IACzE,mDAAmD;IAEnD,uDAAuD;IAEvD,0BAA0B;IAExB,IAAI,CAAC,WAAW,CACd,QAAQ,EACR,SAAS,EACT,KAAK,EACL,GAAG,EACH,EAAE,EACF,CAAC,IAAS,EAAE,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;QAC3B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAChC,CAAC,EACD,CAAC,IAAS,EAAE,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QAC5B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;IAChC,CAAC,EACD,CAAC,IAAS,EAAE,EAAE;QACZ,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAA;QAC9B,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IAEH,CAAC,CACF,CAAC;IAEJ,YAAY;IAIZ,eAAe;IACf,WAAW;IACX,eAAe;IACf,qBAAqB;IACrB,wCAAwC;IACxC,qCAAqC;IAGrC,OAAO;IACP,yBAAyB;IACzB,qCAAqC;IACrC,uCAAuC;IACvC,MAAM;IACN,KAAK;AACP,CAAC,CAAA,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC"}

View File

@ -9,13 +9,14 @@
"commander": "^11.1.0", "commander": "^11.1.0",
"express": "^4.18.2", "express": "^4.18.2",
"path": "^0.12.7", "path": "^0.12.7",
"readline-sync": "^1.4.10",
"zrok": "../../sdk/dist" "zrok": "../../sdk/dist"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^20.9.0", "@types/node": "^20.9.0",
"nodemon": "^3.0.1", "nodemon": "^3.0.1",
"ts-node": "^10.9.1", "ts-node": "^10.9.1",
"typescript": "^5.2.2" "typescript": "^5.4.3"
} }
}, },
"../../sdk/dist": {}, "../../sdk/dist": {},
@ -1649,6 +1650,14 @@
"node": ">=8.10.0" "node": ">=8.10.0"
} }
}, },
"node_modules/readline-sync": {
"version": "1.4.10",
"resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz",
"integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw==",
"engines": {
"node": ">= 0.8.0"
}
},
"node_modules/require-directory": { "node_modules/require-directory": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@ -2008,9 +2017,9 @@
} }
}, },
"node_modules/typescript": { "node_modules/typescript": {
"version": "5.3.3", "version": "5.4.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz",
"integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==",
"dev": true, "dev": true,
"bin": { "bin": {
"tsc": "bin/tsc", "tsc": "bin/tsc",
@ -3430,6 +3439,11 @@
"picomatch": "^2.2.1" "picomatch": "^2.2.1"
} }
}, },
"readline-sync": {
"version": "1.4.10",
"resolved": "https://registry.npmjs.org/readline-sync/-/readline-sync-1.4.10.tgz",
"integrity": "sha512-gNva8/6UAe8QYepIQH/jQ2qn91Qj0B9sYjMBBs3QOB8F2CXcKgLxQaJRP76sWVRQt+QU+8fAkCbCvjjMFu7Ycw=="
},
"require-directory": { "require-directory": {
"version": "2.1.1", "version": "2.1.1",
"resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
@ -3690,9 +3704,9 @@
} }
}, },
"typescript": { "typescript": {
"version": "5.3.3", "version": "5.4.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz",
"integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", "integrity": "sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==",
"dev": true "dev": true
}, },
"undefsafe": { "undefsafe": {

View File

@ -4,13 +4,14 @@
"commander": "^11.1.0", "commander": "^11.1.0",
"express": "^4.18.2", "express": "^4.18.2",
"path": "^0.12.7", "path": "^0.12.7",
"readline-sync": "^1.4.10",
"zrok": "../../sdk/dist" "zrok": "../../sdk/dist"
}, },
"devDependencies": { "devDependencies": {
"@types/node": "^20.9.0", "@types/node": "^20.9.0",
"nodemon": "^3.0.1", "nodemon": "^3.0.1",
"ts-node": "^10.9.1", "ts-node": "^10.9.1",
"typescript": "^5.2.2" "typescript": "^5.4.3"
}, },
"scripts": { "scripts": {
"build": "npx tsc" "build": "npx tsc"

View File

@ -2,6 +2,8 @@ const { Command } = require("commander");
const zrok = require("zrok") const zrok = require("zrok")
const ziti = require('@openziti/ziti-sdk-nodejs') const ziti = require('@openziti/ziti-sdk-nodejs')
const express = require('express') const express = require('express')
var readlineSync = require('readline-sync');
import fs from "node:fs"
const program = new Command(); const program = new Command();
@ -11,25 +13,38 @@ program
.version("1.0.0") .version("1.0.0")
.description("command to host content to be pastedfrom'd") .description("command to host content to be pastedfrom'd")
.action(async () => { .action(async () => {
var data = readlineSync.question('Input some text... ');
console.log("data is: ", data)
let root = zrok.Load() let root = zrok.Load()
await zrok.init(root); await zrok.init(root);
//await ziti.init( root.env.ZitiIdentity ).catch(( err: Error ) => { console.error(err); return process.exit(1) }); //await ziti.init( root.env.ZitiIdentity ).catch(( err: Error ) => { console.error(err); return process.exit(1) });
ziti.setLogLevel(10) ziti.setLogLevel(0)
console.log("setting up zrok.CreateShare...")
let shr = await zrok.CreateShare(root, new zrok.ShareRequest(zrok.TCP_TUNNEL_BACKEND_MODE, zrok.PUBLIC_SHARE_MODE, "pastebin", ["public"])); let shr = await zrok.CreateShare(root, new zrok.ShareRequest(zrok.TCP_TUNNEL_BACKEND_MODE, zrok.PUBLIC_SHARE_MODE, "pastebin", ["public"]));
console.log("setting up app") // console.log("zrok share is: ",shr)
let service = "ns5ix2brb61f" // console.log("setting up app")
console.log("attempting to bind to service: "+ shr.Token) // let service = "ns5ix2brb61f"
// console.log("attempting to bind to service: "+ shr.Token)
console.log("access your pastebin using 'pastefrom ", shr.Token)
// let listener = await zrok.NewListener(shr.Token, root)
// console.log("zrok listener is: ", listener)
let app = ziti.express( express, shr.Token ); let app = ziti.express( express, shr.Token );
console.log("after setting up app") // console.log("after setting up app")
app.get('/',function(_: Request,res: any){ app.get('/',function(_: Request,res: any){
res.write("Test") // console.log("received a GET request")
res.write(data)
res.end()
}); });
console.log("after setting up get") // console.log("after setting up get")
app.listen(undefined, () => { app.listen(undefined, () => {
console.log(`Example app listening!`) // console.log(`Example app listening!`)
}) })
console.log("after listen") // console.log("after listen")
zrok.DeleteShare(root, shr); // zrok.DeleteShare(root, shr);
}); });
program program
@ -38,18 +53,64 @@ program
.description("command to paste content from coptyo") .description("command to paste content from coptyo")
.action(async (shrToken: string) => { .action(async (shrToken: string) => {
//ziti.setLogLevel(10) // ziti.setLogLevel(99)
console.log('pastefrom command called', shrToken);
let root = zrok.Load(); let root = zrok.Load();
await zrok.init(root).catch((err: any) => { await zrok.init(root).catch((err: any) => {
console.log(err) console.log(err)
}); });
let acc = await zrok.CreateAccess(root, new zrok.AccessRequest(shrToken)) let acc = await zrok.CreateAccess(root, new zrok.AccessRequest(shrToken))
console.log("about to dial") // console.log("zrok.CreateAccess returned: ", acc)
zrok.dialer(root, shrToken, (data: any) => {
console.log("in callback") // console.log("about to ziti.httpRequest: ", shrToken)
console.log(data.toString())
}); // setTimeout(function() {
ziti.httpRequest(
shrToken,
undefined,
'GET',
'/',
[],
(data: any) => { // on_req_cb
console.log("in on_req_cb")
console.log("data is: ", data)
},
(data: any) => { // on_resp_cb
console.log("in on_resp_cb")
console.log("data is: ", data)
},
async (data: any) => { // on_resp_data_cb
console.log("in on_resp_data_cb")
console.log("data is: ", data)
if (data.body) {
console.log('----------- pastefrom is: ', data.body.toString());
await zrok.DeleteAccess(root, acc)
process.exit(0);
}
}
);
// }, 5000);
// zrok.dialer(
// root,
// shrToken,
// (conn: any) => {
// console.log("in connectCallback")
// console.log("conn is: ", conn)
// },
// (dataData: any) => {
// console.log("in dataCallback")
// console.log(dataData.toString())
// }
// );
}); });
program.parse(process.argv) program.parse(process.argv)

View File

@ -1,7 +1,7 @@
{ {
"name": "zrok", "name": "zrok",
"version": "1.0.0", "version": "1.0.0",
"description": "SDK to enable programmatic usee of the zrok sharing methods", "description": "SDK to enable programmatic use of the zrok sharing methods",
"main": "./dist/index.js", "main": "./dist/index.js",
"module": "./dist/index.mjs", "module": "./dist/index.mjs",
"types": "./dist/index.d.ts", "types": "./dist/index.d.ts",
@ -30,7 +30,7 @@
}, },
"homepage": "https://github.com/openziti/zrok#readme", "homepage": "https://github.com/openziti/zrok#readme",
"dependencies": { "dependencies": {
"@openziti/ziti-sdk-nodejs": "^0.14.2", "@openziti/ziti-sdk-nodejs": "^0.15.0",
"axios": "^1.6.2", "axios": "^1.6.2",
"express": "^4.18.2" "express": "^4.18.2"
}, },

View File

@ -153,9 +153,13 @@ function loadMetadata(): Metadata {
function loadConfig(): Config { function loadConfig(): Config {
let cf = configFile() let cf = configFile()
let data = fs.readFileSync(cf) if (fs.existsSync(cf)) { // the config.json file may not be present
let serial = JSON.parse(data.toString()) let data = fs.readFileSync(cf)
return new Config(serial.api_endpoint) let serial = JSON.parse(data.toString())
return new Config(serial.api_endpoint)
} else {
return new Config('')
}
} }
function loadEnvironment(): Environment { function loadEnvironment(): Environment {

View File

@ -26,10 +26,10 @@ export async function CreateAccess(root: Root, request: model.AccessRequest): Pr
}) })
if (shr.frontendToken == undefined) { if (shr.frontendToken == undefined) {
throw new Error("excpedted frontend token from access. Got none") throw new Error("expected frontend token from access. Got none")
} }
if (shr.backendMode == undefined) { if (shr.backendMode == undefined) {
throw new Error("excpedted backend mode from access. Got none") throw new Error("expected backend mode from access. Got none")
} }
return new model.Access(shr.frontendToken, request.ShareToken, shr.backendMode) return new model.Access(shr.frontendToken, request.ShareToken, shr.backendMode)

View File

@ -10,6 +10,10 @@ export async function init(root: Root): Promise<any> {
return ziti.init(root.ZitiIdentityNamed(root.EnvironmentIdentityName())) return ziti.init(root.ZitiIdentityNamed(root.EnvironmentIdentityName()))
} }
export function dialer(root: Root, shrToken: string, callback: any): ziti.dialer { export function dialer(root: Root, shrToken: string, connectCallback: any, dataCallback: any): ziti.dialer {
ziti.listen(shrToken, false, undefined, callback) ziti.dial(shrToken, false, connectCallback, dataCallback)
}
export function setLogLevel(level:number) {
ziti.setLogLevel(level)
} }