@push.rocks/smartproxy 18.0.2 → 18.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.
Files changed (53) hide show
  1. package/dist_ts/00_commitinfo_data.js +1 -1
  2. package/dist_ts/certificate/certificate-manager.d.ts +150 -0
  3. package/dist_ts/certificate/certificate-manager.js +505 -0
  4. package/dist_ts/certificate/events/simplified-events.d.ts +56 -0
  5. package/dist_ts/certificate/events/simplified-events.js +13 -0
  6. package/dist_ts/certificate/models/certificate-errors.d.ts +69 -0
  7. package/dist_ts/certificate/models/certificate-errors.js +141 -0
  8. package/dist_ts/certificate/models/certificate-strategy.d.ts +60 -0
  9. package/dist_ts/certificate/models/certificate-strategy.js +73 -0
  10. package/dist_ts/certificate/simplified-certificate-manager.d.ts +150 -0
  11. package/dist_ts/certificate/simplified-certificate-manager.js +501 -0
  12. package/dist_ts/http/index.d.ts +1 -9
  13. package/dist_ts/http/index.js +5 -11
  14. package/dist_ts/plugins.d.ts +3 -1
  15. package/dist_ts/plugins.js +4 -2
  16. package/dist_ts/proxies/network-proxy/network-proxy.js +3 -1
  17. package/dist_ts/proxies/network-proxy/simplified-certificate-bridge.d.ts +48 -0
  18. package/dist_ts/proxies/network-proxy/simplified-certificate-bridge.js +76 -0
  19. package/dist_ts/proxies/network-proxy/websocket-handler.js +41 -4
  20. package/dist_ts/proxies/smart-proxy/cert-store.d.ts +10 -0
  21. package/dist_ts/proxies/smart-proxy/cert-store.js +70 -0
  22. package/dist_ts/proxies/smart-proxy/certificate-manager.d.ts +116 -0
  23. package/dist_ts/proxies/smart-proxy/certificate-manager.js +401 -0
  24. package/dist_ts/proxies/smart-proxy/legacy-smart-proxy.d.ts +168 -0
  25. package/dist_ts/proxies/smart-proxy/legacy-smart-proxy.js +642 -0
  26. package/dist_ts/proxies/smart-proxy/models/route-types.d.ts +26 -0
  27. package/dist_ts/proxies/smart-proxy/models/route-types.js +1 -1
  28. package/dist_ts/proxies/smart-proxy/models/simplified-smartproxy-config.d.ts +65 -0
  29. package/dist_ts/proxies/smart-proxy/models/simplified-smartproxy-config.js +31 -0
  30. package/dist_ts/proxies/smart-proxy/models/smartproxy-options.d.ts +102 -0
  31. package/dist_ts/proxies/smart-proxy/models/smartproxy-options.js +73 -0
  32. package/dist_ts/proxies/smart-proxy/network-proxy-bridge.d.ts +10 -44
  33. package/dist_ts/proxies/smart-proxy/network-proxy-bridge.js +66 -202
  34. package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +4 -0
  35. package/dist_ts/proxies/smart-proxy/route-connection-handler.js +62 -2
  36. package/dist_ts/proxies/smart-proxy/simplified-smart-proxy.d.ts +41 -0
  37. package/dist_ts/proxies/smart-proxy/simplified-smart-proxy.js +132 -0
  38. package/dist_ts/proxies/smart-proxy/smart-proxy.d.ts +18 -13
  39. package/dist_ts/proxies/smart-proxy/smart-proxy.js +79 -196
  40. package/package.json +7 -5
  41. package/readme.md +224 -10
  42. package/readme.plan.md +1405 -617
  43. package/ts/00_commitinfo_data.ts +1 -1
  44. package/ts/http/index.ts +5 -12
  45. package/ts/plugins.ts +4 -1
  46. package/ts/proxies/network-proxy/network-proxy.ts +3 -0
  47. package/ts/proxies/network-proxy/websocket-handler.ts +38 -3
  48. package/ts/proxies/smart-proxy/cert-store.ts +86 -0
  49. package/ts/proxies/smart-proxy/certificate-manager.ts +506 -0
  50. package/ts/proxies/smart-proxy/models/route-types.ts +33 -3
  51. package/ts/proxies/smart-proxy/network-proxy-bridge.ts +86 -239
  52. package/ts/proxies/smart-proxy/route-connection-handler.ts +74 -1
  53. package/ts/proxies/smart-proxy/smart-proxy.ts +105 -222
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Simplified SmartProxy with mandatory certificate provider
3
+ */
4
+ import * as plugins from '../../plugins.js';
5
+ import type { SimplifiedSmartProxyOptions } from './models/simplified-smartproxy-config.js';
6
+ import type { IRouteConfig } from './models/route-types.js';
7
+ /**
8
+ * Simplified SmartProxy implementation
9
+ */
10
+ export declare class SimplifiedSmartProxy extends plugins.EventEmitter {
11
+ private options;
12
+ private networkProxy;
13
+ private certificateManager?;
14
+ private port80Handler?;
15
+ private logger;
16
+ constructor(options: SimplifiedSmartProxyOptions);
17
+ /**
18
+ * Start the proxy
19
+ */
20
+ start(): Promise<void>;
21
+ /**
22
+ * Stop the proxy
23
+ */
24
+ stop(): Promise<void>;
25
+ /**
26
+ * Initialize certificate management
27
+ */
28
+ private initializeCertificateManagement;
29
+ /**
30
+ * Update route configurations dynamically
31
+ */
32
+ updateRoutes(routes: IRouteConfig[]): Promise<void>;
33
+ /**
34
+ * Get listening port
35
+ */
36
+ getPort(): number;
37
+ }
38
+ /**
39
+ * Factory function for creating SimplifiedSmartProxy
40
+ */
41
+ export declare function createSimplifiedSmartProxy(options: SimplifiedSmartProxyOptions): SimplifiedSmartProxy;
@@ -0,0 +1,132 @@
1
+ /**
2
+ * Simplified SmartProxy with mandatory certificate provider
3
+ */
4
+ import * as plugins from '../../plugins.js';
5
+ import { NetworkProxy } from '../network-proxy/network-proxy.js';
6
+ import { SimplifiedCertificateManager } from '../../certificate/simplified-certificate-manager.js';
7
+ import { validateSmartProxyConfig } from './models/simplified-smartproxy-config.js';
8
+ import { Port80Handler } from '../../http/port80/port80-handler.js';
9
+ import { CertificateEvent } from '../../certificate/events/simplified-events.js';
10
+ /**
11
+ * Simplified SmartProxy implementation
12
+ */
13
+ export class SimplifiedSmartProxy extends plugins.EventEmitter {
14
+ constructor(options) {
15
+ super();
16
+ // Validate configuration
17
+ validateSmartProxyConfig(options);
18
+ this.options = options;
19
+ // Simple console logger
20
+ this.logger = {
21
+ info: (...args) => console.log('[INFO]', ...args),
22
+ warn: (...args) => console.warn('[WARN]', ...args),
23
+ error: (...args) => console.error('[ERROR]', ...args)
24
+ };
25
+ // Create NetworkProxy
26
+ this.networkProxy = new NetworkProxy({
27
+ port: options.port || 443,
28
+ logLevel: options.logLevel
29
+ });
30
+ }
31
+ /**
32
+ * Start the proxy
33
+ */
34
+ async start() {
35
+ this.logger.info('Starting SimplifiedSmartProxy...');
36
+ // Initialize certificate management if ACME is enabled
37
+ if (this.options.acme?.enabled !== false) {
38
+ await this.initializeCertificateManagement();
39
+ }
40
+ // Configure routes
41
+ await this.networkProxy.updateRouteConfigs(this.options.routes);
42
+ // Start NetworkProxy
43
+ await this.networkProxy.start();
44
+ this.logger.info(`SimplifiedSmartProxy started on port ${this.options.port || 443}`);
45
+ }
46
+ /**
47
+ * Stop the proxy
48
+ */
49
+ async stop() {
50
+ this.logger.info('Stopping SimplifiedSmartProxy...');
51
+ // Stop certificate manager
52
+ if (this.certificateManager) {
53
+ await this.certificateManager.stop();
54
+ }
55
+ // Stop Port80Handler
56
+ if (this.port80Handler) {
57
+ await this.port80Handler.stop();
58
+ }
59
+ // Stop NetworkProxy
60
+ await this.networkProxy.stop();
61
+ this.logger.info('SimplifiedSmartProxy stopped');
62
+ }
63
+ /**
64
+ * Initialize certificate management
65
+ */
66
+ async initializeCertificateManagement() {
67
+ const acmeConfig = this.options.acme;
68
+ // Create certificate manager
69
+ this.certificateManager = new SimplifiedCertificateManager({
70
+ certProvider: acmeConfig.certProvider,
71
+ acmeEmail: acmeConfig.email,
72
+ acmeServer: acmeConfig.server,
73
+ storageDir: acmeConfig.storageDir,
74
+ renewBeforeDays: acmeConfig.renewBeforeDays
75
+ });
76
+ // Set up event forwarding
77
+ this.certificateManager.on(CertificateEvent.OBTAINED, (event) => {
78
+ this.logger.info(`Certificate ${event.type} for ${event.domain}`);
79
+ this.emit('certificate:obtained', event);
80
+ });
81
+ this.certificateManager.on(CertificateEvent.FAILED, (event) => {
82
+ this.logger.error(`Certificate failed for ${event.domain}: ${event.error.message}`);
83
+ this.emit('certificate:failed', event);
84
+ });
85
+ this.certificateManager.on(CertificateEvent.EXPIRING, (event) => {
86
+ this.logger.warn(`Certificate expiring in ${event.daysRemaining} days for ${event.domain}`);
87
+ this.emit('certificate:expiring', event);
88
+ });
89
+ // Create Port80Handler for HTTP-01 challenges
90
+ this.port80Handler = new Port80Handler({
91
+ port: 80,
92
+ enabled: true,
93
+ accountEmail: acmeConfig.email,
94
+ useProduction: acmeConfig.server === 'production',
95
+ certificateStore: acmeConfig.storageDir
96
+ });
97
+ // Connect certificate manager to Port80Handler
98
+ this.certificateManager.port80Handler = this.port80Handler;
99
+ // Start certificate manager
100
+ await this.certificateManager.start();
101
+ // Start Port80Handler
102
+ await this.port80Handler.start();
103
+ // Connect NetworkProxy to certificate manager
104
+ this.networkProxy.setExternalCertificateManager(this.certificateManager);
105
+ this.logger.info('Certificate management initialized');
106
+ }
107
+ /**
108
+ * Update route configurations dynamically
109
+ */
110
+ async updateRoutes(routes) {
111
+ this.options.routes = routes;
112
+ await this.networkProxy.updateRouteConfigs(routes);
113
+ // Update certificate manager if active
114
+ if (this.certificateManager) {
115
+ // Certificate manager will handle route-based certificates
116
+ await this.certificateManager.updateRoutes?.(routes);
117
+ }
118
+ }
119
+ /**
120
+ * Get listening port
121
+ */
122
+ getPort() {
123
+ return this.networkProxy.getListeningPort();
124
+ }
125
+ }
126
+ /**
127
+ * Factory function for creating SimplifiedSmartProxy
128
+ */
129
+ export function createSimplifiedSmartProxy(options) {
130
+ return new SimplifiedSmartProxy(options);
131
+ }
132
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2ltcGxpZmllZC1zbWFydC1wcm94eS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3RzL3Byb3hpZXMvc21hcnQtcHJveHkvc2ltcGxpZmllZC1zbWFydC1wcm94eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILE9BQU8sS0FBSyxPQUFPLE1BQU0sa0JBQWtCLENBQUM7QUFDNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLHFEQUFxRCxDQUFDO0FBRW5HLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBRXBGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSwrQ0FBK0MsQ0FBQztBQUVqRjs7R0FFRztBQUNILE1BQU0sT0FBTyxvQkFBcUIsU0FBUSxPQUFPLENBQUMsWUFBWTtJQU81RCxZQUFZLE9BQW9DO1FBQzlDLEtBQUssRUFBRSxDQUFDO1FBRVIseUJBQXlCO1FBQ3pCLHdCQUF3QixDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLHdCQUF3QjtRQUN4QixJQUFJLENBQUMsTUFBTSxHQUFHO1lBQ1osSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEdBQUcsSUFBSSxDQUFDO1lBQ3hELElBQUksRUFBRSxDQUFDLEdBQUcsSUFBVyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxHQUFHLElBQUksQ0FBQztZQUN6RCxLQUFLLEVBQUUsQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsR0FB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
@@ -1,5 +1,6 @@
1
1
  import * as plugins from '../../plugins.js';
