2018-05-05 12:40:41 +00:00
{% extends "base.html" %}
2023-02-28 13:56:14 +00:00
{% block title %}{{lang.menu_links.add_proxy.title}}{% endblock %}
{% block h2 %}{{lang.menu_links.add_proxy.title}}{% endblock %}
2018-05-05 12:40:41 +00:00
{% block content %}
2019-10-25 07:18:57 +00:00
{% from 'include/input_macros.html' import input, checkbox, select %}
2020-10-16 12:33:53 +00:00
{% set balance_params = dict() %}
{% set balance_params = {'roundrobin':'roundrobin','source':'source','leastconn':'leastconn','first':'first',
'rdp-cookie':'rdp-cookie', 'uri':'uri', 'uri whole':'uri whole', 'static-rr': 'static-rr',
'url_param userid':'url_param userid'} %}
{% set checks = dict() %}
2021-08-05 05:46:44 +00:00
{% set checks = {'':'Choose a custom health check','option tcp-check':'Check a TCP Port',
2020-12-04 03:51:31 +00:00
'option ssl-hello-chk':'Check a SSL Port','option httpchk':'Check a HTTP service',
'option ldap-check':'Check a LDAP service', 'option mysql-check':'Check a MySql Service',
2020-10-16 12:33:53 +00:00
'option pgsql-check':'Check a PgSQL Service', 'option redis-check': 'Check a Redis Service',
2020-12-04 03:51:31 +00:00
'option smtpchk':'Check a SMTP service'} %}
2021-04-06 09:36:43 +00:00
{% set observe = {'layer7':'layer7', 'layer4': 'layer4'} %}
{% set on_error = {'mark-down':'mark-down', 'fastinter': 'fastinter', 'fail-check':'fail-check',
'sudden-death':'sudden-death'} %}
2023-04-17 15:01:01 +00:00
{% set header_res = {'http-response': 'response', 'http-request': 'request'} %}
{% set header_params = {'add-header': 'add-header', 'set-header': 'set-header', 'del-header': 'del-header'} %}
2021-03-03 13:47:42 +00:00
{% set if_values = {'1':'Host name starts with','2':'Host name ends with','3':'Path starts with','4':'Path ends with', '6': 'Src ip'} %}
2020-12-15 06:34:02 +00:00
2019-09-26 15:48:56 +00:00
< script src = "/inc/add.js" > < / script >
2018-05-05 12:40:41 +00:00
< div id = "tabs" >
< ul >
2023-02-13 14:45:45 +00:00
< li > < a href = "#create" title = "{{lang.words.add|title()}} {{lang.words.proxy}}: {{lang.words.create|title()}} {{lang.words.proxy}} - Roxy-WI" > {{lang.words.create|title()}} {{lang.words.proxy}}< / a > < / li >
< li > < a href = "#listen" title = "{{lang.words.add|title()}} {{lang.words.proxy}}: {{lang.words.create|title()}} {{lang.words.listener|title()}} - Roxy-WI" > {{lang.words.listener|title()}}< / a > < / li >
< li > < a href = "#frontend" title = "{{lang.words.add|title()}} {{lang.words.proxy}}: {{lang.words.create|title()}} {{lang.words.frontend|title()}} - Roxy-WI" > {{lang.words.frontend|title()}}< / a > < / li >
< li > < a href = "#backend" title = "{{lang.words.add|title()}} {{lang.words.proxy}}: {{lang.words.create|title()}} {{lang.words.backend|title()}} - Roxy-WI" > {{lang.words.backend|title()}}< / a > < / li >
< li > < a href = "#ssl" title = "{{lang.words.add|title()}} {{lang.words.proxy}}: {{lang.words.upload|title()}} SSL {{lang.words.certs}} - Roxy-WI" > SSL {{lang.words.certs}}< / a > < / li >
< li > < a href = "#option" title = "{{lang.words.add|title()}} {{lang.words.proxy}}: {{lang.words.params|title()}} {{lang.words.templates}} - Roxy-WI" > {{lang.words.params|title()}}< / a > < / li >
< li > < a href = "#add-servers" title = "{{lang.words.add|title()}} {{lang.words.proxy}}: {{lang.words.servers|title()}} {{lang.words.templates}} - Roxy-WI" > {{lang.words.servers|title()}}< / a > < / li >
< li > < a href = "#userlist" title = "{{lang.words.add|title()}} {{lang.words.proxy}}: {{lang.words.create|title()}} {{lang.words.userlists|title()}} - Roxy-WI" > {{lang.words.userlists|title()}}< / a > < / li >
< li > < a href = "#peers" title = "{{lang.words.add|title()}} {{lang.words.proxy}}: {{lang.words.create|title()}} peers - Roxy-WI" > Peers< / a > < / li >
< li > < a href = "#lists" title = "{{lang.words.add|title()}} {{lang.words.proxy}}: {{lang.words.create|title()}} {{lang.words.and}} {{lang.words.upload}} {{lang.words.whitelists}} {{lang.words.or}} {{lang.words.blacklists}} - Roxy-WI" > {{lang.words.lists|title()}}< / a > < / li >
2023-08-03 06:56:25 +00:00
< li > < a href = "#maps" title = "{{lang.words.add|title()}} {{lang.words.proxy}}: {{lang.words.create|title()}} {{lang.words.and}} {{lang.words.upload}} {{lang.words.maps}} - Roxy-WI" > {{lang.words.maps|title()}}< / a > < / li >
2018-05-05 12:40:41 +00:00
< / ul >
2020-01-12 16:13:48 +00:00
< ul id = 'browse_histroy' > < / ul >
2019-10-25 07:18:57 +00:00
{% include 'include/add_proxy.html' %}
2018-05-05 12:40:41 +00:00
< div id = "listen" >
2023-09-17 09:42:39 +00:00
< form name = "add-listener" id = "add-listener" action = "/app/add/haproxy/add" method = "post" >
2020-10-16 12:33:53 +00:00
< table class = "add-table" >
2023-02-13 14:45:45 +00:00
< caption > < h3 > {{lang.words.add|title()}} {{lang.words.listener}}< / h3 > < / caption >
2018-05-05 12:40:41 +00:00
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.select|title()}} {{lang.words.w_a}} {{lang.words.server}}: < / td >
2018-05-05 12:40:41 +00:00
< td class = "addOption" >
< select required name = "serv" id = "serv" >
2021-08-05 05:46:44 +00:00
< option disabled selected > ------< / option >
2018-05-05 12:40:41 +00:00
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
2020-10-16 12:33:53 +00:00
{% endfor %}
2018-05-05 12:40:41 +00:00
< / select >
2023-02-13 14:45:45 +00:00
< div class = "tooltip tooltipTop" > < b > {{lang.words.note|title()}}:< / b > {{lang.phrases.master_slave}}< / div >
2018-05-05 12:40:41 +00:00
< / td >
2019-09-20 06:42:19 +00:00
< td rowspan = "5" class = "add-note addName alert-info" >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.listener_desc1}}
2018-08-28 03:34:10 +00:00
< br / > < br / >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.listener_desc2}}
2018-08-28 03:34:10 +00:00
< br / > < br / >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.listener_desc3}}
2018-08-28 03:34:10 +00:00
< / td >
2018-05-05 12:40:41 +00:00
< / tr >
2020-10-16 12:33:53 +00:00
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.name|title()}}:< / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
2023-02-13 14:45:45 +00:00
{{ input('name', name='listener', title=lang.words.name|title() + ' ' +lang.words.listener, placeholder="web_80", required='required') }}
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > IP and {{lang.words.port|title()}}:< / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
{{ input('ip', placeholder="Any", size='15') }}< b > :< / b >
2023-02-13 14:45:45 +00:00
{{ input('listen-port', name='port', title=lang.add_page.desc.port_for_bind + ' ' + lang.words.listener, placeholder="8080", size='5', required='required') }}
2022-02-16 07:46:30 +00:00
< div id = "listener_bind" style = "display: none" > < / div >
2023-02-13 14:45:45 +00:00
< a class = "link add-server" id = "add_bind_listener" title = "{{lang.add_page.desc.bind_ip_pair}}" > < / a >
2020-10-16 12:33:53 +00:00
< div class = "tooltip tooltipTop" >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.ip_port}}
2020-10-16 12:33:53 +00:00
< / div >
< / td >
< / tr >
< tr class = "advance" >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.mode|title()}}: < / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
2019-10-25 07:18:57 +00:00
{% set values = dict() %}
2020-10-16 12:33:53 +00:00
{% set values = {'http':'http','tcp':'tcp'} %}
{{ select('listen-mode-select', name='mode', values=values, selected='http', required='required', class='force_close') }}
< span id = "https-listen-span" >
2023-02-13 14:45:45 +00:00
< label for = "https-listen" style = "margin-top: 5px;" title = "{{lang.words.enable|title()}} SSL Offloading" data-help = "{{lang.add_page.desc.ssl_offloading}}" > SSL Offloading< / label >
2020-10-16 12:33:53 +00:00
< input type = "checkbox" id = "https-listen" name = "ssl" value = "https" >
2018-05-12 19:25:45 +00:00
< / span >
2020-10-16 12:33:53 +00:00
< div id = "https-hide-listen" style = "display: none;" >
2023-02-13 14:45:45 +00:00
< br / > < span class = "tooltip tooltipTop" > {{lang.words.enter2|title()}} {{lang.words.name}} {{lang.words.of}} pem {{lang.words.file2}}, {{lang.add_page.desc.press_down}}:< / span > < br / >
2020-10-16 12:33:53 +00:00
{{ input('path-cert-listen', name="cert", placeholder="some_cert.pem", size='39') }}< br / >
2023-02-13 14:45:45 +00:00
< label for = "ssl-dis-check-listen" style = "margin-top: 5px;" > {{lang.add_page.buttons.disable_ssl_check}}< / label > < input type = "checkbox" id = "ssl-dis-check-listen" name = "ssl-dis-check" value = "ssl-dis-check" >
< label for = "ssl-check-listen" style = "margin-top: 5px;" > {{lang.add_page.buttons.disable_ssl_verify}}< / label > < input type = "checkbox" id = "ssl-check-listen" name = "ssl-check" value = "ssl-check" checked >
2020-10-16 12:33:53 +00:00
< / div >
< / td >
< / tr >
< tr class = "advance" >
< td class = "addName" > Maxconn: < / td >
< td class = "addOption" >
2023-02-13 14:45:45 +00:00
{{ input('maxconn', value='2000', type="number", title=lang.add_page.desc.maxconn_fix, size='5', required='required') }}
< div class = "tooltip tooltipTop" > {{lang.add_page.desc.maxconn_desc}}: 2000< / div >
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
< tr class = "advance" >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.balance|title()}}: < / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
{{ select('balance', values=balance_params, selected='roundrobin', required='required', class='force_close') }}
< / td >
< / tr >
< tr class = "advance" >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.health|title()}} {{lang.words.check}}: < / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
{{ select('listener_checks', name='health_check', values=checks, selected='', class='force_close') }}
< span id = "listener_checks_note" class = "tooltip tooltipTop" > < / span >
2020-12-05 04:55:34 +00:00
< br / >
< span id = "listener_checks_http" style = "display: none;" >
URI path for checking: {{ input('listener_checks_http_path', name='checks_http_path', value='/', title="URI for checking e.g. /check") }}
Domain name: {{ input('listener_checks_http_domain', name='checks_http_domain', placeholder='domain.com', title="Domain name for checking e.g. domain.com") }}
< / span >
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
2023-04-17 15:01:01 +00:00
< tr class = "advance" >
< td class = "addName" > {{lang.words.headers|title()}}: < / td >
< td class = "addOption" >
< span title = "{{lang.words.add|title()}} {{lang.words.headers}}" id = "add_listener_header" class = "link add-server" > < / span >
< div id = "listener_header_div" style = "display: none;" >
< p style = "border-bottom: 1px solid #ddd; padding-bottom: 10px;" id = "listener_header_p" >
2023-04-18 06:27:52 +00:00
{{ select('listener_header_res_method', name='headers_res', values=header_res, first='------', class='force_close') }}
2023-04-17 15:01:01 +00:00
{{ select('listener_header_method', name='headers_method', values=header_params, selected='add-header', class='force_close') }}
< b class = "padding10" > {{lang.words.name}}< / b >
{{ input('listener_header_name', name="header_name") }}
< b class = "padding10" > {{lang.words.value}}< / b >
{{ input('listener_header_value', name="header_value", placeholder='Leave blank if using del-header') }}
< span class = "minus minus-style" onclick = "deleteId('listener_header_p')" title = "{{lang.words.delete|title()}}" > < / span >
< / p >
< / div >
< span >
< a class = "link add-server" id = "listener_add_header" title = "{{lang.words.add|title()}} {{lang.words.headers}}" style = "display: none;" > < / a >
< / span >
< / td >
< / tr >
2020-12-15 06:34:02 +00:00
< tr class = "advance" >
< td class = "addName" title = "Access control list" > ACL: < / td >
< td class = "addOption" >
2023-04-17 15:01:01 +00:00
< span title = "{{lang.words.add|title()}} ACL" id = "add_listener_acl" class = "link add-server" > < / span >
2020-12-15 06:34:02 +00:00
< div id = "listener_acl" style = "display: none;" >
2021-03-03 13:47:42 +00:00
< p style = "border-bottom: 1px solid #ddd; padding-bottom: 10px;" id = "listener_acl_rule" >
2023-04-17 15:01:01 +00:00
< b class = "padding10" > {{lang.words.if|title()}}< / b >
2023-04-18 06:27:52 +00:00
{{ select('listener_acl_if', name='acl_if', values=if_values, first='Select if', class='force_close', disabled=false) }}
2023-04-17 15:01:01 +00:00
< b class = "padding10" > {{lang.words.value}}< / b >
2020-12-15 06:34:02 +00:00
{{ input('listener_acl_value', name="acl_value") }}
2023-04-17 15:01:01 +00:00
< b class = "padding10" > {{lang.words.then}}< / b >
2021-03-03 13:47:42 +00:00
{% set values = dict() %}
{% set values = {'2':'Redirect to','3':'Allow','4':'Deny', '6': 'Return', '7': 'Set-header'} %}
2023-04-18 06:27:52 +00:00
{{ select('listener_acl_then', name='acl_then', values=values, first='Select then', class='force_close', disabled=false) }}
2023-04-17 15:01:01 +00:00
< b class = "padding10" > {{lang.words.value}}< / b >
2021-03-03 13:47:42 +00:00
{{ input('listener_acl_then_value', name='acl_then_value', title="Required if \'then\' is \'Use backend\' or \'Redirect\', \'Return\', or \'Set-header\'") }}
2023-04-17 15:01:01 +00:00
< span class = "minus minus-style" onclick = "deleteId('listener_acl_rule')" title = "{{lang.words.delete|title()}} {{lang.words.this}} ACL" > < / span >
2021-03-03 13:47:42 +00:00
< / p >
2020-12-15 06:34:02 +00:00
< / div >
< span >
2023-02-13 14:45:45 +00:00
< a class = "link add-server" id = "listener_add_acl" title = "{{lang.words.add|title()}} ACL" style = "cursor: pointer; display: none;" > < / a >
2020-12-15 06:34:02 +00:00
< / span >
< / td >
< / tr >
2020-10-16 12:33:53 +00:00
< tr class = "advance" >
2023-02-13 14:45:45 +00:00
< td class = "addName" > < span title = "Cache support start 1.8 and latter" class = "help_cursor" > Web {{lang.words.acceleration}}:< / span > < / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
< span class = "controlgroup" >
2023-02-13 14:45:45 +00:00
{{ checkbox('compression', title=lang.add_page.desc.http_compression, value='1', desc=lang.words.compression|title()) }}
{{ checkbox('cache', title=lang.words.enable|title()+' '+lang.words.cache, value='2', desc=lang.words.cache|title()) }}
{{ checkbox('ssl_offloading', title=lang.add_page.desc.http_https, desc='HTTP->HTTPS') }}
2018-05-05 12:40:41 +00:00
< / span >
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
< tr class = "advance" >
2022-11-20 07:48:15 +00:00
< td class = "addName" > < span title = "Web application firewall" class = "help_cursor" > WAF:< / span > < / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
< span class = "controlgroup" >
2023-02-13 14:45:45 +00:00
{{ checkbox('slow_atack', title=lang.add_page.desc.slow_attack,
2022-11-20 07:48:15 +00:00
desc='Slow attack') }}
2020-10-16 12:33:53 +00:00
{{ checkbox('ddos', title='DDOS attack protect', desc='DDOS') }}
2023-02-13 14:45:45 +00:00
{{ checkbox('whitelist_checkbox', title=lang.words.enable|title()+' '+ lang.words.whitelist, desc=lang.words.whitelist|title()) }}
{{ checkbox('blacklist_checkbox', title=lang.words.enable|title()+' '+ lang.words.blacklist, desc=lang.words.blacklist|title()) }}
2020-10-16 12:33:53 +00:00
{{ checkbox('waf', title='Web application firewall', desc='WAF', value='1') }}
2023-02-13 14:45:45 +00:00
{{ checkbox('antibot', title=lang.add_page.desc.antibot, desc='Antibot', value='1') }}
2020-10-16 12:33:53 +00:00
< / span >
< div id = "blacklist-hide" style = "display: none;" >
2023-02-13 14:45:45 +00:00
< br / > < span class = "tooltip tooltipTop" > {{lang.words.enter2|title()}} {{lang.words.w_a}} {{lang.words.blacklist}} {{lang.words.name}}, {{lang.add_page.desc.press_down}}:< / span > < br / >
2020-10-16 12:33:53 +00:00
{{ input('blacklist-hide-input', size='39', name="blacklist", placeholder="blacklist.lst") }}
< / div >
2021-04-06 09:36:43 +00:00
< div id = "whitelist-hide" style = "display: none;" >
2023-02-13 14:45:45 +00:00
< br / > < span class = "tooltip tooltipTop" > {{lang.words.enter2|title()}} {{lang.words.w_a}} {{lang.words.whitelist}} {{lang.words.name}}, {{lang.add_page.desc.press_down}}:< / span > < br / >
2021-04-06 09:36:43 +00:00
{{ input('whitelist-hide-input', size='39', name="whitelist", placeholder="whitelist.lst") }}
< / div >
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
< tr class = "advance" >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.options|title()}}:< / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
< span class = "controlgroup" >
2023-02-13 14:45:45 +00:00
{{ checkbox('forward_for', title=lang.add_page.desc.forward_for, desc='Forward for') }}
{{ checkbox('redispatch', title=lang.add_page.desc.redispatch, desc='Redispatch') }}
2020-10-16 12:33:53 +00:00
{% set values = dict() %}
{% set values = {'Off':'Off','Server only':'Server only','Force close':'Force close','Pretend keep alive':'Pretend keep alive'} %}
2023-02-13 14:45:45 +00:00
{{ select('force_close', values=values, first='Force HTTP close', title=lang.add_page.desc.force_close, class='force_close') }}
{{ checkbox('cookie', title=lang.add_page.desc.cookie, desc=lang.words.set|title()+' cookie', value='1') }}
{{ checkbox('options-listen-show', title=lang.add_page.buttons.set_options_m, desc=lang.add_page.buttons.set_options) }}
2020-10-16 12:33:53 +00:00
< / span >
< br >
< span id = "cookie_div" style = "display: none;" >
< input type = "text" placeholder = "name" name = "cookie_name" id = "cookie_name" class = "form-control" > < br > < br >
< input type = "text" placeholder = "domain" name = "cookie_domain" class = "form-control" > < br > < br >
< span class = "controlgroup" >
{% set values = dict() %}
{% set values = {'None':'None','rewrite':'rewrite','indirect':'indirect','insert':'insert'} %}
{{ select('rewrite', values=values, first='rewrite/indirect/insert', class='force_close') }}
2023-02-13 14:45:45 +00:00
{{ checkbox('prefix', title=lang.add_page.desc.c_prefix, desc='prefix', value='prefix') }}
{{ checkbox('nocache', title=lang.add_page.desc.c_nocache, desc='nocache', value='nocache') }}
{{ checkbox('postonly', title=lang.add_page.desc.c_postonly, desc='postonly', value='postonly') }}
{{ checkbox('dynamic', title=lang.add_page.desc.c_dynamic, desc='dynamic', value='dynamic') }}
2020-10-16 12:33:53 +00:00
< span id = "dynamic_div" style = "display: none;" >
dynamic-cookie-key: {{ input('dynamic-cookie-key', placeholder="your-custom-key") }}
< / span >
< / span >
< / span >
< div id = "options-listen-show-div" style = "display: none;" >
< div class = "tooltip" >
2023-02-13 14:45:45 +00:00
< span style = "padding-right: 10px;" > {{lang.words.start2|title()}} {{lang.words.typing}} {{lang.words.options}}: < / span >
2020-10-16 12:33:53 +00:00
{{ input('options') }}
< span style = "padding-left: 10px;" >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.press_down}}. < a href = "http://cbonte.github.io/haproxy-dconv/1.7/configuration.html" target = "_blanck" style = "color: #23527c" title = "HAProxy docs" > {{lang.words.read|title()}} {{lang.words.more}} {{lang.words.about}} {{lang.words.options}}< / a >
2020-10-16 12:33:53 +00:00
< / span >
< br / >
2023-02-13 14:45:45 +00:00
< span style = "padding-right: 10px;" > {{lang.words.start2|title()}} {{lang.words.typing}} {{lang.words.saved}} {{lang.words.options}}: < / span >
2020-10-16 12:33:53 +00:00
{{ input('saved-options') }}
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.saved_options}}
2020-10-16 12:33:53 +00:00
< / div >
< textarea name = "option" title = "Options thru" id = "optionsInput" cols = 80 rows = 5 placeholder = "acl test hdr_beg(host) -i some_host" > < / textarea >
< / div >
< / td >
< / tr >
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.servers|title()}}:< / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
{% include 'include/add_servers.html' %}
< br >
< br >
2023-02-13 14:45:45 +00:00
{{ checkbox('template-listen', name='template', title=lang.add_page.desc.server_template, value='template', desc=lang.add_page.desc.server_template) }}
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
< tr class = "advance" >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.check|title()}}:< / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
< div >
2023-02-13 14:45:45 +00:00
< label for = "controlgroup-listen-show" style = "margin-top: 5px;" title = "Set custom check parameters" > {{lang.words.custom|title()}} {{lang.words.check}} {{lang.words.params}}< / label >
2020-10-16 12:33:53 +00:00
< input type = "checkbox" id = "controlgroup-listen-show" name = "default-check" value = "1" >
2023-02-13 14:45:45 +00:00
< span class = "tooltip tooltipTop" > {{lang.add_page.desc.def_check}}: inter 2000 rise 2 fall 5< / span >
2020-10-16 12:33:53 +00:00
< / div >
< div class = "controlgroup" id = "controlgroup-listen" style = "display: none;" >
2023-02-13 14:45:45 +00:00
< label for = "check-servers-listen" title = "Ebable servers check" > {{lang.words.check|title()}}< / label >
2020-10-16 12:33:53 +00:00
< input type = "checkbox" id = "check-servers-listen" name = "check-servers" checked value = "1" >
{% set values = dict() %}
{% set values = {'1000':'1000','2000':'2000','3000':'3000'} %}
{{ select('inter-listen', values=values, first='inter', class='force_close') }}
{% set values = dict() %}
{% set values = {'1':'1','2':'2','3':'3'} %}
{{ select('rise-listen', name='rise', values=values, first='rise', class='force_close') }}
{% set values = dict() %}
{% set values = {'4':'4','5':'5','6':'6'} %}
{{ select('fall-listen', name='fall', values=values, first='fall', class='force_close') }}
< / div >
2021-04-06 09:36:43 +00:00
< div style = "display: block" >
2023-02-13 14:45:45 +00:00
{{ checkbox('circuit_breaking_listen', name="circuit_breaking", desc='Circuit Breaking', title=lang.add_page.desc.circuit_breaking, value='1') }}
2021-04-06 09:36:43 +00:00
< / div >
< div id = "circuit_breaking_listen_div" style = "display: none" >
Observe:
{{ select('circuit_breaking_observe', values=observe, class='force_close') }}
error-limit: {{ input('circuit_breaking_error_limit', type='number', value='50', style='width: 50px;') }}
on-error:
{{ select('circuit_breaking_on_error', values=on_error, class='force_close') }}
2023-02-13 14:45:45 +00:00
< div class = "tooltip tooltipTop" > {{lang.words.read|title()}} {{lang.words.more}} {{lang.words.about}} Circuit Breaking < a href = "https://roxy-wi.org/description/circuit-breaking" title = "Circuit Breaking" target = "_blank" > {{lang.words.here}}< / a > < / div >
2021-04-06 09:36:43 +00:00
< / div >
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
< tr class = "advance-show" >
2021-01-12 05:05:53 +00:00
< td class = "addOption" colspan = "2" >
2023-02-13 14:45:45 +00:00
< button title = "{{lang.add_page.buttons.show_full_settings}}" class = "row-down advance-show-button" > {{lang.words.show|title()}} {{lang.words.advanced}} {{lang.words.settings}}< / button >
< button title = "{{lang.add_page.buttons.hide_full_settings}}" class = "row-up advance-hide-button" style = "display: none" > {{lang.words.hide|title()}} {{lang.words.advanced}} {{lang.words.settings}}< / button >
2021-01-12 05:05:53 +00:00
< / td >
2020-10-16 12:33:53 +00:00
< / tr >
< tr >
< td class = "addButton" >
2023-02-13 14:45:45 +00:00
< a class = "ui-button ui-widget ui-corner-all" title = "{{lang.words.add|title()}} {{lang.words.listener|title()}}" onclick = "addProxy('add-listener')" > {{lang.words.add|title()}} {{lang.words.linstener|title()}}< / a >
2020-12-15 06:34:02 +00:00
< / td >
< td class = "addButton" >
2023-02-13 14:45:45 +00:00
< a class = "ui-button ui-widget ui-corner-all" title = "{{lang.words.generate|title()}} {{lang.words.and}} {{lang.words.display}} {{lang.words.config}}" onclick = "generateConfig('add-listener')" > {{lang.words.generate|title()}} {{lang.words.config}}< / a >
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
< / table >
2018-05-05 12:40:41 +00:00
< / form >
2019-09-23 14:03:23 +00:00
< / div >
2021-03-03 13:47:42 +00:00
2018-05-05 12:40:41 +00:00
<!-- Second tabs -->
2021-03-03 13:47:42 +00:00
2018-05-05 12:40:41 +00:00
< div id = "frontend" >
2020-12-15 06:34:02 +00:00
< form name = "add-frontend" id = "add-frontend" action = "/app/add.py" method = "post" >
2018-05-05 12:40:41 +00:00
< table >
2023-02-13 14:45:45 +00:00
< caption > < h3 > {{lang.words.add|title()}} {{lang.words.frontend}}< / h3 > < / caption >
2018-05-05 12:40:41 +00:00
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.select|title()}} {{lang.words.w_a}} {{lang.words.server}}: < / td >
2018-05-05 12:40:41 +00:00
< td class = "addOption" >
< select required name = "serv" id = "serv2" >
2021-08-05 05:46:44 +00:00
< option disabled selected > ------< / option >
2018-05-05 12:40:41 +00:00
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
{% endfor %}
< / select >
2023-02-13 14:45:45 +00:00
< div class = "tooltip tooltipTop" > < b > {{lang.words.note|title()}}:< / b > {{lang.phrases.master_slave}}< / div >
2018-05-05 12:40:41 +00:00
< / td >
2019-09-20 06:42:19 +00:00
< td rowspan = "5" class = "add-note addName alert-info" >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.front_desc1}}
2018-08-28 03:34:10 +00:00
< br / > < br / >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.listener_desc2}}
2018-08-28 03:34:10 +00:00
< br / > < br / >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.listener_desc1}}
2018-08-28 03:34:10 +00:00
< / td >
2018-05-05 12:40:41 +00:00
< / tr >
2020-10-16 12:33:53 +00:00
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.name|title()}}:< / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
2023-02-13 14:45:45 +00:00
< input type = "text" name = "frontend" id = "new_frontend" required title = "{{lang.words.name|title()}} {{lang.words.frontend}}" placeholder = "web_80" class = "form-control" >
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > IP and {{lang.words.port|title()}}:< / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
< input type = "text" name = "ip" id = "ip1" size = "15" placeholder = "Any" class = "form-control" > < b > :< / b >
2023-02-13 14:45:45 +00:00
< input type = "text" name = "port" size = "5" required title = "{{lang.add_page.desc.port_for_bind}} {{lang.words.frontend}}" placeholder = "8080" class = "form-control" >
2022-02-16 07:46:30 +00:00
< div id = "frontend_bind" style = "display: none" > < / div >
2023-02-13 14:45:45 +00:00
< a class = "link add-server" id = "add_bind_frontend" title = "{{lang.add_page.desc.bind_ip_pair}}" > < / a >
2020-10-16 12:33:53 +00:00
< div class = "tooltip tooltipTop" >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.ip_port}}
2020-10-16 12:33:53 +00:00
< / div >
< / td >
< / tr >
< tr class = "advance" >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.mode|title()}}: < / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
2019-10-25 07:18:57 +00:00
{% set values = dict() %}
2020-10-16 12:33:53 +00:00
{% set values = {'http':'http','tcp':'tcp'} %}
{{ select('frontend-mode-select', name='mode', values=values, selected='http', required='required', class='force_close') }}
< span id = "https-frontend-span" >
2023-02-13 14:45:45 +00:00
{{ checkbox('https-frontend', title=lang.add_page.desc.ssl_offloading, desc='SSL Offloading') }}
2022-11-20 07:48:15 +00:00
2020-10-16 12:33:53 +00:00
< / span >
< div id = "https-hide-frontend" style = "display: none;" >
2023-02-13 14:45:45 +00:00
< br / > < span class = "tooltip tooltipTop" > {{lang.words.enter2|title()}} {{lang.words.name}} {{lang.words.of}} pem {{lang.words.file2}}, {{lang.add_page.desc.press_down}}:< / span > < br / >
2020-10-16 12:33:53 +00:00
{{ input('path-cert-frontend', name="cert", placeholder="some_cert.pem", size='39') }}
2018-05-05 12:40:41 +00:00
< / div >
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
< tr class = "advance" >
< td class = "addName" > Maxconn: < / td >
< td class = "addOption" >
2023-02-13 14:45:45 +00:00
{{ input('maxconn', value='2000', type="number", title=lang.add_page.desc.maxconn_fix, size='5', required='required') }}
< div class = "tooltip tooltipTop" > {{lang.add_page.desc.maxconn_desc}}: 2000< / div >
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
2023-04-17 15:01:01 +00:00
< tr class = "advance" >
< td class = "addName" > {{lang.words.headers|title()}}: < / td >
< td class = "addOption" >
< span title = "{{lang.words.add|title()}} {{lang.words.headers}}" id = "add_frontend_header" class = "link add-server" > < / span >
< div id = "frontend_header_div" style = "display: none;" >
< p style = "border-bottom: 1px solid #ddd; padding-bottom: 10px;" id = "frontend_header_p" >
2023-04-18 06:27:52 +00:00
{{ select('frontend_header_res_method', name='headers_res', values=header_res, first='------', class='force_close') }}
2023-04-17 15:01:01 +00:00
{{ select('frontend_header_method', name='headers_method', values=header_params, selected='add-header', class='force_close') }}
< b class = "padding10" > {{lang.words.name}}< / b >
{{ input('frontend_header_name', name="header_name") }}
< b class = "padding10" > {{lang.words.value}}< / b >
{{ input('frontend_header_value', name="header_value", placeholder='Leave blank if using del-header') }}
< span class = "minus minus-style" onclick = "deleteId('frontend_header_p')" title = "{{lang.words.delete|title()}}" > < / span >
< / p >
< / div >
< span >
< a class = "link add-server" id = "frontend_add_header" title = "{{lang.words.add|title()}} {{lang.words.headers}}" style = "display: none;" > < / a >
< / span >
< / td >
< / tr >
2020-12-15 06:34:02 +00:00
< tr class = "advance" >
< td class = "addName" title = "Access control list" > ACL: < / td >
< td class = "addOption" >
2023-04-18 06:27:52 +00:00
< span title = "{{lang.words.add|title()}} ACL" id = "add_frontend_acl" class = "link add-server" > < / span >
2020-12-15 06:34:02 +00:00
< div id = "frontend_acl" style = "display: none;" >
2021-03-03 13:47:42 +00:00
< p id = "frontend_acl_rule" style = "border-bottom: 1px solid #ddd; padding-bottom: 10px;" >
2020-12-15 06:34:02 +00:00
< b class = "padding10" > if< / b >
2023-04-18 06:27:52 +00:00
{{ select('frontend_acl_if', name='acl_if', values=if_values, first='Select if', class='force_close', disabled=false) }}
2020-12-15 06:34:02 +00:00
< b class = "padding10" > value< / b >
{{ input('frontend_acl_value', name='acl_value') }}
2021-03-03 13:47:42 +00:00
< b class = "padding10" > then< / b >
{% set values = dict() %}
{% set values = {'5':'Use backend','2':'Redirect to','3':'Allow','4':'Deny', '6': 'Return', '7': 'Set-header'} %}
2023-04-18 06:27:52 +00:00
{{ select('frontend_acl_then', name='acl_then', values=values, first='Select then', class='force_close', disabled=false) }}
2021-03-03 13:47:42 +00:00
< b class = "padding10" > value< / b >
{{ input('frontend_acl_then_value', name='acl_then_value', title="Required if \'then\' is \'Use backend\' or \'Redirect\', \'Return\', or \'Set-header\'") }}
2023-04-18 06:27:52 +00:00
< span class = "minus minus-style" onclick = "deleteId('frontend_acl_rule')" title = "{{lang.words.delete|title()}}" > < / span >
2021-03-03 13:47:42 +00:00
< / p >
2020-12-15 06:34:02 +00:00
< / div >
< span >
2023-04-18 06:27:52 +00:00
< a class = "link add-server" id = "frontend_add_acl" title = "{{lang.words.add|title()}} ACL" style = "cursor: pointer; display: none;" > < / a >
2020-12-15 06:34:02 +00:00
< / span >
< / td >
< / tr >
2020-10-16 12:33:53 +00:00
< tr class = "advance" >
2023-02-13 14:45:45 +00:00
< td class = "addName" > < span title = "Cache support start 1.8 and latter" class = "help_cursor" > Web {{lang.words.acceleration}}:< / span > < / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
< span class = "controlgroup" >
2023-02-13 14:45:45 +00:00
{{ checkbox('compression2', name="compression", title=lang.add_page.desc.http_compression, value='1', desc=lang.words.compression|title()) }}
{{ checkbox('cache2', name="cache", title=lang.words.enable|title()+' '+lang.words.cache, value='2', desc=lang.words.cache|title()) }}
{{ checkbox('ssl_offloading1', title=lang.add_page.desc.http_https, desc='HTTP->HTTPS') }}
2020-10-16 12:33:53 +00:00
< / span >
< / td >
< / tr >
< tr class = "advance" >
2022-11-20 07:48:15 +00:00
< td class = "addName" > < span title = "Web application firewall" class = "help_cursor" > WAF:< / span > < / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
< span class = "controlgroup" >
2023-02-13 14:45:45 +00:00
{{ checkbox('slow_atack1', title=lang.add_page.desc.slow_attack,
2022-11-20 07:48:15 +00:00
desc='Slow attack') }}
2020-10-16 12:33:53 +00:00
{{ checkbox('ddos1', title='DDOS attack protect', desc='DDOS') }}
2023-02-13 14:45:45 +00:00
{{ checkbox('whitelist_checkbox1', title=lang.words.enable|title()+' '+ lang.words.whitelist, desc=lang.words.whitelist|title()) }}
{{ checkbox('blacklist_checkbox1', title=lang.words.enable|title()+' '+ lang.words.blacklist, desc=lang.words.blacklist|title()) }}
2020-10-16 12:33:53 +00:00
{{ checkbox('waf2', name='waf', title='Web application firewall', desc='WAF', value='1') }}
2023-02-13 14:45:45 +00:00
{{ checkbox('antibot1', title=lang.add_page.desc.antibot, desc='Antibot', value='1') }}
2020-10-16 12:33:53 +00:00
< / span >
< div id = "blacklist-hide1" style = "display: none;" >
2023-02-13 14:45:45 +00:00
< br / > < span class = "tooltip tooltipTop" > {{lang.words.enter2|title()}} {{lang.words.w_a}} {{lang.words.blacklist}} {{lang.words.name}}, {{lang.add_page.desc.press_down}}:< / span > < br / >
2020-10-16 12:33:53 +00:00
{{ input('blacklist-hide-input1', size='39', name="blacklist", placeholder="blacklist.lst") }}
< / div >
2021-04-06 09:36:43 +00:00
< div id = "whitelist-hide1" style = "display: none;" >
2023-02-13 14:45:45 +00:00
< br / > < span class = "tooltip tooltipTop" > {{lang.words.enter2|title()}} {{lang.words.w_a}} {{lang.words.whitelist}} {{lang.words.name}}, {{lang.add_page.desc.press_down}}:< / span > < br / >
2021-04-06 09:36:43 +00:00
{{ input('whitelist-hide-input1', size='39', name="whitelist", placeholder="whitelist.lst") }}
< / div >
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
< tr class = "advance" >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.options|title()}}:< / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
< span class = "controlgroup" >
2023-02-13 14:45:45 +00:00
{{ checkbox('forward_for1', title=lang.add_page.desc.forward_for,
2022-11-20 07:48:15 +00:00
desc='Forward for') }}
2020-10-16 12:33:53 +00:00
{% set values = dict() %}
{% set values = {'Off':'Off','Server only':'Server only','Force close':'Force close','Pretend keep alive':'Pretend keep alive'} %}
2023-02-13 14:45:45 +00:00
{{ select('force_close', values=values, first='Force HTTP close', title=lang.add_page.desc.force_close, class='force_close') }}
{{ checkbox('options-frontend-show', title=lang.add_page.buttons.set_options_m, desc=lang.add_page.buttons.set_options) }}
2020-10-16 12:33:53 +00:00
< / span >
< div id = "options-frontend-show-div" style = "display: none;" >
< div style = "font-size: 12px; padding-bottom: 10px;" >
2023-02-13 14:45:45 +00:00
< span style = "padding-right: 10px;" > {{lang.words.start2|title()}} {{lang.words.typing}} {{lang.words.options}}: < / span >
2020-10-16 12:33:53 +00:00
{{ input('options1') }}
< span style = "padding-left: 10px;" >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.press_down}}. < a href = "http://cbonte.github.io/haproxy-dconv/1.7/configuration.html" target = "_blanck" style = "color: #23527c" title = "HAProxy docs" > {{lang.words.read|title()}} {{lang.words.more}} {{lang.words.about}} {{lang.words.options}}< / a >
2020-10-16 12:33:53 +00:00
< / span >
< br / >
2023-02-13 14:45:45 +00:00
< span style = "padding-right: 10px;" > {{lang.words.start2|title()}} {{lang.words.typing}} {{lang.words.saved}} {{lang.words.options}}:< / span >
2020-10-16 12:33:53 +00:00
{{ input('saved-options1') }}
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.saved_options}}
2020-10-16 12:33:53 +00:00
< / div >
< textarea name = "option" title = "Options thru" cols = 80 rows = 5 id = "optionsInput1" placeholder = "acl test hdr_beg(host) -i some_host" > < / textarea >
< / div >
< / td >
< / tr >
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.default_backend}}< / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
2023-02-13 14:45:45 +00:00
{{ input('backends', name='backends', placeholder="some_backend", size='30', title=lang.add_page.desc.no_def_backend) }}
2021-07-07 07:30:09 +00:00
< div class = "tooltip tooltipTop" >
2023-02-13 14:45:45 +00:00
< b > {{lang.words.note|title()}}< / b > : {{lang.add_page.desc.def_backend}}, < span title = "{{lang.words.create|title()}} {{lang.words.backend}}" class = "redirectBackend link" > {{lang.add_page.desc.def_backend_exit}}< / span > .
2021-07-07 07:30:09 +00:00
< / div >
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
< tr class = "advance-show" >
2021-01-12 05:05:53 +00:00
< td class = "addOption" colspan = "2" >
2023-02-13 14:45:45 +00:00
< button title = "{{lang.add_page.buttons.show_full_settings}}" class = "row-down advance-show-button" > {{lang.words.show|title()}} {{lang.words.advanced}} {{lang.words.settings}}< / button >
< button title = "{{lang.add_page.buttons.hide_full_settings}}" class = "row-up advance-hide-button" style = "display: none" > {{lang.words.hide|title()}} {{lang.words.advanced}} {{lang.words.settings}}< / button >
2021-01-12 05:05:53 +00:00
< / td >
2020-10-16 12:33:53 +00:00
< / tr >
< tr >
< td class = "addButton" >
2020-12-15 06:34:02 +00:00
< a class = "ui-button ui-widget ui-corner-all" title = "Add Frontend" onclick = "addProxy('add-frontend')" > Add Frontend< / a >
< / td >
< td class = "addButton" >
2023-02-13 14:45:45 +00:00
< a class = "ui-button ui-widget ui-corner-all" title = "{{lang.words.generate|title()}} {{lang.words.and}} {{lang.words.display}} {{lang.words.config}}" onclick = "generateConfig('add-frontend')" > {{lang.words.generate|title()}} {{lang.words.config}}< / a >
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
2018-05-05 12:40:41 +00:00
< / table >
2020-10-16 12:33:53 +00:00
< / form >
2018-05-05 12:40:41 +00:00
< / div >
2021-03-03 13:47:42 +00:00
2018-05-05 12:40:41 +00:00
<!-- Third tabs -->
2021-03-03 13:47:42 +00:00
2018-05-05 12:40:41 +00:00
< div id = "backend" >
2020-12-15 06:34:02 +00:00
< form name = "add-backend" id = "add-backend" action = "/app/add.py" method = "post" >
2018-05-05 12:40:41 +00:00
< table >
2023-02-13 14:45:45 +00:00
< caption > < h3 > {{lang.words.add|title()}} {{lang.words.backend}}< / h3 > < / caption >
2018-05-05 12:40:41 +00:00
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.select|title()}} {{lang.words.w_a}} {{lang.words.server}}: < / td >
2018-05-05 12:40:41 +00:00
< td class = "addOption" >
< select required name = "serv" id = "serv3" >
2021-08-05 05:46:44 +00:00
< option disabled selected > ------< / option >
2018-05-05 12:40:41 +00:00
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
{% endfor %}
< / select >
2023-02-13 14:45:45 +00:00
< div class = "tooltip tooltipTop" > < b > {{lang.words.note|title()}}:< / b > {{lang.phrases.master_slave}}< / div >
2018-05-05 12:40:41 +00:00
< / td >
2019-09-20 06:42:19 +00:00
< td rowspan = "4" class = "add-note addName alert-info" >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.back_des1}}
2018-08-28 03:34:10 +00:00
< br / > < br / >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.listener_desc2}}
2018-08-28 03:34:10 +00:00
< br / > < br / >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.listener_desc3}}
2018-08-28 03:34:10 +00:00
< / td >
2018-05-05 12:40:41 +00:00
< / tr >
2020-10-16 12:33:53 +00:00
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.name|title()}}:< / td >
2019-10-25 07:18:57 +00:00
< td class = "addOption" >
2023-02-13 14:45:45 +00:00
{{ input('new_backend', title=lang.words.name|title() + ' ' +lang.words.backend, placeholder="web_80", required='required') }}
2019-10-25 07:18:57 +00:00
< / td >
2020-10-16 12:33:53 +00:00
< / tr >
< tr class = "advance" >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.mode|title()}}: < / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
2019-10-25 07:18:57 +00:00
{% set values = dict() %}
2020-10-16 12:33:53 +00:00
{% set values = {'http':'http','tcp':'tcp'} %}
{{ select('backend-mode-select', name='mode', values=values, selected='http', required='required', class='force_close') }}
< span id = "https-backend-span" >
< label for = "https-backend" style = "margin-top: 5px;" > Is SSL enabled on frontend?< / label >
< input type = "checkbox" id = "https-backend" name = "ssl" value = "https" >
< / span >
< div id = "https-hide-backend" style = "display: none;" >
2023-02-13 14:45:45 +00:00
< label for = "ssl-dis-check-backend" style = "margin-top: 5px;" > {{lang.add_page.buttons.disable_ssl_check}}< / label > < input type = "checkbox" id = "ssl-dis-check-backend" name = "ssl-dis-check" value = "ssl-dis-check" >
< label for = "ssl-check-backend" style = "margin-top: 5px;" > {{lang.add_page.buttons.disable_ssl_verify}}< / label > < input type = "checkbox" id = "ssl-check-backend" name = "ssl-check" value = "ssl-check" checked >
2020-10-16 12:33:53 +00:00
< / div >
< / td >
< / tr >
< tr class = "advance" >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.balance|title()}}: < / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
{{ select('balance', values=balance_params, selected='roundrobin', required='required', class='force_close') }}
< / td >
< / tr >
< tr class = "advance" >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.health|title()}} {{lang.words.check}}: < / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
{{ select('backend_checks', name='health_check', values=checks, selected='', class='force_close') }}
< span id = "backend_checks_note" class = "tooltip tooltipTop" > < / span >
2020-12-05 04:55:34 +00:00
< br / >
< span id = "backend_checks_http" style = "display: none;" >
URI path for checking: {{ input('backend_checks_http_path', name='checks_http_path', value='/', title="URI for checking e.g. /check") }}
Domain name: {{ input('backend_checks_http_domain', name='checks_http_domain', placeholder='domain.com', title="Domain name for checking e.g. domain.com") }}
< / span >
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
2023-04-17 15:01:01 +00:00
< tr class = "advance" >
< td class = "addName" > {{lang.words.headers|title()}}: < / td >
< td class = "addOption" >
< span title = "{{lang.words.add|title()}} {{lang.words.headers}}" id = "add_backend_header" class = "link add-server" > < / span >
< div id = "backend_header_div" style = "display: none;" >
< p style = "border-bottom: 1px solid #ddd; padding-bottom: 10px;" id = "backend_header_p" >
2023-04-18 06:27:52 +00:00
{{ select('backend_header_res_method', name='headers_res', values=header_res, first='------', class='force_close') }}
2023-04-17 15:01:01 +00:00
{{ select('backend_header_method', name='headers_method', values=header_params, selected='add-header', class='force_close') }}
< b class = "padding10" > {{lang.words.name}}< / b >
{{ input('backend_header_name', name="header_name") }}
< b class = "padding10" > {{lang.words.value}}< / b >
{{ input('lbackend_header_value', name="header_value", placeholder='Leave blank if using del-header') }}
< span class = "minus minus-style" onclick = "deleteId('listener_header_p')" title = "{{lang.words.delete|title()}}" > < / span >
< / p >
< / div >
< span >
< a class = "link add-server" id = "backend_add_header" title = "{{lang.words.add|title()}} {{lang.words.headers}}" style = "display: none;" > < / a >
< / span >
< / td >
< / tr >
2021-01-01 07:27:16 +00:00
< tr class = "advance" >
< td class = "addName" title = "Access control list" > ACL: < / td >
< td class = "addOption" >
2023-04-18 06:27:52 +00:00
< span title = "{{lang.words.add|title()}} ACL" id = "add_backend_acl" class = "link add-server" > < / span >
2021-01-01 07:27:16 +00:00
< div id = "backend_acl" style = "display: none;" >
2021-03-03 13:47:42 +00:00
< p id = "backend_acl_rule" style = "border-bottom: 1px solid #ddd; padding-bottom: 10px;" >
< b class = "padding10" > if< / b >
2023-04-18 06:27:52 +00:00
{{ select('backend_acl_if', name='acl_if', values=if_values, first='Select if', class='force_close', disabled=false) }}
2021-03-03 13:47:42 +00:00
< b class = "padding10" > value< / b >
{{ input('backend_acl_value', name="acl_value") }}
< b class = "padding10" > then< / b >
{% set values = dict() %}
{% set values = {'2':'Redirect to','3':'Allow','4':'Deny', '6': 'Return', '7': 'Set-header'} %}
2023-04-18 06:27:52 +00:00
{{ select('backend_acl_then', name='acl_then', values=values, first='Select then', class='force_close', disabled=false) }}
2021-03-03 13:47:42 +00:00
< b class = "padding10" > value< / b >
{{ input('backend_acl_then_value', name='acl_then_value', title="Required if \'then\' is \'Use backend\', \'Redirect\', \'Return\', or \'Set-header\'") }}
2023-02-13 14:45:45 +00:00
< span class = "minus minus-style" onclick = "deleteId('backend_acl_rule')" title = "{{lang.words.delete|title()}} {{lang.words.this}} {{lang.words.rule}}" > < / span >
2021-03-03 13:47:42 +00:00
< / p >
2021-01-01 07:27:16 +00:00
< / div >
< span >
2023-04-18 06:27:52 +00:00
< a class = "link add-server" id = "backend_add_acl" title = "{{lang.words.add|title()}} ACL" style = "cursor: pointer; display: none;" > < / a >
2021-01-01 07:27:16 +00:00
< / span >
< / td >
< / tr >
2020-10-16 12:33:53 +00:00
< tr class = "advance" >
2023-02-13 14:45:45 +00:00
< td class = "addName" > < span title = "Cache support start 1.8 and latter" class = "help_cursor" > Web {{lang.words.acceleration}}:< / span > < / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
< span class = "controlgroup" >
2023-02-13 14:45:45 +00:00
{{ checkbox('compression3', name="compression", title=lang.add_page.desc.http_compression, value='1', desc=lang.words.compression|title()) }}
{{ checkbox('cache3', name="cache", title=lang.words.enable|title()+' '+lang.words.cache, value='2', desc=lang.words.cache|title()) }}
{{ checkbox('ssl_offloading2', title=lang.add_page.desc.http_https, desc='SSL Offloading') }}
2020-10-16 12:33:53 +00:00
< / span >
< / td >
< / tr >
< tr class = "advance" >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.options|title()}}:< / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
2018-05-12 19:25:45 +00:00
< span class = "controlgroup" >
2023-02-13 14:45:45 +00:00
{{ checkbox('forward_for2', title=lang.add_page.desc.forward_for, desc='Forward for') }}
{{ checkbox('redispatch2', title=lang.add_page.desc.redispatch, desc='Redispatch') }}
2019-10-25 07:18:57 +00:00
{% set values = dict() %}
2020-10-16 12:33:53 +00:00
{% set values = {'Off':'Off','Server only':'Server only','Force close':'Force close','Pretend keep alive':'Pretend keep alive'} %}
2023-02-13 14:45:45 +00:00
{{ select('force_close', values=values, first='Force HTTP close', title=lang.add_page.desc.force_close, class='force_close') }}
{{ checkbox('cookie2', title=lang.add_page.desc.cookie, desc=lang.words.set|title()+' cookie', value='1') }}
{{ checkbox('options-backend-show', title=lang.add_page.buttons.set_options_m, desc=lang.add_page.buttons.set_options) }}
2018-05-12 16:41:07 +00:00
< / span >
2020-10-16 12:33:53 +00:00
< br >
< span id = "cookie_div2" style = "display: none;" >
< input type = "text" placeholder = "name" name = "cookie_name" id = "cookie_name2" class = "form-control" > < br > < br >
< input type = "text" placeholder = "domain" name = "cookie_domain" class = "form-control" > < br > < br >
< span class = "controlgroup" >
{% set values = dict() %}
{% set values = {'None':'None','rewrite':'rewrite','indirect':'indirect','insert':'insert'} %}
{{ select('rewrite2', values=values, first='rewrite/indirect/insert', class='force_close') }}
2023-02-13 14:45:45 +00:00
{{ checkbox('prefix2', name='prefix', title=lang.add_page.desc.c_prefix, desc='prefix', value='prefix') }}
{{ checkbox('nocache2', name='nocache', title=lang.add_page.desc.c_nocache, desc='nocache', value='nocache') }}
{{ checkbox('postonly2', name='postonly', title=lang.add_page.desc.c_postonly, desc='postonly', value='postonly') }}
{{ checkbox('dynamic2', name='dynamic', title=lang.add_page.desc.c_dynamic, desc='dynamic', value='dynamic') }}
2020-10-16 12:33:53 +00:00
< span id = "dynamic_div2" style = "display: none;" >
dynamic-cookie-key: {{ input('dynamic-cookie-key2', name='dynamic-cookie-key', placeholder="your-custom-key") }}
< / span >
2018-05-05 12:40:41 +00:00
< / span >
2020-10-16 12:33:53 +00:00
< / span >
< div id = "options-backend-show-div" style = "display: none;" >
< div style = "font-size: 12px; padding-bottom: 10px;" >
2023-02-13 14:45:45 +00:00
< span style = "padding-right: 10px;" > {{lang.words.start2|title()}} {{lang.words.typing}} {{lang.words.options}}: < / span >
2020-10-16 12:33:53 +00:00
{{ input('options2') }}
< span style = "padding-left: 10px;" >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.press_down}}. < a href = "http://cbonte.github.io/haproxy-dconv/1.7/configuration.html" target = "_blanck" style = "color: #23527c" title = "HAproxy docs" > {{lang.words.read|title()}} {{lang.words.more}} {{lang.words.about}} {{lang.words.options}}< / a >
2020-10-16 12:33:53 +00:00
< / span >
< br / >
2023-02-13 14:45:45 +00:00
< span style = "padding-right: 10px;" > {{lang.words.start2|title()}} {{lang.words.typing}} {{lang.words.saved}} {{lang.words.options}}: < / span >
2020-10-16 12:33:53 +00:00
< input type = "text" id = "saved-options2" class = "form-control" >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.saved_options}}
2020-10-16 12:33:53 +00:00
< / div >
< textarea name = "option" title = "Options thru" cols = 80 rows = 5 id = "optionsInput2" placeholder = "acl test hdr_beg(host) -i some_host" > < / textarea >
2018-05-05 12:40:41 +00:00
< / div >
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.servers|title()}}:< / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
{% include 'include/add_servers.html' %}
< br >
< br >
2023-02-13 14:45:45 +00:00
{{ checkbox('template-backend', name='template', title=lang.add_page.desc.server_template, value='template', desc=lang.add_page.desc.server_template) }}
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
< tr class = "advance" >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.check|title()}}:< / td >
2020-10-16 12:33:53 +00:00
< td class = "addOption" >
< div >
2023-02-13 14:45:45 +00:00
< label for = "controlgroup-backend-show" style = "margin-top: 5px;" title = "Set custom check parameters" > {{lang.words.custom|title()}} {{lang.words.check}} {{lang.words.params}}< / label >
2020-10-16 12:33:53 +00:00
< input type = "checkbox" id = "controlgroup-backend-show" name = "default-check" >
2023-02-13 14:45:45 +00:00
< span class = "tooltip tooltipTop" > {{lang.add_page.desc.def_check}}: inter 2000 rise 2 fall 5< / span >
2020-10-16 12:33:53 +00:00
< / div >
< div class = "controlgroup" id = "controlgroup-backend" style = "display: none;" >
2023-02-13 14:45:45 +00:00
< label for = "check-servers-backend" title = "Ebable servers check" > {{lang.words.check|title()}}< / label >
2020-10-16 12:33:53 +00:00
< input type = "checkbox" id = "check-servers-backend" name = "check-servers" checked value = "1" >
{% set values = dict() %}
{% set values = {'1000':'1000','2000':'2000','3000':'3000'} %}
{{ select('inter-backend', values=values, first='inter', class='force_close') }}
{% set values = dict() %}
{% set values = {'1':'1','2':'2','3':'3'} %}
{{ select('rise-backend', name='rise', values=values, first='rise', class='force_close') }}
{% set values = dict() %}
{% set values = {'4':'4','5':'5','6':'6'} %}
{{ select('fall-backend', name='fall', values=values, first='fall', class='force_close') }}
2021-04-06 09:36:43 +00:00
< / div >
< div style = "display: block" >
2023-02-13 14:45:45 +00:00
{{ checkbox('circuit_breaking_backend', name="circuit_breaking", desc='Circuit Breaking', title=lang.add_page.desc.circuit_breaking, value='1') }}
2021-04-06 09:36:43 +00:00
< / div >
< div id = "circuit_breaking_backend_div" style = "display: none" >
Observe:
{{ select('circuit_breaking_observe', values=observe, class='force_close') }}
error-limit: {{ input('circuit_breaking_error_limit', type='number', value='50', style='width: 50px;') }}
on-error:
{{ select('circuit_breaking_on_error', values=on_error, class='force_close') }}
2023-02-13 14:45:45 +00:00
< div class = "tooltip tooltipTop" > {{lang.words.read|title()}} {{lang.words.more}} {{lang.words.about}} Circuit Breaking < a href = "https://roxy-wi.org/description/circuit-breaking" title = "Circuit Breaking" target = "_blank" > {{lang.words.here}}< / a > < / div >
2020-10-16 12:33:53 +00:00
< / div >
< / td >
< / tr >
< tr class = "advance-show" >
2021-01-12 05:05:53 +00:00
< td class = "addOption" colspan = "2" >
2023-02-13 14:45:45 +00:00
< button title = "{{lang.add_page.buttons.show_full_settings}}" class = "row-down advance-show-button" > {{lang.words.show|title()}} {{lang.words.advanced}} {{lang.words.settings}}< / button >
< button title = "{{lang.add_page.buttons.hide_full_settings}}" class = "row-up advance-hide-button" style = "display: none" > {{lang.words.hide|title()}} {{lang.words.advanced}} {{lang.words.settings}}< / button >
2021-01-12 05:05:53 +00:00
< / td >
2020-10-16 12:33:53 +00:00
< / tr >
< tr >
< td class = "addButton" >
2023-02-13 14:45:45 +00:00
< a class = "ui-button ui-widget ui-corner-all" title = "{{lang.words.add|title()}} {{lang.words.backend|title()}}" onclick = "addProxy('add-backend')" > {{lang.words.add|title()}} {{lang.words.backend|title()}}< / a >
2020-12-15 06:34:02 +00:00
< / td >
< td class = "addButton" >
2023-02-13 14:45:45 +00:00
< a class = "ui-button ui-widget ui-corner-all" title = "{{lang.words.generate|title()}} {{lang.words.and}} {{lang.words.display}} {{lang.words.config}}" onclick = "generateConfig('add-backend')" > {{lang.words.generate|title()}} {{lang.words.config}}< / a >
2020-10-16 12:33:53 +00:00
< / td >
< / tr >
2018-05-05 12:40:41 +00:00
< / table >
2020-10-16 12:33:53 +00:00
< / form >
2018-05-05 12:40:41 +00:00
< / div >
2021-03-03 13:47:42 +00:00
2018-05-05 12:40:41 +00:00
< div id = "ssl" >
2018-05-06 04:45:10 +00:00
< table >
2020-09-15 05:56:43 +00:00
< caption > < h3 > SSL< / h3 > < / caption >
2018-05-06 04:45:10 +00:00
< tr class = "overviewHead" >
2023-02-13 14:45:45 +00:00
< td class = "padding10 first-collumn" style = "width: 30%;" > {{lang.words.view|title()}} {{lang.words.cert2}}< / td >
2018-05-06 04:45:10 +00:00
< td >
2023-02-13 14:45:45 +00:00
{{lang.words.upload|title()}} {{lang.words.certs}}
2018-05-06 04:45:10 +00:00
< / td >
2021-08-26 05:44:27 +00:00
< td > < / td >
2018-05-06 04:45:10 +00:00
< / tr >
< tr >
< td class = "padding10 first-collumn" >
< select required name = "serv" id = "serv5" >
2021-08-05 05:46:44 +00:00
< option disabled selected > ------< / option >
2018-05-06 04:45:10 +00:00
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
{% endfor %}
< / select >
2023-02-13 14:45:45 +00:00
< button id = "ssl_key_view" title = "{{lang.words.view|title()}} {{lang.words.certs}}" > {{lang.words.view|title()}}< / button >
2018-05-06 04:45:10 +00:00
< / td >
2021-08-26 05:44:27 +00:00
< td colspan = "2" style = "padding: 10px 0 10px 0;" >
< span id = "ajax-show-ssl" > < / span >
2018-05-06 04:45:10 +00:00
< / td >
< / tr >
2018-05-05 12:40:41 +00:00
< tr class = "overviewHead" >
2023-02-13 14:45:45 +00:00
< td class = "padding10 first-collumn" style = "width: 30%;" > {{lang.words.upload|title()}} SSL {{lang.words.certs}}< / td >
2018-05-05 12:40:41 +00:00
< td >
2023-02-13 14:45:45 +00:00
{{lang.words.cert_name|title()}}
2018-05-05 12:40:41 +00:00
< / td >
< td >
2023-02-13 14:45:45 +00:00
< span title = "{{lang.add_page.paste_cert_desc}}" class = "help_cursor" > {{lang.add_page.desc.paste_cert}}< / span >
2018-05-05 12:40:41 +00:00
< / td >
< / tr >
2023-04-09 13:11:16 +00:00
< tr >
2023-04-06 07:48:00 +00:00
< td class = "first-collumn padding10" valign = "top" style = "padding-top: 15px;" >
2018-05-05 12:40:41 +00:00
< select required id = "serv4" >
2021-08-05 05:46:44 +00:00
< option disabled selected > ------< / option >
2018-05-05 12:40:41 +00:00
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
{% endfor %}
< / select >
< / td >
< td valign = "top" style = "padding-top: 27px;" >
2019-10-25 07:18:57 +00:00
{{ input('ssl_name') }}
2018-05-05 12:40:41 +00:00
< / td >
< td style = "padding-top: 15px; padding-bottom: 15px;" >
< textarea id = "ssl_cert" cols = "50" rows = "5" > < / textarea > < br / > < br / >
2023-02-13 14:45:45 +00:00
< button id = "ssl_key_upload" title = "{{lang.words.upload|title()}} SSL {{lang.words.cert}}" > {{lang.words.upload|title()}}< / button >
2021-03-03 13:47:42 +00:00
< / td >
2018-05-05 12:40:41 +00:00
< / tr >
< / table >
2020-09-15 05:56:43 +00:00
< table >
< caption > < h3 > Let's Encrypt< / h3 > < / caption >
< tr class = "overviewHead" >
2023-02-13 14:45:45 +00:00
< td class = "padding10 first-collumn" > {{lang.words.server|title()}}< / td >
< td > {{lang.words.domain|title()}}< / td >
< td > {{lang.words.email|title()}}< / td >
2020-09-15 05:56:43 +00:00
< td > < / td >
< / tr >
< tr >
< td class = "padding10 first-collumn" >
< select required id = "serv_for_lets" >
2021-08-05 05:46:44 +00:00
< option disabled selected > ------< / option >
2020-09-15 05:56:43 +00:00
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
{% endfor %}
< / select >
< / td >
< td >
{{ input('lets_domain', placeholder="example.com") }}
< / td >
< td >
{{ input('lets_email') }}
< / td >
< td >
2023-02-13 14:45:45 +00:00
< button id = "lets_button" > {{lang.words.w_get|title()}} {{lang.words.w_a}} {{lang.words.cert}}< / button >
2020-09-15 05:56:43 +00:00
< / td >
< / tr >
< / table >
2018-05-05 12:40:41 +00:00
< div id = "ajax-ssl" > < / div >
< / div >
2019-09-17 07:18:48 +00:00
< div id = "option" >
< table class = "overview" id = "option_table" >
< tr class = "overviewHead" >
< td class = "padding10 first-collumn" > Id< / td >
2023-02-13 14:45:45 +00:00
< td class = "padding10 first-collumn" > {{lang.words.params|title()}}< / td >
2019-09-17 07:18:48 +00:00
< td > < / td >
< / tr >
{% for option in options %}
2023-03-08 13:15:15 +00:00
< tr id = "option-{{ option.id }}" class = "{{ loop.cycle('odd', 'even') }}" >
2021-08-02 08:19:22 +00:00
{% if option.groups == group or group == '1' %}
2019-09-17 07:18:48 +00:00
< td class = "padding10 first-collumn" >
2021-08-02 08:19:22 +00:00
{{ option.id }}
2021-03-03 13:47:42 +00:00
< / td >
2019-10-18 17:23:35 +00:00
< td class = "padding10 first-collumn" style = "width: 77%;" >
2021-08-02 08:19:22 +00:00
< input type = "text" id = "option-body-{{ option.id }}" value = "{{ option.options }}" size = "60" class = "form-control" >
2019-09-17 07:18:48 +00:00
< / td >
< td >
2023-02-13 14:45:45 +00:00
< a class = "delete" onclick = "confirmDeleteOption({{ option.id }})" title = "{{lang.words.delete|title()}} {{lang.words.param}} {{option.options}}" style = "cursor: pointer;" > < / a >
2019-09-17 07:18:48 +00:00
< / td >
{% endif %}
< / tr >
{% endfor %}
< / table >
2023-02-13 14:45:45 +00:00
< br / > < span class = "add-button" title = "{{lang.words.add|title()}} {{lang.words.param}}" id = "add-option-button" > + {{lang.words.add|title()}}< / span >
2019-09-17 07:18:48 +00:00
< br / > < br / >
< table class = "overview" id = "option-add-table" style = "display: none;" >
< tr class = "overviewHead" >
< td class = "padding10 first-collumn" > < / td >
2023-02-13 14:45:45 +00:00
< td > {{lang.words.param|title()}}< / td >
2019-09-17 07:18:48 +00:00
< td > < / td >
< / tr >
< tr >
< td class = "padding10 first-collumn" >
2023-02-13 14:45:45 +00:00
{{lang.words.enter|title()}} {{lang.words.w_an}} {{lang.words.param}}:
2019-09-17 07:18:48 +00:00
< / td >
2019-10-18 17:23:35 +00:00
< td style = "width: 77%;" >
2019-10-25 07:18:57 +00:00
{{ input('new-option', size='60') }}
2019-09-17 07:18:48 +00:00
< / td >
< td >
2023-02-13 14:45:45 +00:00
< span class = "add-admin" id = "add-option-new" title = "{{lang.words.add|title()}} {{lang.words.new}} {{lang.words.param}}" style = "cursor: pointer;" > < / span >
2019-09-17 07:18:48 +00:00
< / td >
< / tr >
< / table >
2019-10-09 06:35:35 +00:00
< div id = "ajax-option" > < / div >
2021-09-07 08:18:27 +00:00
< div class = "add-note alert addName alert-info" style = "width: inherit; margin-right: 15px;" >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.options}}
2019-09-20 06:42:19 +00:00
< / div >
2019-09-17 07:18:48 +00:00
< / div >
2021-03-03 13:47:42 +00:00
2019-10-09 06:35:35 +00:00
< div id = "add-servers" >
< table class = "overview" id = "servers_table" >
< tr class = "overviewHead" >
2023-02-13 14:45:45 +00:00
< td class = "padding10 first-collumn" > {{lang.words.server|title()}}< / td >
< td class = "padding10 first-collumn" > {{lang.words.desc|title()}}< / td >
2019-10-09 06:35:35 +00:00
< td > < / td >
< / tr >
{% for s in saved_servers %}
2021-08-02 08:19:22 +00:00
< tr id = "servers-saved-{{ s.id }}" class = "{{ loop.cycle('odd', 'even') }}" >
{% if s.groups == group or group == '1' %}
2019-10-09 06:35:35 +00:00
< td class = "padding10 first-collumn" >
2021-08-02 08:19:22 +00:00
< input type = "text" id = "servers-ip-{{ s.id }}" value = "{{ s.server }}" size = "15" class = "form-control" >
2021-03-03 13:47:42 +00:00
< / td >
2019-10-18 17:23:35 +00:00
< td class = "padding10 first-collumn" style = "width: 77%;" >
2021-08-02 08:19:22 +00:00
< input type = "text" id = "servers-desc-{{ s.id }}" value = "{{ s.description }}" size = "50" class = "form-control" >
2019-10-09 06:35:35 +00:00
< / td >
< td >
2023-02-13 14:45:45 +00:00
< a class = "delete" onclick = "confirmDeleteSavedServer({{ s.id }})" title = "{{lang.words.delete|title()}} {{lang.words.server}} {{s.server}}" style = "cursor: pointer;" > < / a >
2019-10-09 06:35:35 +00:00
< / td >
{% endif %}
< / tr >
{% endfor %}
< / table >
2023-02-13 14:45:45 +00:00
< br / > < span class = "add-button" title = "{{lang.words.add|title()}} {{lang.words.server}}" id = "add-saved-server-button" > + {{lang.words.add|title()}}< / span >
2019-10-09 06:35:35 +00:00
< br / > < br / >
< table class = "overview" id = "saved-server-add-table" style = "display: none;" >
< tr class = "overviewHead" >
2023-02-13 14:45:45 +00:00
< td class = "padding10 first-collumn" > {{lang.words.server|title()}}< / td >
< td > {{lang.words.desc|title()}}< / td >
2019-10-09 06:35:35 +00:00
< td > < / td >
< / tr >
< tr >
< td class = "padding10 first-collumn" >
2019-10-25 07:18:57 +00:00
{{ input('new-saved-servers', size='15') }}
2019-10-09 06:35:35 +00:00
< / td >
2019-10-18 17:23:35 +00:00
< td style = "width: 77%;" >
2019-10-25 07:18:57 +00:00
{{ input('new-saved-servers-description', size='50') }}
2019-10-09 06:35:35 +00:00
< / td >
< td >
2023-02-13 14:45:45 +00:00
< span class = "add-admin" id = "add-saved-server-new" title = "{{lang.words.add|title()}} {{lang.words.new|title()}} {{lang.words.server|title()}}" style = "cursor: pointer;" > < / span >
2019-10-09 06:35:35 +00:00
< / td >
< / tr >
< / table >
< div id = "ajax-servers" > < / div >
2021-09-07 08:18:27 +00:00
< div class = "add-note alert addName alert-info" style = "width: inherit; margin-right: 15px;" >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.servers}}
2019-10-09 06:35:35 +00:00
< / div >
< / div >
2019-10-18 17:23:35 +00:00
< div id = "userlist" >
2023-09-17 09:42:39 +00:00
< form name = "add-userlist" id = "add-userlist" action = "/app/add/haproxy/userlist" method = "post" >
2019-10-18 17:23:35 +00:00
< table >
2023-02-13 14:45:45 +00:00
< caption > < h3 > {{lang.words.add|title()}} {{lang.words.userlists}}< / h3 > < / caption >
2019-10-18 17:23:35 +00:00
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.select|title()}} {{lang.words.w_a}} {{lang.words.server}}: < / td >
2019-10-18 17:23:35 +00:00
< td class = "addOption" >
2020-10-16 12:33:53 +00:00
< select required name = "serv" id = "userlist_serv" >
2021-08-05 05:46:44 +00:00
< option disabled selected > ------< / option >
2019-10-18 17:23:35 +00:00
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
{% endfor %}
< / select >
2023-02-13 14:45:45 +00:00
< div class = "tooltip tooltipTop" > < b > {{lang.words.note|title()}}:< / b > {{lang.phrases.master_slave}}< / div >
2019-10-18 17:23:35 +00:00
< / td >
2023-02-13 14:45:45 +00:00
< td rowspan = "4" class = "add-note addName alert-info" > {{lang.add_page.desc.userlist_desc}}< / td >
2019-10-18 17:23:35 +00:00
< / tr >
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.name|title()}}:< / td >
2019-10-18 17:23:35 +00:00
< td class = "addOption" >
2023-02-13 14:45:45 +00:00
{{ input('new_userlist', required='required', title=lang.add_page.desc.userlist_name, placeholder="basic-auth-list") }}
2019-10-18 17:23:35 +00:00
< / td >
< / tr >
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.groups|title()}}:< / td >
2019-10-18 17:23:35 +00:00
< td class = "addOption" >
< span id = "userlist-groups" >
2023-02-13 14:45:45 +00:00
{{ input('userlist-group', title=lang.add_page.desc.userlist_user_grp, placeholder="group_name") }}
2019-10-18 17:23:35 +00:00
< / span >
< span >
2020-08-04 16:40:58 +00:00
< span class = "add-server" id = "add-userlist-group" title = "Add extra group" style = "cursor: pointer;" > < / span >
2019-10-18 17:23:35 +00:00
< / span >
2023-02-13 14:45:45 +00:00
< div class = "tooltip tooltipTop" > {{lang.add_page.desc.userlist_group}}< / div >
2019-10-18 17:23:35 +00:00
< / td >
< / tr >
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.user|title()}}:< / td >
2019-10-18 17:23:35 +00:00
< td class = "addOption" >
< span id = "userlist-users" >
2023-02-13 14:45:45 +00:00
{{ input('userlist-user', required='required', title=lang.words.username|title(), placeholder="user_name") }}
{{ input('userlist-password', required='required', title=lang.add_page.desc.userlist_pass, placeholder="password") }}
{{ input('userlist-user-group', title=lang.add_page.desc.userlist_user_grp, placeholder="group") }}
2019-10-18 17:23:35 +00:00
< / span >
< span >
2020-08-04 16:40:58 +00:00
< span class = "add-server" id = "add-userlist-user" title = "Add extra user" style = "cursor: pointer;" > < / span >
2019-10-18 17:23:35 +00:00
< / span >
2023-02-13 14:45:45 +00:00
< div class = "tooltip tooltipTop" > {{lang.add_page.desc.userlist_user}}< / div >
2019-10-18 17:23:35 +00:00
< / td >
< / tr >
< tr >
2020-12-15 06:34:02 +00:00
< td class = "addButton" >
2023-02-13 14:45:45 +00:00
< a class = "ui-button ui-widget ui-corner-all" title = "Add Userlist" onclick = "addProxy('add-userlist')" > {{lang.words.add|title()}} {{lang.words.userlist|title()}}< / a >
2020-12-15 06:34:02 +00:00
< / td >
< td class = "addButton" >
2023-02-13 14:45:45 +00:00
< a class = "ui-button ui-widget ui-corner-all" title = "{{lang.words.generate|title()}} {{lang.words.and}} {{lang.words.display}} {{lang.words.config}}" onclick = "generateConfig('add-userlist')" > {{lang.words.generate|title()}} {{lang.words.config}}< / a >
2020-12-15 06:34:02 +00:00
< / td >
< / tr >
2019-10-18 17:23:35 +00:00
< / table >
< / form >
2021-04-16 14:09:51 +00:00
< br / >
< table >
2023-02-13 14:45:45 +00:00
< caption > < h3 > {{lang.words.existing|title()}} {{lang.words.userlists}}< / h3 > < / caption >
2021-04-16 14:09:51 +00:00
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.select|title()}} {{lang.words.w_a}} {{lang.words.server}}: < / td >
2021-04-16 14:09:51 +00:00
< td class = "addOption" >
< select required name = "serv" id = "existing_userlist_serv" >
2021-08-05 05:46:44 +00:00
< option disabled selected > ------< / option >
2021-04-16 14:09:51 +00:00
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
{% endfor %}
< / select >
2023-02-13 14:45:45 +00:00
< div class = "tooltip tooltipTop" > < b > {{lang.words.note|title()}}:< / b > {{lang.phrases.master_slave}}< / div >
2021-04-16 14:09:51 +00:00
< / td >
< td >
2023-02-13 14:45:45 +00:00
< a class = "ui-button ui-widget ui-corner-all" title = "Add Userlist" onclick = "showUserlists()" > {{lang.words.show|title()}} {{lang.words.userlists}}< / a >
2021-04-16 14:09:51 +00:00
< / td >
< / tr >
< tr id = "existing_userlist_tr" style = "display: none;" >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.existing|title()}} {{lang.words.userlists}}:< / td >
2021-04-16 14:09:51 +00:00
< td class = "addOption" id = "existing_userlist_ajax" > < / td >
< / tr >
< / table >
2019-10-18 17:23:35 +00:00
< div class = "add-note addName alert-info" style = "width: inherit; margin-right: 15px;" >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.userlist}}
2021-03-03 13:47:42 +00:00
< / div >
2021-09-07 08:18:27 +00:00
< div class = "add-note alert addName alert-info" style = "width: inherit; margin-right: 15px;" >
2023-02-13 14:45:45 +00:00
{{lang.words.read|title()}}
< a href = "https://roxy-wi.org/description/userlist" title = "How to use userlists" target = "_blank" >
< b > {{lang.words.here}}< / b >
2019-10-18 17:23:35 +00:00
< / a >
2023-02-13 14:45:45 +00:00
{{lang.phrases.howto_user}} {{lang.words.userlists}}
2019-10-18 17:23:35 +00:00
< / div >
2021-03-03 13:47:42 +00:00
< / div >
2021-06-02 07:28:07 +00:00
< div id = "peers" >
2023-09-17 09:42:39 +00:00
< form name = "add-peers" id = "add-peers" action = "/app/add/haproxy/peers" method = "post" >
2021-06-02 07:28:07 +00:00
< table >
2023-02-13 14:45:45 +00:00
< caption > < h3 > {{lang.words.add|title()}} Peer< / h3 > < / caption >
2021-06-02 07:28:07 +00:00
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > {{lang.words.select|title()}} {{lang.words.w_a}} {{lang.words.server}}: < / td >
2021-06-02 07:28:07 +00:00
< td class = "addOption" >
< select required name = "serv" id = "peers_serv" >
2021-08-05 05:46:44 +00:00
< option disabled selected > ------< / option >
2021-06-02 07:28:07 +00:00
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
{% endfor %}
< / select >
2023-02-13 14:45:45 +00:00
< div class = "tooltip tooltipTop" > < b > {{lang.words.note|title()}}:< / b > {{lang.phrases.master_slave}}< / div >
2021-06-02 07:28:07 +00:00
< / td >
< td rowspan = "4" class = "add-note addName alert-info" >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.peers}}
2021-06-02 07:28:07 +00:00
< / td >
< / tr >
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > Peers {{lang.words.name}}:< / td >
2021-06-02 07:28:07 +00:00
< td class = "addOption" >
2023-02-13 14:45:45 +00:00
{{ input('peers-name', title="Peers "+lang.words.name, placeholder="peers name") }}
2021-06-02 07:28:07 +00:00
< / td >
< / tr >
< tr >
2023-02-13 14:45:45 +00:00
< td class = "addName" > Peers {{lang.words.servers}}:< / td >
2021-06-02 07:28:07 +00:00
< td class = "addOption" >
< span name = "add_peers" >
2023-02-13 14:45:45 +00:00
< input name = "servers_name" required title = "Peer {{lang.words.name}}" size = 14 placeholder = "haproxy1" class = "form-control" > :
2021-06-02 07:28:07 +00:00
< input name = "servers" required title = "Peer IP" size = 14 placeholder = "xxx.xxx.xxx.xxx" class = "form-control" > :
2023-02-13 14:45:45 +00:00
< input name = "server_port" required title = "Peer {{lang.words.port}}" size = 3 placeholder = "yyy" class = "form-control add_server_number" type = "number" >
2021-06-02 07:28:07 +00:00
< br / >
2023-02-13 14:45:45 +00:00
< input name = "servers_name" required title = "Peer {{lang.words.name}}" size = 14 placeholder = "haproxy2" class = "form-control" > :
2021-06-02 07:28:07 +00:00
< input name = "servers" title = "Peer IP" size = 14 placeholder = "xxx.xxx.xxx.xxx" class = "form-control second-server" > < span class = "second-server" > :< / span >
2023-02-13 14:45:45 +00:00
< input name = "server_port" title = "Peer {{lang.words.port}}" size = 3 placeholder = "yyy" class = "form-control second-server add_server_number" type = "number" >
2021-06-02 07:28:07 +00:00
< / span >
< span >
2023-02-13 14:45:45 +00:00
< a class = "link add-server backend_server" name = "add-peer-input" title = "{{lang.words.add|title()}} peer {{lang.words.server}}" style = "cursor: pointer;" > < / a >
2021-06-02 07:28:07 +00:00
< / span >
< / td >
< / tr >
< tr >
< td class = "addButton" >
2023-08-05 06:25:59 +00:00
< a class = "ui-button ui-widget ui-corner-all" title = "{{lang.words.add|title()}} peer" onclick = "addProxy('add-peers')" > {{lang.words.add|title()}} peer< / a >
2021-06-02 07:28:07 +00:00
< / td >
< td class = "addButton" >
2023-02-13 14:45:45 +00:00
< a class = "ui-button ui-widget ui-corner-all" title = "{{lang.words.generate|title()}} {{lang.words.and}} {{lang.words.display}} {{lang.words.config}}" onclick = "generateConfig('add-peers')" > {{lang.words.generate|title()}} {{lang.words.config}}< / a >
2021-06-02 07:28:07 +00:00
< / td >
< / tr >
< / table >
< / form >
< div class = "alert addName alert-info" style = "width: inherit; margin-right: 15px;" >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.peers_master}}
2021-06-02 07:28:07 +00:00
< / div >
< div class = "alert addName alert-info" style = "width: inherit; margin-right: 15px;" >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.peers_slave}}
2021-06-02 07:28:07 +00:00
< / div >
2021-09-07 08:18:27 +00:00
< div class = "add-note alert addName alert-info" style = "width: inherit; margin-right: 15px;" >
2023-02-13 14:45:45 +00:00
{{lang.words.read|title()}}
< a href = "https://roxy-wi.org/howto/peers" title = "How to use peers" target = "_blank" >
< b > {{lang.words.here}}< / b >
2021-06-02 07:28:07 +00:00
< / a >
2023-02-13 14:45:45 +00:00
{{lang.phrases.howto_user}} peers
2021-06-02 07:28:07 +00:00
< / div >
< / div >
2020-01-12 16:13:48 +00:00
< div id = "lists" >
< table class = "overview" >
< tr class = "overviewHead" >
2023-02-13 14:45:45 +00:00
< th class = "padding10 first-collumn" > {{lang.words.new|title()}} {{lang.words.blacklist}}< / th >
< th > {{lang.words.server|title()}} {{lang.words.for}} {{lang.words.uploading}}< / th >
< th > {{lang.words.existing|title()}} {{lang.words.blacklists}}< / th >
2020-01-12 16:13:48 +00:00
< / tr >
< tr >
2020-11-02 17:01:08 +00:00
< td class = "padding10 first-collumn" style = "width: 25%;" >
2023-02-13 14:45:45 +00:00
{{lang.words.name|title()}}: {{ input('new_blacklist_name') }}
< button onclick = "createList('black')" > {{lang.words.create|title()}}< / button >
2020-11-02 17:01:08 +00:00
< / td >
2023-04-09 13:11:16 +00:00
< td class = "first-collumn" >
2020-04-23 21:11:37 +00:00
< select required name = "serv-black-list" id = "serv-black-list" >
2021-08-05 05:46:44 +00:00
< option disabled selected > ------< / option >
2023-02-13 14:45:45 +00:00
< option value = "all" > {{lang.words.all|title()}}< / option >
2020-04-23 21:11:37 +00:00
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
2021-03-03 13:47:42 +00:00
{% endfor %}
2020-04-23 21:11:37 +00:00
< / select >
< / td >
2021-08-26 05:44:27 +00:00
< td style = "width: 30%; padding: 10px 0 10px 0;" >
2020-01-12 16:13:48 +00:00
{% for list in black_lists %}
2023-08-05 06:25:59 +00:00
< span class = "list_of_lists list_blacklists" >
2023-08-03 06:56:25 +00:00
< a onclick = "editList('{{ list }}', 'black')" title = "{{lang.words.edit|title()}} {{lang.words.the}} {{ list }} {{lang.words.list}}" > {{ list }}< / a >
2021-08-26 05:44:27 +00:00
< / span >
2020-01-12 16:13:48 +00:00
{% endfor %}
< / td >
2021-03-03 13:47:42 +00:00
2020-04-23 21:11:37 +00:00
< / tr >
{{ input('group', value=group, type='hidden') }}
< / table >
< table >
< tr class = "overviewHead" >
2023-02-13 14:45:45 +00:00
< th class = "padding10 first-collumn" > {{lang.words.new|title()}} {{lang.words.whitelist}}< / th >
< th > {{lang.words.server|title()}} {{lang.words.for}} {{lang.words.uploading}}< / th >
< th > {{lang.words.existing|title()}} {{lang.words.whitelists}}< / th >
2020-04-23 21:11:37 +00:00
< / tr >
< tr >
2020-11-02 17:01:08 +00:00
< td class = "padding10 first-collumn" style = "width: 25%;" >
2023-02-13 14:45:45 +00:00
{{lang.words.name|title()}}: {{ input('new_whitelist_name') }}
< button onclick = "createList('white')" > {{lang.words.create|title()}}< / button >
2020-11-02 17:01:08 +00:00
< / td >
2023-04-09 13:11:16 +00:00
< td class = "first-collumn" >
2020-04-23 21:11:37 +00:00
< select required name = "serv-white-list" id = "serv-white-list" >
2021-08-05 05:46:44 +00:00
< option disabled selected > ------< / option >
2023-02-13 14:45:45 +00:00
< option value = "all" > {{lang.words.all|title()}}< / option >
2020-04-23 21:11:37 +00:00
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
2021-03-03 13:47:42 +00:00
{% endfor %}
2020-04-23 21:11:37 +00:00
< / select >
< / td >
2021-08-26 05:44:27 +00:00
< td style = "width: 30%; padding: 10px 0 10px 0;" >
2020-01-12 16:13:48 +00:00
{% for list in white_lists %}
2023-08-05 06:25:59 +00:00
< span class = "list_of_lists list_whitelists" >
2023-02-13 14:45:45 +00:00
< a onclick = "editList('{{ list }}', 'white')" title = "{{lang.words.edit|title()}} {{lang.words.the}} {{ list }} {{lang.words.list}}" > {{ list }}< / a >
2021-08-26 05:44:27 +00:00
< / span >
2020-01-12 16:13:48 +00:00
{% endfor %}
< / td >
< / tr >
< / table >
2020-04-23 21:11:37 +00:00
< div id = "ajax" > < / div >
2021-09-07 08:18:27 +00:00
< div class = "add-note alert addName alert-info" style = "width: inherit; margin-right: 15px;" >
2023-02-13 14:45:45 +00:00
{{lang.add_page.desc.lists_howto}}
< a href = "https://roxy-wi.org/howto/blacklist" title = "How to create and manage blacklist" target = "_blank" > {{lang.words.article}}< / a >
2020-01-12 16:13:48 +00:00
< / div >
2023-08-03 06:56:25 +00:00
< div id = "dialog-confirm-cert-edit" title = "{{lang.words.view|title()}} {{lang.words.cert}} " style = "display: none;" >
2023-02-13 14:45:45 +00:00
< span > < b > {{lang.words.note|title()}}:< / b > {{lang.add_page.desc.lists_new_line}}< / span >
2020-01-12 16:13:48 +00:00
< textarea id = "edit_lists" style = "width: 100%" rows = 20 > < / textarea >
2021-03-03 13:47:42 +00:00
< / div >
2020-01-12 16:13:48 +00:00
< / div >
2023-08-03 06:56:25 +00:00
< div id = "maps" >
< table class = "overview" >
< tr class = "overviewHead" >
< th class = "padding10 first-collumn" > {{lang.words.new|title()}} {{lang.words.map}}< / th >
< th > {{lang.words.server|title()}} {{lang.words.for}} {{lang.words.uploading}}< / th >
< th > {{lang.words.existing|title()}} {{lang.words.maps}}< / th >
< / tr >
< tr >
< td class = "padding10 first-collumn" style = "width: 25%;" >
{{lang.words.name|title()}}: {{ input('new_map_name') }}
< button onclick = "createMap()" > {{lang.words.create|title()}}< / button >
< / td >
< td class = "first-collumn" >
< select required name = "serv-map" id = "serv-map" >
< option disabled selected > ------< / option >
< option value = "all" > {{lang.words.all|title()}}< / option >
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
{% endfor %}
< / select >
< / td >
< td style = "width: 30%; padding: 10px 0 10px 0;" >
{% for map in maps %}
2023-08-05 06:25:59 +00:00
< span class = "list_of_lists list_maps" >
2023-08-03 06:56:25 +00:00
< a onclick = "editMap('{{ map }}')" title = "{{lang.words.edit|title()}} {{lang.words.the}} {{ map }} {{lang.words.map}}" > {{ map }}< / a >
< / span >
{% endfor %}
< / td >
< / tr >
{{ input('group', value=group, type='hidden') }}
< / table >
< div id = "ajax-maps" > < / div >
< div class = "add-note alert addName alert-info" style = "width: inherit; margin-right: 15px;" >
{{lang.add_page.desc.lists_howto}}
< a href = "https://www.haproxy.com/blog/introduction-to-haproxy-maps" title = "Introduction to HAProxy Maps" target = "_blank" > {{lang.words.article}}< / a >
< / div >
< div id = "dialog-confirm-map-edit" title = "{{lang.words.view|title()}} {{lang.words.map}} " style = "display: none;" >
< span > < b > {{lang.words.note|title()}}:< / b > {{lang.add_page.desc.lists_new_line}}< / span >
< textarea id = "edit_map" style = "width: 100%" rows = 20 > < / textarea >
< / div >
< / div >
2019-10-25 07:18:57 +00:00
{% include 'include/del_confirm.html' %}
< div id = "dialog-confirm-cert" title = "View certificate " style = "display: none;" >
2020-12-15 06:34:02 +00:00
< pre id = "dialog-confirm-body" > < / pre >
2018-07-13 04:28:21 +00:00
< / div >
2018-08-09 12:11:10 +00:00
< input type = "hidden" id = "group" value = "{{ group }}" >
2019-09-20 06:42:19 +00:00
< / div >
< / div >
2018-05-12 15:49:24 +00:00
< script >
2019-10-25 07:18:57 +00:00
$( function() {
$( ".force_close" ).selectmenu({
width: 180
});
2020-01-11 21:16:27 +00:00
if (window.matchMedia('(max-width: 1280px)').matches || window.matchMedia('(max-width: 1024px)').matches || window.matchMedia('(max-width: 667px)').matches) {
$( "select" ).selectmenu({
width: 150
});
}
2018-05-12 15:49:24 +00:00
});
2020-10-16 12:33:53 +00:00
var serv_ports = $('.send_proxy');
for (var i = 0; i < = serv_ports.length; i++) {
var uniqId = makeid(3);
2022-11-20 07:48:15 +00:00
$(serv_ports[i]).append('< label for = "' + uniqId + '" class = "send_proxy_label" title = "Set send-proxy for this server" data-help = "The Send-proxy parameter enforces the use of the PROXY protocol over any connection established to this server. The PROXY protocol informs the other end about the layer 3/4 addresses of the incoming connection so that it can know the client\'s address or the public address it accessed to, whatever the upper-layer protocol." > send-proxy< / label > < input type = "checkbox" name = "send_proxy" value = "1" id = "' + uniqId + '" > ');
2020-10-16 12:33:53 +00:00
var uniqId = makeid(3);
2022-11-20 07:48:15 +00:00
$(serv_ports[i]).append('< label for = "' + uniqId + '" class = "send_proxy_label" title = "Set this server as backup server" data-help = "When all servers in a farm are down , we want to redirect traffic to a backup server which delivers either sorry pages or a degraded mode of the application . \ n ' +
'This can be done easily in HAProxy by adding the keyword backup on the server line. If multiple backup servers are configured, only the first active one is used.">backup< / label > < input type = "checkbox" name = "backup" value = "1" id = "' + uniqId + '" > ');
2020-10-16 12:33:53 +00:00
}
2018-05-12 15:49:24 +00:00
< / script >
2019-12-04 13:38:07 +00:00
{% endblock %}