@push.rocks/smartproxy 19.3.2 → 19.3.4

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 +18 -35
  66. package/readme.plan.md +173 -271
  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
@@ -0,0 +1,105 @@
1
+ import * as plugins from '../../../plugins.js';
2
+ import type { IRouteConfig } from '../../smart-proxy/models/route-types.js';
3
+ import type { IConnectionRecord } from '../../smart-proxy/models/interfaces.js';
4
+ import type { ILogger } from '../models/types.js';
5
+ import { createLogger } from '../models/types.js';
6
+ import { HttpStatus, getStatusText } from '../models/http-types.js';
7
+
8
+ export interface IRedirectHandlerContext {
9
+ connectionId: string;
10
+ connectionManager: any; // Avoid circular deps
11
+ settings: any;
12
+ logger?: ILogger;
13
+ }
14
+
15
+ /**
16
+ * Handles HTTP redirect routes
17
+ */
18
+ export class RedirectHandler {
19
+ /**
20
+ * Handle redirect routes
21
+ */
22
+ public static async handleRedirect(
23
+ socket: plugins.net.Socket,
24
+ route: IRouteConfig,
25
+ context: IRedirectHandlerContext
26
+ ): Promise<void> {
27
+ const { connectionId, connectionManager, settings } = context;
28
+ const logger = context.logger || createLogger(settings.logLevel || 'info');
29
+ const action = route.action;
30
+
31
+ // We should have a redirect configuration
32
+ if (!action.redirect) {
33
+ logger.error(`[${connectionId}] Redirect action missing redirect configuration`);
34
+ socket.end();
35
+ connectionManager.cleanupConnection({ id: connectionId }, 'missing_redirect');
36
+ return;
37
+ }
38
+
39
+ // For TLS connections, we can't do redirects at the TCP level
40
+ // This check should be done before calling this handler
41
+
42
+ // Wait for the first HTTP request to perform the redirect
43
+ const dataListeners: ((chunk: Buffer) => void)[] = [];
44
+
45
+ const httpDataHandler = (chunk: Buffer) => {
46
+ // Remove all data listeners to avoid duplicated processing
47
+ for (const listener of dataListeners) {
48
+ socket.removeListener('data', listener);
49
+ }
50
+
51
+ // Parse HTTP request to get path
52
+ try {
53
+ const headersEnd = chunk.indexOf('\r\n\r\n');
54
+ if (headersEnd === -1) {
55
+ // Not a complete HTTP request, need more data
56
+ socket.once('data', httpDataHandler);
57
+ dataListeners.push(httpDataHandler);
58
+ return;
59
+ }
60
+
61
+ const httpHeaders = chunk.slice(0, headersEnd).toString();
62
+ const requestLine = httpHeaders.split('\r\n')[0];
63
+ const [method, path] = requestLine.split(' ');
64
+
65
+ // Extract Host header
66
+ const hostMatch = httpHeaders.match(/Host: (.+?)(\r\n|\r|\n|$)/i);
67
+ const host = hostMatch ? hostMatch[1].trim() : '';
68
+
69
+ // Process the redirect URL with template variables
70
+ let redirectUrl = action.redirect.to;
71
+ redirectUrl = redirectUrl.replace(/\{domain\}/g, host);
72
+ redirectUrl = redirectUrl.replace(/\{path\}/g, path || '');
73
+ redirectUrl = redirectUrl.replace(/\{port\}/g, socket.localPort?.toString() || '80');
74
+
75
+ // Prepare the HTTP redirect response
76
+ const redirectResponse = [
77
+ `HTTP/1.1 ${action.redirect.status} Moved`,
78
+ `Location: ${redirectUrl}`,
79
+ 'Connection: close',
80
+ 'Content-Length: 0',
81
+ '',
82
+ '',
83
+ ].join('\r\n');
84
+
85
+ if (settings.enableDetailedLogging) {
86
+ logger.info(
87
+ `[${connectionId}] Redirecting to ${redirectUrl} with status ${action.redirect.status}`
88
+ );
89
+ }
90
+
91
+ // Send the redirect response
92
+ socket.end(redirectResponse);
93
+ connectionManager.initiateCleanupOnce({ id: connectionId }, 'redirect_complete');
94
+ } catch (err) {
95
+ logger.error(`[${connectionId}] Error processing HTTP redirect: ${err}`);
96
+ socket.end();
97
+ connectionManager.initiateCleanupOnce({ id: connectionId }, 'redirect_error');
98
+ }
99
+ };
100
+
101
+ // Setup the HTTP data handler
102
+ socket.once('data', httpDataHandler);
103
+ dataListeners.push(httpDataHandler);
104
+ }
105
+ }
@@ -0,0 +1,251 @@
1
+ import * as plugins from '../../../plugins.js';
2
+ import type { IRouteConfig } from '../../smart-proxy/models/route-types.js';
3
+ import type { IConnectionRecord } from '../../smart-proxy/models/interfaces.js';
4
+ import type { ILogger } from '../models/types.js';
5
+ import { createLogger } from '../models/types.js';
6
+ import type { IRouteContext } from '../../../core/models/route-context.js';
7
+ import { HttpStatus, getStatusText } from '../models/http-types.js';
8
+
9
+ export interface IStaticHandlerContext {
10
+ connectionId: string;
11
+ connectionManager: any; // Avoid circular deps
12
+ settings: any;
13
+ logger?: ILogger;
14
+ }
15
+
16
+ /**
17
+ * Handles static routes including ACME challenges
18
+ */
19
+ export class StaticHandler {
20
+ /**
21
+ * Handle static routes
22
+ */
23
+ public static async handleStatic(
24
+ socket: plugins.net.Socket,
25
+ route: IRouteConfig,
26
+ context: IStaticHandlerContext,
27
+ record: IConnectionRecord
28
+ ): Promise<void> {
29
+ const { connectionId, connectionManager, settings } = context;
30
+ const logger = context.logger || createLogger(settings.logLevel || 'info');
31
+
32
+ if (!route.action.handler) {
33
+ logger.error(`[${connectionId}] Static route '${route.name}' has no handler`);
34
+ socket.end();
35
+ connectionManager.cleanupConnection(record, 'no_handler');
36
+ return;
37
+ }
38
+
39
+ let buffer = Buffer.alloc(0);
40
+ let processingData = false;
41
+
42
+ const handleHttpData = async (chunk: Buffer) => {
43
+ // Accumulate the data
44
+ buffer = Buffer.concat([buffer, chunk]);
45
+
46
+ // Prevent concurrent processing of the same buffer
47
+ if (processingData) return;
48
+ processingData = true;
49
+
50
+ try {
51
+ // Process data until we have a complete request or need more data
52
+ await processBuffer();
53
+ } finally {
54
+ processingData = false;
55
+ }
56
+ };
57
+
58
+ const processBuffer = async () => {
59
+ // Look for end of HTTP headers
60
+ const headerEndIndex = buffer.indexOf('\r\n\r\n');
61
+ if (headerEndIndex === -1) {
62
+ // Need more data
63
+ if (buffer.length > 8192) {
64
+ // Prevent excessive buffering
65
+ logger.error(`[${connectionId}] HTTP headers too large`);
66
+ socket.end();
67
+ connectionManager.cleanupConnection(record, 'headers_too_large');
68
+ }
69
+ return; // Wait for more data to arrive
70
+ }
71
+
72
+ // Parse the HTTP request
73
+ const headerBuffer = buffer.slice(0, headerEndIndex);
74
+ const headers = headerBuffer.toString();
75
+ const lines = headers.split('\r\n');
76
+
77
+ if (lines.length === 0) {
78
+ logger.error(`[${connectionId}] Invalid HTTP request`);
79
+ socket.end();
80
+ connectionManager.cleanupConnection(record, 'invalid_request');
81
+ return;
82
+ }
83
+
84
+ // Parse request line
85
+ const requestLine = lines[0];
86
+ const requestParts = requestLine.split(' ');
87
+ if (requestParts.length < 3) {
88
+ logger.error(`[${connectionId}] Invalid HTTP request line`);
89
+ socket.end();
90
+ connectionManager.cleanupConnection(record, 'invalid_request_line');
91
+ return;
92
+ }
93
+
94
+ const [method, path, httpVersion] = requestParts;
95
+
96
+ // Parse headers
97
+ const headersMap: Record<string, string> = {};
98
+ for (let i = 1; i < lines.length; i++) {
99
+ const colonIndex = lines[i].indexOf(':');
100
+ if (colonIndex > 0) {
101
+ const key = lines[i].slice(0, colonIndex).trim().toLowerCase();
102
+ const value = lines[i].slice(colonIndex + 1).trim();
103
+ headersMap[key] = value;
104
+ }
105
+ }
106
+
107
+ // Check for Content-Length to handle request body
108
+ const requestBodyLength = parseInt(headersMap['content-length'] || '0', 10);
109
+ const bodyStartIndex = headerEndIndex + 4; // Skip the \r\n\r\n
110
+
111
+ // If there's a body, ensure we have the full body
112
+ if (requestBodyLength > 0) {
113
+ const totalExpectedLength = bodyStartIndex + requestBodyLength;
114
+
115
+ // If we don't have the complete body yet, wait for more data
116
+ if (buffer.length < totalExpectedLength) {
117
+ // Implement a reasonable body size limit to prevent memory issues
118
+ if (requestBodyLength > 1024 * 1024) {
119
+ // 1MB limit
120
+ logger.error(`[${connectionId}] Request body too large`);
121
+ socket.end();
122
+ connectionManager.cleanupConnection(record, 'body_too_large');
123
+ return;
124
+ }
125
+ return; // Wait for more data
126
+ }
127
+ }
128
+
129
+ // Extract query string if present
130
+ let pathname = path;
131
+ let query: string | undefined;
132
+ const queryIndex = path.indexOf('?');
133
+ if (queryIndex !== -1) {
134
+ pathname = path.slice(0, queryIndex);
135
+ query = path.slice(queryIndex + 1);
136
+ }
137
+
138
+ try {
139
+ // Get request body if present
140
+ let requestBody: Buffer | undefined;
141
+ if (requestBodyLength > 0) {
142
+ requestBody = buffer.slice(bodyStartIndex, bodyStartIndex + requestBodyLength);
143
+ }
144
+
145
+ // Pause socket to prevent data loss during async processing
146
+ socket.pause();
147
+
148
+ // Remove the data listener since we're handling the request
149
+ socket.removeListener('data', handleHttpData);
150
+
151
+ // Build route context with parsed HTTP information
152
+ const context: IRouteContext = {
153
+ port: record.localPort,
154
+ domain: record.lockedDomain || headersMap['host']?.split(':')[0],
155
+ clientIp: record.remoteIP,
156
+ serverIp: socket.localAddress!,
157
+ path: pathname,
158
+ query: query,
159
+ headers: headersMap,
160
+ isTls: record.isTLS,
161
+ tlsVersion: record.tlsVersion,
162
+ routeName: route.name,
163
+ routeId: route.id,
164
+ timestamp: Date.now(),
165
+ connectionId,
166
+ };
167
+
168
+ // Since IRouteContext doesn't have a body property,
169
+ // we need an alternative approach to handle the body
170
+ let response;
171
+
172
+ if (requestBody) {
173
+ if (settings.enableDetailedLogging) {
174
+ logger.info(
175
+ `[${connectionId}] Processing request with body (${requestBody.length} bytes)`
176
+ );
177
+ }
178
+
179
+ // Pass the body as an additional parameter by extending the context object
180
+ // This is not type-safe, but it allows handlers that expect a body to work
181
+ const extendedContext = {
182
+ ...context,
183
+ // Provide both raw buffer and string representation
184
+ requestBody: requestBody,
185
+ requestBodyText: requestBody.toString(),
186
+ method: method,
187
+ };
188
+
189
+ // Call the handler with the extended context
190
+ // The handler needs to know to look for the non-standard properties
191
+ response = await route.action.handler(extendedContext as any);
192
+ } else {
193
+ // Call the handler with the standard context
194
+ const extendedContext = {
195
+ ...context,
196
+ method: method,
197
+ };
198
+ response = await route.action.handler(extendedContext as any);
199
+ }
200
+
201
+ // Prepare the HTTP response
202
+ const responseHeaders = response.headers || {};
203
+ const contentLength = Buffer.byteLength(response.body || '');
204
+ responseHeaders['Content-Length'] = contentLength.toString();
205
+
206
+ if (!responseHeaders['Content-Type']) {
207
+ responseHeaders['Content-Type'] = 'text/plain';
208
+ }
209
+
210
+ // Build the response
211
+ let httpResponse = `HTTP/1.1 ${response.status} ${getStatusText(response.status)}\r\n`;
212
+ for (const [key, value] of Object.entries(responseHeaders)) {
213
+ httpResponse += `${key}: ${value}\r\n`;
214
+ }
215
+ httpResponse += '\r\n';
216
+
217
+ // Send response
218
+ socket.write(httpResponse);
219
+ if (response.body) {
220
+ socket.write(response.body);
221
+ }
222
+ socket.end();
223
+
224
+ connectionManager.cleanupConnection(record, 'completed');
225
+ } catch (error) {
226
+ logger.error(`[${connectionId}] Error in static handler: ${error}`);
227
+
228
+ // Send error response
229
+ const errorResponse =
230
+ 'HTTP/1.1 500 Internal Server Error\r\n' +
231
+ 'Content-Type: text/plain\r\n' +
232
+ 'Content-Length: 21\r\n' +
233
+ '\r\n' +
234
+ 'Internal Server Error';
235
+ socket.write(errorResponse);
236
+ socket.end();
237
+
238
+ connectionManager.cleanupConnection(record, 'handler_error');
239
+ }
240
+ };
241
+
242
+ // Listen for data
243
+ socket.on('data', handleHttpData);
244
+
245
+ // Ensure cleanup on socket close
246
+ socket.once('close', () => {
247
+ socket.removeListener('data', handleHttpData);
248
+ });
249
+ }
250
+ }
251
+
@@ -5,7 +5,7 @@ import {
5
5
  convertLegacyConfigToRouteConfig
6
6
  } from './models/types.js';
