@push.rocks/smartproxy 19.3.2 → 19.3.3

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 (313) hide show
  1. package/dist_ts/00_commitinfo_data.js +1 -1
  2. package/dist_ts/forwarding/factory/forwarding-factory.js +29 -1
  3. package/dist_ts/http/index.d.ts +1 -3
  4. package/dist_ts/http/index.js +4 -10
  5. package/dist_ts/http/models/http-types.d.ts +4 -91
  6. package/dist_ts/http/models/http-types.js +5 -60
  7. package/dist_ts/http/router/proxy-router.d.ts +1 -1
  8. package/dist_ts/http/router/route-router.d.ts +1 -1
  9. package/dist_ts/index.d.ts +9 -7
  10. package/dist_ts/index.js +10 -7
  11. package/dist_ts/proxies/{network-proxy → http-proxy}/certificate-manager.d.ts +2 -2
  12. package/dist_ts/proxies/{network-proxy → http-proxy}/certificate-manager.js +1 -1
  13. package/dist_ts/proxies/{network-proxy → http-proxy}/connection-pool.d.ts +2 -2
  14. package/dist_ts/proxies/http-proxy/connection-pool.js +210 -0
  15. package/dist_ts/proxies/http-proxy/context-creator.js +108 -0
  16. package/dist_ts/proxies/{network-proxy → http-proxy}/function-cache.js +1 -1
  17. package/dist_ts/proxies/http-proxy/handlers/index.d.ts +5 -0
  18. package/dist_ts/proxies/http-proxy/handlers/index.js +6 -0
  19. package/dist_ts/proxies/http-proxy/handlers/redirect-handler.d.ts +18 -0
  20. package/dist_ts/proxies/http-proxy/handlers/redirect-handler.js +78 -0
  21. package/dist_ts/proxies/http-proxy/handlers/static-handler.d.ts +19 -0
  22. package/dist_ts/proxies/http-proxy/handlers/static-handler.js +203 -0
  23. package/dist_ts/proxies/{network-proxy/network-proxy.d.ts → http-proxy/http-proxy.d.ts} +10 -9
  24. package/dist_ts/proxies/{network-proxy/network-proxy.js → http-proxy/http-proxy.js} +13 -12
  25. package/dist_ts/proxies/{network-proxy → http-proxy}/http-request-handler.js +1 -1
  26. package/dist_ts/proxies/http-proxy/http2-request-handler.js +201 -0
  27. package/dist_ts/proxies/{network-proxy → http-proxy}/index.d.ts +2 -2
  28. package/dist_ts/proxies/http-proxy/index.js +12 -0
  29. package/dist_ts/proxies/http-proxy/models/http-types.d.ts +119 -0
  30. package/dist_ts/proxies/http-proxy/models/http-types.js +112 -0
  31. package/dist_ts/proxies/http-proxy/models/index.d.ts +5 -0
  32. package/dist_ts/proxies/http-proxy/models/index.js +6 -0
  33. package/dist_ts/proxies/{network-proxy → http-proxy}/models/types.d.ts +2 -2
  34. package/dist_ts/proxies/http-proxy/models/types.js +276 -0
  35. package/dist_ts/proxies/{network-proxy → http-proxy}/request-handler.d.ts +3 -3
  36. package/dist_ts/proxies/{network-proxy → http-proxy}/request-handler.js +2 -2
  37. package/dist_ts/proxies/http-proxy/security-manager.js +255 -0
  38. package/dist_ts/proxies/{network-proxy → http-proxy}/websocket-handler.d.ts +3 -3
  39. package/dist_ts/proxies/{network-proxy → http-proxy}/websocket-handler.js +2 -2
  40. package/dist_ts/proxies/index.d.ts +5 -5
  41. package/dist_ts/proxies/index.js +5 -5
  42. package/dist_ts/proxies/smart-proxy/certificate-manager.d.ts +4 -4
  43. package/dist_ts/proxies/smart-proxy/certificate-manager.js +11 -11
  44. package/dist_ts/proxies/smart-proxy/http-proxy-bridge.d.ts +41 -0
  45. package/dist_ts/proxies/smart-proxy/http-proxy-bridge.js +121 -0
  46. package/dist_ts/proxies/smart-proxy/index.d.ts +2 -1
  47. package/dist_ts/proxies/smart-proxy/index.js +4 -2
  48. package/dist_ts/proxies/smart-proxy/models/interfaces.d.ts +2 -2
  49. package/dist_ts/proxies/smart-proxy/port-manager.js +3 -3
  50. package/dist_ts/proxies/smart-proxy/route-connection-handler.d.ts +3 -3
  51. package/dist_ts/proxies/smart-proxy/route-connection-handler.js +24 -265
  52. package/dist_ts/proxies/smart-proxy/smart-proxy.d.ts +1 -1
  53. package/dist_ts/proxies/smart-proxy/smart-proxy.js +25 -25
  54. package/dist_ts/routing/index.d.ts +5 -0
  55. package/dist_ts/routing/index.js +8 -0
  56. package/dist_ts/routing/models/http-types.d.ts +6 -0
  57. package/dist_ts/routing/models/http-types.js +7 -0
  58. package/dist_ts/routing/router/index.d.ts +8 -0
  59. package/dist_ts/routing/router/index.js +7 -0
  60. package/dist_ts/{classes.router.d.ts → routing/router/proxy-router.d.ts} +14 -11
  61. package/dist_ts/{classes.router.js → routing/router/proxy-router.js} +2 -2
  62. package/dist_ts/routing/router/route-router.d.ts +108 -0
  63. package/dist_ts/routing/router/route-router.js +393 -0
  64. package/package.json +1 -1
  65. package/readme.md +12 -12
  66. package/readme.plan.md +152 -257
  67. package/ts/00_commitinfo_data.ts +1 -1
  68. package/ts/forwarding/factory/forwarding-factory.ts +28 -0
  69. package/ts/index.ts +13 -9
  70. package/ts/proxies/{network-proxy → http-proxy}/certificate-manager.ts +2 -2
  71. package/ts/proxies/{network-proxy → http-proxy}/connection-pool.ts +2 -2
  72. package/ts/proxies/http-proxy/handlers/index.ts +6 -0
  73. package/ts/proxies/http-proxy/handlers/redirect-handler.ts +105 -0
  74. package/ts/proxies/http-proxy/handlers/static-handler.ts +251 -0
  75. package/ts/proxies/{network-proxy/network-proxy.ts → http-proxy/http-proxy.ts} +15 -14
  76. package/ts/proxies/{network-proxy → http-proxy}/index.ts +3 -3
  77. package/ts/proxies/http-proxy/models/http-types.ts +165 -0
  78. package/ts/proxies/http-proxy/models/index.ts +5 -0
  79. package/ts/proxies/{network-proxy → http-proxy}/models/types.ts +2 -2
  80. package/ts/proxies/{network-proxy → http-proxy}/request-handler.ts +3 -3
  81. package/ts/proxies/{network-proxy → http-proxy}/websocket-handler.ts +3 -3
  82. package/ts/proxies/index.ts +7 -7
  83. package/ts/proxies/smart-proxy/certificate-manager.ts +10 -10
  84. package/ts/proxies/smart-proxy/{network-proxy-bridge.ts → http-proxy-bridge.ts} +44 -44
  85. package/ts/proxies/smart-proxy/index.ts +4 -1
  86. package/ts/proxies/smart-proxy/models/interfaces.ts +3 -3
  87. package/ts/proxies/smart-proxy/port-manager.ts +2 -2
  88. package/ts/proxies/smart-proxy/route-connection-handler.ts +23 -307
  89. package/ts/proxies/smart-proxy/smart-proxy.ts +25 -25
  90. package/ts/routing/index.ts +9 -0
  91. package/ts/routing/models/http-types.ts +6 -0
  92. package/ts/{http → routing}/router/proxy-router.ts +1 -1
  93. package/ts/{http → routing}/router/route-router.ts +1 -1
  94. package/dist_ts/certificate/acme/acme-factory.d.ts +0 -17
  95. package/dist_ts/certificate/acme/acme-factory.js +0 -40
  96. package/dist_ts/certificate/acme/challenge-handler.d.ts +0 -44
  97. package/dist_ts/certificate/acme/challenge-handler.js +0 -92
  98. package/dist_ts/certificate/acme/index.d.ts +0 -4
  99. package/dist_ts/certificate/acme/index.js +0 -5
  100. package/dist_ts/certificate/certificate-manager.d.ts +0 -150
  101. package/dist_ts/certificate/certificate-manager.js +0 -505
  102. package/dist_ts/certificate/events/certificate-events.d.ts +0 -33
  103. package/dist_ts/certificate/events/certificate-events.js +0 -38
  104. package/dist_ts/certificate/events/simplified-events.d.ts +0 -56
  105. package/dist_ts/certificate/events/simplified-events.js +0 -13
  106. package/dist_ts/certificate/index.d.ts +0 -30
  107. package/dist_ts/certificate/index.js +0 -37
  108. package/dist_ts/certificate/models/certificate-errors.d.ts +0 -69
  109. package/dist_ts/certificate/models/certificate-errors.js +0 -141
  110. package/dist_ts/certificate/models/certificate-strategy.d.ts +0 -60
  111. package/dist_ts/certificate/models/certificate-strategy.js +0 -73
  112. package/dist_ts/certificate/models/certificate-types.d.ts +0 -97
  113. package/dist_ts/certificate/models/certificate-types.js +0 -2
  114. package/dist_ts/certificate/providers/cert-provisioner.d.ts +0 -119
  115. package/dist_ts/certificate/providers/cert-provisioner.js +0 -422
  116. package/dist_ts/certificate/providers/index.d.ts +0 -4
  117. package/dist_ts/certificate/providers/index.js +0 -5
  118. package/dist_ts/certificate/simplified-certificate-manager.d.ts +0 -150
  119. package/dist_ts/certificate/simplified-certificate-manager.js +0 -501
  120. package/dist_ts/certificate/storage/file-storage.d.ts +0 -66
  121. package/dist_ts/certificate/storage/file-storage.js +0 -194
  122. package/dist_ts/certificate/storage/index.d.ts +0 -4
  123. package/dist_ts/certificate/storage/index.js +0 -5
  124. package/dist_ts/certificate/utils/certificate-helpers.d.ts +0 -17
  125. package/dist_ts/certificate/utils/certificate-helpers.js +0 -45
  126. package/dist_ts/classes.iptablesproxy.d.ts +0 -112
  127. package/dist_ts/classes.iptablesproxy.js +0 -765
  128. package/dist_ts/classes.networkproxy.d.ts +0 -243
  129. package/dist_ts/classes.networkproxy.js +0 -1424
  130. package/dist_ts/classes.nftablesproxy.d.ts +0 -219
  131. package/dist_ts/classes.nftablesproxy.js +0 -1542
  132. package/dist_ts/classes.port80handler.d.ts +0 -215
  133. package/dist_ts/classes.port80handler.js +0 -736
  134. package/dist_ts/classes.portproxy.d.ts +0 -171
  135. package/dist_ts/classes.portproxy.js +0 -1802
  136. package/dist_ts/classes.pp.acmemanager.d.ts +0 -34
  137. package/dist_ts/classes.pp.acmemanager.js +0 -123
  138. package/dist_ts/classes.pp.connectionhandler.d.ts +0 -39
  139. package/dist_ts/classes.pp.connectionhandler.js +0 -754
  140. package/dist_ts/classes.pp.connectionmanager.d.ts +0 -78
  141. package/dist_ts/classes.pp.connectionmanager.js +0 -378
  142. package/dist_ts/classes.pp.domainconfigmanager.d.ts +0 -55
  143. package/dist_ts/classes.pp.domainconfigmanager.js +0 -103
  144. package/dist_ts/classes.pp.interfaces.d.ts +0 -133
  145. package/dist_ts/classes.pp.interfaces.js +0 -2
  146. package/dist_ts/classes.pp.networkproxybridge.d.ts +0 -57
  147. package/dist_ts/classes.pp.networkproxybridge.js +0 -306
  148. package/dist_ts/classes.pp.portproxy.d.ts +0 -64
  149. package/dist_ts/classes.pp.portproxy.js +0 -567
  150. package/dist_ts/classes.pp.portrangemanager.d.ts +0 -56
  151. package/dist_ts/classes.pp.portrangemanager.js +0 -179
  152. package/dist_ts/classes.pp.securitymanager.d.ts +0 -47
  153. package/dist_ts/classes.pp.securitymanager.js +0 -126
  154. package/dist_ts/classes.pp.snihandler.d.ts +0 -153
  155. package/dist_ts/classes.pp.snihandler.js +0 -1053
  156. package/dist_ts/classes.pp.timeoutmanager.d.ts +0 -47
  157. package/dist_ts/classes.pp.timeoutmanager.js +0 -154
  158. package/dist_ts/classes.pp.tlsalert.d.ts +0 -149
  159. package/dist_ts/classes.pp.tlsalert.js +0 -225
  160. package/dist_ts/classes.pp.tlsmanager.d.ts +0 -57
  161. package/dist_ts/classes.pp.tlsmanager.js +0 -132
  162. package/dist_ts/classes.snihandler.d.ts +0 -198
  163. package/dist_ts/classes.snihandler.js +0 -1210
  164. package/dist_ts/classes.sslredirect.d.ts +0 -8
  165. package/dist_ts/classes.sslredirect.js +0 -28
  166. package/dist_ts/common/acmeFactory.d.ts +0 -9
  167. package/dist_ts/common/acmeFactory.js +0 -20
  168. package/dist_ts/common/port80-adapter.d.ts +0 -11
  169. package/dist_ts/common/port80-adapter.js +0 -87
  170. package/dist_ts/examples/forwarding-example.d.ts +0 -1
  171. package/dist_ts/examples/forwarding-example.js +0 -96
  172. package/dist_ts/forwarding/config/domain-config.d.ts +0 -12
  173. package/dist_ts/forwarding/config/domain-config.js +0 -12
  174. package/dist_ts/forwarding/config/domain-manager.d.ts +0 -86
  175. package/dist_ts/forwarding/config/domain-manager.js +0 -242
  176. package/dist_ts/helpers.certificates.d.ts +0 -5
  177. package/dist_ts/helpers.certificates.js +0 -23
  178. package/dist_ts/http/port80/acme-interfaces.d.ts +0 -108
  179. package/dist_ts/http/port80/acme-interfaces.js +0 -51
  180. package/dist_ts/http/port80/challenge-responder.d.ts +0 -53
  181. package/dist_ts/http/port80/challenge-responder.js +0 -203
  182. package/dist_ts/http/port80/index.d.ts +0 -6
  183. package/dist_ts/http/port80/index.js +0 -9
  184. package/dist_ts/http/port80/port80-handler.d.ts +0 -136
  185. package/dist_ts/http/port80/port80-handler.js +0 -592
  186. package/dist_ts/http/redirects/index.d.ts +0 -4
  187. package/dist_ts/http/redirects/index.js +0 -5
  188. package/dist_ts/networkproxy/classes.np.certificatemanager.d.ts +0 -77
  189. package/dist_ts/networkproxy/classes.np.certificatemanager.js +0 -372
  190. package/dist_ts/networkproxy/classes.np.connectionpool.d.ts +0 -47
  191. package/dist_ts/networkproxy/classes.np.connectionpool.js +0 -210
  192. package/dist_ts/networkproxy/classes.np.networkproxy.d.ts +0 -118
  193. package/dist_ts/networkproxy/classes.np.networkproxy.js +0 -387
  194. package/dist_ts/networkproxy/classes.np.requesthandler.d.ts +0 -56
  195. package/dist_ts/networkproxy/classes.np.requesthandler.js +0 -393
  196. package/dist_ts/networkproxy/classes.np.types.d.ts +0 -83
  197. package/dist_ts/networkproxy/classes.np.types.js +0 -35
  198. package/dist_ts/networkproxy/classes.np.websockethandler.d.ts +0 -38
  199. package/dist_ts/networkproxy/classes.np.websockethandler.js +0 -188
  200. package/dist_ts/networkproxy/index.d.ts +0 -1
  201. package/dist_ts/networkproxy/index.js +0 -4
  202. package/dist_ts/nfttablesproxy/classes.nftablesproxy.d.ts +0 -219
  203. package/dist_ts/nfttablesproxy/classes.nftablesproxy.js +0 -1542
  204. package/dist_ts/port80handler/classes.port80handler.d.ts +0 -10
  205. package/dist_ts/port80handler/classes.port80handler.js +0 -16
  206. package/dist_ts/proxies/network-proxy/connection-pool.js +0 -210
  207. package/dist_ts/proxies/network-proxy/context-creator.js +0 -108
  208. package/dist_ts/proxies/network-proxy/http2-request-handler.js +0 -201
  209. package/dist_ts/proxies/network-proxy/index.js +0 -12
  210. package/dist_ts/proxies/network-proxy/models/index.d.ts +0 -4
  211. package/dist_ts/proxies/network-proxy/models/index.js +0 -5
  212. package/dist_ts/proxies/network-proxy/models/types.js +0 -276
  213. package/dist_ts/proxies/network-proxy/security-manager.js +0 -255
  214. package/dist_ts/proxies/network-proxy/simplified-certificate-bridge.d.ts +0 -48
  215. package/dist_ts/proxies/network-proxy/simplified-certificate-bridge.js +0 -76
  216. package/dist_ts/proxies/smart-proxy/connection-handler.d.ts +0 -39
  217. package/dist_ts/proxies/smart-proxy/connection-handler.js +0 -894
  218. package/dist_ts/proxies/smart-proxy/domain-config-manager.d.ts +0 -110
  219. package/dist_ts/proxies/smart-proxy/domain-config-manager.js +0 -386
  220. package/dist_ts/proxies/smart-proxy/legacy-smart-proxy.d.ts +0 -168
  221. package/dist_ts/proxies/smart-proxy/legacy-smart-proxy.js +0 -642
  222. package/dist_ts/proxies/smart-proxy/models/simplified-smartproxy-config.d.ts +0 -65
  223. package/dist_ts/proxies/smart-proxy/models/simplified-smartproxy-config.js +0 -31
  224. package/dist_ts/proxies/smart-proxy/models/smartproxy-options.d.ts +0 -102
  225. package/dist_ts/proxies/smart-proxy/models/smartproxy-options.js +0 -73
  226. package/dist_ts/proxies/smart-proxy/network-proxy-bridge.d.ts +0 -41
  227. package/dist_ts/proxies/smart-proxy/network-proxy-bridge.js +0 -121
  228. package/dist_ts/proxies/smart-proxy/port-range-manager.d.ts +0 -56
  229. package/dist_ts/proxies/smart-proxy/port-range-manager.js +0 -176
  230. package/dist_ts/proxies/smart-proxy/route-helpers/index.d.ts +0 -9
  231. package/dist_ts/proxies/smart-proxy/route-helpers/index.js +0 -11
  232. package/dist_ts/proxies/smart-proxy/route-helpers.d.ts +0 -7
  233. package/dist_ts/proxies/smart-proxy/route-helpers.js +0 -9
  234. package/dist_ts/proxies/smart-proxy/simplified-smart-proxy.d.ts +0 -41
  235. package/dist_ts/proxies/smart-proxy/simplified-smart-proxy.js +0 -132
  236. package/dist_ts/proxies/smart-proxy/utils/route-migration-utils.d.ts +0 -51
  237. package/dist_ts/proxies/smart-proxy/utils/route-migration-utils.js +0 -124
  238. package/dist_ts/redirect/classes.redirect.d.ts +0 -96
  239. package/dist_ts/redirect/classes.redirect.js +0 -194
  240. package/dist_ts/smartproxy/classes.pp.certprovisioner.d.ts +0 -54
  241. package/dist_ts/smartproxy/classes.pp.certprovisioner.js +0 -179
  242. package/dist_ts/smartproxy/classes.pp.connectionhandler.d.ts +0 -39
  243. package/dist_ts/smartproxy/classes.pp.connectionhandler.js +0 -894
  244. package/dist_ts/smartproxy/classes.pp.connectionmanager.d.ts +0 -78
  245. package/dist_ts/smartproxy/classes.pp.connectionmanager.js +0 -378
  246. package/dist_ts/smartproxy/classes.pp.domainconfigmanager.d.ts +0 -94
  247. package/dist_ts/smartproxy/classes.pp.domainconfigmanager.js +0 -255
  248. package/dist_ts/smartproxy/classes.pp.interfaces.d.ts +0 -103
  249. package/dist_ts/smartproxy/classes.pp.interfaces.js +0 -2
  250. package/dist_ts/smartproxy/classes.pp.networkproxybridge.d.ts +0 -62
  251. package/dist_ts/smartproxy/classes.pp.networkproxybridge.js +0 -316
  252. package/dist_ts/smartproxy/classes.pp.portrangemanager.d.ts +0 -56
  253. package/dist_ts/smartproxy/classes.pp.portrangemanager.js +0 -176
  254. package/dist_ts/smartproxy/classes.pp.securitymanager.d.ts +0 -64
  255. package/dist_ts/smartproxy/classes.pp.securitymanager.js +0 -149
  256. package/dist_ts/smartproxy/classes.pp.snihandler.d.ts +0 -153
  257. package/dist_ts/smartproxy/classes.pp.snihandler.js +0 -1053
  258. package/dist_ts/smartproxy/classes.pp.timeoutmanager.d.ts +0 -47
  259. package/dist_ts/smartproxy/classes.pp.timeoutmanager.js +0 -154
  260. package/dist_ts/smartproxy/classes.pp.tlsalert.d.ts +0 -149
  261. package/dist_ts/smartproxy/classes.pp.tlsalert.js +0 -225
  262. package/dist_ts/smartproxy/classes.pp.tlsmanager.d.ts +0 -57
  263. package/dist_ts/smartproxy/classes.pp.tlsmanager.js +0 -132
  264. package/dist_ts/smartproxy/classes.smartproxy.d.ts +0 -63
  265. package/dist_ts/smartproxy/classes.smartproxy.js +0 -521
  266. package/dist_ts/smartproxy/forwarding/domain-config.d.ts +0 -12
  267. package/dist_ts/smartproxy/forwarding/domain-config.js +0 -12
  268. package/dist_ts/smartproxy/forwarding/domain-manager.d.ts +0 -86
  269. package/dist_ts/smartproxy/forwarding/domain-manager.js +0 -241
  270. package/dist_ts/smartproxy/forwarding/forwarding.factory.d.ts +0 -24
  271. package/dist_ts/smartproxy/forwarding/forwarding.factory.js +0 -137
  272. package/dist_ts/smartproxy/forwarding/forwarding.handler.d.ts +0 -55
  273. package/dist_ts/smartproxy/forwarding/forwarding.handler.js +0 -94
  274. package/dist_ts/smartproxy/forwarding/http.handler.d.ts +0 -25
  275. package/dist_ts/smartproxy/forwarding/http.handler.js +0 -123
  276. package/dist_ts/smartproxy/forwarding/https-passthrough.handler.d.ts +0 -24
  277. package/dist_ts/smartproxy/forwarding/https-passthrough.handler.js +0 -154
  278. package/dist_ts/smartproxy/forwarding/https-terminate-to-http.handler.d.ts +0 -36
  279. package/dist_ts/smartproxy/forwarding/https-terminate-to-http.handler.js +0 -229
  280. package/dist_ts/smartproxy/forwarding/https-terminate-to-https.handler.d.ts +0 -35
  281. package/dist_ts/smartproxy/forwarding/https-terminate-to-https.handler.js +0 -254
  282. package/dist_ts/smartproxy/forwarding/index.d.ts +0 -16
  283. package/dist_ts/smartproxy/forwarding/index.js +0 -23
  284. package/dist_ts/smartproxy/types/forwarding.types.d.ts +0 -104
  285. package/dist_ts/smartproxy/types/forwarding.types.js +0 -50
  286. package/dist_ts/smartproxy.classes.networkproxy.d.ts +0 -31
  287. package/dist_ts/smartproxy.classes.networkproxy.js +0 -305
  288. package/dist_ts/smartproxy.classes.router.d.ts +0 -13
  289. package/dist_ts/smartproxy.classes.router.js +0 -33
  290. package/dist_ts/smartproxy.classes.sslredirect.d.ts +0 -8
  291. package/dist_ts/smartproxy.classes.sslredirect.js +0 -28
  292. package/dist_ts/smartproxy.helpers.certificates.d.ts +0 -5
  293. package/dist_ts/smartproxy.helpers.certificates.js +0 -23
  294. package/dist_ts/smartproxy.plugins.d.ts +0 -18
  295. package/dist_ts/smartproxy.plugins.js +0 -23
  296. package/dist_ts/smartproxy.portproxy.d.ts +0 -26
  297. package/dist_ts/smartproxy.portproxy.js +0 -295
  298. package/ts/http/index.ts +0 -16
  299. package/ts/http/models/http-types.ts +0 -108
  300. package/ts/http/redirects/index.ts +0 -3
  301. package/ts/proxies/network-proxy/models/index.ts +0 -4
  302. package/ts/redirect/classes.redirect.ts +0 -295
  303. /package/dist_ts/proxies/{network-proxy → http-proxy}/context-creator.d.ts +0 -0
  304. /package/dist_ts/proxies/{network-proxy → http-proxy}/function-cache.d.ts +0 -0
  305. /package/dist_ts/proxies/{network-proxy → http-proxy}/http-request-handler.d.ts +0 -0
  306. /package/dist_ts/proxies/{network-proxy → http-proxy}/http2-request-handler.d.ts +0 -0
  307. /package/dist_ts/proxies/{network-proxy → http-proxy}/security-manager.d.ts +0 -0
  308. /package/ts/proxies/{network-proxy → http-proxy}/context-creator.ts +0 -0
  309. /package/ts/proxies/{network-proxy → http-proxy}/function-cache.ts +0 -0
  310. /package/ts/proxies/{network-proxy → http-proxy}/http-request-handler.ts +0 -0
  311. /package/ts/proxies/{network-proxy → http-proxy}/http2-request-handler.ts +0 -0
  312. /package/ts/proxies/{network-proxy → http-proxy}/security-manager.ts +0 -0
  313. /package/ts/{http → routing}/router/index.ts +0 -0
