@push.rocks/smartproxy 5.0.0 → 6.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 (78) hide show
  1. package/dist_ts/00_commitinfo_data.js +1 -1
  2. package/dist_ts/classes.pp.interfaces.d.ts +23 -0
  3. package/dist_ts/classes.pp.networkproxybridge.d.ts +15 -1
  4. package/dist_ts/classes.pp.networkproxybridge.js +116 -21
  5. package/dist_ts/classes.pp.portproxy.d.ts +20 -4
  6. package/dist_ts/classes.pp.portproxy.js +321 -22
  7. package/dist_ts/index.d.ts +6 -6
  8. package/dist_ts/index.js +7 -7
  9. package/dist_ts/networkproxy/classes.np.certificatemanager.d.ts +77 -0
  10. package/dist_ts/networkproxy/classes.np.certificatemanager.js +354 -0
  11. package/dist_ts/networkproxy/classes.np.connectionpool.d.ts +47 -0
  12. package/dist_ts/networkproxy/classes.np.connectionpool.js +210 -0
  13. package/dist_ts/networkproxy/classes.np.networkproxy.d.ts +117 -0
  14. package/dist_ts/networkproxy/classes.np.networkproxy.js +375 -0
  15. package/dist_ts/networkproxy/classes.np.requesthandler.d.ts +51 -0
  16. package/dist_ts/networkproxy/classes.np.requesthandler.js +210 -0
  17. package/dist_ts/networkproxy/classes.np.types.d.ts +82 -0
  18. package/dist_ts/networkproxy/classes.np.types.js +35 -0
  19. package/dist_ts/networkproxy/classes.np.websockethandler.d.ts +38 -0
  20. package/dist_ts/networkproxy/classes.np.websockethandler.js +188 -0
  21. package/dist_ts/networkproxy/index.d.ts +6 -0
  22. package/dist_ts/networkproxy/index.js +8 -0
  23. package/dist_ts/nfttablesproxy/classes.nftablesproxy.d.ts +219 -0
  24. package/dist_ts/nfttablesproxy/classes.nftablesproxy.js +1542 -0
  25. package/dist_ts/port80handler/classes.port80handler.d.ts +260 -0
  26. package/dist_ts/port80handler/classes.port80handler.js +928 -0
  27. package/dist_ts/smartproxy/classes.pp.connectionhandler.d.ts +39 -0
  28. package/dist_ts/smartproxy/classes.pp.connectionhandler.js +754 -0
  29. package/dist_ts/smartproxy/classes.pp.connectionmanager.d.ts +78 -0
  30. package/dist_ts/smartproxy/classes.pp.connectionmanager.js +378 -0
  31. package/dist_ts/smartproxy/classes.pp.domainconfigmanager.d.ts +55 -0
  32. package/dist_ts/smartproxy/classes.pp.domainconfigmanager.js +103 -0
  33. package/dist_ts/smartproxy/classes.pp.interfaces.d.ts +133 -0
  34. package/dist_ts/smartproxy/classes.pp.interfaces.js +2 -0
  35. package/dist_ts/smartproxy/classes.pp.networkproxybridge.d.ts +57 -0
  36. package/dist_ts/smartproxy/classes.pp.networkproxybridge.js +306 -0
  37. package/dist_ts/smartproxy/classes.pp.portrangemanager.d.ts +56 -0
  38. package/dist_ts/smartproxy/classes.pp.portrangemanager.js +179 -0
  39. package/dist_ts/smartproxy/classes.pp.securitymanager.d.ts +47 -0
  40. package/dist_ts/smartproxy/classes.pp.securitymanager.js +126 -0
  41. package/dist_ts/smartproxy/classes.pp.snihandler.d.ts +153 -0
  42. package/dist_ts/smartproxy/classes.pp.snihandler.js +1053 -0
  43. package/dist_ts/smartproxy/classes.pp.timeoutmanager.d.ts +47 -0
  44. package/dist_ts/smartproxy/classes.pp.timeoutmanager.js +154 -0
  45. package/dist_ts/smartproxy/classes.pp.tlsalert.d.ts +149 -0
  46. package/dist_ts/smartproxy/classes.pp.tlsalert.js +225 -0
  47. package/dist_ts/smartproxy/classes.pp.tlsmanager.d.ts +57 -0
  48. package/dist_ts/smartproxy/classes.pp.tlsmanager.js +132 -0
  49. package/dist_ts/smartproxy/classes.smartproxy.d.ts +64 -0
  50. package/dist_ts/smartproxy/classes.smartproxy.js +567 -0
  51. package/package.json +1 -1
  52. package/readme.md +77 -27
  53. package/ts/00_commitinfo_data.ts +1 -1
  54. package/ts/index.ts +6 -6
  55. package/ts/networkproxy/classes.np.certificatemanager.ts +398 -0
  56. package/ts/networkproxy/classes.np.connectionpool.ts +241 -0
  57. package/ts/networkproxy/classes.np.networkproxy.ts +469 -0
  58. package/ts/networkproxy/classes.np.requesthandler.ts +278 -0
  59. package/ts/networkproxy/classes.np.types.ts +123 -0
  60. package/ts/networkproxy/classes.np.websockethandler.ts +226 -0
  61. package/ts/networkproxy/index.ts +7 -0
  62. package/ts/{classes.port80handler.ts → port80handler/classes.port80handler.ts} +249 -1
  63. package/ts/{classes.pp.connectionhandler.ts → smartproxy/classes.pp.connectionhandler.ts} +1 -1
  64. package/ts/{classes.pp.connectionmanager.ts → smartproxy/classes.pp.connectionmanager.ts} +1 -1
  65. package/ts/{classes.pp.domainconfigmanager.ts → smartproxy/classes.pp.domainconfigmanager.ts} +1 -1
  66. package/ts/{classes.pp.interfaces.ts → smartproxy/classes.pp.interfaces.ts} +31 -5
  67. package/ts/{classes.pp.networkproxybridge.ts → smartproxy/classes.pp.networkproxybridge.ts} +129 -28
  68. package/ts/{classes.pp.securitymanager.ts → smartproxy/classes.pp.securitymanager.ts} +1 -1
  69. package/ts/{classes.pp.tlsmanager.ts → smartproxy/classes.pp.tlsmanager.ts} +1 -1
  70. package/ts/smartproxy/classes.smartproxy.ts +679 -0
  71. package/ts/classes.networkproxy.ts +0 -1730
  72. package/ts/classes.pp.acmemanager.ts +0 -149
  73. package/ts/classes.pp.portproxy.ts +0 -344
  74. /package/ts/{classes.nftablesproxy.ts → nfttablesproxy/classes.nftablesproxy.ts} +0 -0
  75. /package/ts/{classes.pp.portrangemanager.ts → smartproxy/classes.pp.portrangemanager.ts} +0 -0
  76. /package/ts/{classes.pp.snihandler.ts → smartproxy/classes.pp.snihandler.ts} +0 -0
  77. /package/ts/{classes.pp.timeoutmanager.ts → smartproxy/classes.pp.timeoutmanager.ts} +0 -0
  78. /package/ts/{classes.pp.tlsalert.ts → smartproxy/classes.pp.tlsalert.ts} +0 -0