7
7
  import type {
8
- INetworkProxyOptions,
8
+ IHttpProxyOptions,
9
9
  ILogger,
10
10
  IReverseProxyConfig
11
11
  } from './models/types.js';
@@ -16,21 +16,22 @@ import { CertificateManager } from './certificate-manager.js';
16
16
  import { ConnectionPool } from './connection-pool.js';
17
17
  import { RequestHandler, type IMetricsTracker } from './request-handler.js';
18
18
  import { WebSocketHandler } from './websocket-handler.js';
19
- import { ProxyRouter } from '../../http/router/index.js';
20
- import { RouteRouter } from '../../http/router/route-router.js';
19
+ import { ProxyRouter } from '../../routing/router/index.js';
20
+ import { RouteRouter } from '../../routing/router/route-router.js';
21
21
  import { FunctionCache } from './function-cache.js';
22
22
 
23
23
  /**
24
- * NetworkProxy provides a reverse proxy with TLS termination, WebSocket support,
24
+ * HttpProxy provides a reverse proxy with TLS termination, WebSocket support,
25
25
  * automatic certificate management, and high-performance connection pooling.
26
+ * Handles all HTTP/HTTPS traffic including redirects, ACME challenges, and static routes.
26
27
  */
27
- export class NetworkProxy implements IMetricsTracker {
28
+ export class HttpProxy implements IMetricsTracker {
28
29
  // Provide a minimal JSON representation to avoid circular references during deep equality checks
29
30
  public toJSON(): any {
30
31
  return {};
31
32
  }
32
33
  // Configuration
33
- public options: INetworkProxyOptions;
34
+ public options: IHttpProxyOptions;
34
35
  public routes: IRouteConfig[] = [];
35
36
 
36
37
  // Server instances (HTTP/2 with HTTP/1 fallback)
@@ -66,9 +67,9 @@ export class NetworkProxy implements IMetricsTracker {
66
67
  private logger: ILogger;
67
68
 
68
69
  /**
69
- * Creates a new NetworkProxy instance
70
+ * Creates a new HttpProxy instance
70
71
  */
71
- constructor(optionsArg: INetworkProxyOptions) {
72
+ constructor(optionsArg: IHttpProxyOptions) {
72
73
  // Set default options
73
74
  this.options = {
74
75
  port: optionsArg.port,
@@ -155,7 +156,7 @@ export class NetworkProxy implements IMetricsTracker {
155
156
  }
156
157
 
157
158
  /**
158
- * Returns the port number this NetworkProxy is listening on
159
+ * Returns the port number this HttpProxy is listening on
159
160
  * Useful for SmartProxy to determine where to forward connections
160
161
  */
161
162
  public getListeningPort(): number {
@@ -202,7 +203,7 @@ export class NetworkProxy implements IMetricsTracker {
202
203
 
203
204
  /**
204
205
  * Returns current server metrics
205
- * Useful for SmartProxy to determine which NetworkProxy to use for load balancing
206
+ * Useful for SmartProxy to determine which HttpProxy to use for load balancing
206
207
  */
207
208
  public getMetrics(): any {
208
209
  return {
@@ -259,7 +260,7 @@ export class NetworkProxy implements IMetricsTracker {
259
260
  // Start the server
260
261
  return new Promise((resolve) => {
261
262
  this.httpsServer.listen(this.options.port, () => {
262
- this.logger.info(`NetworkProxy started on port ${this.options.port}`);
263
+ this.logger.info(`HttpProxy started on port ${this.options.port}`);
263
264
  resolve();
264
265
  });
265
266
  });
@@ -352,7 +353,7 @@ export class NetworkProxy implements IMetricsTracker {
352
353
  }
353
354
 
354
355
  /**
355
- * Updates the route configurations - this is the primary method for configuring NetworkProxy
356
+ * Updates the route configurations - this is the primary method for configuring HttpProxy
356
357
  * @param routes The new route configurations to use
357
358
  */
358
359
  public async updateRouteConfigs(routes: IRouteConfig[]): Promise<void> {
@@ -503,7 +504,7 @@ export class NetworkProxy implements IMetricsTracker {
503
504
  * Stops the proxy server
504
505
  */
505
506
  public async stop(): Promise<void> {
506
- this.logger.info('Stopping NetworkProxy server');
507
+ this.logger.info('Stopping HttpProxy server');
507
508
 
508
509
  // Clear intervals
509
510
  if (this.metricsInterval) {
@@ -534,7 +535,7 @@ export class NetworkProxy implements IMetricsTracker {
534
535
  // Close the HTTPS server
535
536
  return new Promise((resolve) => {
536
537
  this.httpsServer.close(() => {
537
- this.logger.info('NetworkProxy server stopped successfully');
538
+ this.logger.info('HttpProxy server stopped successfully');
538
539
  resolve();
539
540
  });
540
541
  });
@@ -1,11 +1,11 @@
1
1
  /**
2
- * NetworkProxy implementation
2
+ * HttpProxy implementation
3
3
  */
4
4
  // Re-export models
5
5
  export * from './models/index.js';
6
6
 
7
- // Export NetworkProxy and supporting classes
8
- export { NetworkProxy } from './network-proxy.js';
7
+ // Export HttpProxy and supporting classes
8
+ export { HttpProxy } from './http-proxy.js';
9
9
  export { CertificateManager } from './certificate-manager.js';
10
10
  export { ConnectionPool } from './connection-pool.js';
11
11
  export { RequestHandler } from './request-handler.js';
@@ -0,0 +1,165 @@
1
+ import * as plugins from '../../../plugins.js';
2
+
3
+ /**
4
+ * HTTP-specific event types
5
+ */
6
+ export enum HttpEvents {
7
+ REQUEST_RECEIVED = 'request-received',
8
+ REQUEST_FORWARDED = 'request-forwarded',
9
+ REQUEST_HANDLED = 'request-handled',
10
+ REQUEST_ERROR = 'request-error',
11
+ }
12
+
13
+ /**
14
+ * HTTP status codes as an enum for better type safety
15
+ */
16
+ export enum HttpStatus {
17
+ OK = 200,
18
+ MOVED_PERMANENTLY = 301,
19
+ FOUND = 302,
20
+ TEMPORARY_REDIRECT = 307,
21
+ PERMANENT_REDIRECT = 308,
22
+ BAD_REQUEST = 400,
23
+ UNAUTHORIZED = 401,
24
+ FORBIDDEN = 403,
25
+ NOT_FOUND = 404,
26
+ METHOD_NOT_ALLOWED = 405,
27
+ REQUEST_TIMEOUT = 408,
28
+ TOO_MANY_REQUESTS = 429,
29
+ INTERNAL_SERVER_ERROR = 500,
30
+ NOT_IMPLEMENTED = 501,
31
+ BAD_GATEWAY = 502,
32
+ SERVICE_UNAVAILABLE = 503,
33
+ GATEWAY_TIMEOUT = 504,
34
+ }
35
+
36
+ /**
37
+ * Base error class for HTTP-related errors
38
+ */
39
+ export class HttpError extends Error {
40
+ constructor(message: string, public readonly statusCode: HttpStatus = HttpStatus.INTERNAL_SERVER_ERROR) {
41
+ super(message);
42
+ this.name = 'HttpError';
43
+ }
44
+ }
45
+
46
+ /**
47
+ * Error related to certificate operations
48
+ */
49
+ export class CertificateError extends HttpError {
50
+ constructor(
51
+ message: string,
52
+ public readonly domain: string,
53
+ public readonly isRenewal: boolean = false
54
+ ) {
55
+ super(`${message} for domain ${domain}${isRenewal ? ' (renewal)' : ''}`, HttpStatus.INTERNAL_SERVER_ERROR);
56
+ this.name = 'CertificateError';
57
+ }
58
+ }
59
+
60
+ /**
61
+ * Error related to server operations
62
+ */
63
+ export class ServerError extends HttpError {
64
+ constructor(message: string, public readonly code?: string, statusCode: HttpStatus = HttpStatus.INTERNAL_SERVER_ERROR) {
65
+ super(message, statusCode);
66
+ this.name = 'ServerError';
67
+ }
68
+ }
69
+
70
+ /**
71
+ * Error for bad requests
72
+ */
73
+ export class BadRequestError extends HttpError {
74
+ constructor(message: string) {
75
+ super(message, HttpStatus.BAD_REQUEST);
76
+ this.name = 'BadRequestError';
77
+ }
78
+ }
79
+
80
+ /**
81
+ * Error for not found resources
82
+ */
83
+ export class NotFoundError extends HttpError {
84
+ constructor(message: string = 'Resource not found') {
85
+ super(message, HttpStatus.NOT_FOUND);
86
+ this.name = 'NotFoundError';
87
+ }
88
+ }
89
+
90
+ /**
91
+ * Redirect configuration for HTTP requests
92
+ */
93
+ export interface IRedirectConfig {
94
+ source: string; // Source path or pattern
95
+ destination: string; // Destination URL
96
+ type: HttpStatus; // Redirect status code
97
+ preserveQuery?: boolean; // Whether to preserve query parameters
98
+ }
99
+
100
+ /**
101
+ * HTTP router configuration
102
+ */
103
+ export interface IRouterConfig {
104
+ routes: Array<{
105
+ path: string;
106
+ method?: string;
107
+ handler: (req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse) => void | Promise<void>;
108
+ }>;
109
+ notFoundHandler?: (req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse) => void;
110
+ errorHandler?: (error: Error, req: plugins.http.IncomingMessage, res: plugins.http.ServerResponse) => void;
111
+ }
112
+
113
+ /**
114
+ * HTTP request method types
115
+ */
116
+ export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS' | 'CONNECT' | 'TRACE';
117
+
118
+ /**
119
+ * Helper function to get HTTP status text
120
+ */
121
+ export function getStatusText(status: HttpStatus): string {
122
+ const statusTexts: Record<HttpStatus, string> = {
123
+ [HttpStatus.OK]: 'OK',
124
+ [HttpStatus.MOVED_PERMANENTLY]: 'Moved Permanently',
125
+ [HttpStatus.FOUND]: 'Found',
126
+ [HttpStatus.TEMPORARY_REDIRECT]: 'Temporary Redirect',
127
+ [HttpStatus.PERMANENT_REDIRECT]: 'Permanent Redirect',
128
+ [HttpStatus.BAD_REQUEST]: 'Bad Request',
129
+ [HttpStatus.UNAUTHORIZED]: 'Unauthorized',
130
+ [HttpStatus.FORBIDDEN]: 'Forbidden',
131
+ [HttpStatus.NOT_FOUND]: 'Not Found',
132
+ [HttpStatus.METHOD_NOT_ALLOWED]: 'Method Not Allowed',
133
+ [HttpStatus.REQUEST_TIMEOUT]: 'Request Timeout',
134
+ [HttpStatus.TOO_MANY_REQUESTS]: 'Too Many Requests',
135
+ [HttpStatus.INTERNAL_SERVER_ERROR]: 'Internal Server Error',
136
+ [HttpStatus.NOT_IMPLEMENTED]: 'Not Implemented',
137
+ [HttpStatus.BAD_GATEWAY]: 'Bad Gateway',
138
+ [HttpStatus.SERVICE_UNAVAILABLE]: 'Service Unavailable',
139
+ [HttpStatus.GATEWAY_TIMEOUT]: 'Gateway Timeout',
140
+ };
141
+ return statusTexts[status] || 'Unknown';
142
+ }
143
+
144
+ // Legacy interfaces for backward compatibility
145
+ export interface IDomainOptions {
146
+ domainName: string;
147
+ sslRedirect: boolean;
148
+ acmeMaintenance: boolean;
149
+ forward?: { ip: string; port: number };
150
+ acmeForward?: { ip: string; port: number };
151
+ }
152
+
153
+ export interface IDomainCertificate {
154
+ options: IDomainOptions;
155
+ certObtained: boolean;
156
+ obtainingInProgress: boolean;
157
+ certificate?: string;
158
+ privateKey?: string;
159
+ expiryDate?: Date;
160
+ lastRenewalAttempt?: Date;
161
+ }
162
+
163
+ // Backward compatibility exports
164
+ export { HttpError as Port80HandlerError };
165
+ export { CertificateError as CertError };
@@ -0,0 +1,5 @@
1
+ /**
2
+ * HttpProxy models
3
+ */
4
+ export * from './types.js';
5
+ export * from './http-types.js';
@@ -16,9 +16,9 @@ import type { IRouteConfig } from '../../smart-proxy/models/route-types.js';
16
16
  import type { IRouteContext } from '../../../core/models/route-context.js';
17
17
 
18
18
  /**
19
- * Configuration options for NetworkProxy
19
+ * Configuration options for HttpProxy
20
20
  */
21
- export interface INetworkProxyOptions {
21
+ export interface IHttpProxyOptions {
22
22
  port: number;
23
23
  maxConnections?: number;
24
24
  keepAliveTimeout?: number;
@@ -1,14 +1,14 @@
1
1
  import * as plugins from '../../plugins.js';
2
2
  import '../../core/models/socket-augmentation.js';
3
3
  import {
4
- type INetworkProxyOptions,
4
+ type IHttpProxyOptions,
5
5
  type ILogger,
6
6
  createLogger,
7
7
  type IReverseProxyConfig,
8
8
  RouteManager
9
9
  } from './models/types.js';
10
10
  import { ConnectionPool } from './connection-pool.js';
11
- import { ProxyRouter } from '../../http/router/index.js';
11
+ import { ProxyRouter } from '../../routing/router/index.js';
12
12
  import { ContextCreator } from './context-creator.js';
13
13
  import { HttpRequestHandler } from './http-request-handler.js';
14
14
  import { Http2RequestHandler } from './http2-request-handler.js';
@@ -46,7 +46,7 @@ export class RequestHandler {
46
46
  public securityManager: SecurityManager;
47
47
 
48
48
  constructor(
49
- private options: INetworkProxyOptions,
49
+ private options: IHttpProxyOptions,
50
50
  private connectionPool: ConnectionPool,
51
51
  private legacyRouter: ProxyRouter, // Legacy router for backward compatibility
52
52
  private routeManager?: RouteManager,