package/readme.plan.md CHANGED
@@ -1,277 +1,172 @@
1
- # SmartProxy Development Plan
2
-
3
- cat /home/philkunz/.claude/CLAUDE.md
4
-
5
- ## Critical Bug Fix: Port 80 EADDRINUSE with ACME Challenge Routes
6
-
7
- ### Problem Statement
8
- SmartProxy encounters an "EADDRINUSE" error on port 80 when provisioning multiple ACME certificates. The issue occurs because the certificate manager adds and removes the challenge route for each certificate individually, causing race conditions when multiple certificates are provisioned concurrently.
9
-
10
- ### Root Cause
11
- The `SmartCertManager` class adds the ACME challenge route (port 80) before provisioning each certificate and removes it afterward. When multiple certificates are provisioned:
12
- 1. Each provisioning cycle adds its own challenge route
13
- 2. This triggers `updateRoutes()` which calls `PortManager.updatePorts()`
14
- 3. Port 80 is repeatedly added/removed, causing binding conflicts
15
-
16
- ### Implementation Plan
17
-
18
- #### Phase 1: Refactor Challenge Route Lifecycle
19
- 1. **Modify challenge route handling** in `SmartCertManager`
20
- - [x] Add challenge route once during initialization if ACME is configured
21
- - [x] Keep challenge route active throughout entire certificate provisioning
22
- - [x] Remove challenge route only after all certificates are provisioned
23
- - [x] Add concurrency control to prevent multiple simultaneous route updates
24
-
25
- #### Phase 2: Update Certificate Provisioning Flow
26
- 2. **Refactor certificate provisioning methods**
27
- - [x] Separate challenge route management from individual certificate provisioning
28
- - [x] Update `provisionAcmeCertificate()` to not add/remove challenge routes
29
- - [x] Modify `provisionAllCertificates()` to handle challenge route lifecycle
30
- - [x] Add error handling for challenge route initialization failures
31
-
32
- #### Phase 3: Implement Concurrency Controls
33
- 3. **Add synchronization mechanisms**
34
- - [x] Implement mutex/lock for challenge route operations
35
- - [x] Ensure certificate provisioning is properly serialized
36
- - [x] Add safeguards against duplicate challenge routes
37
- - [x] Handle edge cases (shutdown during provisioning, renewal conflicts)
38
-
39
- #### Phase 4: Enhance Error Handling
40
- 4. **Improve error handling and recovery**
41
- - [x] Add specific error types for port conflicts
42
- - [x] Implement retry logic for transient port binding issues
43
- - [x] Add detailed logging for challenge route lifecycle
44
- - [x] Ensure proper cleanup on errors
45
-
46
- #### Phase 5: Create Comprehensive Tests
47
- 5. **Write tests for challenge route management**
48
- - [x] Test concurrent certificate provisioning
49
- - [x] Test challenge route persistence during provisioning
50
- - [x] Test error scenarios (port already in use)
51
- - [x] Test cleanup after provisioning
52
- - [x] Test renewal scenarios with existing challenge routes
53
-
54
- #### Phase 6: Update Documentation
55
- 6. **Document the new behavior**
56
- - [x] Update certificate management documentation
57
- - [x] Add troubleshooting guide for port conflicts
58
- - [x] Document the challenge route lifecycle
59
- - [x] Include examples of proper ACME configuration
60
-
61
- ### Technical Details
62
-
63
- #### Specific Code Changes
64
-
65
- 1. In `SmartCertManager.initialize()`:
66
- ```typescript
67
- // Add challenge route once at initialization
68
- if (hasAcmeRoutes && this.acmeOptions?.email) {
69
- await this.addChallengeRoute();
70
- }
71
- ```
1
+ # SmartProxy Architecture Refactoring Plan
72
2
 
