mirror of
https://github.com/donlon/cloudflare-error-page.git
synced 2025-12-19 14:59:28 +00:00
miscellaneous updates
This commit is contained in:
@@ -28,8 +28,8 @@
|
|||||||
|
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
<meta name="viewport" content="width=device-width,initial-scale=1" />
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/ejs@3.1.10/ejs.min.js"></script>
|
<script src="https://virt.moe/assets/cloudflare-error-page/ejs.min.js"></script>
|
||||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
<link href="https://virt.moe/assets/cloudflare-error-page/bootstrap.min.css" rel="stylesheet">
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
(async function () {
|
(async function () {
|
||||||
@@ -331,6 +331,8 @@
|
|||||||
doc.write(pageHtml);
|
doc.write(pageHtml);
|
||||||
doc.close();
|
doc.close();
|
||||||
|
|
||||||
|
updateStatusBlockStyles();
|
||||||
|
|
||||||
// store last rendered HTML for "open in new tab"
|
// store last rendered HTML for "open in new tab"
|
||||||
lastRenderedHtml = pageHtml;
|
lastRenderedHtml = pageHtml;
|
||||||
}
|
}
|
||||||
@@ -426,7 +428,6 @@
|
|||||||
inp.addEventListener('input', debounce(() => {
|
inp.addEventListener('input', debounce(() => {
|
||||||
// Update status block color classes for quick visual feedback in the editor
|
// Update status block color classes for quick visual feedback in the editor
|
||||||
render();
|
render();
|
||||||
updateStatusBlockStyles();
|
|
||||||
}, 200));
|
}, 200));
|
||||||
// for radio change events (error_source)
|
// for radio change events (error_source)
|
||||||
if (inp.type === 'radio') inp.addEventListener('change', () => { render(); });
|
if (inp.type === 'radio') inp.addEventListener('change', () => { render(); });
|
||||||
@@ -595,7 +596,7 @@
|
|||||||
<div class="form-row mb-3">
|
<div class="form-row mb-3">
|
||||||
<label for="presetSelect">Preset</label>
|
<label for="presetSelect">Preset</label>
|
||||||
<select id="presetSelect" class="form-select form-select-sm">
|
<select id="presetSelect" class="form-select form-select-sm">
|
||||||
<option value="default">Default</option>
|
<option value="default">Internal server error (Default)</option>
|
||||||
<option value="empty">Empty</option>
|
<option value="empty">Empty</option>
|
||||||
<option value="catastrophic">Catastrophic failure</option>
|
<option value="catastrophic">Catastrophic failure</option>
|
||||||
<option value="working">Server working</option>
|
<option value="working">Server working</option>
|
||||||
@@ -838,10 +839,10 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mt-2 text-center">>> Star this project on
|
<div class="mt-2 text-center">>> Star this project on
|
||||||
<a href="https://github.com/donlon/cloudflare-error-page" target="_blank">Github</a> ⭐
|
<a href="https://github.com/donlon/cloudflare-error-page" target="_blank">GitHub</a> ⭐
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="mt-2" style="font-size: 0.9em;">You can also embed the error page into your own website. See
|
<div class="mt-2" style="font-size: 0.9em;">You can also embed this error page into your own website. See
|
||||||
<a href="https://github.com/donlon/cloudflare-error-page#quickstart-for-programmers"
|
<a href="https://github.com/donlon/cloudflare-error-page#quickstart-for-programmers"
|
||||||
target="_blank">Quickstart</a> in the
|
target="_blank">Quickstart</a> in the
|
||||||
homepage for steps.
|
homepage for steps.
|
||||||
@@ -862,10 +863,5 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- JS: Bootstrap bundle -->
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
|
||||||
|
|
||||||
</body>
|
</body>
|
||||||
|
</html>
|
||||||
</html>
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ BEHIND_PROXY = true
|
|||||||
# Some random secret, will be auto-generated if empty
|
# Some random secret, will be auto-generated if empty
|
||||||
SECRET_KEY = ''
|
SECRET_KEY = ''
|
||||||
|
|
||||||
# Main database URL
|
# Main database URI
|
||||||
SQLALCHEMY_DATABASE_URI = 'sqlite:///database.db'
|
SQLALCHEMY_DATABASE_URI = 'sqlite:///database.db'
|
||||||
|
|
||||||
# Rate limit storage for Flask-Limiter
|
# Rate limit storage for Flask-Limiter
|
||||||
|
|||||||
3
editor/server/requirements.txt
Normal file
3
editor/server/requirements.txt
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
Flask
|
||||||
|
Flask-Limiter
|
||||||
|
Flask-SqlAlchemy
|
||||||
@@ -113,7 +113,7 @@ def get(name: str):
|
|||||||
params['creator_info'] = {
|
params['creator_info'] = {
|
||||||
'hidden': False,
|
'hidden': False,
|
||||||
'text': 'CF Error Page Editor',
|
'text': 'CF Error Page Editor',
|
||||||
'link': f'https://virt.moe/cloudflare-error-page/editor/#from={name}',
|
'link': request.host_url[:-1] + url_for('editor.index') + f'#from={name}',
|
||||||
}
|
}
|
||||||
# Always escape HTML
|
# Always escape HTML
|
||||||
params['what_happened'] = html.escape(params.get('what_happened', '')) # TODO: common render function?
|
params['what_happened'] = html.escape(params.get('what_happened', '')) # TODO: common render function?
|
||||||
|
|||||||
@@ -18,10 +18,10 @@ from cloudflare_error_page import get_resources_folder, render as render_cf_erro
|
|||||||
|
|
||||||
app = Flask(__name__)
|
app = Flask(__name__)
|
||||||
|
|
||||||
# You can **use resources from Cloudflare CDN. But in case of changing, you can set use_cdn = False to use bundled resources.
|
# Resources required for the error page can be loaded from Cloudflare CDN. But in case of changes, you can set use_cdn = False to use bundled resources.
|
||||||
use_cdn = True
|
use_cdn = True
|
||||||
|
|
||||||
if use_cdn:
|
if not use_cdn:
|
||||||
res_folder = get_resources_folder()
|
res_folder = get_resources_folder()
|
||||||
|
|
||||||
# This handler is used to provide stylesheet and icon resources for the error page. If you pass use_cdn=True to render_cf_error_page
|
# This handler is used to provide stylesheet and icon resources for the error page. If you pass use_cdn=True to render_cf_error_page
|
||||||
@@ -52,10 +52,10 @@ def index():
|
|||||||
"what_can_i_do": "<p>Please try again in a few minutes.</p>"
|
"what_can_i_do": "<p>Please try again in a few minutes.</p>"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Get real Ray ID from Cloudflare header
|
# Get the real Ray ID from Cloudflare header
|
||||||
ray_id = request.headers.get('Cf-Ray', '')[:16]
|
ray_id = request.headers.get('Cf-Ray', '')[:16]
|
||||||
|
|
||||||
# Get real client ip from Cloudflare header or request.remote_addr
|
# Get the real client ip from Cloudflare header or request.remote_addr
|
||||||
client_ip = request.headers.get('X-Forwarded-For')
|
client_ip = request.headers.get('X-Forwarded-For')
|
||||||
if not client_ip:
|
if not client_ip:
|
||||||
client_ip = request.remote_addr
|
client_ip = request.remote_addr
|
||||||
@@ -70,13 +70,7 @@ def index():
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
if len(sys.argv) > 1:
|
host = sys.argv[1] if len(sys.argv) > 1 else None
|
||||||
host = sys.argv[1]
|
port = int(sys.argv[2]) if len(sys.argv) > 2 else None
|
||||||
else:
|
|
||||||
host = None
|
|
||||||
if len(sys.argv) > 2:
|
|
||||||
port = int(sys.argv[2])
|
|
||||||
else:
|
|
||||||
port = None
|
|
||||||
|
|
||||||
app.run(debug=True, host=host, port=port)
|
app.run(debug=True, host=host, port=port)
|
||||||
|
|||||||
Reference in New Issue
Block a user