@@ -0,0 +1,260 @@
1
+ import * as plugins from '../plugins.js';
2
+ /**
3
+ * Custom error classes for better error handling
4
+ */
5
+ export declare class Port80HandlerError extends Error {
6
+ constructor(message: string);
7
+ }
8
+ export declare class CertificateError extends Port80HandlerError {
9
+ readonly domain: string;
10
+ readonly isRenewal: boolean;
11
+ constructor(message: string, domain: string, isRenewal?: boolean);
12
+ }
13
+ export declare class ServerError extends Port80HandlerError {
14
+ readonly code?: string;
15
+ constructor(message: string, code?: string);
16
+ }
17
+ /**
18
+ * Domain forwarding configuration
19
+ */
20
+ export interface IForwardConfig {
21
+ ip: string;
22
+ port: number;
23
+ }
24
+ /**
25
+ * Domain configuration options
26
+ */
27
+ export interface IDomainOptions {
28
+ domainName: string;
29
+ sslRedirect: boolean;
30
+ acmeMaintenance: boolean;
31
+ forward?: IForwardConfig;
32
+ acmeForward?: IForwardConfig;
33
+ }
34
+ /**
35
+ * Configuration options for the Port80Handler
36
+ */
37
+ interface IPort80HandlerOptions {
38
+ port?: number;
39
+ contactEmail?: string;
40
+ useProduction?: boolean;
41
+ renewThresholdDays?: number;
42
+ httpsRedirectPort?: number;
43
+ renewCheckIntervalHours?: number;
44
+ enabled?: boolean;
45
+ autoRenew?: boolean;
46
+ certificateStore?: string;
47
+ skipConfiguredCerts?: boolean;
48
+ }
49
+ /**
50
+ * Certificate data that can be emitted via events or set from outside
51
+ */
52
+ export interface ICertificateData {
53
+ domain: string;
54
+ certificate: string;
55
+ privateKey: string;
56
+ expiryDate: Date;
57
+ }
58
+ /**
59
+ * Events emitted by the Port80Handler
60
+ */
61
+ export declare enum Port80HandlerEvents {
62
+ CERTIFICATE_ISSUED = "certificate-issued",
63
+ CERTIFICATE_RENEWED = "certificate-renewed",
64
+ CERTIFICATE_FAILED = "certificate-failed",
65
+ CERTIFICATE_EXPIRING = "certificate-expiring",
66
+ MANAGER_STARTED = "manager-started",
67
+ MANAGER_STOPPED = "manager-stopped",
68
+ REQUEST_FORWARDED = "request-forwarded"
69
+ }
70
+ /**
71
+ * Certificate failure payload type
72
+ */
73
+ export interface ICertificateFailure {
74
+ domain: string;
75
+ error: string;
76
+ isRenewal: boolean;
77
+ }
78
+ /**
79
+ * Certificate expiry payload type
80
+ */
81
+ export interface ICertificateExpiring {
82
+ domain: string;
83
+ expiryDate: Date;
84
+ daysRemaining: number;
85
+ }
86
+ /**
87
+ * Port80Handler with ACME certificate management and request forwarding capabilities
88
+ * Now with glob pattern support for domain matching
89
+ */
90
+ export declare class Port80Handler extends plugins.EventEmitter {
91
+ private domainCertificates;
92
+ private server;
93
+ private acmeClient;
94
+ private accountKey;
95
+ private renewalTimer;
96
+ private isShuttingDown;
97
+ private options;
98
+ /**
99
+ * Creates a new Port80Handler
100
+ * @param options Configuration options
101
+ */
102
+ constructor(options?: IPort80HandlerOptions);
103
+ /**
104
+ * Starts the HTTP server for ACME challenges
105
+ */
106
+ start(): Promise<void>;
107
+ /**
108
+ * Stops the HTTP server and renewal timer
109
+ */
110
+ stop(): Promise<void>;
111
+ /**
112
+ * Adds a domain with configuration options
113
+ * @param options Domain configuration options
114
+ */
115
+ addDomain(options: IDomainOptions): void;
116
+ /**
117
+ * Removes a domain from management
118
+ * @param domain The domain to remove
119
+ */
120
+ removeDomain(domain: string): void;
121
+ /**
122
+ * Sets a certificate for a domain directly (for externally obtained certificates)
123
+ * @param domain The domain for the certificate
124
+ * @param certificate The certificate (PEM format)
125
+ * @param privateKey The private key (PEM format)
126
+ * @param expiryDate Optional expiry date
127
+ */
128
+ setCertificate(domain: string, certificate: string, privateKey: string, expiryDate?: Date): void;
129
+ /**
130
+ * Gets the certificate for a domain if it exists
131
+ * @param domain The domain to get the certificate for
132
+ */
133
+ getCertificate(domain: string): ICertificateData | null;
134
+ /**
135
+ * Saves a certificate to the filesystem store
136
+ * @param domain The domain for the certificate
137
+ * @param certificate The certificate (PEM format)
138
+ * @param privateKey The private key (PEM format)
139
+ * @private
140
+ */
141
+ private saveCertificateToStore;
142
+ /**
143
+ * Loads certificates from the certificate store
144
+ * @private
145
+ */
146
+ private loadCertificatesFromStore;
147
+ /**
148
+ * Check if a domain is a glob pattern
149
+ * @param domain Domain to check
150
+ * @returns True if the domain is a glob pattern
151
+ */
152
+ private isGlobPattern;
153
+ /**
154
+ * Get domain info for a specific domain, using glob pattern matching if needed
155
+ * @param requestDomain The actual domain from the request
156
+ * @returns The domain info or null if not found
157
+ */
158
+ private getDomainInfoForRequest;
159
+ /**
160
+ * Check if a domain matches a glob pattern
161
+ * @param domain The domain to check
162
+ * @param pattern The pattern to match against
163
+ * @returns True if the domain matches the pattern
164
+ */
165
+ private domainMatchesPattern;
166
+ /**
167
+ * Lazy initialization of the ACME client
168
+ * @returns An ACME client instance
169
+ */
170
+ private getAcmeClient;
171
+ /**
172
+ * Handles incoming HTTP requests
173
+ * @param req The HTTP request
174
+ * @param res The HTTP response
175
+ */
176
+ private handleRequest;
177
+ /**
178
+ * Forwards an HTTP request to the specified target
179
+ * @param req The original request
180
+ * @param res The response object
181
+ * @param target The forwarding target (IP and port)
182
+ * @param requestType Type of request for logging
183
+ */
184
+ private forwardRequest;
185
+ /**
186
+ * Serves the ACME HTTP-01 challenge response
187
+ * @param req The HTTP request
188
+ * @param res The HTTP response
189
+ * @param domain The domain for the challenge
190
+ */
191
+ private handleAcmeChallenge;
192
+ /**
193
+ * Obtains a certificate for a domain using ACME HTTP-01 challenge
194
+ * @param domain The domain to obtain a certificate for
195
+ * @param isRenewal Whether this is a renewal attempt
196
+ */
197
+ private obtainCertificate;
198
+ /**
199
+ * Process ACME authorizations by verifying and completing challenges
200
+ * @param client ACME client
201
+ * @param domain Domain name
202
+ * @param authorizations Authorizations to process
203
+ */
204
+ private processAuthorizations;
205
+ /**
206
+ * Starts the certificate renewal timer
207
+ */
208
+ private startRenewalTimer;
209
+ /**
210
+ * Checks for certificates that need renewal
211
+ */
212
+ private checkForRenewals;
213
+ /**
214
+ * Extract expiry date from certificate using a more robust approach
215
+ * @param certificate Certificate PEM string
216
+ * @param domain Domain for logging
217
+ * @returns Extracted expiry date or default
218
+ */
219
+ private extractExpiryDateFromCertificate;
220
+ /**
221
+ * Get a default expiry date (90 days from now)
222
+ * @returns Default expiry date
223
+ */
224
+ private getDefaultExpiryDate;
225
+ /**
226
+ * Emits a certificate event with the certificate data
227
+ * @param eventType The event type to emit
228
+ * @param data The certificate data
229
+ */
230
+ private emitCertificateEvent;
231
+ /**
232
+ * Gets all domains and their certificate status
233
+ * @returns Map of domains to certificate status
234
+ */
235
+ getDomainCertificateStatus(): Map<string, {
236
+ certObtained: boolean;
237
+ expiryDate?: Date;
238
+ daysRemaining?: number;
239
+ obtainingInProgress: boolean;
240
+ lastRenewalAttempt?: Date;
241
+ }>;
242
+ /**
243
+ * Gets information about managed domains
244
+ * @returns Array of domain information
245
+ */
246
+ getManagedDomains(): Array<{
247
+ domain: string;
248
+ isGlobPattern: boolean;
249
+ hasCertificate: boolean;
250
+ hasForwarding: boolean;
251
+ sslRedirect: boolean;
252
+ acmeMaintenance: boolean;
253
+ }>;
254
+ /**
255
+ * Gets configuration details
256
+ * @returns Current configuration
257
+ */
258
+ getConfig(): Required<IPort80HandlerOptions>;
259
+ }
260
+ export {};