73
- 2. Modify `provisionAcmeCertificate()`:
74
- ```typescript
75
- // Remove these lines:
76
- // await this.addChallengeRoute();
77
- // await this.removeChallengeRoute();
78
- ```
3
+ ## Overview
79
4
 
80
- 3. Update `stop()` method:
81
- ```typescript
82
- // Always remove challenge route on shutdown
83
- if (this.challengeRoute) {
84
- await this.removeChallengeRoute();
85
- }
86
- ```
5
+ Refactor the proxy architecture to provide clearer separation of concerns between HTTP/HTTPS traffic handling and low-level connection routing.
6
+
7
+ ## Current Architecture Problems
8
+
9
+ 1. NetworkProxy name doesn't clearly indicate it handles HTTP/HTTPS
10
+ 2. HTTP parsing logic is duplicated in RouteConnectionHandler
11
+ 3. Redirect and static route handling is embedded in SmartProxy
12
+ 4. Unclear separation between TCP routing and HTTP processing
13
+
14
+ ## Proposed Architecture
15
+
16
+ ### HttpProxy (renamed from NetworkProxy)
17
+ **Purpose**: Handle all HTTP/HTTPS traffic with TLS termination
18
+
19
+ **Responsibilities**:
20
+ - TLS termination for HTTPS
21
+ - HTTP/1.1 and HTTP/2 protocol handling
22
+ - HTTP request/response parsing
23
+ - HTTP to HTTPS redirects
24
+ - ACME challenge handling
25
+ - Static route handlers
26
+ - WebSocket protocol upgrades
27
+ - Connection pooling for backend servers
28
+ - Certificate management (ACME and static)
29
+
30
+ ### SmartProxy
31
+ **Purpose**: Low-level connection router and port manager
32
+
33
+ **Responsibilities**:
34
+ - Port management (listen on multiple ports)
35
+ - Route-based connection routing
36
+ - TLS passthrough (SNI-based routing)
37
+ - NFTables integration
38
+ - Delegate HTTP/HTTPS connections to HttpProxy
39
+ - Raw TCP proxying
40
+ - Connection lifecycle management
41
+
42
+ ## Implementation Plan
43
+
44
+ ### Phase 1: Rename and Reorganize NetworkProxy ✅
45
+
46
+ 1. **Rename NetworkProxy to HttpProxy**
47
+ - Renamed directory from `network-proxy` to `http-proxy`
48
+ - Updated all imports and references
49
+
50
+ 2. **Update class and file names**
51
+ - Renamed `network-proxy.ts` to `http-proxy.ts`
52
+ - Updated `NetworkProxy` class to `HttpProxy` class
53
+ - Updated all type definitions and interfaces
54
+
55
+ 3. **Update exports**
56
+ - Updated exports in `ts/index.ts`
57
+ - Fixed imports across the codebase
58
+
59
+ ### Phase 2: Extract HTTP Logic from SmartProxy ✅
87
60
 
