@push.rocks/smartproxy 3.41.8 → 4.0.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 (43) hide show
  1. package/dist_ts/00_commitinfo_data.js +2 -2
  2. package/dist_ts/classes.pp.acmemanager.d.ts +34 -0
  3. package/dist_ts/classes.pp.acmemanager.js +123 -0
  4. package/dist_ts/classes.pp.connectionhandler.d.ts +39 -0
  5. package/dist_ts/classes.pp.connectionhandler.js +693 -0
  6. package/dist_ts/classes.pp.connectionmanager.d.ts +78 -0
  7. package/dist_ts/classes.pp.connectionmanager.js +378 -0
  8. package/dist_ts/classes.pp.domainconfigmanager.d.ts +55 -0
  9. package/dist_ts/classes.pp.domainconfigmanager.js +103 -0
  10. package/dist_ts/classes.pp.interfaces.d.ts +109 -0
  11. package/dist_ts/classes.pp.interfaces.js +2 -0
  12. package/dist_ts/classes.pp.networkproxybridge.d.ts +43 -0
  13. package/dist_ts/classes.pp.networkproxybridge.js +211 -0
  14. package/dist_ts/classes.pp.portproxy.d.ts +48 -0
  15. package/dist_ts/classes.pp.portproxy.js +268 -0
  16. package/dist_ts/classes.pp.portrangemanager.d.ts +56 -0
  17. package/dist_ts/classes.pp.portrangemanager.js +179 -0
  18. package/dist_ts/classes.pp.securitymanager.d.ts +47 -0
  19. package/dist_ts/classes.pp.securitymanager.js +126 -0
  20. package/dist_ts/classes.pp.snihandler.d.ts +160 -0
  21. package/dist_ts/classes.pp.snihandler.js +1073 -0
  22. package/dist_ts/classes.pp.timeoutmanager.d.ts +47 -0
  23. package/dist_ts/classes.pp.timeoutmanager.js +154 -0
  24. package/dist_ts/classes.pp.tlsmanager.d.ts +57 -0
  25. package/dist_ts/classes.pp.tlsmanager.js +132 -0
  26. package/dist_ts/index.d.ts +2 -2
  27. package/dist_ts/index.js +3 -3
  28. package/package.json +1 -1
  29. package/ts/00_commitinfo_data.ts +1 -1
  30. package/ts/classes.pp.acmemanager.ts +149 -0
  31. package/ts/classes.pp.connectionhandler.ts +982 -0
  32. package/ts/classes.pp.connectionmanager.ts +446 -0
  33. package/ts/classes.pp.domainconfigmanager.ts +123 -0
  34. package/ts/classes.pp.interfaces.ts +136 -0
  35. package/ts/classes.pp.networkproxybridge.ts +258 -0
  36. package/ts/classes.pp.portproxy.ts +344 -0
  37. package/ts/classes.pp.portrangemanager.ts +214 -0
  38. package/ts/classes.pp.securitymanager.ts +147 -0
  39. package/ts/{classes.snihandler.ts → classes.pp.snihandler.ts} +2 -169
  40. package/ts/classes.pp.timeoutmanager.ts +190 -0
  41. package/ts/classes.pp.tlsmanager.ts +206 -0
  42. package/ts/index.ts +2 -2
  43. package/ts/classes.portproxy.ts +0 -2503
@@ -3,7 +3,7 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartproxy',
6
- version: '3.41.8',
6
+ version: '4.0.0',
7
7
  description: 'A powerful proxy package that effectively handles high traffic, with features such as SSL/TLS support, port proxying, WebSocket handling, dynamic routing with authentication options, and automatic ACME certificate management.'
8
8
  };
