forked from openiap/opencore
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.ts
More file actions
76 lines (70 loc) · 3.04 KB
/
Copy pathindex.ts
File metadata and controls
76 lines (70 loc) · 3.04 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import * as winston from "winston";
import * as http from "http";
import { WebSocketClient, NoderedUtil, TokenUser } from "openflow-api";
import { Logger } from "./Logger";
import { WebServer } from "./WebServer";
import { Config } from "./Config";
import { Crypt } from "./nodeclient/Crypt";
const logger: winston.Logger = Logger.configure();
logger.info("starting openflow nodered");
const unhandledRejection = require("unhandled-rejection");
let rejectionEmitter = unhandledRejection({
timeout: 20
});
rejectionEmitter.on("unhandledRejection", (error, promise) => {
console.log('Unhandled Rejection at: Promise', promise, 'reason:', error);
console.dir(error.stack);
});
rejectionEmitter.on("rejectionHandled", (error, promise) => {
console.log('Rejection handled at: Promise', promise, 'reason:', error);
console.dir(error.stack);
});
(async function (): Promise<void> {
try {
var c = Config;
var socket: WebSocketClient = new WebSocketClient(logger, Config.api_ws_url);
socket.agent = "nodered";
socket.version = Config.version;
logger.info("VERSION: " + Config.version);
socket.events.on("onopen", async () => {
try {
// q.clientagent = "nodered";
// q.clientversion = Config.version;
var jwt: string = "";
if (Config.jwt !== "") {
jwt = Config.jwt;
} else if (Crypt.encryption_key() !== "") {
var user = new TokenUser();
if (NoderedUtil.IsNullEmpty(Config.nodered_sa)) {
user.name = "nodered" + Config.nodered_id;
} else {
user.name = Config.nodered_sa;
}
user.username = user.name;
jwt = Crypt.createToken(user);
} else {
throw new Error("missing encryption_key and jwt, signin not possible!");
}
var result = await NoderedUtil.SigninWithToken(jwt, null, null);
logger.info("signed in as " + result.user.name + " with id " + result.user._id);
WebSocketClient.instance.user = result.user;
WebSocketClient.instance.jwt = result.jwt;
const server: http.Server = await WebServer.configure(logger, socket);
var baseurl = Config.saml_baseurl;
if (NoderedUtil.IsNullEmpty(baseurl)) {
baseurl = Config.baseurl();
}
logger.info("listening on " + baseurl);
socket.events.emit("onsignedin", result.user);
} catch (error) {
var closemsg: any = error;
if (error.message) { logger.error(error.message); closemsg = error.message; }
else { logger.error(error); }
socket.close(1000, closemsg);
}
});
} catch (error) {
if (error.message) { logger.error(error.message); }
else { logger.error(error); }
}
})();