88
- 4. Add concurrency control:
61
+ 1. **Create HTTP handler modules in HttpProxy**
62
+ - Created handlers directory with:
63
+ - `redirect-handler.ts` - HTTP redirect logic
64
+ - `static-handler.ts` - Static/ACME route handling
65
+ - `index.ts` - Module exports
66
+
67
+ 2. **Move HTTP parsing from RouteConnectionHandler**
68
+ - Updated `handleRedirectAction` to delegate to `RedirectHandler`
69
+ - Updated `handleStaticAction` to delegate to `StaticHandler`
70
+ - Removed duplicated HTTP parsing logic
71
+
72
+ 3. **Clean up references and naming**
73
+ - Updated all NetworkProxy references to HttpProxy
74
+ - Renamed config properties: `useNetworkProxy` → `useHttpProxy`
75
+ - Renamed config properties: `networkProxyPort` → `httpProxyPort`
76
+ - Fixed HttpProxyBridge methods and references
77
+
78
+ ### Phase 3: Simplify SmartProxy
79
+
80
+ 1. **Update RouteConnectionHandler**
81
+ - Remove embedded HTTP parsing
82
+ - Delegate HTTP routes to HttpProxy
83
+ - Focus on connection routing only
84
+
85
+ 2. **Simplified route handling**
89
86
  ```typescript
90
- private challengeRouteLock = new AsyncLock();
87
+ // Simplified handleRedirectAction
88
+ private handleRedirectAction(socket, record, route) {
89
+ // Delegate to HttpProxy
90
+ this.httpProxy.handleRedirect(socket, route);
91
+ }
91
92
 
92
- private async manageChallengeRoute(operation: 'add' | 'remove'): Promise<void> {
93
- await this.challengeRouteLock.acquire('challenge-route', async () => {
94
- if (operation === 'add') {
95
- await this.addChallengeRoute();
96
- } else {
97
- await this.removeChallengeRoute();
98
- }
99
- });
93
+ // Simplified handleStaticAction
94
+ private handleStaticAction(socket, record, route) {
95
+ // Delegate to HttpProxy
96
+ this.httpProxy.handleStatic(socket, route);
100
97
  }
101
98
  ```
