@@ -41,86 +41,6 @@ function makeResponse(content, status) {
4141 } ) ;
4242}
4343
44- /**
45- * Handles site maintenance mode
46- * @param {boolean } isMaintenance - Indicates if maintenance mode is active
47- * @param {Object } env - Environment variables
48- * @returns {Promise<Response|null> } Maintenance response or null
49- */
50- async function handleMaintenanceMode ( isMaintenance , env ) {
51- if ( isMaintenance ) {
52- return makeResponse ( REDIRECT . generateErrorPage ( "503" , env . TEXT_MAINTENANCE_TYPE , env . TEXT_MAINTENANCE_MESSAGE , env . TEXT_MAINTENANCE_GIF ) , STATUS . MAINTENANCE ) ;
53- }
54- return null ;
55- }
56-
57- /**
58- * Handles tunnel and connection errors
59- * @param {Object } env - Environment variables
60- * @returns {Promise<Response> } Appropriate response based on error type
61- */
62- async function handleTunnelError ( env ) {
63- const originUp = await HELPER . isOriginReachable ( ) . catch ( ( ) => null ) ;
64- if ( originUp === false ) {
65- return makeResponse ( REDIRECT . generateErrorPage ( "503" , env . TEXT_BOX_ERROR_TYPE , env . TEXT_BOX_ERROR_MESSAGE , env . TEXT_BOX_ERROR_GIF ) , STATUS . BOX_NO_IP ) ;
66- }
67-
68- const npmUp = await HELPER . isNpmUp ( ) . catch ( ( ) => false ) ;
69- if ( ! npmUp ) {
70- return makeResponse ( REDIRECT . generateErrorPage ( "503" , env . TEXT_CONTAINER_ERROR_TYPE , env . TEXT_CONTAINER_ERROR_MESSAGE , env . TEXT_CONTAINER_ERROR_GIF ) , STATUS . CONTAINER ) ;
71- }
72- return makeResponse ( REDIRECT . generateErrorPage ( "503" , env . TEXT_GENERIC_ERROR_TYPE , env . TEXT_GENERIC_ERRORR_MESSAGE , env . TEXT_GENERIC_ERROR_GIF ) , STATUS . SERVER ) ;
73- }
74-
75- /**
76- * Handles Cloudflare specific errors
77- * @param {Response } response - Cloudflare error response
78- * @param {Object } env - Environment variables
79- * @returns {Promise<Response> } Appropriate response based on error type
80- */
81- async function handleCloudflareError ( response , env ) {
82- const cfCode = await HELPER . getCloudflareErrorCode ( response ) ;
83- const originUp = await HELPER . isOriginReachable ( ) . catch ( ( ) => null ) ;
84-
85- if ( originUp === false ) {
86- return makeResponse ( REDIRECT . generateErrorPage ( "503" , env . TEXT_BOX_ERROR_TYPE , env . TEXT_BOX_ERROR_MESSAGE , env . TEXT_BOX_ERROR_GIF ) , STATUS . BOX_NO_IP ) ;
87- }
88-
89- if ( cfCode === 1033 || [ 502 , 521 , 522 , 524 , 525 , 526 ] . includes ( response . status ) ) {
90- const npmUp = await HELPER . isNpmUp ( ) . catch ( ( ) => false ) ;
91- if ( ! npmUp ) {
92- return makeResponse ( REDIRECT . generateErrorPage ( "503" , env . TEXT_CONTAINER_ERROR_TYPE , env . TEXT_CONTAINER_ERROR_MESSAGE , env . TEXT_CONTAINER_ERROR_GIF ) , STATUS . CONTAINER ) ;
93- }
94- return makeResponse ( REDIRECT . generateErrorPage ( "503" , env . TEXT_BOX_ERROR_TYPE , env . TEXT_BOX_ERROR_MESSAGE , env . TEXT_BOX_ERROR_GIF ) , STATUS . BOX ) ;
95- }
96-
97- if ( response . status === 523 ) {
98- return makeResponse ( REDIRECT . generateErrorPage ( "503" , env . TEXT_BOX_ERROR_TYPE , env . TEXT_BOX_ERROR_MESSAGE , env . TEXT_BOX_ERROR_GIF ) , STATUS . BOX ) ;
99- }
100-
101- return makeResponse ( REDIRECT . generateErrorPage ( "503" , env . TEXT_GENERIC_ERROR_TYPE , env . TEXT_GENERIC_ERRORR_MESSAGE , env . TEXT_GENERIC_ERROR_GIF ) , STATUS . SERVER ) ;
102- }
103-
104- /**
105- * Handles errors from origin server
106- * @param {Response } response - Origin server error response
107- * @param {Object } env - Environment variables
108- * @returns {Promise<Response> } Appropriate response based on error type
109- */
110- async function handleOriginError ( response , env ) {
111- const originUp = await HELPER . isOriginReachable ( ) . catch ( ( ) => null ) ;
112- if ( originUp === false ) {
113- return makeResponse ( REDIRECT . generateErrorPage ( "503" , env . TEXT_BOX_ERROR_TYPE , env . TEXT_BOX_ERROR_MESSAGE , env . TEXT_BOX_ERROR_GIF ) , STATUS . BOX_NO_IP ) ;
114- }
115-
116- const npmUp = await HELPER . isNpmUp ( ) . catch ( ( ) => false ) ;
117- if ( ! npmUp ) {
118- return makeResponse ( REDIRECT . generateErrorPage ( "503" , env . TEXT_CONTAINER_ERROR_TYPE , env . TEXT_CONTAINER_ERROR_MESSAGE , env . TEXT_CONTAINER_ERROR_GIF ) , STATUS . CONTAINER ) ;
119- }
120-
121- return makeResponse ( REDIRECT . generateErrorPage ( "503" , env . TEXT_GENERIC_ERROR_TYPE , env . TEXT_GENERIC_ERRORR_MESSAGE , env . TEXT_GENERIC_ERROR_GIF ) , STATUS . SERVER ) ;
122- }
123-
12444/**
12545 * Main redirection and error handling function
12646 * @param {Request } request - Incoming request
@@ -131,23 +51,143 @@ async function handleOriginError(response, env) {
13151 * @returns {Promise<Response|null> } Appropriate error response or null
13252 */
13353export async function c_redirect ( request , response , thrownError = null , isMaintenance = false , env ) {
134- // Check maintenance mode
135- const maintenanceResponse = await handleMaintenanceMode ( isMaintenance , env ) ;
136- if ( maintenanceResponse ) return maintenanceResponse ;
54+ // Maintenance mode
55+ if ( isMaintenance ) {
56+ return makeResponse (
57+ REDIRECT . generateErrorPage (
58+ "503" ,
59+ env . TEXT_MAINTENANCE_TYPE ,
60+ env . TEXT_MAINTENANCE_MESSAGE ,
61+ env . TEXT_MAINTENANCE_GIF
62+ ) ,
63+ STATUS . MAINTENANCE
64+ ) ;
65+ }
13766
138- // Handle tunnel errors
139- if ( thrownError ) {
140- return handleTunnelError ( env ) ;
67+ // Tunnel error (thrownError)
68+ else if ( thrownError ) {
69+ const originUp = await HELPER . isOriginReachable ( ) . catch ( ( ) => null ) ;
70+ if ( originUp === false ) {
71+ return makeResponse (
72+ REDIRECT . generateErrorPage (
73+ "503" ,
74+ env . TEXT_BOX_ERROR_TYPE ,
75+ env . TEXT_BOX_ERROR_MESSAGE ,
76+ env . TEXT_BOX_ERROR_GIF
77+ ) ,
78+ STATUS . BOX_NO_IP
79+ ) ;
80+ }
81+ const npmUp = await HELPER . isNpmUp ( ) . catch ( ( ) => false ) ;
82+ if ( ! npmUp ) {
83+ return makeResponse (
84+ REDIRECT . generateErrorPage (
85+ "503" ,
86+ env . TEXT_CONTAINER_ERROR_TYPE ,
87+ env . TEXT_CONTAINER_ERROR_MESSAGE ,
88+ env . TEXT_CONTAINER_ERROR_GIF
89+ ) ,
90+ STATUS . CONTAINER
91+ ) ;
92+ }
93+ return makeResponse (
94+ REDIRECT . generateErrorPage (
95+ "503" ,
96+ env . TEXT_GENERIC_ERROR_TYPE ,
97+ env . TEXT_GENERIC_ERRORR_MESSAGE ,
98+ env . TEXT_GENERIC_ERROR_GIF
99+ ) ,
100+ STATUS . SERVER
101+ ) ;
141102 }
142103
143- // Handle 5xx errors
144- if ( response && response . status >= 500 ) {
104+ // 5xx error response
105+ else if ( response && response . status >= 500 ) {
106+ const originUp = await HELPER . isOriginReachable ( ) . catch ( ( ) => null ) ;
107+ if ( originUp === false ) {
108+ return makeResponse (
109+ REDIRECT . generateErrorPage (
110+ "503" ,
111+ env . TEXT_BOX_ERROR_TYPE ,
112+ env . TEXT_BOX_ERROR_MESSAGE ,
113+ env . TEXT_BOX_ERROR_GIF
114+ ) ,
115+ STATUS . BOX_NO_IP
116+ ) ;
117+ }
118+
145119 if ( HELPER . isCloudflareError ( response ) ) {
146- return handleCloudflareError ( response , env ) ;
120+ const cfCode = await HELPER . getCloudflareErrorCode ( response ) ;
121+ if ( cfCode === 1033 || [ 502 , 521 , 522 , 524 , 525 , 526 ] . includes ( response . status ) ) {
122+ const npmUp = await HELPER . isNpmUp ( ) . catch ( ( ) => false ) ;
123+ if ( ! npmUp ) {
124+ return makeResponse (
125+ REDIRECT . generateErrorPage (
126+ "503" ,
127+ env . TEXT_CONTAINER_ERROR_TYPE ,
128+ env . TEXT_CONTAINER_ERROR_MESSAGE ,
129+ env . TEXT_CONTAINER_ERROR_GIF
130+ ) ,
131+ STATUS . CONTAINER
132+ ) ;
133+ }
134+ return makeResponse (
135+ REDIRECT . generateErrorPage (
136+ "503" ,
137+ env . TEXT_BOX_ERROR_TYPE ,
138+ env . TEXT_BOX_ERROR_MESSAGE ,
139+ env . TEXT_BOX_ERROR_GIF
140+ ) ,
141+ STATUS . BOX
142+ ) ;
143+ }
144+ if ( response . status === 523 ) {
145+ return makeResponse (
146+ REDIRECT . generateErrorPage (
147+ "503" ,
148+ env . TEXT_BOX_ERROR_TYPE ,
149+ env . TEXT_BOX_ERROR_MESSAGE ,
150+ env . TEXT_BOX_ERROR_GIF
151+ ) ,
152+ STATUS . BOX
153+ ) ;
154+ }
155+ return makeResponse (
156+ REDIRECT . generateErrorPage (
157+ "503" ,
158+ env . TEXT_GENERIC_ERROR_TYPE ,
159+ env . TEXT_GENERIC_ERRORR_MESSAGE ,
160+ env . TEXT_GENERIC_ERROR_GIF
161+ ) ,
162+ STATUS . SERVER
163+ ) ;
147164 } else {
148- return handleOriginError ( response , env ) ;
165+ const npmUp = await HELPER . isNpmUp ( ) . catch ( ( ) => false ) ;
166+ if ( ! npmUp ) {
167+ return makeResponse (
168+ REDIRECT . generateErrorPage (
169+ "503" ,
170+ env . TEXT_CONTAINER_ERROR_TYPE ,
171+ env . TEXT_CONTAINER_ERROR_MESSAGE ,
172+ env . TEXT_CONTAINER_ERROR_GIF
173+ ) ,
174+ STATUS . CONTAINER
175+ ) ;
176+ }
177+ return makeResponse (
178+ REDIRECT . generateErrorPage (
179+ "503" ,
180+ env . TEXT_GENERIC_ERROR_TYPE ,
181+ env . TEXT_GENERIC_ERRORR_MESSAGE ,
182+ env . TEXT_GENERIC_ERROR_GIF
183+ ) ,
184+ STATUS . SERVER
185+ ) ;
149186 }
150187 }
151188
152- return null ;
189+ // No error
190+ else {
191+ return null ;
192+ }
153193}
0 commit comments