2
2
  import { RouteManager } from './route-manager.js';
3
+ import { type ICertStatus } from './certificate-manager.js';
3
4
  import type { ISmartProxyOptions } from './models/interfaces.js';
4
5
  import type { IRouteConfig } from './models/route-types.js';
5
6
  /**
@@ -27,8 +28,7 @@ export declare class SmartProxy extends plugins.EventEmitter {
27
28
  routeManager: RouteManager;
28
29
  private routeConnectionHandler;
29
30
  private nftablesManager;
30
- private port80Handler;
31
- private certProvisioner?;
31
+ private certManager;
32
32
  /**
33
33
  * Constructor for SmartProxy
34
34
  *
@@ -66,9 +66,13 @@ export declare class SmartProxy extends plugins.EventEmitter {
66
66
  */
67
67
  settings: ISmartProxyOptions;
68
68
  /**
69
- * Initialize the Port80Handler for ACME certificate management
69
+ * Initialize certificate manager
70
70
  */
71
- private initializePort80Handler;
71
+ private initializeCertificateManager;
72
+ /**
73
+ * Check if we have routes with static certificates
74
+ */
75
+ private hasStaticCertRoutes;
72
76
  /**
73
77
  * Start the proxy server with support for both configuration types
74
78
  */
@@ -113,12 +117,17 @@ export declare class SmartProxy extends plugins.EventEmitter {
113
117
  */
114
118
  updateRoutes(newRoutes: IRouteConfig[]): Promise<void>;
115
119
  /**
116
- * Request a certificate for a specific domain
117
- *
118
- * @param domain The domain to request a certificate for
119
- * @param routeName Optional route name to associate with the certificate
120
+ * Manually provision a certificate for a route
121
+ */
122
+ provisionCertificate(routeName: string): Promise<void>;
123
+ /**
124
+ * Force renewal of a certificate
120
125
  */
121
- requestCertificate(domain: string, routeName?: string): Promise<boolean>;
126
+ renewCertificate(routeName: string): Promise<void>;
127
+ /**
128
+ * Get certificate status for a route
129
+ */
130
+ getCertificateStatus(routeName: string): ICertStatus | undefined;
122
131
  /**
123
132
  * Validates if a domain name is valid for certificate issuance
124
133
  */
@@ -161,8 +170,4 @@ export declare class SmartProxy extends plugins.EventEmitter {
161
170
  * Get NFTables status
162
171
  */
163
172
  getNfTablesStatus(): Promise<Record<string, any>>;
164
- /**
165
- * Get status of certificates managed by Port80Handler
166
- */
167
- getCertificateStatus(): any;
168
173
  }