container-server/services/proxy/errorpages/generate.py

114 lines
3.7 KiB
Python

from string import Template
import datetime
import os
dist_dir = 'dist'
errors = {
'maintenance': {
'code': '503',
'emoji': '🏗️',
'title': 'Maintenance',
'description': 'The service is currently under maintenance and will be back later.',
},
400: {
'code': '400',
'emoji': '🚫',
'title': 'Bad Request',
'description': 'The server cannot or will not process the request due to something that is perceived to be a client error (e.g. malformed request syntax).',
},
401: {
'code': '401',
'emoji': '🔐',
'title': 'Unauthorized',
'description': 'The request has not been applied because it lacks valid authentication credentials for the target resource.',
},
403: {
'code': '403',
'emoji': '',
'title': 'Forbidden',
'description': 'The server understood the request but refuses to authorize it.',
},
404: {
'code': '404',
'emoji': '🔍',
'title': 'Not Found',
'description': 'The requested page could not be found.',
},
405: {
'code': '405',
'emoji': '',
'title': 'Method Not Allowed',
'description': 'The method received in the request-line is known by the origin server but not supported by the target resource.',
},
408: {
'code': '408',
'emoji': '⌛️',
'title': 'Request Timeout',
'description': 'The server timed out waiting for the request.',
},
413: {
'code': '413',
'emoji': '⌛️',
'title': 'Payload Too Large',
'description': 'The server will not accept the request because the request entity is too large.',
},
418: {
'code': '418',
'emoji': '🍵',
'title': 'I\'m a Teapot',
'description': 'Any attempt to brew coffee with a teapot should result in the error code "418 I\'m a teapot". The resulting entity body MAY be short and stout.',
},
429: {
'code': '429',
'emoji': '🌋',
'title': 'Too Many Requests',
'description': 'The user has sent too many requests in a given amount of time.',
},
500: {
'code': '500',
'emoji': '💣',
'title': 'Internal Server Error',
'description': 'The server encountered an unexpected condition that prevented it from fulfilling the request.',
},
501: {
'code': '501',
'emoji': '📭',
'title': 'Not Implemented',
'description': 'The server does not support the functionality required to fulfill the request.',
},
502: {
'code': '502',
'emoji': '🚧',
'title': 'Bad Gateway',
'description': 'The server was acting as a gateway or proxy and received an invalid response from the upstream server.',
},
503: {
'code': '503',
'emoji': '🚨',
'title': 'Service Unavailable',
'description': 'The service is currently unavailable.',
},
504: {
'code': '504',
'emoji': '',
'title': 'Gateway Timeout',
'description': 'TThe server was acting as a gateway or proxy and did not receive a timely response from the upstream server.',
},
}
date = {
'date': datetime.datetime.now().isoformat()
}
print('== Creating output dir')
os.makedirs(f'./{dist_dir}', exist_ok=True)
print('== Creating error pages')
with open('./template.html', 'r') as f:
template = Template(f.read())
for key, content in errors.items():
print(f' - {key}')
result = template.substitute(content | date)
with open(f'./{dist_dir}/{key}.html', 'w') as out:
out.write(result)