n8n-nodes-mikrotikos 1.1.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.
@@ -0,0 +1,7 @@
1
+ import { ICredentialType, INodeProperties } from 'n8n-workflow';
2
+ export declare class MikrotikApi implements ICredentialType {
3
+ name: string;
4
+ displayName: string;
5
+ documentationUrl: string;
6
+ properties: INodeProperties[];
7
+ }
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MikrotikApi = void 0;
4
+ class MikrotikApi {
5
+ constructor() {
6
+ this.name = 'mikrotikApiOs';
7
+ this.displayName = 'MikroTik API Os';
8
+ this.documentationUrl = 'https://wiki.mikrotik.com/wiki/Manual:API';
9
+ this.properties = [
10
+ {
11
+ displayName: 'Host',
12
+ name: 'host',
13
+ type: 'string',
14
+ default: '',
15
+ placeholder: '192.168.88.1',
16
+ required: true,
17
+ },
18
+ {
19
+ displayName: 'Port',
20
+ name: 'port',
21
+ type: 'number',
22
+ default: 8728,
23
+ required: true,
24
+ },
25
+ {
26
+ displayName: 'Username',
27
+ name: 'username',
28
+ type: 'string',
29
+ default: 'admin',
30
+ required: true,
31
+ },
32
+ {
33
+ displayName: 'Password',
34
+ name: 'password',
35
+ type: 'string',
36
+ typeOptions: {
37
+ password: true,
38
+ },
39
+ default: '',
40
+ },
41
+ {
42
+ displayName: 'SSL/TLS',
43
+ name: 'tls',
44
+ type: 'boolean',
45
+ default: false,
46
+ description: 'Whether to use a secure connection (usually port 8729)',
47
+ },
48
+ ];
49
+ }
50
+ }
51
+ exports.MikrotikApi = MikrotikApi;
52
+ //# sourceMappingURL=MikrotikApi.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MikrotikApi.credentials.js","sourceRoot":"","sources":["../../credentials/MikrotikApi.credentials.ts"],"names":[],"mappings":";;;AAEA,MAAa,WAAW;IAAxB;QACC,SAAI,GAAG,eAAe,CAAC;QACvB,gBAAW,GAAG,iBAAiB,CAAC;QAChC,qBAAgB,GAAG,2CAA2C,CAAC;QAC/D,eAAU,GAAsB;YAC/B;gBACC,WAAW,EAAE,MAAM;gBACnB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,cAAc;gBAC3B,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,MAAM;gBACnB,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE,IAAI;aACd;YACD;gBACC,WAAW,EAAE,UAAU;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;oBACZ,QAAQ,EAAE,IAAI;iBACd;gBACD,OAAO,EAAE,EAAE;aACX;YACD;gBACC,WAAW,EAAE,SAAS;gBACtB,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,KAAK;gBACd,WAAW,EAAE,wDAAwD;aACrE;SACD,CAAC;IACH,CAAC;CAAA;AA5CD,kCA4CC"}
@@ -0,0 +1,2 @@
1
+ export * from './credentials/MikrotikApi.credentials';
2
+ export * from './nodes/Mikrotik/Mikrotik.node';
package/dist/index.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./credentials/MikrotikApi.credentials"), exports);
18
+ __exportStar(require("./nodes/Mikrotik/Mikrotik.node"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wEAAsD;AACtD,iEAA+C"}
@@ -0,0 +1,5 @@
1
+ import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
+ export declare class Mikrotik implements INodeType {
3
+ description: INodeTypeDescription;
4
+ execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
+ }
@@ -0,0 +1,367 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.Mikrotik = void 0;
13
+ const net = require("net");
14
+ const tls = require("tls");
15
+ class MikrotikClient {
16
+ constructor(options) {
17
+ this.options = options;
18
+ this.socket = null;
19
+ this.connected = false;
20
+ }
21
+ connect() {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ return new Promise((resolve, reject) => {
24
+ const socketOptions = {
25
+ host: this.options.host,
26
+ port: this.options.port,
27
+ };
28
+ if (this.options.tls) {
29
+ this.socket = tls.connect(socketOptions, () => {
30
+ this.authenticate().then(resolve).catch(reject);
31
+ });
32
+ }
33
+ else {
34
+ this.socket = net.connect(socketOptions, () => {
35
+ this.authenticate().then(resolve).catch(reject);
36
+ });
37
+ }
38
+ this.socket.on('error', (err) => {
39
+ reject(err);
40
+ });
41
+ });
42
+ });
43
+ }
44
+ authenticate() {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ yield this.sendSentence([
47
+ '/login',
48
+ `=name=${this.options.user}`,
49
+ `=password=${this.options.password}`,
50
+ ]);
51
+ this.connected = true;
52
+ });
53
+ }
54
+ write(path_1) {
55
+ return __awaiter(this, arguments, void 0, function* (path, params = {}) {
56
+ const sentence = [path];
57
+ for (const [key, value] of Object.entries(params)) {
58
+ sentence.push(`=${key}=${value}`);
59
+ }
60
+ const response = yield this.sendSentence(sentence);
61
+ return this.parseResponse(response);
62
+ });
63
+ }
64
+ sendSentence(sentence) {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ if (!this.socket)
67
+ throw new Error('Not connected');
68
+ for (const word of sentence) {
69
+ this.socket.write(this.encodeLength(word.length));
70
+ this.socket.write(word);
71
+ }
72
+ this.socket.write(Buffer.from([0]));
73
+ return new Promise((resolve, reject) => {
74
+ var _a;
75
+ const result = [];
76
+ let buffer = Buffer.alloc(0);
77
+ const onData = (data) => {
78
+ var _a;
79
+ buffer = Buffer.concat([buffer, data]);
80
+ try {
81
+ while (buffer.length > 0) {
82
+ const { length, bytesRead } = this.decodeLength(buffer);
83
+ if (buffer.length < bytesRead + length)
84
+ break;
85
+ if (length === 0) {
86
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.removeListener('data', onData);
87
+ resolve(result);
88
+ return;
89
+ }
90
+ const word = buffer.slice(bytesRead, bytesRead + length).toString();
91
+ result.push(word);
92
+ buffer = buffer.slice(bytesRead + length);
93
+ }
94
+ }
95
+ catch (e) {
96
+ reject(e);
97
+ }
98
+ };
99
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.on('data', onData);
100
+ });
101
+ });
102
+ }
103
+ encodeLength(len) {
104
+ if (len < 0x80)
105
+ return Buffer.from([len]);
106
+ if (len < 0x4000)
107
+ return Buffer.from([(len >> 8) | 0x80, len & 0xFF]);
108
+ if (len < 0x200000)
109
+ return Buffer.from([(len >> 16) | 0xC0, (len >> 8) & 0xFF, len & 0xFF]);
110
+ throw new Error('Word too long');
111
+ }
112
+ decodeLength(buf) {
113
+ const b1 = buf[0];
114
+ if ((b1 & 0x80) === 0x00)
115
+ return { length: b1, bytesRead: 1 };
116
+ if ((b1 & 0xC0) === 0x80)
117
+ return { length: ((b1 & 0x3F) << 8) | buf[1], bytesRead: 2 };
118
+ if ((b1 & 0xE0) === 0xC0)
119
+ return { length: ((b1 & 0x1F) << 16) | (buf[1] << 8) | buf[2], bytesRead: 3 };
120
+ throw new Error('Invalid length encoding');
121
+ }
122
+ parseResponse(response) {
123
+ const results = [];
124
+ let current = {};
125
+ for (const line of response) {
126
+ if (line.startsWith('!re')) {
127
+ current = {};
128
+ results.push(current);
129
+ }
130
+ else if (line.startsWith('=')) {
131
+ const parts = line.substring(1).split('=');
132
+ if (parts.length >= 2) {
133
+ current[parts[0]] = parts.slice(1).join('=');
134
+ }
135
+ }
136
+ }
137
+ return results;
138
+ }
139
+ close() {
140
+ return __awaiter(this, void 0, void 0, function* () {
141
+ var _a;
142
+ (_a = this.socket) === null || _a === void 0 ? void 0 : _a.destroy();
143
+ this.connected = false;
144
+ });
145
+ }
146
+ }
147
+ class Mikrotik {
148
+ constructor() {
149
+ this.description = {
150
+ displayName: 'MikroTik',
151
+ name: 'mikrotik',
152
+ icon: 'file:mikrotik.svg',
153
+ group: ['transform'],
154
+ version: 1,
155
+ description: 'Manage MikroTik RouterOS via API',
156
+ defaults: {
157
+ name: 'MikroTik',
158
+ },
159
+ inputs: ["main"],
160
+ outputs: ["main"],
161
+ credentials: [
162
+ {
163
+ name: 'mikrotikApi',
164
+ required: true,
165
+ },
166
+ ],
167
+ properties: [
168
+ {
169
+ displayName: 'Resource',
170
+ name: 'resource',
171
+ type: 'options',
172
+ noDataExpression: true,
173
+ options: [
174
+ {
175
+ name: 'Hotspot',
176
+ value: 'hotspot',
177
+ },
178
+ {
179
+ name: 'Command',
180
+ value: 'command',
181
+ },
182
+ ],
183
+ default: 'hotspot',
184
+ },
185
+ {
186
+ displayName: 'Operation',
187
+ name: 'operation',
188
+ type: 'options',
189
+ noDataExpression: true,
190
+ displayOptions: {
191
+ show: {
192
+ resource: ['hotspot'],
193
+ },
194
+ },
195
+ options: [
196
+ {
197
+ name: 'Add User',
198
+ value: 'addUser',
199
+ action: 'Add a hotspot user',
200
+ },
201
+ {
202
+ name: 'Get All Users',
203
+ value: 'getAll',
204
+ action: 'Get all hotspot users',
205
+ },
206
+ {
207
+ name: 'Remove User',
208
+ value: 'removeUser',
209
+ action: 'Remove a hotspot user',
210
+ },
211
+ ],
212
+ default: 'addUser',
213
+ },
214
+ {
215
+ displayName: 'Username',
216
+ name: 'username',
217
+ type: 'string',
218
+ required: true,
219
+ displayOptions: {
220
+ show: {
221
+ resource: ['hotspot'],
222
+ operation: ['addUser', 'removeUser'],
223
+ },
224
+ },
225
+ default: '',
226
+ placeholder: 'user1',
227
+ },
228
+ {
229
+ displayName: 'Password',
230
+ name: 'password',
231
+ type: 'string',
232
+ displayOptions: {
233
+ show: {
234
+ resource: ['hotspot'],
235
+ operation: ['addUser'],
236
+ },
237
+ },
238
+ default: '',
239
+ },
240
+ {
241
+ displayName: 'Profile',
242
+ name: 'profile',
243
+ type: 'string',
244
+ displayOptions: {
245
+ show: {
246
+ resource: ['hotspot'],
247
+ operation: ['addUser'],
248
+ },
249
+ },
250
+ default: 'default',
251
+ },
252
+ {
253
+ displayName: 'Operation',
254
+ name: 'operation',
255
+ type: 'options',
256
+ noDataExpression: true,
257
+ displayOptions: {
258
+ show: {
259
+ resource: ['command'],
260
+ },
261
+ },
262
+ options: [
263
+ {
264
+ name: 'Execute',
265
+ value: 'execute',
266
+ action: 'Execute a command',
267
+ },
268
+ ],
269
+ default: 'execute',
270
+ },
271
+ {
272
+ displayName: 'Command',
273
+ name: 'command',
274
+ type: 'string',
275
+ required: true,
276
+ displayOptions: {
277
+ show: {
278
+ resource: ['command'],
279
+ operation: ['execute'],
280
+ },
281
+ },
282
+ default: '',
283
+ placeholder: '/system/reboot',
284
+ description: 'The command to execute on the router',
285
+ },
286
+ ],
287
+ };
288
+ }
289
+ execute() {
290
+ return __awaiter(this, void 0, void 0, function* () {
291
+ const items = this.getInputData();
292
+ const returnData = [];
293
+ const resource = this.getNodeParameter('resource', 0);
294
+ const operation = this.getNodeParameter('operation', 0);
295
+ const credentials = yield this.getCredentials('mikrotikApi');
296
+ const api = new MikrotikClient({
297
+ host: credentials.host,
298
+ port: credentials.port,
299
+ user: credentials.username,
300
+ password: credentials.password,
301
+ tls: !!credentials.tls,
302
+ });
303
+ try {
304
+ yield api.connect();
305
+ for (let i = 0; i < items.length; i++) {
306
+ try {
307
+ let result;
308
+ if (resource === 'hotspot') {
309
+ if (operation === 'addUser') {
310
+ const username = this.getNodeParameter('username', i);
311
+ const password = this.getNodeParameter('password', i);
312
+ const profile = this.getNodeParameter('profile', i);
313
+ result = yield api.write('/ip/hotspot/user/add', {
314
+ name: username,
315
+ password: password,
316
+ profile: profile,
317
+ });
318
+ }
319
+ else if (operation === 'getAll') {
320
+ result = yield api.write('/ip/hotspot/user/print');
321
+ }
322
+ else if (operation === 'removeUser') {
323
+ const username = this.getNodeParameter('username', i);
324
+ const users = yield api.write('/ip/hotspot/user/print', {
325
+ 'name': username,
326
+ });
327
+ if (users.length > 0) {
328
+ result = yield api.write('/ip/hotspot/user/remove', {
329
+ '.id': users[0]['.id'],
330
+ });
331
+ }
332
+ else {
333
+ result = { message: 'User not found' };
334
+ }
335
+ }
336
+ }
337
+ else if (resource === 'command') {
338
+ if (operation === 'execute') {
339
+ const command = this.getNodeParameter('command', i);
340
+ result = yield api.write(command);
341
+ }
342
+ }
343
+ returnData.push({
344
+ json: {
345
+ result,
346
+ },
347
+ });
348
+ }
349
+ catch (error) {
350
+ if (this.continueOnFail()) {
351
+ returnData.push({ json: { error: error.message } });
352
+ continue;
353
+ }
354
+ throw error;
355
+ }
356
+ }
357
+ yield api.close();
358
+ }
359
+ catch (error) {
360
+ throw error;
361
+ }
362
+ return [returnData];
363
+ });
364
+ }
365
+ }
366
+ exports.Mikrotik = Mikrotik;
367
+ //# sourceMappingURL=Mikrotik.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mikrotik.node.js","sourceRoot":"","sources":["../../../nodes/Mikrotik/Mikrotik.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="#3B82F6" d="M480 160H32c-17.67 0-32 14.33-32 32v128c0 17.67 14.33 32 32 32h448c17.67 0 32-14.33 32-32V192c0-17.67-14.33-32-32-32zm-352 128c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32zm128 0c-17.67 0-32-14.33-32-32s14.33-32 32-32 32 14.33 32 32-14.33 32-32 32z"/></svg>
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "n8n-nodes-mikrotikos",
3
+ "version": "1.1.0",
4
+ "description": "n8n node for MikroTik RouterOS (v6 & v7)",
5
+ "keywords": [
6
+ "n8n-community-node",
7
+ "mikrotikOs",
8
+ "routeros"
9
+ ],
10
+ "license": "MIT",
11
+ "author": {
12
+ "name": "Paijo Ojiap"
13
+ },
14
+ "main": "dist/index.js",
15
+ "types": "dist/index.d.ts",
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "n8n": {
20
+ "nodes": [
21
+ "dist/nodes/Mikrotik/Mikrotik.node.js"
22
+ ],
23
+ "credentials": [
24
+ "dist/credentials/MikrotikApi.credentials.js"
25
+ ]
26
+ },
27
+ "scripts": {
28
+ "build": "tsc && gulp build:icons",
29
+ "prepublishOnly": "npm run build"
30
+ },
31
+ "devDependencies": {
32
+ "@types/node": "^18.11.9",
33
+ "gulp": "^4.0.2",
34
+ "n8n-workflow": "~1.60.0",
35
+ "typescript": "^5.2.2"
36
+ },
37
+ "dependencies": {
38
+ "n8n-nodes-mikrotik": "^1.0.0"
39
+ }
40
+ }