@theotherwillembotha/node-red-plugincore 0.1.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +616 -220
- package/build/GenerateNodes.js +9 -33
- package/build/Nodes.html +2 -1505
- package/build/Nodes.js +5 -19
- package/build/Plugins.html +11 -0
- package/build/Plugins.js +17 -12
- package/build/core/NodeConstructor.d.ts +12 -16
- package/build/core/NodeConstructor.d.ts.map +1 -1
- package/build/core/NodeConstructor.js +125 -185
- package/build/core/NodeGenerator.d.ts +3 -1
- package/build/core/NodeGenerator.d.ts.map +1 -1
- package/build/core/NodeGenerator.js +139 -43
- package/build/core/NodeManagerRuntime.d.ts +44 -0
- package/build/core/NodeManagerRuntime.d.ts.map +1 -0
- package/build/core/NodeManagerRuntime.js +140 -0
- package/build/core/Utils.d.ts.map +1 -1
- package/build/core/logger/service/LoggerService.d.ts +8 -6
- package/build/core/logger/service/LoggerService.d.ts.map +1 -1
- package/build/core/logger/service/LoggerService.js +101 -23
- package/build/core/logger/template/LoggerTemplate.d.ts +1 -2
- package/build/core/logger/template/LoggerTemplate.d.ts.map +1 -1
- package/build/core/logger/template/LoggerTemplate.js +18 -5
- package/build/core/metrics/MetricsDecorator.d.ts +1 -2
- package/build/core/metrics/MetricsDecorator.d.ts.map +1 -1
- package/build/core/metrics/MetricsDecorator.js +89 -116
- package/build/core/metrics/node/CounterMetricConfigNode.d.ts.map +1 -1
- package/build/core/metrics/node/CounterMetricConfigNode.js +4 -5
- package/build/core/metrics/node/GaugeMetricConfigNode.d.ts.map +1 -1
- package/build/core/metrics/node/GaugeMetricConfigNode.js +5 -6
- package/build/core/metrics/node/MetricsConfigNode.d.ts +19 -9
- package/build/core/metrics/node/MetricsConfigNode.d.ts.map +1 -1
- package/build/core/metrics/node/MetricsConfigNode.js +14 -45
- package/build/core/metrics/node/TimerMetricConfigNode.d.ts.map +1 -1
- package/build/core/metrics/node/TimerMetricConfigNode.js +11 -17
- package/build/core/metrics/service/MetricsService.d.ts +110 -114
- package/build/core/metrics/service/MetricsService.d.ts.map +1 -1
- package/build/core/metrics/service/MetricsService.js +122 -339
- package/build/core/metrics/template/CounterMetricTemplate.d.ts +1 -2
- package/build/core/metrics/template/CounterMetricTemplate.d.ts.map +1 -1
- package/build/core/metrics/template/CounterMetricTemplate.js +16 -5
- package/build/core/metrics/template/GaugeMetricTemplate.d.ts +1 -2
- package/build/core/metrics/template/GaugeMetricTemplate.d.ts.map +1 -1
- package/build/core/metrics/template/GaugeMetricTemplate.js +16 -5
- package/build/core/metrics/template/MetricsTemplate.d.ts +1 -2
- package/build/core/metrics/template/MetricsTemplate.d.ts.map +1 -1
- package/build/core/metrics/template/MetricsTemplate.js +18 -6
- package/build/core/metrics/template/TimerMetricTemplate.d.ts +1 -2
- package/build/core/metrics/template/TimerMetricTemplate.d.ts.map +1 -1
- package/build/core/metrics/template/TimerMetricTemplate.js +16 -5
- package/build/core/other/node/DelegatedConfigReferenceNode.d.ts +1 -1
- package/build/core/other/node/DelegatedConfigReferenceNode.d.ts.map +1 -1
- package/build/core/other/node/DelegatedConfigReferenceNode.js +1 -1
- package/build/core/other/service/InputService.d.ts.map +1 -1
- package/build/core/other/service/SettingsService.d.ts +1 -2
- package/build/core/other/service/SettingsService.d.ts.map +1 -1
- package/build/core/other/service/SettingsService.js +19 -5
- package/build/core/other/template/BasicTemplate.d.ts +1 -2
- package/build/core/other/template/BasicTemplate.d.ts.map +1 -1
- package/build/core/other/template/BasicTemplate.js +15 -5
- package/build/core/other/template/SettingsTemplate.d.ts +1 -2
- package/build/core/other/template/SettingsTemplate.d.ts.map +1 -1
- package/build/core/other/template/SettingsTemplate.js +17 -5
- package/build/core/state/node/InternalStateConfigNode.d.ts +16 -0
- package/build/core/state/node/InternalStateConfigNode.d.ts.map +1 -0
- package/build/core/state/node/InternalStateConfigNode.js +89 -0
- package/build/core/state/node/StateConfigNode.d.ts +24 -0
- package/build/core/state/node/StateConfigNode.d.ts.map +1 -0
- package/build/core/state/node/StateConfigNode.js +22 -0
- package/build/core/state/service/StateService.d.ts +34 -0
- package/build/core/state/service/StateService.d.ts.map +1 -0
- package/build/core/state/service/StateService.js +201 -0
- package/build/core/state/template/StateTemplate.d.ts +7 -0
- package/build/core/state/template/StateTemplate.d.ts.map +1 -0
- package/build/core/state/template/StateTemplate.js +25 -0
- package/build/core/tagging/ServiceDescriptionDecorator.d.ts +10 -0
- package/build/core/tagging/ServiceDescriptionDecorator.d.ts.map +1 -0
- package/build/core/tagging/ServiceDescriptionDecorator.js +10 -0
- package/build/core/tagging/TemplateDescriptionDecorator.d.ts +8 -0
- package/build/core/tagging/TemplateDescriptionDecorator.d.ts.map +1 -0
- package/build/core/tagging/TemplateDescriptionDecorator.js +10 -0
- package/build/core/tagging/service/NodeTypeService.d.ts +1 -2
- package/build/core/tagging/service/NodeTypeService.d.ts.map +1 -1
- package/build/core/tagging/service/NodeTypeService.js +19 -5
- package/build/core/ui/template/ScriptEditorTemplate.d.ts +1 -2
- package/build/core/ui/template/ScriptEditorTemplate.d.ts.map +1 -1
- package/build/core/ui/template/ScriptEditorTemplate.js +15 -5
- package/build/core/ui/template/UIHelperTemplate.d.ts +1 -2
- package/build/core/ui/template/UIHelperTemplate.d.ts.map +1 -1
- package/build/core/ui/template/UIHelperTemplate.js +15 -5
- package/build/core/webhook/node/WebhookServerConfigNode.d.ts.map +1 -1
- package/build/core/webhook/service/ReverseProxyTypeService.d.ts.map +1 -1
- package/build/core/webhook/service/WebhookServerService.d.ts +3 -4
- package/build/core/webhook/service/WebhookServerService.d.ts.map +1 -1
- package/build/core/webhook/service/WebhookServerService.js +48 -18
- package/build/core/webhook/template/WebhookTemplate.d.ts +1 -2
- package/build/core/webhook/template/WebhookTemplate.d.ts.map +1 -1
- package/build/core/webhook/template/WebhookTemplate.js +19 -6
- package/build/index.d.ts +6 -2
- package/build/index.d.ts.map +1 -1
- package/build/index.js +7 -2
- package/build/runtime/NodeManagerRuntime.js +140 -0
- package/documentation/CounterMetricConfigNode.png +0 -0
- package/documentation/GaugeMetricConfigNode.png +0 -0
- package/documentation/LoggerTemplate.png +0 -0
- package/documentation/MetricsTemplate.png +0 -0
- package/documentation/StateTemplate.png +0 -0
- package/documentation/TimerMetricConfigNode_histogram.png +0 -0
- package/documentation/TimerMetricConfigNode_summary.png +0 -0
- package/documentation/WebhookServerConfigNode.png +0 -0
- package/documentation/WebhookTemplate.png +0 -0
- package/package.json +4 -11
- package/src/GenerateNodes.ts +10 -40
- package/src/core/NodeConstructor.ts +150 -228
- package/src/core/NodeGenerator.ts +156 -47
- package/src/core/NodeManagerRuntime.ts +179 -0
- package/src/core/logger/service/LoggerService.ts +60 -32
- package/src/core/logger/template/LoggerTemplate.html +11 -6
- package/src/core/logger/template/LoggerTemplate.ts +9 -11
- package/src/core/metrics/MetricsDecorator.ts +140 -168
- package/src/core/metrics/node/CounterMetricConfigNode.ts +20 -20
- package/src/core/metrics/node/GaugeMetricConfigNode.ts +24 -25
- package/src/core/metrics/node/MetricsConfigNode.ts +29 -48
- package/src/core/metrics/node/TimerMetricConfigNode.ts +50 -59
- package/src/core/metrics/service/MetricsService.ts +214 -489
- package/src/core/metrics/template/CounterMetricTemplate.html +0 -1
- package/src/core/metrics/template/CounterMetricTemplate.ts +8 -11
- package/src/core/metrics/template/GaugeMetricTemplate.html +1 -1
- package/src/core/metrics/template/GaugeMetricTemplate.ts +8 -11
- package/src/core/metrics/template/MetricsTemplate.html +132 -13
- package/src/core/metrics/template/MetricsTemplate.ts +9 -10
- package/src/core/metrics/template/TimerMetricTemplate.ts +8 -10
- package/src/core/other/node/DelegatedConfigReferenceNode.ts +1 -1
- package/src/core/other/service/SettingsService.ts +6 -10
- package/src/core/other/template/BasicTemplate.html +1 -1
- package/src/core/other/template/BasicTemplate.ts +6 -11
- package/src/core/other/template/SettingsTemplate.ts +8 -13
- package/src/core/state/node/InternalStateConfigNode.html +77 -0
- package/src/core/state/node/InternalStateConfigNode.ts +102 -0
- package/src/core/state/node/StateConfigNode.ts +29 -0
- package/src/core/state/service/StateService.ts +180 -0
- package/src/core/state/template/StateTemplate.html +244 -0
- package/src/core/state/template/StateTemplate.ts +18 -0
- package/src/core/tagging/ServiceDescriptionDecorator.ts +23 -0
- package/src/core/tagging/TemplateDescriptionDecorator.ts +19 -0
- package/src/core/tagging/service/NodeTypeService.ts +6 -11
- package/src/core/ui/template/ScriptEditorTemplate.ts +6 -10
- package/src/core/ui/template/UIHelperTemplate.html +41 -26
- package/src/core/ui/template/UIHelperTemplate.ts +6 -10
- package/src/core/webhook/service/WebhookServerService.ts +39 -23
- package/src/core/webhook/template/WebhookTemplate.html +28 -35
- package/src/core/webhook/template/WebhookTemplate.ts +10 -12
- package/src/index.ts +8 -2
- package/build/core/logger/node/ConsoleLoggerConfigNode.d.ts +0 -20
- package/build/core/logger/node/ConsoleLoggerConfigNode.d.ts.map +0 -1
- package/build/core/logger/node/ConsoleLoggerConfigNode.js +0 -62
- package/build/core/logger/node/RestLoggerConfigNode.d.ts +0 -40
- package/build/core/logger/node/RestLoggerConfigNode.d.ts.map +0 -1
- package/build/core/logger/node/RestLoggerConfigNode.js +0 -128
- package/documentation/ConsoleLoggerConfigNode.png +0 -0
- package/documentation/MetricsConfigNode.png +0 -0
- package/documentation/RestLoggerConfigNode.png +0 -0
- package/documentation/TimerMetricConfigNode.png +0 -0
- package/documentation/WebhookNode.png +0 -0
- package/src/core/logger/node/ConsoleLoggerConfigNode.html +0 -90
- package/src/core/logger/node/ConsoleLoggerConfigNode.ts +0 -71
- package/src/core/logger/node/RestLoggerConfigNode.html +0 -183
- package/src/core/logger/node/RestLoggerConfigNode.ts +0 -170
|
@@ -1,13 +1,15 @@
|
|
|
1
1
|
|
|
2
|
-
import {BaseService, FlowDeployment
|
|
2
|
+
import {BaseService, FlowDeployment} from "../../NodeConstructor";
|
|
3
|
+
import { ServiceDescription } from "../../tagging/ServiceDescriptionDecorator";
|
|
3
4
|
import { NodeAPI, NodeAPISettingsWithData } from "node-red";
|
|
4
5
|
import { WebhookServerConfigNode } from "../node/WebhookServerConfigNode";
|
|
5
6
|
import { WebhookTemplate } from "../template/WebhookTemplate";
|
|
6
|
-
import
|
|
7
|
+
import type { Express, Request, Response } from "express";
|
|
7
8
|
import { Server } from "http";
|
|
8
9
|
import { ApiKeyMechanismType, RestAuthType } from "../../logger/service/LoggerService";
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
function getExpress(): any { return require('express'); }
|
|
12
|
+
function getBodyParser(): any { return require('body-parser'); }
|
|
11
13
|
|
|
12
14
|
export enum EndpointMethodType {
|
|
13
15
|
GET = "GET",
|
|
@@ -46,8 +48,8 @@ export class WebhookServer {
|
|
|
46
48
|
public constructor(config:WebhookServerConfig){
|
|
47
49
|
this._config = config;
|
|
48
50
|
|
|
49
|
-
this._app =
|
|
50
|
-
this._app.use(
|
|
51
|
+
this._app = getExpress()();
|
|
52
|
+
this._app.use(getBodyParser().json({type: "application/json", limit: '50mb'}));
|
|
51
53
|
this._listener = this._app.listen(this._config.port, '0.0.0.0');
|
|
52
54
|
}
|
|
53
55
|
|
|
@@ -117,6 +119,10 @@ export class WebhookServer {
|
|
|
117
119
|
|
|
118
120
|
}
|
|
119
121
|
|
|
122
|
+
public close(): void {
|
|
123
|
+
this._listener.close();
|
|
124
|
+
}
|
|
125
|
+
|
|
120
126
|
public config():WebhookServerConfig {
|
|
121
127
|
return this._config;
|
|
122
128
|
}
|
|
@@ -129,9 +135,19 @@ export type WebhookServerConfig = {
|
|
|
129
135
|
externalPort:number;
|
|
130
136
|
}
|
|
131
137
|
|
|
132
|
-
|
|
138
|
+
// Stored on global so all bundled copies share the same server registry.
|
|
139
|
+
const _GLOBAL_WEBHOOKSERVERS_KEY = '__plugincore_webhookservers__';
|
|
140
|
+
function getWebhookServersStore(): {[key:string]:WebhookServer} {
|
|
141
|
+
if (!(global as any)[_GLOBAL_WEBHOOKSERVERS_KEY]) (global as any)[_GLOBAL_WEBHOOKSERVERS_KEY] = {};
|
|
142
|
+
return (global as any)[_GLOBAL_WEBHOOKSERVERS_KEY];
|
|
143
|
+
}
|
|
133
144
|
|
|
134
|
-
|
|
145
|
+
@ServiceDescription({
|
|
146
|
+
id: "@theotherwillembotha/webhookserverservice",
|
|
147
|
+
sourceFile: "@theotherwillembotha/node-red-plugincore",
|
|
148
|
+
dependencies: [WebhookServerConfigNode, WebhookTemplate]
|
|
149
|
+
})
|
|
150
|
+
export class WebhookServerService extends BaseService {
|
|
135
151
|
|
|
136
152
|
constructor(){
|
|
137
153
|
super("wehbookserver")
|
|
@@ -151,8 +167,10 @@ export class WebhookServerService extends BaseService {
|
|
|
151
167
|
|
|
152
168
|
let webhookServerNodes = flowDeployment.flows.filter(node => node.type === "WebhookServerConfigNode") as any as WebhookServerConfig[];
|
|
153
169
|
|
|
170
|
+
const store = getWebhookServersStore();
|
|
171
|
+
|
|
154
172
|
// find all the nodes that have been removed or changed.
|
|
155
|
-
Object.entries(
|
|
173
|
+
Object.entries(store).forEach(([key, serverService]) => {
|
|
156
174
|
let webhookServerNode = webhookServerNodes.find(node => node.id === key);
|
|
157
175
|
let serverServiceConfig = serverService.config();
|
|
158
176
|
// compare the properties.
|
|
@@ -177,30 +195,28 @@ export class WebhookServerService extends BaseService {
|
|
|
177
195
|
|
|
178
196
|
// find all the servers that have been added.
|
|
179
197
|
webhookServerNodes
|
|
180
|
-
.filter(node => !
|
|
198
|
+
.filter(node => !store[node.id])
|
|
181
199
|
.forEach(node => addedServers.push(node));
|
|
182
200
|
|
|
183
|
-
//
|
|
184
|
-
|
|
201
|
+
// Close and remove servers that have been deleted or whose config changed.
|
|
202
|
+
removedServers.forEach(removedConfig => {
|
|
203
|
+
const server = store[removedConfig.id];
|
|
204
|
+
if (server) {
|
|
205
|
+
server.close();
|
|
206
|
+
delete store[removedConfig.id];
|
|
207
|
+
console.log(`Closed webhook server on port ${removedConfig.port}`);
|
|
208
|
+
}
|
|
209
|
+
});
|
|
185
210
|
}
|
|
186
211
|
|
|
187
212
|
public static get (config:WebhookServerConfig): WebhookServer{
|
|
188
|
-
|
|
213
|
+
const store = getWebhookServersStore();
|
|
214
|
+
let server = store[config.id];
|
|
189
215
|
if(!server){
|
|
190
|
-
|
|
216
|
+
store[config.id] = server = new WebhookServer(config);
|
|
191
217
|
console.log(`Creating webhook server on port ${config.port}`);
|
|
192
218
|
}
|
|
193
219
|
return server;
|
|
194
220
|
}
|
|
195
221
|
|
|
196
|
-
static override getServiceDescriptor():ServiceDescriptor {
|
|
197
|
-
return new ServiceDescriptor(
|
|
198
|
-
"@theotherwillembotha/webhookserverservice",
|
|
199
|
-
"WebhookServerService",
|
|
200
|
-
"services-plugin",
|
|
201
|
-
"@theotherwillembotha/node-red-plugincore",
|
|
202
|
-
WebhookServerService,
|
|
203
|
-
[WebhookServerConfigNode, WebhookTemplate]
|
|
204
|
-
);
|
|
205
|
-
}
|
|
206
222
|
}
|
|
@@ -45,8 +45,6 @@ node
|
|
|
45
45
|
</div>
|
|
46
46
|
|
|
47
47
|
<script type="text/javascript" template-section="onIncludeEditPrepare">
|
|
48
|
-
{
|
|
49
|
-
let node = this;
|
|
50
48
|
|
|
51
49
|
let showSelectedAutnetication = function(value){
|
|
52
50
|
let webhookConfig = $("#section_webhookconfig");
|
|
@@ -133,12 +131,6 @@ node
|
|
|
133
131
|
return types;
|
|
134
132
|
}
|
|
135
133
|
|
|
136
|
-
getProxyTypes().then(types => {
|
|
137
|
-
if(types.length === 0){
|
|
138
|
-
$("#section_reverseproxy_feature").hide();
|
|
139
|
-
}
|
|
140
|
-
});
|
|
141
|
-
|
|
142
134
|
let getProxies = async () => {
|
|
143
135
|
let proxies = [];
|
|
144
136
|
|
|
@@ -163,8 +155,8 @@ node
|
|
|
163
155
|
scrollOnAdd: true,
|
|
164
156
|
addButton: 'Add ProxyHost',
|
|
165
157
|
header: $('<div>').append($.parseHTML(`
|
|
166
|
-
<div style='width:30%; margin-left:5%; display:inline-
|
|
167
|
-
<div style='width:auto; margin-right:5%; display:inline-
|
|
158
|
+
<div style='width:30%; margin-left:5%; display:inline-block;'>Proxy</div>
|
|
159
|
+
<div style='width:auto; margin-right:5%; display:inline-block;'>Domain Name</div>
|
|
168
160
|
`)
|
|
169
161
|
),
|
|
170
162
|
buttons: [
|
|
@@ -265,15 +257,14 @@ node
|
|
|
265
257
|
|
|
266
258
|
addItem: async function(container, i, proxy){
|
|
267
259
|
let row = $('<div/>', {
|
|
268
|
-
|
|
269
|
-
style: 'display: flex; margin-bottom: 0;'
|
|
260
|
+
style: 'display: flex; align-items: center; width: 100%; margin-bottom: 2px; box-sizing: border-box;'
|
|
270
261
|
}).appendTo(container);
|
|
271
262
|
|
|
272
263
|
let proxyColumn = $('<select/>', {
|
|
273
264
|
type: 'text',
|
|
274
265
|
name: i,
|
|
275
266
|
required: true,
|
|
276
|
-
style: 'margin-left: 5px; margin-bottom: 0;',
|
|
267
|
+
style: 'flex: 1; min-width: 0; margin-left: 5px; margin-bottom: 0;',
|
|
277
268
|
class: 'proxy-proxy'
|
|
278
269
|
}).appendTo(row);
|
|
279
270
|
|
|
@@ -295,7 +286,7 @@ node
|
|
|
295
286
|
type: 'text',
|
|
296
287
|
name: i,
|
|
297
288
|
required: true,
|
|
298
|
-
style: 'margin-left: 5px; margin-bottom: 0;',
|
|
289
|
+
style: 'flex: 1; min-width: 0; margin-left: 5px; margin-bottom: 0;',
|
|
299
290
|
class: 'proxy-domainname'
|
|
300
291
|
}).appendTo(row)
|
|
301
292
|
domainnameColumn.val(proxy.domainname);
|
|
@@ -310,15 +301,19 @@ node
|
|
|
310
301
|
$('.proxy-dropdown').remove();
|
|
311
302
|
});
|
|
312
303
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
304
|
+
// Show the reverse proxy section only if at least one provider type is registered.
|
|
305
|
+
// The editableList is initialised above (while the section is still hidden) so that
|
|
306
|
+
// its wide toolbar buttons never participate in the tray's initial layout calculation.
|
|
307
|
+
getProxyTypes().then(types => {
|
|
308
|
+
if(types.length === 0) return;
|
|
309
|
+
$("#section_reverseproxy_feature").show();
|
|
310
|
+
let savedConnections = this.reverseProxies_connections || [];
|
|
311
|
+
reverseProxyList.editableList('addItems', savedConnections);
|
|
312
|
+
});
|
|
313
|
+
|
|
316
314
|
</script>
|
|
317
315
|
|
|
318
316
|
<script type="text/javascript" template-section="onIncludeEditSave">
|
|
319
|
-
{
|
|
320
|
-
let node = this;
|
|
321
|
-
|
|
322
317
|
// pulling the values from the reverseproxy table.
|
|
323
318
|
let connectionList = $("#reverseproxylist_table").editableList('items');
|
|
324
319
|
node.reverseProxies_connections = [];
|
|
@@ -330,7 +325,6 @@ node
|
|
|
330
325
|
});
|
|
331
326
|
|
|
332
327
|
console.log(node.reverseProxies_connections);
|
|
333
|
-
}
|
|
334
328
|
</script>
|
|
335
329
|
|
|
336
330
|
<script type="text/html" template-section="onIncludeEditForm">
|
|
@@ -340,7 +334,7 @@ node
|
|
|
340
334
|
</div>
|
|
341
335
|
|
|
342
336
|
<div class="editorgroupborder">
|
|
343
|
-
<div class="form-row
|
|
337
|
+
<div class="form-row">
|
|
344
338
|
<label class="towb_editorlabel" for="{{defaults.webhook}}"><i class="fa fa-server"></i> Server</label>
|
|
345
339
|
<input id="{{defaults.webhook}}" placeholder="webhook" />
|
|
346
340
|
</div>
|
|
@@ -387,20 +381,19 @@ node
|
|
|
387
381
|
</div>
|
|
388
382
|
</div>
|
|
389
383
|
|
|
390
|
-
<div id="section_reverseproxy_feature">
|
|
391
|
-
<div class="form-row">
|
|
392
|
-
<label>Reverse Proxy</label>
|
|
393
|
-
<input type="checkbox" id="{{defaults.reverseProxies_enabled}}" style="width:20px; margin-right:5px;" />
|
|
394
|
-
<label style="width:auto" for="{{defaults.reverseProxies_enabled}}"><span>Enable Reverse Proxy</span></label>
|
|
395
|
-
</div>
|
|
396
|
-
<div id="section_webhookconfig_reverseproxy" style="display:none">
|
|
384
|
+
<div id="section_reverseproxy_feature" style="display:none">
|
|
397
385
|
<div class="form-row">
|
|
398
|
-
<label
|
|
399
|
-
<
|
|
386
|
+
<label>Reverse Proxy</label>
|
|
387
|
+
<input type="checkbox" id="{{defaults.reverseProxies_enabled}}" style="width:20px; margin-right:5px;" />
|
|
388
|
+
<label style="width:auto" for="{{defaults.reverseProxies_enabled}}"><span>Enable Reverse Proxy</span></label>
|
|
389
|
+
</div>
|
|
390
|
+
<div id="section_webhookconfig_reverseproxy" style="display:none">
|
|
391
|
+
<div class="form-row">
|
|
392
|
+
<label></label>
|
|
393
|
+
<ol id="reverseproxylist_table" class="theotherwillembotha-compact-table"></ol>
|
|
394
|
+
</div>
|
|
400
395
|
</div>
|
|
401
396
|
</div>
|
|
402
|
-
</div>
|
|
403
|
-
|
|
404
397
|
|
|
405
398
|
</div>
|
|
406
399
|
</div>
|
|
@@ -427,10 +420,10 @@ Validates the `Authorization` header on each incoming request against a username
|
|
|
427
420
|
: *password* (string) : the password expected in the `Authorization` header
|
|
428
421
|
|
|
429
422
|
- API Key:
|
|
430
|
-
Validates a key/value pair carried in the request. Only the `Header` mechanism is currently supported
|
|
423
|
+
Validates a key/value pair carried in the request. Only the `Header` mechanism is currently supported - the key is read from a named request header and compared against the configured value. Requests that do not supply the correct key receive a `401` response.
|
|
431
424
|
: *mechanism* (mechanism) : the transport mechanism for the key. Currently supported: `Header`
|
|
432
425
|
: *key name* (string) : the name of the request header carrying the key (e.g. `x-api-key`)
|
|
433
|
-
: *key value* (string) : the expected value
|
|
426
|
+
: *key value* (string) : the expected value - requests not matching this value are rejected
|
|
434
427
|
|
|
435
428
|
### Reverse Proxy
|
|
436
429
|
When *enable reverse proxy* is checked, the webhook endpoint is registered with one or more reverse proxy services installed in Node-RED. Reverse proxy types are discovered automatically from any plugin that registers a service tagged `ReverseProxyType` (e.g. an Nginx Proxy Manager integration). Each row in the list maps the internal webhook server to a public-facing domain.
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import { BaseNodeConfig, Template
|
|
2
|
-
import { WebhookServerConfigNode } from "../node/WebhookServerConfigNode";
|
|
1
|
+
import { BaseNodeConfig, Template } from "../../NodeConstructor"
|
|
3
2
|
import { SourceUtility } from "../../NodeGenerator";
|
|
3
|
+
import { TemplateDescription } from "../../tagging/TemplateDescriptionDecorator";
|
|
4
|
+
import { DelegatedConfigReferenceNode } from "../../other/node/DelegatedConfigReferenceNode";
|
|
5
|
+
import { WebhookServerConfigNode } from "../node/WebhookServerConfigNode";
|
|
6
|
+
import { WebhookServerService } from "../service/WebhookServerService";
|
|
4
7
|
import { RestAuthType, ApiKeyMechanismType } from "../../logger/service/LoggerService";
|
|
5
8
|
|
|
6
9
|
export interface WebhookTemplateConfig extends BaseNodeConfig{
|
|
@@ -22,15 +25,10 @@ export type ReverseproxyConnection = {
|
|
|
22
25
|
domainname:string
|
|
23
26
|
}
|
|
24
27
|
|
|
28
|
+
@TemplateDescription({
|
|
29
|
+
name: "webhook",
|
|
30
|
+
templateFile: SourceUtility.getSourcePath("/build/", "/src/") + "WebhookTemplate.html",
|
|
31
|
+
dependencies: [DelegatedConfigReferenceNode, WebhookServerConfigNode, WebhookServerService],
|
|
32
|
+
})
|
|
25
33
|
export class WebhookTemplate extends Template {
|
|
26
|
-
|
|
27
|
-
static getTemplateDescriptor(): TemplateDescriptor {
|
|
28
|
-
return new TemplateDescriptor(
|
|
29
|
-
"webhook", WebhookTemplate,
|
|
30
|
-
SourceUtility.getSourcePath("/build/", "/src/") + "WebhookTemplate.html",
|
|
31
|
-
[WebhookServerConfigNode])
|
|
32
|
-
}
|
|
33
34
|
}
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
package/src/index.ts
CHANGED
|
@@ -4,8 +4,6 @@ export * from "./core/NodeConstructor";
|
|
|
4
4
|
|
|
5
5
|
// LOGGER
|
|
6
6
|
export * from "./core/logger/service/LoggerService";
|
|
7
|
-
export * from "./core/logger/node/ConsoleLoggerConfigNode";
|
|
8
|
-
export * from "./core/logger/node/RestLoggerConfigNode";
|
|
9
7
|
export * from "./core/logger/template/LoggerTemplate";
|
|
10
8
|
|
|
11
9
|
|
|
@@ -20,9 +18,17 @@ export * from "./core/metrics/node/GaugeMetricConfigNode";
|
|
|
20
18
|
export * from "./core/metrics/node/TimerMetricConfigNode";
|
|
21
19
|
export * from "./core/metrics/template/TimerMetricTemplate";
|
|
22
20
|
|
|
21
|
+
// STATE
|
|
22
|
+
export * from "./core/state/service/StateService";
|
|
23
|
+
export * from "./core/state/node/StateConfigNode";
|
|
24
|
+
export * from "./core/state/node/InternalStateConfigNode";
|
|
25
|
+
export * from "./core/state/template/StateTemplate";
|
|
26
|
+
|
|
23
27
|
// TAGGING
|
|
24
28
|
export * from "./core/tagging/service/NodeTypeService";
|
|
25
29
|
export * from "./core/tagging/NodeDescriptionDecorator";
|
|
30
|
+
export * from "./core/tagging/ServiceDescriptionDecorator";
|
|
31
|
+
export * from "./core/tagging/TemplateDescriptionDecorator";
|
|
26
32
|
|
|
27
33
|
// UI
|
|
28
34
|
export * from "./core/ui/template/UIHelperTemplate";
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import { Node } from "node-red";
|
|
2
|
-
import { LoggerConfigNodeConfig, BaseLoggerConfig, AbstractLogger, LoggerConfigNode, Log, Level } from "../service/LoggerService";
|
|
3
|
-
import { LoggerTemplateConfig } from "../template/LoggerTemplate";
|
|
4
|
-
interface ConsoleLoggerConfigNodeConfig extends LoggerConfigNodeConfig {
|
|
5
|
-
level: Level;
|
|
6
|
-
template: string;
|
|
7
|
-
}
|
|
8
|
-
export declare class ConsoleLoggerConfigNode extends LoggerConfigNode<ConsoleLoggerConfigNodeConfig, ConsoleLogger> {
|
|
9
|
-
private _logger;
|
|
10
|
-
constructor(node: Node, config: ConsoleLoggerConfigNodeConfig);
|
|
11
|
-
protected logger(): ConsoleLogger;
|
|
12
|
-
}
|
|
13
|
-
export interface ConsoleLoggerConfig extends BaseLoggerConfig {
|
|
14
|
-
}
|
|
15
|
-
declare class ConsoleLogger extends AbstractLogger<ConsoleLoggerConfig> {
|
|
16
|
-
constructor(config: ConsoleLoggerConfig);
|
|
17
|
-
protected createLogger(config: LoggerTemplateConfig): Log;
|
|
18
|
-
}
|
|
19
|
-
export {};
|
|
20
|
-
//# sourceMappingURL=ConsoleLoggerConfigNode.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ConsoleLoggerConfigNode.d.ts","sourceRoot":"","sources":["../../../../src/core/logger/node/ConsoleLoggerConfigNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAiB,sBAAsB,EAAE,gBAAgB,EAAE,cAAc,EAAU,gBAAgB,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AAGxJ,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAElE,UAAU,6BAA8B,SAAQ,sBAAsB;IAClE,KAAK,EAAC,KAAK,CAAC;IACZ,QAAQ,EAAC,MAAM,CAAC;CACnB;AAED,qBASa,uBAAwB,SAAQ,gBAAgB,CAAC,6BAA6B,EAAE,aAAa,CAAC;IAEvG,OAAO,CAAC,OAAO,CAAiB;gBAEpB,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,6BAA6B;IAgB7D,SAAS,CAAC,MAAM,IAAG,aAAa;CAGnC;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;CAE5D;AAED,cAAM,aAAc,SAAQ,cAAc,CAAC,mBAAmB,CAAC;gBAE/C,MAAM,EAAC,mBAAmB;IAItC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,oBAAoB,GAAG,GAAG;CAG5D"}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.ConsoleLoggerConfigNode = void 0;
|
|
13
|
-
const LoggerService_1 = require("../service/LoggerService");
|
|
14
|
-
const NodeGenerator_1 = require("../../NodeGenerator");
|
|
15
|
-
const NodeDescriptionDecorator_1 = require("../../tagging/NodeDescriptionDecorator");
|
|
16
|
-
let ConsoleLoggerConfigNode = class ConsoleLoggerConfigNode extends LoggerService_1.LoggerConfigNode {
|
|
17
|
-
constructor(node, config) {
|
|
18
|
-
super(node, config);
|
|
19
|
-
let _this = this;
|
|
20
|
-
// create logger config
|
|
21
|
-
let loggerConfig = {
|
|
22
|
-
id: this.id(),
|
|
23
|
-
type: "CONSOLE",
|
|
24
|
-
level: config.level,
|
|
25
|
-
template: config.template,
|
|
26
|
-
};
|
|
27
|
-
// create logger instance:
|
|
28
|
-
this._logger = new ConsoleLogger(loggerConfig);
|
|
29
|
-
}
|
|
30
|
-
logger() {
|
|
31
|
-
return this._logger;
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
exports.ConsoleLoggerConfigNode = ConsoleLoggerConfigNode;
|
|
35
|
-
exports.ConsoleLoggerConfigNode = ConsoleLoggerConfigNode = __decorate([
|
|
36
|
-
(0, NodeDescriptionDecorator_1.NodeDescription)({
|
|
37
|
-
id: "ConsoleLoggerConfigNode",
|
|
38
|
-
name: "Console Logger",
|
|
39
|
-
group: "config",
|
|
40
|
-
sourceFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "ConsoleLoggerConfigNode.html",
|
|
41
|
-
package: "@theotherwillembotha/node-red-plugincore",
|
|
42
|
-
dependencies: [LoggerService_1.LoggerService],
|
|
43
|
-
tags: ["LoggerType"]
|
|
44
|
-
}),
|
|
45
|
-
__metadata("design:paramtypes", [Object, Object])
|
|
46
|
-
], ConsoleLoggerConfigNode);
|
|
47
|
-
class ConsoleLogger extends LoggerService_1.AbstractLogger {
|
|
48
|
-
constructor(config) {
|
|
49
|
-
super(config);
|
|
50
|
-
}
|
|
51
|
-
createLogger(config) {
|
|
52
|
-
return new ConsoleAppender(config);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
class ConsoleAppender extends LoggerService_1.Log {
|
|
56
|
-
constructor(config) {
|
|
57
|
-
super(config);
|
|
58
|
-
}
|
|
59
|
-
writeToLog(level, message, tags) {
|
|
60
|
-
console.log(new Date().toISOString(), this.config().id, level, tags, message);
|
|
61
|
-
}
|
|
62
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
import { Node } from "node-red";
|
|
2
|
-
import { ConfigNodeConfig } from "../../NodeConstructor";
|
|
3
|
-
import { LoggerConfigNode, AbstractLogger, BaseLoggerConfig, Log } from "../service/LoggerService";
|
|
4
|
-
import { ApiKeyMechanismType, Level, RestAuthType } from "../service/LoggerService";
|
|
5
|
-
import { LoggerTemplateConfig } from "../template/LoggerTemplate";
|
|
6
|
-
interface RestLoggerConfigNodeConfig extends ConfigNodeConfig {
|
|
7
|
-
id: string;
|
|
8
|
-
level: Level;
|
|
9
|
-
template: string;
|
|
10
|
-
rest_url: string;
|
|
11
|
-
rest_ignoresslerror: boolean;
|
|
12
|
-
rest_auth_type: RestAuthType;
|
|
13
|
-
rest_auth_basic_username: string;
|
|
14
|
-
rest_auth_basic_password: string;
|
|
15
|
-
rest_auth_apikey_mechanism: ApiKeyMechanismType;
|
|
16
|
-
rest_auth_apikey_name: string;
|
|
17
|
-
rest_auth_apikey_value: string;
|
|
18
|
-
}
|
|
19
|
-
export declare class RestLoggerConfigNode extends LoggerConfigNode<RestLoggerConfigNodeConfig, RestLogger> {
|
|
20
|
-
private _logger;
|
|
21
|
-
constructor(node: Node, config: RestLoggerConfigNodeConfig);
|
|
22
|
-
protected logger(): RestLogger;
|
|
23
|
-
}
|
|
24
|
-
declare class RestLogger extends AbstractLogger<RestLoggerConfig> {
|
|
25
|
-
private winston;
|
|
26
|
-
constructor(config: RestLoggerConfig);
|
|
27
|
-
protected createLogger(config: LoggerTemplateConfig): Log;
|
|
28
|
-
}
|
|
29
|
-
interface RestLoggerConfig extends BaseLoggerConfig {
|
|
30
|
-
url: string;
|
|
31
|
-
ignoresslerror: boolean;
|
|
32
|
-
auth_type: RestAuthType;
|
|
33
|
-
auth_basic_username: string;
|
|
34
|
-
auth_basic_password: string;
|
|
35
|
-
auth_apikey_mechanism: ApiKeyMechanismType;
|
|
36
|
-
auth_apikey_name: string;
|
|
37
|
-
auth_apikey_value: string;
|
|
38
|
-
}
|
|
39
|
-
export {};
|
|
40
|
-
//# sourceMappingURL=RestLoggerConfigNode.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"RestLoggerConfigNode.d.ts","sourceRoot":"","sources":["../../../../src/core/logger/node/RestLoggerConfigNode.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAC,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACvD,OAAO,EAAiB,gBAAgB,EAAE,cAAc,EAAE,gBAAgB,EAAU,GAAG,EAAE,MAAM,0BAA0B,CAAA;AAEzH,OAAO,EAAE,mBAAmB,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAKlE,UAAU,0BAA2B,SAAQ,gBAAgB;IAEzD,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAC,KAAK,CAAC;IACZ,QAAQ,EAAC,MAAM,CAAC;IAEhB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAC,OAAO,CAAC;IAC5B,cAAc,EAAE,YAAY,CAAC;IAC7B,wBAAwB,EAAC,MAAM,CAAC;IAChC,wBAAwB,EAAC,MAAM,CAAC;IAChC,0BAA0B,EAAC,mBAAmB,CAAC;IAC/C,qBAAqB,EAAC,MAAM,CAAC;IAC7B,sBAAsB,EAAC,MAAM,CAAC;CACjC;AAED,qBASa,oBAAqB,SAAQ,gBAAgB,CAAC,0BAA0B,EAAE,UAAU,CAAC;IAE9F,OAAO,CAAC,OAAO,CAAc;gBAEjB,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,0BAA0B;IAyB1D,SAAS,CAAC,MAAM,IAAG,UAAU;CAGhC;AAED,cAAM,UAAW,SAAQ,cAAc,CAAC,gBAAgB,CAAC;IAErD,OAAO,CAAC,OAAO,CAAQ;gBAEX,MAAM,EAAC,gBAAgB;IA8DnC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,oBAAoB,GAAG,GAAG;CAG5D;AAoBD,UAAU,gBAAiB,SAAQ,gBAAgB;IAC/C,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAC,OAAO,CAAC;IACvB,SAAS,EAAE,YAAY,CAAC;IACxB,mBAAmB,EAAC,MAAM,CAAC;IAC3B,mBAAmB,EAAC,MAAM,CAAC;IAC3B,qBAAqB,EAAC,mBAAmB,CAAC;IAC1C,gBAAgB,EAAC,MAAM,CAAC;IACxB,iBAAiB,EAAC,MAAM,CAAC;CAC5B"}
|
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
-
};
|
|
8
|
-
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
-
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.RestLoggerConfigNode = void 0;
|
|
13
|
-
const LoggerService_1 = require("../service/LoggerService");
|
|
14
|
-
const NodeGenerator_1 = require("../../NodeGenerator");
|
|
15
|
-
const LoggerService_2 = require("../service/LoggerService");
|
|
16
|
-
const NodeDescriptionDecorator_1 = require("../../tagging/NodeDescriptionDecorator");
|
|
17
|
-
const whatwg_url_1 = require("whatwg-url");
|
|
18
|
-
const winston_1 = require("winston");
|
|
19
|
-
let RestLoggerConfigNode = class RestLoggerConfigNode extends LoggerService_1.LoggerConfigNode {
|
|
20
|
-
constructor(node, config) {
|
|
21
|
-
super(node, config);
|
|
22
|
-
let _this = this;
|
|
23
|
-
// instantiate the logger.
|
|
24
|
-
let loggerConfig = {
|
|
25
|
-
id: this.id(),
|
|
26
|
-
type: "REST",
|
|
27
|
-
level: config.level,
|
|
28
|
-
template: config.template,
|
|
29
|
-
// additional properties.
|
|
30
|
-
url: config.rest_url,
|
|
31
|
-
ignoresslerror: config.rest_ignoresslerror,
|
|
32
|
-
auth_type: config.rest_auth_type,
|
|
33
|
-
auth_basic_username: config.rest_auth_basic_username,
|
|
34
|
-
auth_basic_password: config.rest_auth_basic_password,
|
|
35
|
-
auth_apikey_mechanism: config.rest_auth_apikey_mechanism,
|
|
36
|
-
auth_apikey_name: config.rest_auth_apikey_name,
|
|
37
|
-
auth_apikey_value: config.rest_auth_apikey_value,
|
|
38
|
-
};
|
|
39
|
-
this._logger = new RestLogger(loggerConfig);
|
|
40
|
-
}
|
|
41
|
-
logger() {
|
|
42
|
-
return this._logger;
|
|
43
|
-
}
|
|
44
|
-
};
|
|
45
|
-
exports.RestLoggerConfigNode = RestLoggerConfigNode;
|
|
46
|
-
exports.RestLoggerConfigNode = RestLoggerConfigNode = __decorate([
|
|
47
|
-
(0, NodeDescriptionDecorator_1.NodeDescription)({
|
|
48
|
-
id: "RestLoggerConfigNode",
|
|
49
|
-
name: "Rest Endpoint Logger",
|
|
50
|
-
group: "config",
|
|
51
|
-
sourceFile: NodeGenerator_1.SourceUtility.getSourcePath("/build/", "/src/") + "RestLoggerConfigNode.html",
|
|
52
|
-
package: "@theotherwillembotha/node-red-plugincore",
|
|
53
|
-
dependencies: [LoggerService_1.LoggerService],
|
|
54
|
-
tags: ["LoggerType"]
|
|
55
|
-
}),
|
|
56
|
-
__metadata("design:paramtypes", [Object, Object])
|
|
57
|
-
], RestLoggerConfigNode);
|
|
58
|
-
class RestLogger extends LoggerService_1.AbstractLogger {
|
|
59
|
-
constructor(config) {
|
|
60
|
-
super(config);
|
|
61
|
-
// get the url.
|
|
62
|
-
let hosturl = (0, whatwg_url_1.parseURL)(config.url);
|
|
63
|
-
if (!hosturl) {
|
|
64
|
-
throw Error("could not parse url: " + config.url);
|
|
65
|
-
}
|
|
66
|
-
// get the options
|
|
67
|
-
let httpOptions = {};
|
|
68
|
-
// get the params.
|
|
69
|
-
let httpParams = {
|
|
70
|
-
host: hosturl.host?.toString(),
|
|
71
|
-
path: "/" + (hosturl.path ? [...hosturl.path].join("/") : "") + (hosturl.query ? ("?" + hosturl.query) : ""),
|
|
72
|
-
port: (hosturl.port) ? hosturl.port : undefined,
|
|
73
|
-
ssl: hosturl.scheme.toLowerCase() === "https",
|
|
74
|
-
headers: {},
|
|
75
|
-
};
|
|
76
|
-
httpParams.options = httpOptions;
|
|
77
|
-
// add the ignore ssl error flag if need be.
|
|
78
|
-
if (config.ignoresslerror) {
|
|
79
|
-
httpOptions.rejectUnauthorized = false;
|
|
80
|
-
}
|
|
81
|
-
// configure "none" authentication.
|
|
82
|
-
if (config.auth_type === LoggerService_2.RestAuthType.none) { }
|
|
83
|
-
// configure "basic" authentication.
|
|
84
|
-
if (config.auth_type === LoggerService_2.RestAuthType.basic) {
|
|
85
|
-
httpParams.auth = {
|
|
86
|
-
username: config.auth_basic_username,
|
|
87
|
-
password: config.auth_basic_password
|
|
88
|
-
};
|
|
89
|
-
}
|
|
90
|
-
// configure "apikey" authentication.
|
|
91
|
-
if (config.auth_type === LoggerService_2.RestAuthType.apikey) {
|
|
92
|
-
if (config.auth_apikey_mechanism === LoggerService_2.ApiKeyMechanismType.header) {
|
|
93
|
-
httpParams.headers[config.auth_apikey_name] = config.auth_apikey_value;
|
|
94
|
-
}
|
|
95
|
-
if (config.auth_apikey_mechanism === LoggerService_2.ApiKeyMechanismType.matrixparam) {
|
|
96
|
-
httpParams.path = httpParams.path?.replace(`:${config.auth_apikey_name}`, config.auth_apikey_value);
|
|
97
|
-
}
|
|
98
|
-
if (config.auth_apikey_mechanism === LoggerService_2.ApiKeyMechanismType.queryparam) {
|
|
99
|
-
httpParams.path = httpParams.path + (httpParams.path?.includes("?") ? "&" : "?") + config.auth_apikey_name + "=" + config.auth_apikey_value;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
;
|
|
103
|
-
this.winston = (0, winston_1.createLogger)({
|
|
104
|
-
level: config.level.toString().toLowerCase(),
|
|
105
|
-
format: winston_1.format.json(),
|
|
106
|
-
defaultMeta: {},
|
|
107
|
-
transports: [
|
|
108
|
-
new winston_1.transports.Http(httpParams),
|
|
109
|
-
],
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
createLogger(config) {
|
|
113
|
-
return new RestAppender(config, this.winston);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
class RestAppender extends LoggerService_1.Log {
|
|
117
|
-
constructor(config, winston) {
|
|
118
|
-
super(config);
|
|
119
|
-
this.winston = winston;
|
|
120
|
-
}
|
|
121
|
-
writeToLog(level, message, tags) {
|
|
122
|
-
this.winston.log({
|
|
123
|
-
level: level,
|
|
124
|
-
message: message,
|
|
125
|
-
labels: tags
|
|
126
|
-
});
|
|
127
|
-
}
|
|
128
|
-
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|