102
99
 
103
- ### Success Criteria
104
- - [x] No EADDRINUSE errors when provisioning multiple certificates
105
- - [x] Challenge route remains active during entire provisioning cycle
106
- - [x] Port 80 is only bound once per SmartProxy instance
107
- - [x] Proper cleanup on shutdown or error
108
- - [x] All tests pass
109
- - [x] Documentation clearly explains the behavior
110
-
111
- ### Implementation Summary
112
-
113
- The port 80 EADDRINUSE issue has been successfully fixed through the following changes:
114
-
115
- 1. **Challenge Route Lifecycle**: Modified to add challenge route once during initialization and keep it active throughout certificate provisioning
116
- 2. **Concurrency Control**: Added flags to prevent concurrent provisioning and duplicate challenge route operations
117
- 3. **Error Handling**: Enhanced error messages for port conflicts and proper cleanup on errors
118
- 4. **Tests**: Created comprehensive test suite for challenge route lifecycle scenarios
119
- 5. **Documentation**: Updated certificate management guide with troubleshooting section for port conflicts
120
-
121
- The fix ensures that port 80 is only bound once, preventing EADDRINUSE errors during concurrent certificate provisioning operations.
122
-
123
- ### Timeline
124
- - Phase 1: 2 hours (Challenge route lifecycle)
125
- - Phase 2: 1 hour (Provisioning flow)
126
- - Phase 3: 2 hours (Concurrency controls)
127
- - Phase 4: 1 hour (Error handling)
128
- - Phase 5: 2 hours (Testing)
129
- - Phase 6: 1 hour (Documentation)
130
-
131
- Total estimated time: 9 hours
132
-
133
- ### Notes
134
- - This is a critical bug affecting ACME certificate provisioning
135
- - The fix requires careful handling of concurrent operations
136
- - Backward compatibility must be maintained
137
- - Consider impact on renewal operations and edge cases
138
-
139
- ## NEW FINDINGS: Additional Port Management Issues
140
-
141
- ### Problem Statement
142
- Further investigation has revealed additional issues beyond the initial port 80 EADDRINUSE error:
143
-
144
- 1. **Race Condition in updateRoutes**: Certificate manager is recreated during route updates, potentially causing duplicate challenge routes
145
- 2. **Lost State**: The `challengeRouteActive` flag is not persisted when certificate manager is recreated
146
- 3. **No Global Synchronization**: Multiple concurrent route updates can create conflicting certificate managers
147
- 4. **Incomplete Cleanup**: Challenge route removal doesn't verify actual port release
148
-
149
- ### Implementation Plan for Additional Fixes
150
-
151
- #### Phase 1: Fix updateRoutes Race Condition
152
- 1. **Preserve certificate manager state during route updates**
153
- - [x] Track active challenge routes at SmartProxy level
154
- - [x] Pass existing state to new certificate manager instances
155
- - [x] Ensure challenge route is only added once across recreations
156
- - [x] Add proper cleanup before recreation
157
-
158
- #### Phase 2: Implement Global Route Update Lock
159
- 2. **Add synchronization for route updates**
160
- - [x] Implement mutex/semaphore for `updateRoutes` method
161
- - [x] Prevent concurrent certificate manager recreations
162
- - [x] Ensure atomic route updates
163
- - [x] Add timeout handling for locks
164
-
165
- #### Phase 3: Improve State Management
166
- 3. **Persist critical state across certificate manager instances**
167
- - [x] Create global state store for ACME operations
168
- - [x] Track active challenge routes globally
169
- - [x] Maintain port allocation state
170
- - [x] Add state recovery mechanisms
171
-
172
- #### Phase 4: Enhance Cleanup Verification
173
- 4. **Verify resource cleanup before recreation**
174
- - [x] Wait for old certificate manager to fully stop
175
- - [x] Verify challenge route removal from port manager
176
- - [x] Add cleanup confirmation callbacks
177
- - [x] Implement rollback on cleanup failure
178
-
179
- #### Phase 5: Add Comprehensive Testing
180
- 5. **Test race conditions and edge cases**
181
- - [x] Test rapid route updates with ACME
182
- - [x] Test concurrent certificate manager operations
183
- - [x] Test state persistence across recreations
184
- - [x] Test cleanup verification logic
185
-
186
- ### Technical Implementation
187
-
188
- 1. **Global Challenge Route Tracker**:
189
- ```typescript
190
- class SmartProxy {
191
- private globalChallengeRouteActive = false;
192
- private routeUpdateLock = new Mutex();
193
-
194
- async updateRoutes(newRoutes: IRouteConfig[]): Promise<void> {
195
- await this.routeUpdateLock.runExclusive(async () => {
196
- // Update logic here
197
- });
198
- }
199
- }
200
- ```
100
+ 3. **Update NetworkProxyBridge**
101
+ - Rename to HttpProxyBridge
102
+ - Update integration points
201
103
 
