mirror of
https://github.com/openziti/zrok.git
synced 2025-02-08 14:29:52 +01:00
remove old initial js impl and replace with ts
This commit is contained in:
parent
ae8e7acf5e
commit
8bbd62718b
68
.github/workflows/node-sdk.yml
vendored
Normal file
68
.github/workflows/node-sdk.yml
vendored
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
name: Build/Relesae Node SDK
|
||||||
|
|
||||||
|
on:
|
||||||
|
release:
|
||||||
|
types: [ published ]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build:
|
||||||
|
name: Build for Node-${{ matrix.node_ver }} ${{ matrix.config.target }}/${{ matrix.config.arch }}
|
||||||
|
runs-on: ${{ matrix.config.os }}
|
||||||
|
|
||||||
|
env:
|
||||||
|
BUILD_NUMBER: ${{ github.run_number }}
|
||||||
|
AWS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
matrix:
|
||||||
|
config:
|
||||||
|
- { os: windows-latest, target: "windows", arch: "x64" }
|
||||||
|
- { os: ubuntu-20.04, target: "linux", arch: "x64" }
|
||||||
|
- { os: ubuntu-20.04, target: "linux", arch: "arm64" }
|
||||||
|
- { os: macos-latest, target: "macos", arch: "x64" }
|
||||||
|
- { os: macos-latest, target: "macos", arch: "arm64" }
|
||||||
|
node_ver: [ 16, 18, 19, 20, 21]
|
||||||
|
fail-fast: false
|
||||||
|
|
||||||
|
steps:
|
||||||
|
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
submodules: 'recursive'
|
||||||
|
|
||||||
|
- name: Get crossbuild tools
|
||||||
|
if: matrix.config.target == 'linux' && matrix.config.arch != 'x64'
|
||||||
|
run: |
|
||||||
|
sudo apt update -y
|
||||||
|
sudo apt install -y crossbuild-essential-${{ matrix.config.arch }}
|
||||||
|
|
||||||
|
- name: Node Version
|
||||||
|
uses: actions/setup-node@v3
|
||||||
|
with:
|
||||||
|
node-version: ${{ matrix.node_ver }}
|
||||||
|
|
||||||
|
- name: Get current date
|
||||||
|
id: date
|
||||||
|
run: echo "date=$(date)" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
|
||||||
|
- name: Build NodeJS-SDK
|
||||||
|
run: |
|
||||||
|
cd ${{ runner.workspace }}/${{ github.event.repository.name }}
|
||||||
|
npm install
|
||||||
|
npm run build:package -- --target_arch=${{ matrix.config.arch }}
|
||||||
|
env:
|
||||||
|
PRESET: ci-${{ matrix.config.target }}-${{ matrix.config.arch }}
|
||||||
|
TARGET_ARCH: ${{ matrix.config.arch }}
|
||||||
|
BUILD_DATE: ${{ steps.date.outputs.date }}
|
||||||
|
|
||||||
|
- name: NPM Publish
|
||||||
|
uses: JS-DevTools/npm-publish@v1
|
||||||
|
with:
|
||||||
|
token: ${{ secrets.NPM_TOKEN }}
|
||||||
|
access: public
|
||||||
|
if: |
|
||||||
|
matrix.config.os == 'ubuntu-20.04' && matrix.node_ver == '20' && matrix.config.arch == 'x64' && startsWith(github.ref, 'refs/tags/')
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -10,7 +10,7 @@ etc/dev-frontend.yml
|
|||||||
node_modules/
|
node_modules/
|
||||||
|
|
||||||
# Artifacts
|
# Artifacts
|
||||||
/dist/
|
dist/
|
||||||
|
|
||||||
# Generated files
|
# Generated files
|
||||||
.docusaurus
|
.docusaurus
|
||||||
|
@ -27,4 +27,7 @@ swagger generate client -P rest_model_zrok.Principal -f "$zrokSpec" -c rest_clie
|
|||||||
echo "...generating js client"
|
echo "...generating js client"
|
||||||
openapi -s specs/zrok.yml -o ui/src/api -l js
|
openapi -s specs/zrok.yml -o ui/src/api -l js
|
||||||
|
|
||||||
|
echo "...generating ts client"
|
||||||
|
openapi-generator-cli generate -i specs/zrok.yml -o sdk/node/sdk/src/zrok/api -g typescript-node
|
||||||
|
|
||||||
git checkout rest_server_zrok/configure_zrok.go
|
git checkout rest_server_zrok/configure_zrok.go
|
||||||
|
38
sdk/node/examples/pastebin/dist/index.js
vendored
38
sdk/node/examples/pastebin/dist/index.js
vendored
@ -1,20 +1,42 @@
|
|||||||
"use strict";
|
"use strict";
|
||||||
const { Command } = require("commander"); // add this line
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||||
|
});
|
||||||
|
};
|
||||||
|
const { Command } = require("commander");
|
||||||
const zrok = require("zrok");
|
const zrok = require("zrok");
|
||||||
//const environ = require("zrok/environment")
|
const ziti = require('@openziti/ziti-sdk-nodejs');
|
||||||
|
const express = require('express');
|
||||||
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(() => {
|
.action(() => __awaiter(void 0, void 0, void 0, function* () {
|
||||||
console.log('copyto command called');
|
|
||||||
//console.log(environ)
|
|
||||||
let root = zrok.Load();
|
let root = zrok.Load();
|
||||||
let shr = zrok.CreateShare(root, new zrok.ShareRequest(zrok.TCP_TUNNEL_BACKEND_MODE, zrok.PUBLIC_SHARE_MODE, "pastebin"));
|
//await ziti.init( root.env.ZitiIdentity ).catch(( err: Error ) => { console.error(err); return process.exit(1) });
|
||||||
console.log(shr);
|
ziti.setLogLevel(10);
|
||||||
|
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");
|
||||||
|
let service = "ns5ix2brb61f";
|
||||||
|
console.log("attempting to bind to service: " + service);
|
||||||
|
let app = ziti.express(express, service);
|
||||||
|
console.log("after setting up app");
|
||||||
|
app.get('/', function (_, res) {
|
||||||
|
res.write("Test");
|
||||||
|
});
|
||||||
|
console.log("after setting up get");
|
||||||
|
//app.listen(undefined, () => {
|
||||||
|
// console.log(`Example app listening!`)
|
||||||
|
//})
|
||||||
|
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")
|
||||||
|
2
sdk/node/examples/pastebin/dist/index.js.map
vendored
2
sdk/node/examples/pastebin/dist/index.js.map
vendored
@ -1 +1 @@
|
|||||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB;AAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAA;AAC5B,6CAA6C;AAE7C,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,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACrC,sBAAsB;IACtB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;IACtB,IAAI,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC,CAAC;IAC1H,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAChB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,sBAAsB,CAAC;KAC/B,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,CAAC,QAAgB,EAAE,EAAE;IAC3B,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC"}
|
{"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;AAGlC,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,IAAI,CAAC,IAAI,EAAE,CAAA;IACtB,mHAAmH;IACnH,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAA;IACpB,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,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;IAC7B,IAAI,OAAO,GAAG,cAAc,CAAA;IAC5B,OAAO,CAAC,GAAG,CAAC,iCAAiC,GAAE,OAAO,CAAC,CAAA;IACvD,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAE,OAAO,EAAE,OAAO,CAAE,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IACnC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAC,UAAS,CAAU,EAAC,GAAQ;QACtC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACnB,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;IACnC,+BAA+B;IAC/B,yCAAyC;IACzC,IAAI;IACJ,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;IAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;AAC9B,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,CAAC,QAAgB,EAAE,EAAE;IAC3B,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,QAAQ,CAAC,CAAC;AACpD,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;AAC3B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC"}
|
7
sdk/node/examples/pastebin/openapitools.json
Normal file
7
sdk/node/examples/pastebin/openapitools.json
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{
|
||||||
|
"$schema": "./node_modules/@openapitools/openapi-generator-cli/config.schema.json",
|
||||||
|
"spaces": 2,
|
||||||
|
"generator-cli": {
|
||||||
|
"version": "7.1.0"
|
||||||
|
}
|
||||||
|
}
|
2838
sdk/node/examples/pastebin/package-lock.json
generated
2838
sdk/node/examples/pastebin/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,8 @@
|
|||||||
{
|
{
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@openziti/ziti-sdk-nodejs": "^0.14.2",
|
||||||
"commander": "^11.1.0",
|
"commander": "^11.1.0",
|
||||||
|
"express": "^4.18.2",
|
||||||
"path": "^0.12.7",
|
"path": "^0.12.7",
|
||||||
"zrok": "../../sdk_ts/dist"
|
"zrok": "../../sdk_ts/dist"
|
||||||
},
|
},
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
const { Command } = require("commander"); // add this line
|
const { Command } = require("commander");
|
||||||
const zrok = require("zrok")
|
const zrok = require("zrok")
|
||||||
//const environ = require("zrok/environment")
|
const ziti = require('@openziti/ziti-sdk-nodejs')
|
||||||
|
const express = require('express')
|
||||||
|
|
||||||
|
|
||||||
const program = new Command();
|
const program = new Command();
|
||||||
|
|
||||||
@ -8,12 +10,24 @@ 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(() => {
|
.action(async () => {
|
||||||
console.log('copyto command called');
|
|
||||||
//console.log(environ)
|
|
||||||
let root = zrok.Load()
|
let root = zrok.Load()
|
||||||
let shr = zrok.CreateShare(root, new zrok.ShareRequest(zrok.TCP_TUNNEL_BACKEND_MODE, zrok.PUBLIC_SHARE_MODE, "pastebin"));
|
//await ziti.init( root.env.ZitiIdentity ).catch(( err: Error ) => { console.error(err); return process.exit(1) });
|
||||||
console.log(shr)
|
ziti.setLogLevel(10)
|
||||||
|
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")
|
||||||
|
let service = "ns5ix2brb61f"
|
||||||
|
console.log("attempting to bind to service: "+ service)
|
||||||
|
let app = ziti.express( express, service );
|
||||||
|
console.log("after setting up app")
|
||||||
|
app.get('/',function(_: Request,res: any){
|
||||||
|
res.write("Test")
|
||||||
|
});
|
||||||
|
console.log("after setting up get")
|
||||||
|
//app.listen(undefined, () => {
|
||||||
|
// console.log(`Example app listening!`)
|
||||||
|
//})
|
||||||
|
console.log("after listen")
|
||||||
zrok.DeleteShare(root, shr);
|
zrok.DeleteShare(root, shr);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
import os from "os";
|
|
||||||
import path from "node:path"
|
|
||||||
|
|
||||||
function rootDir() {
|
|
||||||
home = os.homedir()
|
|
||||||
return path.join(home, ".zrok")
|
|
||||||
}
|
|
||||||
|
|
||||||
function metadataFile() {
|
|
||||||
zrd = rootDir()
|
|
||||||
return path.join(zrd, "metadata.json")
|
|
||||||
}
|
|
||||||
|
|
||||||
function configFile() {
|
|
||||||
zrd = rootDir()
|
|
||||||
return path.join(zrd, "config.json")
|
|
||||||
}
|
|
||||||
function environmentFile() {
|
|
||||||
zrd = rootDir()
|
|
||||||
return path.join(zrd, "environment.json")
|
|
||||||
}
|
|
||||||
|
|
||||||
function identitiesDir() {
|
|
||||||
zrd = rootDir()
|
|
||||||
return path.join(zrd, "identities")
|
|
||||||
}
|
|
||||||
|
|
||||||
function identityFile(name) {
|
|
||||||
idd = identitiesDir()
|
|
||||||
return path.join(idd, name + ".json")
|
|
||||||
}
|
|
@ -1,154 +0,0 @@
|
|||||||
import {environmntFile, configFile, metadataFile, identityFile} from "./dirs"
|
|
||||||
import fs from "node:fs"
|
|
||||||
import JSON from "JSON"
|
|
||||||
import * as gateway from "../zrok/api/gateway"
|
|
||||||
|
|
||||||
const V = "v0.4"
|
|
||||||
|
|
||||||
class Metadata {
|
|
||||||
constructor(V, RootPath) {
|
|
||||||
this.V = V
|
|
||||||
this.RootPath = RootPath
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Config {
|
|
||||||
constructor(ApiEndpoint) {
|
|
||||||
this.ApiEndpoint = ApiEndpoint
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Environment {
|
|
||||||
constructor(Token, ZitiIdentity, ApiEndpoint) {
|
|
||||||
this.Token = Token
|
|
||||||
this.ZitiIdentity = ZitiIdentity
|
|
||||||
this.ApiEndpoint = ApiEndpoint
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class ApiEndpoint {
|
|
||||||
constructor(endpoint, frm) {
|
|
||||||
this.endpoint = endpoint
|
|
||||||
this.frm = frm
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class Root {
|
|
||||||
constructor(meta, cfg=Config(), env=Environment()){
|
|
||||||
this.meta = meta
|
|
||||||
this.cfg = cfg
|
|
||||||
this.env = env
|
|
||||||
if (meta === undefined) {
|
|
||||||
let root = rootDir()
|
|
||||||
this.meta = Metadata(V, root)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
HasConfig() {
|
|
||||||
return this.cfg !== undefined && Object.keys(this.cfg).length === 0
|
|
||||||
}
|
|
||||||
|
|
||||||
Client() {
|
|
||||||
let apiEndpoint = this.ApiEndpoint()
|
|
||||||
|
|
||||||
function getAuthorization(security) {
|
|
||||||
switch(security.id) {
|
|
||||||
case 'key': return "why"
|
|
||||||
//case 'key': return getApiKey();
|
|
||||||
default: console.log('default');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
gateway.init({
|
|
||||||
url: apiEndpoint + '/api/v1',
|
|
||||||
getAuthorization
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
ApiEndpoint() {
|
|
||||||
let apiEndpoint = "https://api.zrok.io"
|
|
||||||
let frm = "binary"
|
|
||||||
|
|
||||||
if (this.cfg.ApiEndpoint != "") {
|
|
||||||
apiEndpoint = this.cfg.ApiEndpoint
|
|
||||||
frm = "config"
|
|
||||||
}
|
|
||||||
|
|
||||||
env = process.env.ZROK_API_ENDPOINT
|
|
||||||
if (env != "") {
|
|
||||||
apiEndpoint = env
|
|
||||||
frm = "ZROK_API_ENDPOINT"
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.IsEnabled()) {
|
|
||||||
apiEndpoint = this.env.ApiEndpoint
|
|
||||||
frm = "env"
|
|
||||||
}
|
|
||||||
|
|
||||||
return ApiEndpoint(apiEndpoint.replace(/\/+$/, ""), frm)
|
|
||||||
}
|
|
||||||
|
|
||||||
IsEnabled() {
|
|
||||||
return this.env !== undefined && Object.keys(this.env).length === 0
|
|
||||||
}
|
|
||||||
|
|
||||||
PublicIdentityName() {
|
|
||||||
return "public"
|
|
||||||
}
|
|
||||||
|
|
||||||
EnvironmentIdentityName() {
|
|
||||||
return "environment"
|
|
||||||
}
|
|
||||||
|
|
||||||
ZitiIdentityName(name) {
|
|
||||||
return identityFile(name)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function Assert() {
|
|
||||||
if (rootExists()){
|
|
||||||
meta = loadMetadata()
|
|
||||||
return meta.V == V
|
|
||||||
}
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
function Load() {
|
|
||||||
if (rootExists()) {
|
|
||||||
return Root(loadMetadata(), loadConfig(), loadEnvironment())
|
|
||||||
}
|
|
||||||
return Root()
|
|
||||||
}
|
|
||||||
|
|
||||||
function rootExists() {
|
|
||||||
mf = metadataFile()
|
|
||||||
return fs.existsSync(mf)
|
|
||||||
}
|
|
||||||
|
|
||||||
function loadMetadata() {
|
|
||||||
mf = metadataFile()
|
|
||||||
data = fs.readFileSync(mf)
|
|
||||||
serialized = JSON.parse(data)
|
|
||||||
return Metadata(serialized.v)
|
|
||||||
}
|
|
||||||
|
|
||||||
function loadConfig() {
|
|
||||||
cf = configFile()
|
|
||||||
data = fs.readFileSync(cf)
|
|
||||||
serialized = JSON.parse(data)
|
|
||||||
return Config(serialized.api_endpoint)
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
function isEnabled() {
|
|
||||||
ef = environmntFile()
|
|
||||||
return fs.existsSync(ef)
|
|
||||||
}
|
|
||||||
|
|
||||||
function loadEnvironment() {
|
|
||||||
ef = environmntFile()
|
|
||||||
data = fs.readFileSync(ef)
|
|
||||||
serialized = JSON.parse(data)
|
|
||||||
return Environment(serialized.zrok_token, serialized.ziti_identity, serialized.api_endpoint)
|
|
||||||
}
|
|
@ -1 +0,0 @@
|
|||||||
module.exports = require("./zrok/model")
|
|
3790
sdk/node/sdk/package-lock.json
generated
3790
sdk/node/sdk/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -2,8 +2,14 @@
|
|||||||
"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 usee of the zrok sharing methods",
|
||||||
"main": "index.js",
|
"main": "./dist/index.js",
|
||||||
|
"module": "./dist/index.mjs",
|
||||||
|
"types": "./dist/index.d.ts",
|
||||||
|
"files": [
|
||||||
|
"dist"
|
||||||
|
],
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
"build": "tsup --external request",
|
||||||
"test": "echo \\\"Error: no test specified\\\" && exit 1"
|
"test": "echo \\\"Error: no test specified\\\" && exit 1"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
@ -24,17 +30,23 @@
|
|||||||
},
|
},
|
||||||
"homepage": "https://github.com/openziti/zrok#readme",
|
"homepage": "https://github.com/openziti/zrok#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@openziti/ziti-sdk-nodejs": "^0.14.0"
|
"@openziti/ziti-sdk-nodejs": "^0.14.2",
|
||||||
|
"axios": "^1.6.2",
|
||||||
|
"express": "^4.18.2"
|
||||||
},
|
},
|
||||||
"exports": {
|
"exports": {
|
||||||
".": "./index.js",
|
".": "./dist/index.js",
|
||||||
"./zrok": "./zrok",
|
"./zrok": "./dist/zrok",
|
||||||
"./zrok/share": "./zrok/share",
|
"./environment": "./dist/environment"
|
||||||
"./environment": "./environment",
|
|
||||||
"./environment/root": "./environment/root.js",
|
|
||||||
"./environment/dirs": "./environment/dirs"
|
|
||||||
},
|
},
|
||||||
"imports": {
|
"imports": {
|
||||||
"./environment/dirs": "./environment/dirs.js"
|
"./zrok": "./zrok"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/express": "^4.17.21",
|
||||||
|
"@types/isomorphic-fetch": "^0.0.39",
|
||||||
|
"ts-node": "^10.9.1",
|
||||||
|
"tsup": "^7.2.0",
|
||||||
|
"typescript": "^5.2.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
import { configFile, environmentFile, identityFile, metadataFile, rootDir } from "./dirs";
|
import { configFile, environmentFile, identityFile, metadataFile, rootDir } from "./dirs";
|
||||||
import fs from "node:fs"
|
import fs from "node:fs"
|
||||||
import { Configuration, MetadataApi } from "../zrok/api"
|
import { Configuration, MetadataApi, HTTPHeaders } from "../zrok/api"
|
||||||
|
|
||||||
const V = "v0.4"
|
const V = "v0.4"
|
||||||
|
|
||||||
@ -59,20 +59,24 @@ export class Root {
|
|||||||
return this.cfg !== undefined && Object.keys(this.cfg).length === 0
|
return this.cfg !== undefined && Object.keys(this.cfg).length === 0
|
||||||
}
|
}
|
||||||
|
|
||||||
public Client(): Configuration {
|
public async Client(): Promise<Configuration> {
|
||||||
let apiEndpoint = this.ApiEndpoint()
|
let apiEndpoint = this.ApiEndpoint()
|
||||||
|
|
||||||
|
//let headers = {
|
||||||
|
// "X-TOKEN": this.env.Token
|
||||||
|
//}
|
||||||
|
|
||||||
let conf = new Configuration({
|
let conf = new Configuration({
|
||||||
basePath: apiEndpoint.endpoint + '/api/v1',
|
basePath: apiEndpoint.endpoint + '/api/v1',
|
||||||
accessToken: this.env.Token,
|
apiKey: this.env.Token,
|
||||||
|
//headers: headers
|
||||||
})
|
})
|
||||||
|
|
||||||
let mapi = new MetadataApi(conf)
|
let mapi = new MetadataApi(conf)
|
||||||
let ver: Promise<string> = mapi.version()
|
let ver: Promise<string> = mapi.version()
|
||||||
|
|
||||||
const regex : RegExp = new RegExp("^(refs/(heads|tags)/)?" + V);
|
const regex : RegExp = new RegExp("^(refs/(heads|tags)/)?" + V);
|
||||||
ver.then(v => {
|
await ver.then(v => {
|
||||||
console.log("got version " + v)
|
|
||||||
if(!regex.test(v)) {
|
if(!regex.test(v)) {
|
||||||
throw new Error("Expected a '" + V + "' version, received: '" + v+ "'")
|
throw new Error("Expected a '" + V + "' version, received: '" + v+ "'")
|
||||||
}
|
}
|
||||||
@ -81,7 +85,7 @@ export class Root {
|
|||||||
return conf
|
return conf
|
||||||
}
|
}
|
||||||
|
|
||||||
private ApiEndpoint(): ApiEndpoint {
|
public ApiEndpoint(): ApiEndpoint {
|
||||||
let apiEndpoint = "https://api.zrok.io"
|
let apiEndpoint = "https://api.zrok.io"
|
||||||
let frm = "binary"
|
let frm = "binary"
|
||||||
|
|
51
sdk/node/sdk/src/zrok/access.ts
Normal file
51
sdk/node/sdk/src/zrok/access.ts
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
import {Root} from "../environment/root"
|
||||||
|
import {
|
||||||
|
Share,
|
||||||
|
ShareApi,
|
||||||
|
AccessRequest,
|
||||||
|
AccessResponse,
|
||||||
|
AuthUser,
|
||||||
|
UnaccessRequest} from "./api"
|
||||||
|
import * as model from "./model"
|
||||||
|
|
||||||
|
export async function CreateAccess(root: Root, request: model.AccessRequest): Promise<model.Access> {
|
||||||
|
if (!root.IsEnabled()){
|
||||||
|
throw new Error("environment is not enabled; enable with 'zrok enable' first!")
|
||||||
|
}
|
||||||
|
|
||||||
|
let out: AccessRequest = {
|
||||||
|
envZId: root.env.ZitiIdentity,
|
||||||
|
shrToken: request.ShareToken
|
||||||
|
}
|
||||||
|
|
||||||
|
let conf = await root.Client()
|
||||||
|
let client = new ShareApi(conf)
|
||||||
|
let shr: AccessResponse = await client.access({body: out})
|
||||||
|
.catch(resp => {
|
||||||
|
throw new Error("unable to create access " + resp)
|
||||||
|
})
|
||||||
|
|
||||||
|
if (shr.frontendToken == undefined) {
|
||||||
|
throw new Error("excpedted frontend token from access. Got none")
|
||||||
|
}
|
||||||
|
if (shr.backendMode == undefined) {
|
||||||
|
throw new Error("excpedted backend mode from access. Got none")
|
||||||
|
}
|
||||||
|
|
||||||
|
return new model.Access(shr.frontendToken, request.ShareToken, shr.backendMode)
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function DeleteAccess(root: Root, acc: model.Access): Promise<void> {
|
||||||
|
let out: UnaccessRequest = {
|
||||||
|
frontendToken: acc.Token,
|
||||||
|
shrToken: acc.ShareToken,
|
||||||
|
envZId: root.env.ZitiIdentity
|
||||||
|
}
|
||||||
|
let conf = await root.Client()
|
||||||
|
let client = new ShareApi(conf)
|
||||||
|
|
||||||
|
return client.unaccess({body:out})
|
||||||
|
.catch(resp => {
|
||||||
|
throw new Error("error deleting access " + resp)
|
||||||
|
})
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user