Skip to content

Commit 62778b8

Browse files
committed
code improvment
1 parent 3367433 commit 62778b8

File tree

1 file changed

+131
-91
lines changed

1 file changed

+131
-91
lines changed

custom-redirect.js

Lines changed: 131 additions & 91 deletions
Original file line numberDiff line numberDiff line change
@@ -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
*/
13353
export 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

Comments
 (0)