202
- 2. **State Preservation**:
203
- ```typescript
204
- if (this.certManager) {
205
- const state = {
206
- challengeRouteActive: this.globalChallengeRouteActive,
207
- acmeOptions: this.certManager.getAcmeOptions(),
208
- // ... other state
209
- };
210
-
211
- await this.certManager.stop();
212
- await this.verifyChallengeRouteRemoved();
213
-
214
- this.certManager = await this.createCertificateManager(
215
- newRoutes,
216
- './certs',
217
- state
218
- );
219
- }
220
- ```
104
+ ### Phase 4: Consolidate HTTP Utilities ✅
221
105
 
222
- 3. **Cleanup Verification**:
223
- ```typescript
224
- private async verifyChallengeRouteRemoved(): Promise<void> {
225
- const maxRetries = 10;
226
- for (let i = 0; i < maxRetries; i++) {
227
- if (!this.portManager.isListening(80)) {
228
- return;
229
- }
230
- await this.sleep(100);
231
- }
232
- throw new Error('Failed to verify challenge route removal');
233
- }
234
- ```
106
+ 1. **Move HTTP types to http-proxy**
107
+ - Created consolidated `http-types.ts` in `ts/proxies/http-proxy/models/`
108
+ - Includes HTTP status codes, error classes, and interfaces
109
+ - Added helper functions like `getStatusText()`
110
+
111
+ 2. **Clean up ts/http directory**
112
+ - Kept only router functionality
113
+ - Replaced local HTTP types with re-exports from HttpProxy
114
+ - Updated imports throughout the codebase to use consolidated types
115
+
116
+ ### Phase 5: Update Tests and Documentation
117
+
118
+ 1. **Update test files**
119
+ - Renamed NetworkProxy references to HttpProxy
120
+ - Renamed test files to match new naming
121
+ - Updated imports and references throughout tests
122
+ - Fixed certificate manager method names
123
+
124
+ 2. **Update documentation**
125
+ - Updated README to reflect HttpProxy naming
126
+ - Updated architecture descriptions
127
+ - Updated usage examples
128
+ - Fixed all API documentation references
129
+
130
+ ## Migration Steps
235
131
 
