diff --git a/.gitignore b/.gitignore index f2751ab..3d849e9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,14 +1,13 @@ .vscode/ - -build/ -*.egg-info/ -__pycache__/ -dist/ - -node_modules/ +.DS_Store .venv/ venv/ -ttt/ + +node_modules/ +build/ +dist/ +*.egg-info/ +__pycache__/ instance/ diff --git a/editor/web/package.json b/editor/web/package.json index 3c031b9..ccf0d43 100644 --- a/editor/web/package.json +++ b/editor/web/package.json @@ -22,6 +22,7 @@ }, "dependencies": { "bootstrap": "^5.3.8", + "cloudflare-error-page": "../../javascript", "ejs": "^3.1.10" } } diff --git a/editor/web/src/index.js b/editor/web/src/index.js index 26e7057..5948194 100644 --- a/editor/web/src/index.js +++ b/editor/web/src/index.js @@ -5,8 +5,7 @@ - inputs call render() on change - "Open in new tab" opens the rendered HTML in a new window using a blob URL */ -import ejs from 'ejs'; -import templateContent from './template.ejs?raw'; +import { render as render_cf_error_page } from 'cloudflare-error-page'; import 'bootstrap/js/src/modal.js'; import Popover from 'bootstrap/js/src/popover.js'; @@ -14,8 +13,6 @@ import 'bootstrap/dist/css/bootstrap.min.css'; import { jsCodeGen, jsonCodeGen, pythonCodeGen } from './codegen'; -let template = ejs.compile(templateContent); - // can be changed if specified by '?from=' let initialConfig = { title: 'Internal server error', @@ -255,24 +252,9 @@ function readConfig() { }, }; } -function formatUtcTimestamp() { - const d = new Date(); - - const year = d.getUTCFullYear(); - const month = String(d.getUTCMonth() + 1).padStart(2, '0'); - const day = String(d.getUTCDate()).padStart(2, '0'); - - const hours = String(d.getUTCHours()).padStart(2, '0'); - const minutes = String(d.getUTCMinutes()).padStart(2, '0'); - const seconds = String(d.getUTCSeconds()).padStart(2, '0'); - - return `${year}-${month}-${day} ${hours}:${minutes}:${seconds} UTC`; -} function renderEjs(params) { - return template({ - params: params, - }); + return render_cf_error_page(params); } /* Basic render: build HTML string from config and put into iframe.srcdoc */ @@ -280,9 +262,8 @@ function render() { const cfg = readConfig(); window.lastCfg = cfg; - cfg.time = formatUtcTimestamp(); + // TODO: input box for Ray ID / Client IP? cfg.ray_id = '0123456789abcdef'; - cfg.client_ip = '1.1.1.1'; if (Number.isNaN(Number(cfg.error_code))) { cfg.html_title = cfg.title || 'Internal server error'; } @@ -305,8 +286,8 @@ function render() { let lastRenderedHtml = ''; function openInNewTab() { if (!lastRenderedHtml) render(); - const wnd = window.open() - wnd.document.documentElement.innerHTML = lastRenderedHtml + const wnd = window.open(); + wnd.document.documentElement.innerHTML = lastRenderedHtml; } function createShareableLink() { @@ -448,10 +429,10 @@ function updateSaveAsDialog(e) { if (codegen) { saveAsContent = codegen.generate(params); } else if (saveAsType == 'static') { - render() // rerender the page + render(); // rerender the page saveAsContent = lastRenderedHtml; } else { - throw new Error('unexpected saveAsType=' + saveAsType) + throw new Error('unexpected saveAsType=' + saveAsType); } $('saveAsDialogCode').value = saveAsContent; $('saveAsDialogCode').scrollTop = 0; diff --git a/editor/web/src/template.ejs b/editor/web/src/template.ejs deleted file mode 100644 index 9c5e02b..0000000 --- a/editor/web/src/template.ejs +++ /dev/null @@ -1,125 +0,0 @@ -<%# Note: This file is generated with scripts/inline_resources.py. Please do not edit manually. %> - - - - - - -<% -let error_code = params.error_code || 500; -let title = params.title || 'Internal server error'; -let html_title_output = params.html_title || (error_code + ': ' + title); -%> -<%= html_title_output %> - - - - - - - - -
-
-
-

- <%= title %> - Error code <%= error_code %> -

- <% let more_info = params.more_information || {}; %> - <% if (!more_info.hidden) { %> -
- Visit <%= more_info.text || 'cloudflare.com' %> for <%= more_info.for || "more information" %>. -
- <% } %> -
<%= params.time %>
-
-
-
-
- <% for (let item_id of ['browser', 'cloudflare', 'host']) { %> - <% - let icon, default_location, default_name, text_color, status_text; - - if (item_id === 'browser') { - icon = 'browser'; - default_location = 'You'; - default_name = 'Browser'; - } else if (item_id === 'cloudflare') { - icon = 'cloud'; - default_location = 'San Francisco'; - default_name = 'Cloudflare'; - } else { - icon = 'server'; - default_location = 'Website'; - default_name = 'Host'; - } - - let item = params[item_id + '_status'] || {}; - let status = item.status || 'ok'; - - if (item.status_text_color) { - text_color = item.status_text_color; - } else if (status === 'ok') { - text_color = '#9bca3e'; // text-green-success - } else if (status === 'error') { - text_color = '#bd2426'; // text-red-error - } - - status_text = item.status_text || (status === 'ok' ? 'Working' : 'Error'); - %> -
-
- - -
- <%= item.location || default_location %> - <% - let _name_style; - if ((item.name || default_name) === 'Cloudflare') { - _name_style = 'style="color: #2f7bbf;"' - } else{ - _name_style = '' - } - %> -

><%= item.name || default_name %>

- <%= status_text %> -
- <% } %> -
-
-
- -
-
-
-

What happened?

- <%= (params.what_happened || 'There is an internal server error on Cloudflare\'s network.') %> -
-
-

What can I do?

- <%= (params.what_can_i_do || 'Please try again in a few minutes.') %> -
-
-
- - -
-
- - - \ No newline at end of file diff --git a/editor/web/vite.config.ts b/editor/web/vite.config.ts index 8378090..27738ed 100644 --- a/editor/web/vite.config.ts +++ b/editor/web/vite.config.ts @@ -13,6 +13,9 @@ export default defineConfig(({ mode }) => { minify: true, sourcemap: true, }, + resolve: { + dedupe: ['ejs'], + }, server: { port: 3000, proxy: { diff --git a/editor/web/yarn.lock b/editor/web/yarn.lock index 4bc8f27..bf45c62 100644 --- a/editor/web/yarn.lock +++ b/editor/web/yarn.lock @@ -392,6 +392,11 @@ clean-css@~5.3.2: dependencies: source-map "~0.6.0" +cloudflare-error-page@../../javascript: + version "0.1.0" + dependencies: + ejs "^3.1.10" + commander@^10.0.0: version "10.0.1" resolved "https://registry.yarnpkg.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06"