9
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLG1PQUFtTztDQUNqUCxDQUFBIn0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSx3QkFBd0I7SUFDOUIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLG1PQUFtTztDQUNqUCxDQUFBIn0=
@@ -0,0 +1,34 @@
1
+ import type { IPortProxySettings } from './classes.pp.interfaces.js';
2
+ import { NetworkProxyBridge } from './classes.pp.networkproxybridge.js';
3
+ /**
4
+ * Manages ACME certificate operations
5
+ */
6
+ export declare class AcmeManager {
7
+ private settings;
8
+ private networkProxyBridge;
9
+ constructor(settings: IPortProxySettings, networkProxyBridge: NetworkProxyBridge);
10
+ /**
11
+ * Get current ACME settings
12
+ */
13
+ getAcmeSettings(): IPortProxySettings['acme'];
14
+ /**
15
+ * Check if ACME is enabled
16
+ */
17
+ isAcmeEnabled(): boolean;
18
+ /**
19
+ * Update ACME certificate settings
20
+ */
21
+ updateAcmeSettings(acmeSettings: IPortProxySettings['acme']): Promise<void>;
22
+ /**
23
+ * Request a certificate for a specific domain
24
+ */
25
+ requestCertificate(domain: string): Promise<boolean>;
26
+ /**
27
+ * Basic domain validation
28
+ */
29
+ private isValidDomain;
30
+ /**
31
+ * Get eligible domains for ACME certificates
32
+ */
33
+ getEligibleDomains(): string[];
34
+ }
@@ -0,0 +1,123 @@
1
+ import { NetworkProxyBridge } from './classes.pp.networkproxybridge.js';
2
+ /**
3
+ * Manages ACME certificate operations
4
+ */
5
+ export class AcmeManager {
6
+ constructor(settings, networkProxyBridge) {
7
+ this.settings = settings;
8
+ this.networkProxyBridge = networkProxyBridge;
9
+ }
10
+ /**
11
+ * Get current ACME settings
12
+ */
13
+ getAcmeSettings() {
14
+ return this.settings.acme;
15
+ }
16
+ /**
17
+ * Check if ACME is enabled
18
+ */
19
+ isAcmeEnabled() {
20
+ return !!this.settings.acme?.enabled;
21
+ }
22
+ /**
23
+ * Update ACME certificate settings
24
+ */
25
+ async updateAcmeSettings(acmeSettings) {
26
+ console.log('Updating ACME certificate settings');
27
+ // Check if enabled state is changing
28
+ const enabledChanging = this.settings.acme?.enabled !== acmeSettings.enabled;
29
+ // Update settings
30
+ this.settings.acme = {
31
+ ...this.settings.acme,
32
+ ...acmeSettings,
33
+ };
34
+ // Get NetworkProxy instance
35
+ const networkProxy = this.networkProxyBridge.getNetworkProxy();
36
+ if (!networkProxy) {
37
+ console.log('Cannot update ACME settings - NetworkProxy not initialized');
38
+ return;
39
+ }
40
+ try {
41
+ // If enabled state changed, we need to restart NetworkProxy
42
+ if (enabledChanging) {
43
+ console.log(`ACME enabled state changed to: ${acmeSettings.enabled}`);
44
+ // Stop the current NetworkProxy
45
+ await this.networkProxyBridge.stop();
46
+ // Reinitialize with new settings
47
+ await this.networkProxyBridge.initialize();
48
+ // Start NetworkProxy with new settings
49
+ await this.networkProxyBridge.start();
50
+ }
51
+ else {
52
+ // Just update the settings in the existing NetworkProxy
53
+ console.log('Updating ACME settings in NetworkProxy without restart');
54
+ // Update settings in NetworkProxy
55
+ if (networkProxy.options && networkProxy.options.acme) {
56
+ networkProxy.options.acme = { ...this.settings.acme };
57
+ // For certificate renewals, we might want to trigger checks with the new settings
58
+ if (acmeSettings.renewThresholdDays !== undefined) {
59
+ console.log(`Setting new renewal threshold to ${acmeSettings.renewThresholdDays} days`);
60
+ networkProxy.options.acme.renewThresholdDays = acmeSettings.renewThresholdDays;
61
+ }
62
+ // Update other settings that might affect certificate operations
63
+ if (acmeSettings.useProduction !== undefined) {
64
+ console.log(`Setting ACME to ${acmeSettings.useProduction ? 'production' : 'staging'} mode`);
65
+ }
66
+ if (acmeSettings.autoRenew !== undefined) {
67
+ console.log(`Setting auto-renewal to ${acmeSettings.autoRenew ? 'enabled' : 'disabled'}`);
68
+ }
69
+ }
70
+ }
71
+ }
72
+ catch (err) {
73
+ console.log(`Error updating ACME settings: ${err}`);
74
+ }
75
+ }
76
+ /**
77
+ * Request a certificate for a specific domain
78
+ */
79
+ async requestCertificate(domain) {
80
+ // Validate domain format
81
+ if (!this.isValidDomain(domain)) {
82
+ console.log(`Invalid domain format: ${domain}`);
83
+ return false;
84
+ }
85
+ // Delegate to NetworkProxyManager
86
+ return this.networkProxyBridge.requestCertificate(domain);
87
+ }
88
+ /**
89
+ * Basic domain validation
90
+ */
91
+ isValidDomain(domain) {
92
+ // Very basic domain validation
93
+ if (!domain || domain.length === 0) {
94
+ return false;
95
+ }
96
+ // Check for wildcard domains (they can't get ACME certs)
97
+ if (domain.includes('*')) {
98
+ console.log(`Wildcard domains like "${domain}" are not supported for ACME certificates`);
99
+ return false;
100
+ }
101
+ // Check if domain has at least one dot and no invalid characters
102
+ const validDomainRegex = /^[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(\.[a-zA-Z0-9]([a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;
103
+ if (!validDomainRegex.test(domain)) {
104
+ console.log(`Domain "${domain}" has invalid format`);
105
+ return false;
106
+ }
107
+ return true;
108
+ }
109
+ /**
110
+ * Get eligible domains for ACME certificates
111
+ */
112
+ getEligibleDomains() {
113
+ // Collect all eligible domains from domain configs
114
+ const domains = [];
115
+ for (const config of this.settings.domainConfigs) {
116
+ // Skip domains that can't be used with ACME
117
+ const eligibleDomains = config.domains.filter(domain => !domain.includes('*') && this.isValidDomain(domain));
118
+ domains.push(...eligibleDomains);
119
+ }
120
+ return domains;
121
+ }
122
+ }
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3Nlcy5wcC5hY21lbWFuYWdlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2NsYXNzZXMucHAuYWNtZW1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFFeEU7O0dBRUc7QUFDSCxNQUFNLE9BQU8sV0FBVztJQUN0QixZQUNVLFFBQTRCLEVBQzVCLGtCQUFzQztRQUR0QyxhQUFRLEdBQVIsUUFBUSxDQUFvQjtRQUM1Qix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO0lBQzdDLENBQUM7SUFFSjs7T0FFRztJQUNJLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUM1QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxhQUFhO1FBQ2xCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQztJQUN2QyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsWUFBd0M7UUFDdEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO1FBRWxELHFDQUFxQztRQUNyQyxNQUFNLGVBQWUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLEtBQUssWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUU3RSxrQkFBa0I7UUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEdBQUc7WUFDbkIsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDckIsR0FBRyxZQUFZO1NBQ2hCLENBQUM7UUFFRiw0QkFBNEI7UUFDNUIsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGVBQWUsRUFBRSxDQUFDO1FBRS9ELElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLDREQUE0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
@@ -0,0 +1,39 @@
1
+ import * as plugins from './plugins.js';
2
+ import type { IPortProxySettings } from './classes.pp.interfaces.js';
3
+ import { ConnectionManager } from './classes.pp.connectionmanager.js';
4
+ import { SecurityManager } from './classes.pp.securitymanager.js';
5
+ import { DomainConfigManager } from './classes.pp.domainconfigmanager.js';
6
+ import { TlsManager } from './classes.pp.tlsmanager.js';
7
+ import { NetworkProxyBridge } from './classes.pp.networkproxybridge.js';
8
+ import { TimeoutManager } from './classes.pp.timeoutmanager.js';
9
+ import { PortRangeManager } from './classes.pp.portrangemanager.js';
10
+ /**
11
+ * Handles new connection processing and setup logic
12
+ */
13
+ export declare class ConnectionHandler {
14
+ private settings;
15
+ private connectionManager;
16
+ private securityManager;
17
+ private domainConfigManager;
18
+ private tlsManager;
19
+ private networkProxyBridge;
20
+ private timeoutManager;
21
+ private portRangeManager;
22
+ constructor(settings: IPortProxySettings, connectionManager: ConnectionManager, securityManager: SecurityManager, domainConfigManager: DomainConfigManager, tlsManager: TlsManager, networkProxyBridge: NetworkProxyBridge, timeoutManager: TimeoutManager, portRangeManager: PortRangeManager);
23
+ /**
24
+ * Handle a new incoming connection
25
+ */
26
+ handleConnection(socket: plugins.net.Socket): void;
27
+ /**
28
+ * Handle a connection that should be forwarded to NetworkProxy
29
+ */
30
+ private handleNetworkProxyConnection;
31
+ /**
32
+ * Handle a standard (non-NetworkProxy) connection
33
+ */
34
+ private handleStandardConnection;
35
+ /**
36
+ * Sets up a direct connection to the target
37
+ */
38
+ private setupDirectConnection;
39
+ }