236
- ### Success Criteria
237
- - [ ] No race conditions during route updates
238
- - [ ] State properly preserved across certificate manager recreations
239
- - [ ] No duplicate challenge routes
240
- - [ ] Clean resource management
241
- - [ ] All edge cases handled gracefully
132
+ 1. Create feature branch: `refactor/http-proxy-consolidation`
133
+ 2. Phase 1: Rename NetworkProxy (1 day)
134
+ 3. Phase 2: Extract HTTP logic (2 days)
135
+ 4. Phase 3: Simplify SmartProxy (1 day)
136
+ 5. Phase 4: Consolidate utilities (1 day)
137
+ 6. Phase 5: Update tests/docs (1 day)
138
+ 7. Integration testing (1 day)
139
+ 8. Code review and merge
242
140
 
243
- ### Timeline for Additional Fixes
244
- - Phase 1: 3 hours (Race condition fix)
245
- - Phase 2: 2 hours (Global synchronization)
246
- - Phase 3: 2 hours (State management)
247
- - Phase 4: 2 hours (Cleanup verification)
248
- - Phase 5: 3 hours (Testing)
141
+ ## Benefits
249
142
 
250
- Total estimated time: 12 hours
143
+ 1. **Clear Separation**: HTTP/HTTPS handling is clearly separated from TCP routing
144
+ 2. **Better Naming**: HttpProxy clearly indicates its purpose
145
+ 3. **No Duplication**: HTTP parsing logic exists in one place
146
+ 4. **Maintainability**: Easier to modify HTTP handling without affecting routing
147
+ 5. **Testability**: Each component has a single responsibility
148
+ 6. **Performance**: Optimized paths for different traffic types
251
149
 
252
- ### Priority
253
- These additional fixes are HIGH PRIORITY as they address fundamental issues that could cause:
254
- - Port binding errors
255
- - Certificate provisioning failures
256
- - Resource leaks
257
- - Inconsistent proxy state
150
+ ## Future Enhancements
258
151
 
259
- The fixes should be implemented immediately after the initial port 80 EADDRINUSE fix is deployed.
152
+ After this refactoring, we can more easily add:
260
153
 
261
- ### Implementation Complete
154
+ 1. HTTP/3 (QUIC) support in HttpProxy
155
+ 2. Advanced HTTP features (compression, caching)
156
+ 3. HTTP middleware system
157
+ 4. Protocol-specific optimizations
158
+ 5. Better HTTP/2 multiplexing
262
159
 
263
- All additional port management issues have been successfully addressed:
160
+ ## Breaking Changes
264
161
 
265
- 1. **Mutex Implementation**: Created a custom `Mutex` class for synchronizing route updates
266
- 2. **Global State Tracking**: Implemented `AcmeStateManager` to track challenge routes globally
267
- 3. **State Preservation**: Modified `SmartCertManager` to accept and preserve state across recreations
268
- 4. **Cleanup Verification**: Added `verifyChallengeRouteRemoved` method to ensure proper cleanup
269
- 5. **Comprehensive Testing**: Created test suites for race conditions and state management
162
+ 1. `NetworkProxy` class renamed to `HttpProxy`
163
+ 2. Import paths change from `network-proxy` to `http-proxy`
164
+ 3. Some type names may change for consistency
270
165
 
271
- The implementation ensures:
272
- - No concurrent route updates can create conflicting states
273
- - Challenge route state is preserved across certificate manager recreations
274
- - Port 80 is properly managed without EADDRINUSE errors
275
- - All resources are cleaned up properly during shutdown
166
+ ## Rollback Plan
276
167
 
277
- All tests are ready to run and the implementation is complete.
168
+ If issues arise:
169
+ 1. Git revert to previous commit
170
+ 2. Re-deploy previous version
171
+ 3. Document lessons learned
172
+ 4. Plan incremental changes
@@ -3,6 +3,6 @@
3
3
  */
4
4
  export const commitinfo = {
5
5
  name: '@push.rocks/smartproxy',
6
- version: '19.3.2',
6
+ version: '19.3.3',
7
7
  description: 'A powerful proxy package with unified route-based configuration for high traffic management. Features include SSL/TLS support, flexible routing patterns, WebSocket handling, advanced security options, and automatic ACME certificate management.'
8
8
  }
@@ -52,6 +52,13 @@ export class ForwardingHandlerFactory {
52
52
  enabled: true,
53
53
  ...config.http
54
54
  };
55
+ // Set default port and socket if not provided
56
+ if (!result.port) {
57
+ result.port = 80;
58
+ }
59
+ if (!result.socket) {
60
+ result.socket = `/tmp/forwarding-${config.type}-${result.port}.sock`;
61
+ }
55
62
  break;
56
63
 
57
64
  case 'https-passthrough':
@@ -65,6 +72,13 @@ export class ForwardingHandlerFactory {
65
72
  enabled: false,
66
73
  ...config.http
67
74
  };
