@haku-sci/utils 2.0.1 → 2.2.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/dist/TCP/restrict-sender.decorator.d.ts +2 -0
- package/dist/TCP/restrict-sender.decorator.js +11 -0
- package/dist/TCP/restrict-sender.decorator.js.map +1 -0
- package/dist/TCP/restrict-sender.interceptor.d.ts +8 -0
- package/dist/TCP/restrict-sender.interceptor.js +46 -0
- package/dist/TCP/restrict-sender.interceptor.js.map +1 -0
- package/dist/TCP/tcp.module.d.ts +2 -0
- package/dist/TCP/tcp.module.js +23 -0
- package/dist/TCP/tcp.module.js.map +1 -0
- package/dist/TCP/tcp.service.d.ts +3 -0
- package/dist/TCP/tcp.service.js +50 -0
- package/dist/TCP/tcp.service.js.map +1 -0
- package/dist/index.d.ts +4 -1
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/microservice/microservice.service.js +1 -1
- package/dist/microservice/microservice.service.js.map +1 -1
- package/dist/microservice/tcp.service.d.ts +1 -3
- package/dist/microservice/tcp.service.js +38 -35
- package/dist/microservice/tcp.service.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export declare const RESTRICT_SENDER_KEY = "restrict_sender";
|
|
2
|
+
export declare function RestrictSender(allowedSenders: string[] | string): <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RESTRICT_SENDER_KEY = void 0;
|
|
4
|
+
exports.RestrictSender = RestrictSender;
|
|
5
|
+
const common_1 = require("@nestjs/common");
|
|
6
|
+
const restrict_sender_interceptor_1 = require("./restrict-sender.interceptor");
|
|
7
|
+
exports.RESTRICT_SENDER_KEY = 'restrict_sender';
|
|
8
|
+
function RestrictSender(allowedSenders) {
|
|
9
|
+
return (0, common_1.applyDecorators)((0, common_1.SetMetadata)(exports.RESTRICT_SENDER_KEY, allowedSenders), (0, common_1.UseInterceptors)(restrict_sender_interceptor_1.RestrictSenderInterceptor));
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=restrict-sender.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restrict-sender.decorator.js","sourceRoot":"","sources":["../../src/TCP/restrict-sender.decorator.ts"],"names":[],"mappings":";;;AAKA,wCAKC;AAVD,2CAA+E;AAC/E,+EAA0E;AAE7D,QAAA,mBAAmB,GAAG,iBAAiB,CAAC;AAErD,SAAgB,cAAc,CAAC,cAAiC;IAC9D,OAAO,IAAA,wBAAe,EACpB,IAAA,oBAAW,EAAC,2BAAmB,EAAE,cAAc,CAAC,EAChD,IAAA,wBAAe,EAAC,uDAAyB,CAAC,CAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
|
|
2
|
+
import { Observable } from 'rxjs';
|
|
3
|
+
import { Reflector } from '@nestjs/core';
|
|
4
|
+
export declare class RestrictSenderInterceptor implements NestInterceptor {
|
|
5
|
+
private reflector;
|
|
6
|
+
constructor(reflector: Reflector);
|
|
7
|
+
intercept(context: ExecutionContext, next: CallHandler): Observable<any>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
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.RestrictSenderInterceptor = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const core_1 = require("@nestjs/core");
|
|
15
|
+
const restrict_sender_decorator_1 = require("./restrict-sender.decorator");
|
|
16
|
+
let RestrictSenderInterceptor = class RestrictSenderInterceptor {
|
|
17
|
+
constructor(reflector) {
|
|
18
|
+
this.reflector = reflector;
|
|
19
|
+
}
|
|
20
|
+
intercept(context, next) {
|
|
21
|
+
const ctx = context.switchToRpc();
|
|
22
|
+
const data = ctx.getData();
|
|
23
|
+
const sender = data?.sender;
|
|
24
|
+
const handler = context.getHandler();
|
|
25
|
+
const target = context.getClass();
|
|
26
|
+
const methodRestriction = this.reflector.get(restrict_sender_decorator_1.RESTRICT_SENDER_KEY, handler);
|
|
27
|
+
const classRestriction = this.reflector.get(restrict_sender_decorator_1.RESTRICT_SENDER_KEY, target);
|
|
28
|
+
if (methodRestriction === '*') {
|
|
29
|
+
return next.handle();
|
|
30
|
+
}
|
|
31
|
+
const allowedSenders = methodRestriction ?? classRestriction ?? [];
|
|
32
|
+
if (allowedSenders === '*') {
|
|
33
|
+
return next.handle();
|
|
34
|
+
}
|
|
35
|
+
if (allowedSenders !== sender && !allowedSenders.includes(sender)) {
|
|
36
|
+
throw new common_1.ForbiddenException(`Sender '${sender}' is not authorized`);
|
|
37
|
+
}
|
|
38
|
+
return next.handle();
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
exports.RestrictSenderInterceptor = RestrictSenderInterceptor;
|
|
42
|
+
exports.RestrictSenderInterceptor = RestrictSenderInterceptor = __decorate([
|
|
43
|
+
(0, common_1.Injectable)(),
|
|
44
|
+
__metadata("design:paramtypes", [core_1.Reflector])
|
|
45
|
+
], RestrictSenderInterceptor);
|
|
46
|
+
//# sourceMappingURL=restrict-sender.interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"restrict-sender.interceptor.js","sourceRoot":"","sources":["../../src/TCP/restrict-sender.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAMwB;AAExB,uCAAyC;AACzC,2EAAkE;AAG3D,IAAM,yBAAyB,GAA/B,MAAM,yBAAyB;IACpC,YAAoB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAE5C,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC;QAE5B,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAElC,MAAM,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAC1C,+CAAmB,EACnB,OAAO,CACR,CAAC;QAEF,MAAM,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CACzC,+CAAmB,EACnB,MAAM,CACP,CAAC;QAGF,IAAI,iBAAiB,KAAK,GAAG,EAAE,CAAC;YAC9B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;QAGD,MAAM,cAAc,GAAqB,iBAAiB,IAAI,gBAAgB,IAAI,EAAE,CAAC;QAErF,IAAI,cAAc,KAAK,GAAG,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;QAED,IAAI,cAAc,KAAG,MAAM,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAChE,MAAM,IAAI,2BAAkB,CAAC,WAAW,MAAM,qBAAqB,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF,CAAA;AAvCY,8DAAyB;oCAAzB,yBAAyB;IADrC,IAAA,mBAAU,GAAE;qCAEoB,gBAAS;GAD7B,yBAAyB,CAuCrC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.TcpModule = void 0;
|
|
10
|
+
const common_1 = require("@nestjs/common");
|
|
11
|
+
const tcp_service_1 = require("./tcp.service");
|
|
12
|
+
const core_1 = require("@nestjs/core");
|
|
13
|
+
const restrict_sender_interceptor_1 = require("./restrict-sender.interceptor");
|
|
14
|
+
let TcpModule = class TcpModule {
|
|
15
|
+
};
|
|
16
|
+
exports.TcpModule = TcpModule;
|
|
17
|
+
exports.TcpModule = TcpModule = __decorate([
|
|
18
|
+
(0, common_1.Module)({
|
|
19
|
+
providers: [tcp_service_1.TCPService, core_1.Reflector, restrict_sender_interceptor_1.RestrictSenderInterceptor],
|
|
20
|
+
exports: [tcp_service_1.TCPService]
|
|
21
|
+
})
|
|
22
|
+
], TcpModule);
|
|
23
|
+
//# sourceMappingURL=tcp.module.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tcp.module.js","sourceRoot":"","sources":["../../src/TCP/tcp.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAwC;AACxC,+CAA2C;AAC3C,uCAAyC;AACzC,+EAA0E;AAMnE,IAAM,SAAS,GAAf,MAAM,SAAS;CAAG,CAAA;AAAZ,8BAAS;oBAAT,SAAS;IAJrB,IAAA,eAAM,EAAC;QACJ,SAAS,EAAC,CAAC,wBAAU,EAAC,gBAAS,EAAE,uDAAyB,CAAC;QAC3D,OAAO,EAAC,CAAC,wBAAU,CAAC;KACvB,CAAC;GACW,SAAS,CAAG"}
|
|
@@ -0,0 +1,50 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.TCPService = void 0;
|
|
10
|
+
const microservices_1 = require("@nestjs/microservices");
|
|
11
|
+
const rxjs_1 = require("rxjs");
|
|
12
|
+
const utils = require("../utils");
|
|
13
|
+
const consul_1 = require("../microservice/consul");
|
|
14
|
+
const common_1 = require("@nestjs/common");
|
|
15
|
+
let TCPService = class TCPService {
|
|
16
|
+
static async sendMessage(service, action, resource, payload) {
|
|
17
|
+
const client = await microservices_1.ClientProxyFactory.create({
|
|
18
|
+
transport: microservices_1.Transport.TCP,
|
|
19
|
+
options: await consul_1.Consul.getServiceURI(service),
|
|
20
|
+
});
|
|
21
|
+
try {
|
|
22
|
+
payload.sender = await utils.microServiceName();
|
|
23
|
+
let response$ = await client.send([resource, action].join("/"), payload).pipe((0, rxjs_1.catchError)(err => {
|
|
24
|
+
const errorPayload = typeof err === 'object' ? err : { message: String(err) };
|
|
25
|
+
return (0, rxjs_1.throwError)(() => new Error(`[${service}] ${errorPayload.message}`));
|
|
26
|
+
}));
|
|
27
|
+
const watchdogTimeout = parseInt(process.env.WATCHDOG);
|
|
28
|
+
if (!isNaN(watchdogTimeout) && watchdogTimeout > 0)
|
|
29
|
+
response$ = response$.pipe((0, rxjs_1.timeout)({ first: watchdogTimeout }));
|
|
30
|
+
response$ = response$.pipe((0, rxjs_1.defaultIfEmpty)(null));
|
|
31
|
+
const result = await (0, rxjs_1.lastValueFrom)(response$);
|
|
32
|
+
if (result?.error)
|
|
33
|
+
throw new Error(`[${service}] ${result.message}`);
|
|
34
|
+
return result;
|
|
35
|
+
}
|
|
36
|
+
finally {
|
|
37
|
+
try {
|
|
38
|
+
await client.close();
|
|
39
|
+
}
|
|
40
|
+
catch (closeError) {
|
|
41
|
+
console.error("Error closing client:", closeError.message);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
exports.TCPService = TCPService;
|
|
47
|
+
exports.TCPService = TCPService = __decorate([
|
|
48
|
+
(0, common_1.Injectable)()
|
|
49
|
+
], TCPService);
|
|
50
|
+
//# sourceMappingURL=tcp.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tcp.service.js","sourceRoot":"","sources":["../../src/TCP/tcp.service.ts"],"names":[],"mappings":";;;;;;;;;AAAA,yDAAmF;AACnF,+BAAsF;AACtF,kCAAiC;AACjC,mDAAgD;AAEhD,2CAA2C;AAGpC,IAAM,UAAU,GAAhB,MAAM,UAAU;IACnB,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,MAAa,EAAC,QAAgB,EAAE,OAAQ;QACtE,MAAM,MAAM,GAAgB,MAAM,kCAAkB,CAAC,MAAM,CAAC;YACxD,SAAS,EAAE,yBAAS,CAAC,GAAG;YACxB,OAAO,EAAE,MAAM,eAAM,CAAC,aAAa,CAAC,OAAO,CAAC;SAC/C,CAAC,CAAC;QACH,IAAI,CAAC;YACD,OAAO,CAAC,MAAM,GAAG,MAAM,KAAK,CAAC,gBAAgB,EAAE,CAAA;YAC/C,IAAI,SAAS,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,CAAC,IAAI,CACxE,IAAA,iBAAU,EAAC,GAAG,CAAC,EAAE;gBAAE,MAAM,YAAY,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjG,OAAO,IAAA,iBAAU,EAAC,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,YAAY,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAAA,CAAC,CAAC,CAChF,CAAC;YACF,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,eAAe,GAAG,CAAC;gBAC9C,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAA,cAAO,EAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC,CAAC;YACpE,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,IAAA,qBAAc,EAAC,IAAI,CAAC,CAAC,CAAC;YACjD,MAAM,MAAM,GAAG,MAAM,IAAA,oBAAa,EAAC,SAAS,CAAC,CAAC;YAC9C,IAAI,MAAM,EAAE,KAAK;gBACb,MAAM,IAAI,KAAK,CAAC,IAAI,OAAO,KAAK,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YACtD,OAAO,MAAM,CAAC;QAClB,CAAC;gBAYO,CAAC;YACL,IAAI,CAAC;gBACD,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACzB,CAAC;YAAC,OAAO,UAAU,EAAE,CAAC;gBAClB,OAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC;IACL,CAAC;CACJ,CAAA;AAxCY,gCAAU;qBAAV,UAAU;IADtB,IAAA,mBAAU,GAAE;GACA,UAAU,CAwCtB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
export * from './microservice/microservice.service';
|
|
2
|
-
export * from './
|
|
2
|
+
export * from './TCP/tcp.service';
|
|
3
|
+
export * from './TCP/tcp.module';
|
|
4
|
+
export * from './TCP/restrict-sender.decorator';
|
|
5
|
+
export * from './TCP/restrict-sender.interceptor';
|
|
3
6
|
export * from './rabbit-mq/rabbit-mq.module';
|
|
4
7
|
export * from './rabbit-mq/rabbit-mq.service';
|
|
5
8
|
export * from './utils';
|
package/dist/index.js
CHANGED
|
@@ -15,7 +15,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./microservice/microservice.service"), exports);
|
|
18
|
-
__exportStar(require("./
|
|
18
|
+
__exportStar(require("./TCP/tcp.service"), exports);
|
|
19
|
+
__exportStar(require("./TCP/tcp.module"), exports);
|
|
20
|
+
__exportStar(require("./TCP/restrict-sender.decorator"), exports);
|
|
21
|
+
__exportStar(require("./TCP/restrict-sender.interceptor"), exports);
|
|
19
22
|
__exportStar(require("./rabbit-mq/rabbit-mq.module"), exports);
|
|
20
23
|
__exportStar(require("./rabbit-mq/rabbit-mq.service"), exports);
|
|
21
24
|
__exportStar(require("./utils"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sEAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sEAAoD;AACpD,oDAAkC;AAClC,mDAAiC;AACjC,kEAAgD;AAChD,oEAAkD;AAClD,+DAA6C;AAC7C,gEAA8C;AAC9C,0CAAwB"}
|
|
@@ -61,7 +61,7 @@ class Microservice {
|
|
|
61
61
|
});
|
|
62
62
|
}
|
|
63
63
|
static async setServerAddress() {
|
|
64
|
-
this.serverAddress.address = Object.values(os.networkInterfaces())
|
|
64
|
+
this.serverAddress.address = process.env.DEBUG ? "127.0.0.1" : Object.values(os.networkInterfaces())
|
|
65
65
|
.flatMap((iface) => iface ?? [])
|
|
66
66
|
.find((addr) => addr.family === 'IPv4' && !addr.internal)
|
|
67
67
|
.address;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"microservice.service.js","sourceRoot":"","sources":["../../src/microservice/microservice.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"microservice.service.js","sourceRoot":"","sources":["../../src/microservice/microservice.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1 @@
|
|
|
1
|
-
export declare
|
|
2
|
-
static sendMessage(service: any, action: string, resource?: string, payload?: any): Promise<any>;
|
|
3
|
-
}
|
|
1
|
+
export declare function RestrictSender(allowedSenders: string[]): <TFunction extends Function, Y>(target: TFunction | object, propertyKey?: string | symbol, descriptor?: TypedPropertyDescriptor<Y>) => void;
|
|
@@ -1,40 +1,43 @@
|
|
|
1
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
|
+
};
|
|
2
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
throw new Error(`[${service}] ${result.message}`);
|
|
27
|
-
return result;
|
|
28
|
-
}
|
|
29
|
-
finally {
|
|
30
|
-
try {
|
|
31
|
-
await client.close();
|
|
32
|
-
}
|
|
33
|
-
catch (closeError) {
|
|
34
|
-
console.error("Error closing client:", closeError.message);
|
|
35
|
-
}
|
|
12
|
+
exports.RestrictSender = RestrictSender;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const core_1 = require("@nestjs/core");
|
|
15
|
+
const RESTRICT_SENDER_KEY = 'restrict_sender';
|
|
16
|
+
function RestrictSender(allowedSenders) {
|
|
17
|
+
return (0, common_1.applyDecorators)((0, common_1.SetMetadata)(RESTRICT_SENDER_KEY, allowedSenders), (0, common_1.UseInterceptors)(RestrictSenderInterceptor));
|
|
18
|
+
}
|
|
19
|
+
let RestrictSenderInterceptor = class RestrictSenderInterceptor {
|
|
20
|
+
constructor(reflector) {
|
|
21
|
+
this.reflector = reflector;
|
|
22
|
+
}
|
|
23
|
+
intercept(context, next) {
|
|
24
|
+
const ctx = context.switchToRpc();
|
|
25
|
+
const data = ctx.getData();
|
|
26
|
+
const handler = context.getHandler();
|
|
27
|
+
const target = context.getClass();
|
|
28
|
+
const allowedSenders = this.reflector.getAllAndOverride(RESTRICT_SENDER_KEY, [
|
|
29
|
+
context.getHandler(),
|
|
30
|
+
context.getClass(),
|
|
31
|
+
]) || [];
|
|
32
|
+
const sender = data?.sender;
|
|
33
|
+
if (!allowedSenders.includes(sender)) {
|
|
34
|
+
throw new common_1.ForbiddenException(`Sender '${sender}' is not authorized`);
|
|
36
35
|
}
|
|
36
|
+
return next.handle();
|
|
37
37
|
}
|
|
38
|
-
}
|
|
39
|
-
|
|
38
|
+
};
|
|
39
|
+
RestrictSenderInterceptor = __decorate([
|
|
40
|
+
(0, common_1.Injectable)(),
|
|
41
|
+
__metadata("design:paramtypes", [core_1.Reflector])
|
|
42
|
+
], RestrictSenderInterceptor);
|
|
40
43
|
//# sourceMappingURL=tcp.service.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tcp.service.js","sourceRoot":"","sources":["../../src/microservice/tcp.service.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tcp.service.js","sourceRoot":"","sources":["../../src/microservice/tcp.service.ts"],"names":[],"mappings":";;;;;;;;;;;AAeA,wCAKC;AApBD,2CASwB;AACxB,uCAAyC;AAGzC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAE9C,SAAgB,cAAc,CAAC,cAAwB;IACrD,OAAO,IAAA,wBAAe,EACpB,IAAA,oBAAW,EAAC,mBAAmB,EAAE,cAAc,CAAC,EAChD,IAAA,wBAAe,EAAC,yBAAyB,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED,IACM,yBAAyB,GAD/B,MACM,yBAAyB;IAC7B,YAAoB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAE5C,SAAS,CAAC,OAAyB,EAAE,IAAiB;QACpD,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAE3B,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QAGlC,MAAM,cAAc,GAClB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAW,mBAAmB,EAAE;YAC9D,OAAO,CAAC,UAAU,EAAE;YACpB,OAAO,CAAC,QAAQ,EAAE;SACnB,CAAC,IAAI,EAAE,CAAC;QAEX,MAAM,MAAM,GAAG,IAAI,EAAE,MAAM,CAAC;QAC5B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,2BAAkB,CAAC,WAAW,MAAM,qBAAqB,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;IACvB,CAAC;CACF,CAAA;AAxBK,yBAAyB;IAD9B,IAAA,mBAAU,GAAE;qCAEoB,gBAAS;GADpC,yBAAyB,CAwB9B"}
|