75
+ // Set default port and socket if not provided
76
+ if (!result.port) {
77
+ result.port = 443;
78
+ }
79
+ if (!result.socket) {
80
+ result.socket = `/tmp/forwarding-${config.type}-${result.port}.sock`;
81
+ }
68
82
  break;
69
83
 
70
84
  case 'https-terminate-to-http':
@@ -84,6 +98,13 @@ export class ForwardingHandlerFactory {
84
98
  maintenance: true,
85
99
  ...config.acme
86
100
  };
101
+ // Set default port and socket if not provided
102
+ if (!result.port) {
103
+ result.port = 443;
104
+ }
105
+ if (!result.socket) {
106
+ result.socket = `/tmp/forwarding-${config.type}-${result.port}.sock`;
107
+ }
87
108
  break;
88
109
 
89
110
  case 'https-terminate-to-https':
@@ -101,6 +122,13 @@ export class ForwardingHandlerFactory {
101
122
  maintenance: true,
102
123
  ...config.acme
103
124
  };
125
+ // Set default port and socket if not provided
126
+ if (!result.port) {
127
+ result.port = 443;
128
+ }
129
+ if (!result.socket) {
130
+ result.socket = `/tmp/forwarding-${config.type}-${result.port}.sock`;
131
+ }
104
132
  break;
105
133
  }
106
134
 
package/ts/index.ts CHANGED
@@ -6,19 +6,23 @@
6
6
  // Migrated to the new proxies structure
7
7
  export * from './proxies/nftables-proxy/index.js';
8
8
 
9
- // Export NetworkProxy elements selectively to avoid RouteManager ambiguity
10
- export { NetworkProxy, CertificateManager, ConnectionPool, RequestHandler, WebSocketHandler } from './proxies/network-proxy/index.js';
11
- export type { IMetricsTracker, MetricsTracker } from './proxies/network-proxy/index.js';
9
+ // Export HttpProxy elements selectively to avoid RouteManager ambiguity
10
+ export { HttpProxy, CertificateManager, ConnectionPool, RequestHandler, WebSocketHandler } from './proxies/http-proxy/index.js';
11
+ export type { IMetricsTracker, MetricsTracker } from './proxies/http-proxy/index.js';
12
12
  // Export models except IAcmeOptions to avoid conflict
13
- export type { INetworkProxyOptions, ICertificateEntry, ILogger } from './proxies/network-proxy/models/types.js';
14
- export { RouteManager as NetworkProxyRouteManager } from './proxies/network-proxy/models/types.js';
13
+ export type { IHttpProxyOptions, ICertificateEntry, ILogger } from './proxies/http-proxy/models/types.js';
14
+ export { RouteManager as HttpProxyRouteManager } from './proxies/http-proxy/models/types.js';
15
15
 
16
- // Certificate and Port80 modules have been removed - use SmartCertManager instead
16
+ // Backward compatibility exports (deprecated)
17
+ export { HttpProxy as NetworkProxy } from './proxies/http-proxy/index.js';
18
+ export type { IHttpProxyOptions as INetworkProxyOptions } from './proxies/http-proxy/models/types.js';
19
+ export { HttpProxyBridge as NetworkProxyBridge } from './proxies/smart-proxy/index.js';
17
20
 
18
- export * from './redirect/classes.redirect.js';
21
+ // Certificate and Port80 modules have been removed - use SmartCertManager instead
22
+ // Redirect module has been removed - use route-based redirects instead
19
23
 
20
24
  // Export SmartProxy elements selectively to avoid RouteManager ambiguity
21
- export { SmartProxy, ConnectionManager, SecurityManager, TimeoutManager, TlsManager, NetworkProxyBridge, RouteConnectionHandler } from './proxies/smart-proxy/index.js';
25
+ export { SmartProxy, ConnectionManager, SecurityManager, TimeoutManager, TlsManager, HttpProxyBridge, RouteConnectionHandler, SmartCertManager } from './proxies/smart-proxy/index.js';
22
26
  export { RouteManager } from './proxies/smart-proxy/route-manager.js';
23
27
  // Export smart-proxy models
24
28
  export type { ISmartProxyOptions, IConnectionRecord, IRouteConfig, IRouteMatch, IRouteAction, IRouteTls, IRouteContext } from './proxies/smart-proxy/models/index.js';
@@ -41,4 +45,4 @@ export type { IAcmeOptions } from './proxies/smart-proxy/models/interfaces.js';
41
45
  export * as forwarding from './forwarding/index.js';
42
46
  // Certificate module has been removed - use SmartCertManager instead
43
47
  export * as tls from './tls/index.js';
44
- export * as http from './http/index.js';
48
+ export * as routing from './routing/index.js';
@@ -2,7 +2,7 @@ import * as plugins from '../../plugins.js';
2
2
  import * as fs from 'fs';
3
3
  import * as path from 'path';
4
4
  import { fileURLToPath } from 'url';
5
- import { type INetworkProxyOptions, type ICertificateEntry, type ILogger, createLogger } from './models/types.js';
5
+ import { type IHttpProxyOptions, type ICertificateEntry, type ILogger, createLogger } from './models/types.js';
6
6
  import type { IRouteConfig } from '../smart-proxy/models/route-types.js';
7
7
 
8
8
  /**
@@ -18,7 +18,7 @@ export class CertificateManager {
18
18
  private logger: ILogger;
19
19
  private httpsServer: plugins.https.Server | null = null;
20
20
 
21
- constructor(private options: INetworkProxyOptions) {
21
+ constructor(private options: IHttpProxyOptions) {
22
22
  this.certificateStoreDir = path.resolve(options.acme?.certificateStore || './certs');
23
23
  this.logger = createLogger(options.logLevel || 'info');
24
24
 
@@ -1,5 +1,5 @@
1
1
  import * as plugins from '../../plugins.js';
2
- import { type INetworkProxyOptions, type IConnectionEntry, type ILogger, createLogger } from './models/types.js';
2
+ import { type IHttpProxyOptions, type IConnectionEntry, type ILogger, createLogger } from './models/types.js';
3
3
 
4
4
  /**
5
5
  * Manages a pool of backend connections for efficient reuse
@@ -9,7 +9,7 @@ export class ConnectionPool {
9
9
  private roundRobinPositions: Map<string, number> = new Map();
10
10
  private logger: ILogger;
11
11
 
12
- constructor(private options: INetworkProxyOptions) {
12
+ constructor(private options: IHttpProxyOptions) {
13
13
  this.logger = createLogger(options.logLevel || 'info');
14
14
  }
15
15
 
@@ -0,0 +1,6 @@
1
+ /**
2
+ * HTTP handlers for various route types
3
+ */
4
+
5
+ export { RedirectHandler } from './redirect-handler.js';
6
+ export { StaticHandler } from './static-handler.js';