2018-05-05 12:40:41 +00:00
{% extends "base.html" %}
{% block content %}
2019-10-25 07:18:57 +00:00
{% from 'include/input_macros.html' import input, checkbox, select %}
2019-10-05 20:41:07 +00:00
< style >
.container {
margin-right: 0;
2019-10-09 06:35:35 +00:00
}
h3 {
width: 98.8%
}
2019-10-05 20:41:07 +00:00
< / style >
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 >
2020-08-03 13:31:51 +00:00
< li > < a href = "#create" title = "Add proxy: Create proxy - HAProxy-WI" > Create proxy< / a > < / li >
< li > < a href = "#listen" title = "Add proxy: Create Listen - HAProxy-WI" > Listen< / a > < / li >
< li > < a href = "#frontend" title = "Add proxy: Create Frontend - HAProxy-WI" > Frontend< / a > < / li >
< li > < a href = "#backend" title = "Add proxy: Create Backend - HAProxy-WI" > Backend< / a > < / li >
< li > < a href = "#ssl" title = "Add proxy: Upload SSL certificates - HAProxy-WI" > SSL certificates< / a > < / li >
< li > < a href = "#option" title = "Add proxy: Pre-saved options - HAProxy-WI" > Options< / a > < / li >
< li > < a href = "#add-servers" title = "Add proxy: Pre-saved servers - HAProxy-WI" > Servers< / a > < / li >
< li > < a href = "#userlist" title = "Add proxy: Create Userlists - HAProxy-WI" > Userlists< / a > < / li >
< li > < a href = "#lists" title = "Add proxy: Create and upload whitelists or blacklists - HAProxy-WI" > Lists< / a > < / li >
2019-10-25 07:18:57 +00:00
{% include 'include/login.html' %}
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" >
2019-12-04 13:38:07 +00:00
< form name = "add-listner" action = "/app/add.py" method = "post" >
2018-08-28 03:34:10 +00:00
< table class = "add-table" >
2019-09-20 06:42:19 +00:00
< caption > < h3 > Add listen< / h3 > < / caption >
2018-05-05 12:40:41 +00:00
< tr >
< td class = "addName" > Select server: < / td >
< td class = "addOption" >
< select required name = "serv" id = "serv" >
< option disabled selected > Choose server< / option >
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
{% endfor %}
< / select >
2020-07-31 14:36:03 +00:00
< div class = "tooltip tooltipTop" > < b > Note:< / b > If you re-configure the master server, the slave server will re-configured automatically< / 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" >
2018-08-28 03:34:10 +00:00
A "listen" section defines a complete proxy with its frontend and backend parts combined in one section. It is generally useful for TCP-only traffic.
< br / > < br / >
All proxy names must be formed from upper and lower case letters, digits,
'-' (dash), '_' (underscore) , '.' (dot) and ':' (colon). ACL names are
case-sensitive, which means that "www" and "WWW" are two different proxies.
< br / > < br / >
Historically, all proxy names could overlap, it just caused troubles in the
logs. Since the introduction of content switching, it is mandatory that two
proxies with overlapping capabilities (frontend/backend) have different names.
However, it is still permitted that a frontend and a backend share the same
name, as this configuration seems to be commonly encountered.
< / td >
2018-05-05 12:40:41 +00:00
< / tr >
< tr >
< td class = "addName" > Name:< / td >
< td class = "addOption" >
2019-10-25 07:18:57 +00:00
{{ input('name', name='listner', title="Name Listner", placeholder="web_80", required='required') }}
2018-05-05 12:40:41 +00:00
< / td >
< / tr >
< tr >
< td class = "addName" > IP and Port:< / td >
< td class = "addOption" >
2019-10-25 07:18:57 +00:00
{{ input('ip', placeholder="Any", size='15') }}< b > :< / b >
{{ input('listen-port', name='port', type="number", title="Port for bind listen", placeholder="8080", size='5', required='required') }}
2020-07-31 14:36:03 +00:00
< div class = "tooltip tooltipTop" >
IP for bind listener, < b > if empty will be assigned on all IPs< / b > .
Start typing IP, or press down.< br > If you are using < b > VRRP, leave the IP field blank< / b > . If you assign an IP, the slave server will not start
< / div >
2018-05-05 12:40:41 +00:00
< / td >
< / tr >
2018-08-27 11:28:29 +00:00
< tr class = "advance" >
2018-05-05 12:40:41 +00:00
< td class = "addName" > Mode: < / td >
< td class = "addOption" >
2019-10-25 07:18:57 +00:00
{% set values = dict() %}
{% set values = {'http':'http','tcp':'tcp'} %}
{{ select('listen-mode-select', name='mode', values=values, selected='http', required='required', class='force_close') }}
2018-05-05 12:40:41 +00:00
< span id = "https-listen-span" >
2019-09-17 07:18:48 +00:00
< label for = "https-listen" style = "margin-top: 5px;" title = "Enable ssl" > SSL?< / label >
2018-05-05 12:40:41 +00:00
< input type = "checkbox" id = "https-listen" name = "ssl" value = "https" >
< / span >
< div id = "https-hide-listen" style = "display: none;" >
< br / > < span class = "tooltip tooltipTop" > Enter name to pem file, or press down:< / span > < br / >
2019-10-25 07:18:57 +00:00
{{ input('path-cert-listen', name="cert", placeholder="some_cert.pem", size='39') }}< br / >
2018-05-05 12:40:41 +00:00
< label for = "ssl-check-listen" style = "margin-top: 5px;" > Disable ssl verify on servers?< / label > < input type = "checkbox" id = "ssl-check-listen" name = "ssl-check" value = "ssl-check" checked >
< / div >
< / td >
< / tr >
2018-09-12 02:25:32 +00:00
< tr class = "advance" >
< td class = "addName" > Maxconn: < / td >
< td class = "addOption" >
2019-10-25 07:18:57 +00:00
{{ input('maxconn', value='2000', type="number", title="Fix the maximum number of concurrent connections on a frontend", size='5', required='required') }}
2018-09-12 02:25:32 +00:00
< div class = "tooltip tooltipTop" > This value should not exceed the global maxconn. Default global maxconn value: 2000< / div >
< / td >
< / tr >
2018-08-27 11:28:29 +00:00
< tr class = "advance" >
2018-05-05 12:40:41 +00:00
< td class = "addName" > Balance: < / td >
2019-10-25 07:18:57 +00:00
< td class = "addOption" >
{% set values = dict() %}
{% set values = {'roundrobin':'roundrobin','source':'source','leastconn':'leastconn', 'first':'first', 'rdp-cookie':'rdp-cookie'} %}
{{ select('balance', values=values, selected='roundrobin', required='required', class='force_close') }}
< / td >
2018-05-05 12:40:41 +00:00
< / tr >
2018-08-27 11:28:29 +00:00
< tr class = "advance" >
2018-08-08 17:15:18 +00:00
< td class = "addName" > < span title = "Cache support start 1.8 and latter" > Web acceleration(?):< / span > < / td >
2018-08-08 12:06:23 +00:00
< td class = "addOption" >
2018-08-08 17:15:18 +00:00
< span class = "controlgroup" >
2019-10-25 07:18:57 +00:00
{{ checkbox('compression', title='Enable Compression', value='1', desc='Compression') }}
{{ checkbox('cache', title='Enable cache', value='2', desc='Cache') }}
{{ checkbox('ssl_offloading', title='Enable SSL Offloading', desc='SSL Offloading') }}
2018-08-08 17:15:18 +00:00
< / span >
2018-08-08 12:06:23 +00:00
< / td >
< / tr >
2018-08-27 11:28:29 +00:00
< tr class = "advance" >
2018-08-08 17:15:18 +00:00
< td class = "addName" > < span title = "Web application firewall" > WAF(?):< / span > < / td >
2018-05-05 12:40:41 +00:00
< td class = "addOption" >
2018-05-12 19:25:45 +00:00
< span class = "controlgroup" >
2019-10-25 07:18:57 +00:00
{{ checkbox('slow_atack', title='Slow atack protect', desc='Slow atack') }}
{{ checkbox('ddos', title='DDOS atack protect', desc='DDOS') }}
{{ checkbox('blacklist_checkbox', title='Use blacklist', desc='Blacklist') }}
{{ checkbox('waf', title='Web application firewall', desc='WAF', value='1') }}
2020-08-10 16:01:12 +00:00
{{ checkbox('antibot', title='Antibot Protection', desc='Antibot', value='1') }}
2018-08-08 17:15:18 +00:00
< / span >
2018-08-09 12:11:10 +00:00
< div id = "blacklist-hide" style = "display: none;" >
< br / > < span class = "tooltip tooltipTop" > Enter the name of the blacklist, or press down:< / span > < br / >
2019-10-25 07:18:57 +00:00
{{ input('blacklist-hide-input', size='39', name="blacklist", placeholder="blacklist.lst") }}
2018-08-09 12:11:10 +00:00
< / div >
2018-08-08 17:15:18 +00:00
< / td >
< / tr >
2018-08-27 11:28:29 +00:00
< tr class = "advance" >
2020-07-19 04:08:15 +00:00
< td class = "addName" > Options:< / td >
2018-08-08 17:15:18 +00:00
< td class = "addOption" >
< span class = "controlgroup" >
2019-10-25 07:18:57 +00:00
{{ checkbox('forward_for', title='Option Forward for if none', desc='Forward for') }}
{{ checkbox('redispatch', title='Enable Redispatch', desc='Redispatch') }}
{% set values = dict() %}
{% set values = {'Off':'Off','Server only':'Server only','Force close':'Force close','Pretend keep alive':'Pretend keep alive'} %}
{{ select('force_close', values=values, first='Force HTTP close', class='force_close') }}
{{ checkbox('cookie', title='Set cookie', desc='Set cookie', value='1') }}
{{ checkbox('options-listen-show', title='Set options manualy', desc='Set options') }}
2018-05-12 19:25:45 +00:00
< / span >
2018-05-12 15:49:24 +00:00
< 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 >
2018-05-12 19:25:45 +00:00
< span class = "controlgroup" >
2019-10-25 07:18:57 +00:00
{% set values = dict() %}
{% set values = {'None':'None','rewrite':'rewrite','indirect':'indirect','insert':'insert'} %}
{{ select('rewrite', values=values, first='rewrite/indirect/insert', class='force_close') }}
{{ checkbox('prefix', title='This keyword indicates that instead of relying on a dedicated cookie for the persistence, an existing one will be completed', desc='prefix', value='prefix') }}
{{ checkbox('nocache', title='This option is recommended in conjunction with the insert mode when there is a cache between the client and HAProxy', desc='nocache', value='nocache') }}
{{ checkbox('postonly', title='This option ensures that cookie insertion will only be performed on responses to POST requests', desc='postonly', value='postonly') }}
{{ checkbox('dynamic', title='Activate dynamic cookies. When used, a session cookie is dynamically created for each server', desc='dynamic', value='dynamic') }}
2018-05-12 19:25:45 +00:00
< span id = "dynamic_div" style = "display: none;" >
2019-10-25 07:18:57 +00:00
dynamic-cookie-key: {{ input('dynamic-cookie-key', placeholder="your-custom-key") }}
2018-05-12 19:25:45 +00:00
< / span >
2018-05-12 16:41:07 +00:00
< / span >
2018-05-12 15:49:24 +00:00
< / span >
2018-05-05 12:40:41 +00:00
< div id = "options-listen-show-div" style = "display: none;" >
< div class = "tooltip" >
2019-10-18 17:23:35 +00:00
< span style = "padding-right: 10px;" > Start typing options: < / span >
2019-10-25 07:18:57 +00:00
{{ input('options') }}
2018-05-05 12:40:41 +00:00
< span style = "padding-left: 10px;" >
or press down. < a href = "http://cbonte.github.io/haproxy-dconv/1.7/configuration.html" target = "_blanck" style = "color: #23527c" title = "HAproxy docs" > Read more about options< / a >
< / span >
2019-09-17 07:18:48 +00:00
< br / >
< span style = "padding-right: 10px;" > Start typing saved options: < / span >
2019-10-25 07:18:57 +00:00
{{ input('saved-options') }}
2019-09-17 07:18:48 +00:00
It are the options that you saved in the "Options" tab
2018-05-05 12:40:41 +00:00
< / div >
2018-05-12 15:49:24 +00:00
< textarea name = "option" title = "Options thru" id = "optionsInput" cols = 80 rows = 5 placeholder = "acl test hdr_beg(host) -i some_host" > < / textarea >
2018-05-05 12:40:41 +00:00
< / div >
< / td >
< / tr >
< tr >
< td class = "addName" > Servers:< / td >
< td class = "addOption" >
2019-10-25 07:18:57 +00:00
{% include 'include/add_servers.html' %}
2020-01-12 16:13:48 +00:00
< br >
< br >
{{ checkbox('template-listen', name='template', title='Use server-template instead servers list', value='template', desc='Server-template') }}
2018-08-28 03:34:10 +00:00
< / td >
< / tr >
< tr class = "advance" >
< td class = "addName" > Check:< / td >
< td class = "addOption" >
2018-05-05 12:40:41 +00:00
< div >
2020-05-08 12:02:56 +00:00
< label for = "controlgroup-listen-show" style = "margin-top: 5px;" title = "Change default check" > Custom check params< / label >
2018-05-05 12:40:41 +00:00
< input type = "checkbox" id = "controlgroup-listen-show" name = "default-check" value = "1" >
< span class = "tooltip tooltipTop" > Default params: inter 2000 rise 2 fall 5< / span >
< / div >
< div class = "controlgroup" id = "controlgroup-listen" style = "display: none;" >
< label for = "check-servers-listen" title = "Ebable servers check" > Check< / label >
< input type = "checkbox" id = "check-servers-listen" name = "check-servers" checked value = "1" >
2019-10-25 07:18:57 +00:00
{% set values = dict() %}
{% set values = {'1000':'1000','2000':'2000','3000':'3000'} %}
2019-12-30 15:52:01 +00:00
{{ select('inter-listen', values=values, first='inter', class='force_close') }}
2019-10-25 07:18:57 +00:00
{% set values = dict() %}
{% set values = {'1':'1','2':'2','3':'3'} %}
2019-12-30 15:52:01 +00:00
{{ select('rise-listen', name='rise', values=values, first='rise', class='force_close') }}
2019-10-25 07:18:57 +00:00
{% set values = dict() %}
{% set values = {'4':'4','5':'5','6':'6'} %}
{{ select('fall-listen', name='fall', values=values, first='fall', class='force_close') }}
2018-05-05 12:40:41 +00:00
< / div >
< / td >
< / tr >
2018-08-28 03:34:10 +00:00
< tr class = "advance-show" >
< td class = "addName" > Advanced:< / td >
2020-08-10 16:01:12 +00:00
< td class = "addOption" > < span title = "Show Advanced settings" style = "cursor: pointer" > Show Advanced settings< / span > < / td >
2018-08-28 03:34:10 +00:00
< / tr >
2018-05-05 12:40:41 +00:00
< tr >
< td class = "addButton" >
2019-12-30 15:52:01 +00:00
< button type = "submit" value = "submit" > Add Listen< / button >
2018-05-05 12:40:41 +00:00
< / td >
< / tr >
< / form >
2019-09-23 14:03:23 +00:00
< / table >
< / div >
2018-05-05 12:40:41 +00:00
<!-- Second tabs -->
< div id = "frontend" >
2019-12-04 13:38:07 +00:00
< form name = "add-frontend" action = "/app/add.py" method = "post" >
2018-05-05 12:40:41 +00:00
< table >
2019-09-20 06:42:19 +00:00
< caption > < h3 > Add frontend< / h3 > < / caption >
2018-05-05 12:40:41 +00:00
< tr >
< td class = "addName" > Select server: < / td >
< td class = "addOption" >
< select required name = "serv" id = "serv2" >
< option disabled selected > Choose server< / option >
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
{% endfor %}
< / select >
2020-07-31 14:36:03 +00:00
< div class = "tooltip tooltipTop" > < b > Note:< / b > If you re-configure the master server, the slave server will re-configured automatically< / 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" >
2018-08-28 03:34:10 +00:00
A "frontend" section describes a set of listening sockets accepting client connections.
< br / > < br / >
All proxy names must be formed from upper and lower case letters, digits,
'-' (dash), '_' (underscore) , '.' (dot) and ':' (colon). ACL names are
case-sensitive, which means that "www" and "WWW" are two different proxies.
< br / > < br / >
Historically, all proxy names could overlap, it just caused troubles in the
logs. Since the introduction of content switching, it is mandatory that two
proxies with overlapping capabilities (frontend/backend) have different names.
However, it is still permitted that a frontend and a backend share the same
name, as this configuration seems to be commonly encountered.
< / td >
2018-05-05 12:40:41 +00:00
< / tr >
< tr >
< td class = "addName" > Name:< / td >
< td class = "addOption" >
2018-07-18 13:14:03 +00:00
< input type = "text" name = "frontend" id = "new_frontend" required title = "Name frontend" placeholder = "web_80" class = "form-control" >
2018-05-05 12:40:41 +00:00
< / td >
< / tr >
< tr >
< td class = "addName" > IP and Port:< / td >
< td class = "addOption" >
2018-05-12 15:49:24 +00:00
< input type = "text" name = "ip" id = "ip1" size = "15" placeholder = "Any" class = "form-control" > < b > :< / b >
2018-05-05 12:40:41 +00:00
< input type = "number" name = "port" required title = "Port for bind frontend" placeholder = "8080" class = "form-control" >
2020-07-31 14:36:03 +00:00
< div class = "tooltip tooltipTop" >
IP for bind listener, < b > if empty will be assigned on all IPs< / b > .
Start typing IP, or press down.< br > If you are using < b > VRRP, leave the IP field blank< / b > . If you assign an IP, the slave server will not start
< / div >
2018-05-05 12:40:41 +00:00
< / td >
< / tr >
2018-08-27 11:28:29 +00:00
< tr class = "advance" >
2018-05-05 12:40:41 +00:00
< td class = "addName" > Mode: < / td >
< td class = "addOption" >
2019-10-25 07:18:57 +00:00
{% set values = dict() %}
{% set values = {'http':'http','tcp':'tcp'} %}
{{ select('frontend-mode-select', name='mode', values=values, selected='http', required='required', class='force_close') }}
2018-05-05 12:40:41 +00:00
< span id = "https-frontend-span" >
2019-09-17 07:18:48 +00:00
< label for = "https-frontend" style = "margin-top: 5px;" > SSL?< / label >
2018-05-05 12:40:41 +00:00
< input type = "checkbox" id = "https-frontend" name = "ssl" value = "https" >
< / span >
< div id = "https-hide-frontend" style = "display: none;" >
< br / > < span class = "tooltip tooltipTop" > Enter name to pem file, or press down:< / span > < br / >
2019-10-25 07:18:57 +00:00
{{ input('path-cert-frontend', name="cert", placeholder="some_cert.pem", size='39') }}
2018-05-05 12:40:41 +00:00
< / div >
< / td >
< / tr >
2018-09-12 02:25:32 +00:00
< tr class = "advance" >
< td class = "addName" > Maxconn: < / td >
< td class = "addOption" >
2019-10-25 07:18:57 +00:00
{{ input('maxconn', value='2000', type="number", title="Fix the maximum number of concurrent connections on a frontend", size='5', required='required') }}
2018-09-12 02:25:32 +00:00
< div class = "tooltip tooltipTop" > This value should not exceed the global maxconn. Default global maxconn value: 2000< / div >
< / td >
< / tr >
2018-08-27 11:28:29 +00:00
< tr class = "advance" >
2018-08-08 17:15:18 +00:00
< td class = "addName" > < span title = "Cache support start 1.8 and latter" > Web acceleration(?):< / span > < / td >
2018-08-08 12:06:23 +00:00
< td class = "addOption" >
2018-08-08 17:15:18 +00:00
< span class = "controlgroup" >
2019-10-25 07:18:57 +00:00
{{ checkbox('compression2', title='Enable Compression', value='1', desc='Compression') }}
{{ checkbox('cache2', title='Enable cache', value='2', desc='Cache') }}
{{ checkbox('ssl_offloading1', title='Enable SSL Offloading', desc='SSL Offloading') }}
2018-08-09 12:11:10 +00:00
< / span >
2018-08-08 12:06:23 +00:00
< / td >
< / tr >
2018-08-27 11:28:29 +00:00
< tr class = "advance" >
2018-08-08 17:15:18 +00:00
< td class = "addName" > < span title = "Web application firewall" > WAF(?):< / span > < / td >
2018-05-05 12:40:41 +00:00
< td class = "addOption" >
2018-05-12 19:25:45 +00:00
< span class = "controlgroup" >
2019-10-25 07:18:57 +00:00
{{ checkbox('slow_atack1', title='Slow atack protect', desc='Slow atack') }}
{{ checkbox('ddos1', title='DDOS atack protect', desc='DDOS') }}
{{ checkbox('blacklist_checkbox1', title='Use blacklist', desc='Blacklist') }}
{{ checkbox('waf2', name='waf', title='Web application firewall', desc='WAF', value='1') }}
2020-08-10 16:01:12 +00:00
{{ checkbox('antibot1', title='Antibot Protection', desc='Antibot', value='1') }}
2018-08-08 17:15:18 +00:00
< / span >
2018-08-09 12:11:10 +00:00
< div id = "blacklist-hide1" style = "display: none;" >
< br / > < span class = "tooltip tooltipTop" > Enter the name of the blacklist, or press down:< / span > < br / >
2019-10-25 07:18:57 +00:00
{{ input('blacklist-hide-input1', size='39', name="blacklist", placeholder="blacklist.lst") }}
2018-08-09 12:11:10 +00:00
< / div >
2018-08-08 17:15:18 +00:00
< / td >
< / tr >
2018-08-27 11:28:29 +00:00
< tr class = "advance" >
2020-07-19 04:08:15 +00:00
< td class = "addName" > Options:< / td >
2018-08-08 17:15:18 +00:00
< td class = "addOption" >
< span class = "controlgroup" >
2019-10-25 07:18:57 +00:00
{{ checkbox('forward_for1', title='Option Forward for if none', desc='Forward for') }}
{% set values = dict() %}
{% set values = {'Off':'Off','Server only':'Server only','Force close':'Force close','Pretend keep alive':'Pretend keep alive'} %}
{{ select('force_close', values=values, first='Force HTTP close', class='force_close') }}
{{ checkbox('options-frontend-show', title='Set options manualy', desc='Set options') }}
2018-05-12 19:25:45 +00:00
< / span >
2018-05-05 12:40:41 +00:00
< div id = "options-frontend-show-div" style = "display: none;" >
< div style = "font-size: 12px; padding-bottom: 10px;" >
< span style = "padding-right: 10px;" > Start typing options: < / span >
2020-04-16 13:30:51 +00:00
{{ input('options1') }}
2018-05-05 12:40:41 +00:00
< span style = "padding-left: 10px;" >
or press down. < a href = "http://cbonte.github.io/haproxy-dconv/1.7/configuration.html" target = "_blanck" style = "color: #23527c" title = "HAproxy docs" > Read more about options< / a >
< / span >
2019-09-17 07:18:48 +00:00
< br / >
< span style = "padding-right: 10px;" > Start typing saved options: < / span >
2019-10-25 07:18:57 +00:00
{{ input('saved-options1') }}
2019-09-17 07:18:48 +00:00
It are the options that you saved in the "Options" tab
2018-05-05 12:40:41 +00:00
< / div >
2018-05-12 15:49:24 +00:00
< textarea name = "option" title = "Options thru" cols = 80 rows = 5 id = "optionsInput1" placeholder = "acl test hdr_beg(host) -i some_host" > < / textarea >
2018-05-05 12:40:41 +00:00
< / div >
< / td >
< / tr >
< tr >
< td class = "addName" > Default backend< / td >
< td class = "addOption" >
< div style = "font-size: 12px; padding-bottom: 10px;" > Start typing backend, or press down< / div >
2019-10-25 07:18:57 +00:00
{{ input('backends', name='backends', placeholder="some_backend", size='30') }}
2018-05-05 12:40:41 +00:00
< span style = "font-size: 12px; padding-left: 10px;" > .< / span >
2020-07-31 14:36:03 +00:00
< p style = "font-size: 12px" > < b > Note:< / b > If backend doesn't exist, you must first < a href = "#" style = "color: #23527c" title = "Create backend" class = "redirectBackend" > create a new backend< / a > .< / p >
2018-05-05 12:40:41 +00:00
< / td >
< / tr >
2018-08-28 03:34:10 +00:00
< tr class = "advance-show" >
< td class = "addName" > Advanced:< / td >
2020-08-10 16:01:12 +00:00
< td class = "addOption" > < span title = "Show Advanced settings" style = "cursor: pointer" > Show Advanced settings< / span > < / td >
2018-08-28 03:34:10 +00:00
< / tr >
2018-05-05 12:40:41 +00:00
< tr >
< td class = "addButton" >
2019-11-18 18:53:09 +00:00
< button type = "submit" > Add Frontend< / button >
2018-05-05 12:40:41 +00:00
< / td >
< / tr >
< / form >
< / table >
< / div >
<!-- Third tabs -->
< div id = "backend" >
2019-12-04 13:38:07 +00:00
< form name = "add-backend" action = "/app/add.py" method = "post" >
2018-05-05 12:40:41 +00:00
< table >
2019-09-20 06:42:19 +00:00
< caption > < h3 > Add backend< / h3 > < / caption >
2018-05-05 12:40:41 +00:00
< tr >
< td class = "addName" > Select server: < / td >
< td class = "addOption" >
< select required name = "serv" id = "serv3" >
< option disabled selected > Choose server< / option >
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
{% endfor %}
< / select >
2020-07-31 14:36:03 +00:00
< div class = "tooltip tooltipTop" > < b > Note:< / b > If you re-configure the master server, the slave server will reconfigured automatically< / 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" >
2018-08-28 03:34:10 +00:00
A "backend" section describes a set of servers to which the proxy will connect to forward incoming connections.
< br / > < br / >
All proxy names must be formed from upper and lower case letters, digits,
'-' (dash), '_' (underscore) , '.' (dot) and ':' (colon). ACL names are
case-sensitive, which means that "www" and "WWW" are two different proxies.
< br / > < br / >
Historically, all proxy names could overlap, it just caused troubles in the
logs. Since the introduction of content switching, it is mandatory that two
proxies with overlapping capabilities (frontend/backend) have different names.
However, it is still permitted that a frontend and a backend share the same
name, as this configuration seems to be commonly encountered.
< / td >
2018-05-05 12:40:41 +00:00
< / tr >
< tr >
< td class = "addName" > Name:< / td >
< td class = "addOption" >
2019-10-25 07:18:57 +00:00
{{ input('new_backend', title="Name backend", placeholder="web_80", required='required') }}
2018-05-05 12:40:41 +00:00
< / td >
< / tr >
2018-08-27 11:28:29 +00:00
< tr class = "advance" >
2018-05-05 12:40:41 +00:00
< td class = "addName" > Mode: < / td >
< td class = "addOption" >
2019-10-25 07:18:57 +00:00
{% set values = dict() %}
{% set values = {'http':'http','tcp':'tcp'} %}
{{ select('backend-mode-select', name='mode', values=values, selected='http', required='required', class='force_close') }}
2018-05-05 12:40:41 +00:00
< span id = "https-backend-span" >
2019-09-20 06:42:19 +00:00
< label for = "https-backend" style = "margin-top: 5px;" > SSL enabled on frontend?< / label >
2018-05-05 12:40:41 +00:00
< input type = "checkbox" id = "https-backend" name = "ssl" value = "https" >
< / span >
< div id = "https-hide-backend" style = "display: none;" >
2019-09-20 06:42:19 +00:00
< label for = "ssl-check" style = "margin-top: 5px;" > Disable SSL verify on servers?< / label > < input type = "checkbox" id = "ssl-check" name = "ssl-check" value = "ssl-check" checked >
2018-05-05 12:40:41 +00:00
< / div >
< / td >
< / tr >
2018-08-27 11:28:29 +00:00
< tr class = "advance" >
2018-05-05 12:40:41 +00:00
< td class = "addName" > Balance: < / td >
2019-10-25 07:18:57 +00:00
< td class = "addOption" >
{% set values = dict() %}
{% set values = {'roundrobin':'roundrobin','source':'source','leastconn':'leastconn', 'first':'first', 'rdp-cookie':'rdp-cookie'} %}
{{ select('balance', values=values, selected='roundrobin', required='required', class='force_close') }}
< / td >
2018-05-05 12:40:41 +00:00
< / tr >
2018-08-27 11:28:29 +00:00
< tr class = "advance" >
2018-08-08 12:06:23 +00:00
< td class = "addName" > < span title = "Cache support start 1.8 and latter" > Web acceleration(?):< / span > < / td >
< td class = "addOption" >
2018-08-08 17:15:18 +00:00
< span class = "controlgroup" >
2019-10-25 07:18:57 +00:00
{{ checkbox('compression3', title='Enable Compression', value='1', desc='Compression') }}
{{ checkbox('cache3', title='Enable cache', value='2', desc='Cache') }}
{{ checkbox('ssl_offloading2', title='Enable SSL Offloading', desc='SSL Offloading') }}
2018-08-08 17:15:18 +00:00
< / span >
2018-08-08 12:06:23 +00:00
< / td >
< / tr >
2018-08-27 11:28:29 +00:00
< tr class = "advance" >
2020-07-19 04:08:15 +00:00
< td class = "addName" > Options:< / td >
2018-08-08 17:15:18 +00:00
< td class = "addOption" >
< span class = "controlgroup" >
2019-10-25 07:18:57 +00:00
{{ checkbox('forward_for2', title='Option Forward for if none', desc='Forward for') }}
{{ checkbox('redispatch2', title='Enable Redispatch', desc='Redispatch') }}
{% set values = dict() %}
{% set values = {'Off':'Off','Server only':'Server only','Force close':'Force close','Pretend keep alive':'Pretend keep alive'} %}
{{ select('force_close', values=values, first='Force HTTP close', class='force_close') }}
{{ checkbox('cookie2', title='Set cookie', desc='Set cookie', value='1') }}
{{ checkbox('options-backend-show', title='Set options manualy', desc='Set options') }}
2018-05-12 19:25:45 +00:00
< / span >
2018-08-27 11:28:29 +00:00
< br >
2018-05-12 15:49:24 +00:00
< 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 >
2018-05-12 19:25:45 +00:00
< span class = "controlgroup" >
2019-10-25 07:18:57 +00:00
{% set values = dict() %}
{% set values = {'None':'None','rewrite':'rewrite','indirect':'indirect','insert':'insert'} %}
{{ select('rewrite2', values=values, first='rewrite/indirect/insert', class='force_close') }}
{{ checkbox('prefix2', name='prefix', title='This keyword indicates that instead of relying on a dedicated cookie for the persistence, an existing one will be completed', desc='prefix', value='prefix') }}
{{ checkbox('nocache2', name='nocache', title='This option is recommended in conjunction with the insert mode when there is a cache between the client and HAProxy', desc='nocache', value='nocache') }}
{{ checkbox('postonly2', name='postonly', title='This option ensures that cookie insertion will only be performed on responses to POST requests', desc='postonly', value='postonly') }}
{{ checkbox('dynamic2', name='dynamic', title='Activate dynamic cookies. When used, a session cookie is dynamically created for each server', desc='dynamic', value='dynamic') }}
2018-05-12 19:25:45 +00:00
< span id = "dynamic_div2" style = "display: none;" >
2019-10-25 07:18:57 +00:00
dynamic-cookie-key: {{ input('dynamic-cookie-key2', name='dynamic-cookie-key', placeholder="your-custom-key") }}
2018-05-12 19:25:45 +00:00
< / span >
2018-05-12 16:41:07 +00:00
< / span >
2018-05-12 15:49:24 +00:00
< / span >
< div id = "options-backend-show-div" style = "display: none;" >
2018-05-05 12:40:41 +00:00
< div style = "font-size: 12px; padding-bottom: 10px;" >
< span style = "padding-right: 10px;" > Start typing options: < / span >
2019-10-25 07:18:57 +00:00
{{ input('options2') }}
2018-05-05 12:40:41 +00:00
< span style = "padding-left: 10px;" >
or press down. < a href = "http://cbonte.github.io/haproxy-dconv/1.7/configuration.html" target = "_blanck" style = "color: #23527c" title = "HAproxy docs" > Read more about options< / a >
< / span >
2019-09-17 07:18:48 +00:00
< br / >
< span style = "padding-right: 10px;" > Start typing saved options: < / span >
< input type = "text" id = "saved-options2" class = "form-control" >
It are the options that you saved in the "Options" tab
2018-05-05 12:40:41 +00:00
< / div >
2018-05-12 15:49:24 +00:00
< 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 >
< / td >
< / tr >
< tr >
< td class = "addName" > Servers:< / td >
< td class = "addOption" >
2019-10-25 07:18:57 +00:00
{% include 'include/add_servers.html' %}
2020-01-12 16:13:48 +00:00
< br >
< br >
{{ checkbox('template-backend', name='template', title='Use server-template instead servers list', value='template', desc='Server-template') }}
2018-08-28 03:34:10 +00:00
< / td >
< / tr >
< tr class = "advance" >
< td class = "addName" > Check:< / td >
< td class = "addOption" >
2018-05-05 12:40:41 +00:00
< div >
2020-05-08 12:02:56 +00:00
< label for = "controlgroup-backend-show" style = "margin-top: 5px;" title = "Change default check" > Custom check params< / label >
2018-05-05 12:40:41 +00:00
< input type = "checkbox" id = "controlgroup-backend-show" name = "default-check" >
< span class = "tooltip tooltipTop" > Default params: inter 2000 rise 2 fall 5< / span >
< / div >
< div class = "controlgroup" id = "controlgroup-backend" style = "display: none;" >
< label for = "check-servers-backend" title = "Ebable servers check" > Check< / label >
< input type = "checkbox" id = "check-servers-backend" name = "check-servers" checked value = "1" >
2019-10-25 07:18:57 +00:00
{% 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'} %}
2019-12-30 15:52:01 +00:00
{{ select('rise-backend', name='rise', values=values, first='rise', class='force_close') }}
2019-10-25 07:18:57 +00:00
{% set values = dict() %}
{% set values = {'4':'4','5':'5','6':'6'} %}
{{ select('fall-backend', name='fall', values=values, first='fall', class='force_close') }}
2018-05-05 12:40:41 +00:00
< / div >
< / td >
< / tr >
2018-08-28 03:34:10 +00:00
< tr class = "advance-show" >
< td class = "addName" > Advanced:< / td >
2020-08-10 16:01:12 +00:00
< td class = "addOption" > < span title = "Show Advanced settings" style = "cursor: pointer" > Show Advanced settings< / span > < / td >
2018-08-28 03:34:10 +00:00
< / tr >
2018-05-05 12:40:41 +00:00
< tr >
< td class = "addButton" >
< button type = "submit" value = "" name = "" class = "btn btn-default" > Add Backend< / button >
< / td >
< / tr >
< / form >
< / table >
< / div >
< 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" >
2019-09-20 06:42:19 +00:00
< td class = "padding10 first-collumn" style = "width: 30%;" > View certificates< / td >
2018-05-06 04:45:10 +00:00
< td >
2020-07-31 14:36:03 +00:00
Existing certificates
2018-05-06 04:45:10 +00:00
< / td >
< / tr >
< tr >
< td class = "padding10 first-collumn" >
< select required name = "serv" id = "serv5" >
< option disabled selected > Choose server< / option >
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
{% endfor %}
< / select >
2020-08-04 16:40:58 +00:00
< button id = "ssl_key_view" title = "View certificates" > View< / button >
2018-05-06 04:45:10 +00:00
< / td >
< td >
< span id = "ajax-show-ssl" > < / span >
< / td >
< / tr >
2018-05-05 12:40:41 +00:00
< tr class = "overviewHead" >
2019-09-20 06:42:19 +00:00
< td class = "padding10 first-collumn" style = "width: 30%;" > Upload SSL certificates< / td >
2018-05-05 12:40:41 +00:00
< td >
Certificate name
< / td >
< td >
< span title = "This pem file will be used to create https connection with haproxy" > Paste certificate content here(?)< / span >
< / td >
< / tr >
< tr style = "width: 50%;" >
< td class = "first-collumn" valign = "top" style = "padding-top: 15px;" >
< select required id = "serv4" >
< option disabled selected > Choose server< / option >
{% 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 / >
2020-08-04 16:40:58 +00:00
< button id = "ssl_key_upload" title = "Upload ssl certificates" > Upload< / button >
2018-05-05 12:40:41 +00:00
< / td >
< / tr >
< / table >
2020-09-15 05:56:43 +00:00
< table >
< caption > < h3 > Let's Encrypt< / h3 > < / caption >
< tr class = "overviewHead" >
< td class = "padding10 first-collumn" >
Server
< / td >
< td >
Domain name
< / td >
< td >
E-mail
< / td >
< td > < / td >
< / tr >
< tr >
< td class = "padding10 first-collumn" >
< select required id = "serv_for_lets" >
< option disabled selected > Choose server< / option >
{% 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 >
< button id = "lets_button" > Get certificate< / button >
< / 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 >
2020-07-19 04:08:15 +00:00
< td class = "padding10 first-collumn" > Options< / td >
2019-09-17 07:18:48 +00:00
< td > < / td >
< / tr >
{% for option in options %}
< tr id = "option-{{ option.0 }}" class = "{{ loop.cycle('odd', 'even') }}" >
{% if option.2 == group or group == '1' %}
< td class = "padding10 first-collumn" >
{{ option.0 }}
< / td >
2019-10-18 17:23:35 +00:00
< td class = "padding10 first-collumn" style = "width: 77%;" >
< input type = "text" id = "option-body-{{ option.0 }}" value = "{{ option.1 }}" size = "60" class = "form-control" >
2019-09-17 07:18:48 +00:00
< / td >
< td >
< a class = "delete" onclick = "confirmDeleteOption({{ option.0 }})" title = "Delete option {{option.1}}" style = "cursor: pointer;" > < / a >
< / td >
{% endif %}
< / tr >
{% endfor %}
< / table >
< br / > < span class = "add-button" title = "Add option" id = "add-option-button" > + Add< / span >
< br / > < br / >
< table class = "overview" id = "option-add-table" style = "display: none;" >
< tr class = "overviewHead" >
< td class = "padding10 first-collumn" > < / td >
< td > Option< / td >
< td > < / td >
< / tr >
< tr >
< td class = "padding10 first-collumn" >
Enter option for save:
< / 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 >
2020-08-04 16:40:58 +00:00
< span class = "add-admin" id = "add-option-new" title = "Add new option" 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 >
2019-09-20 06:42:19 +00:00
< div class = "add-note addName alert-info" style = "width: inherit; margin-right: 15px;" >
In this section you can create, edit and delete options with given parameters. And after use them as autocomplete in the "Add" sections
2019-10-11 04:49:55 +00:00
< br / >
< br / >
How to use pre saved option you can see in
< a href = "https://haproxy-wi.org/description.py?description=saved" title = "How to use pre saved options" target = "_blank" >
< b > this video< / b >
< / a >
2019-09-20 06:42:19 +00:00
< / div >
2019-09-17 07:18:48 +00:00
< / div >
2019-09-23 18:42:32 +00:00
2019-10-09 06:35:35 +00:00
< div id = "add-servers" >
< table class = "overview" id = "servers_table" >
< tr class = "overviewHead" >
< td class = "padding10 first-collumn" > Server< / td >
< td class = "padding10 first-collumn" > Description< / td >
< td > < / td >
< / tr >
{% for s in saved_servers %}
< tr id = "servers-saved-{{ s.0 }}" class = "{{ loop.cycle('odd', 'even') }}" >
{% if s.3 == group or group == '1' %}
< td class = "padding10 first-collumn" >
< input type = "text" id = "servers-ip-{{ s.0 }}" value = "{{ s.1 }}" size = "15" class = "form-control" >
< / td >
2019-10-18 17:23:35 +00:00
< td class = "padding10 first-collumn" style = "width: 77%;" >
< input type = "text" id = "servers-desc-{{ s.0 }}" value = "{{ s.2 }}" size = "50" class = "form-control" >
2019-10-09 06:35:35 +00:00
< / td >
< td >
< a class = "delete" onclick = "confirmDeleteSavedServer({{ s.0 }})" title = "Delete server {{s.1}}" style = "cursor: pointer;" > < / a >
< / td >
{% endif %}
< / tr >
{% endfor %}
< / table >
< br / > < span class = "add-button" title = "Add server" id = "add-saved-server-button" > + Add< / span >
< br / > < br / >
< table class = "overview" id = "saved-server-add-table" style = "display: none;" >
< tr class = "overviewHead" >
< td class = "padding10 first-collumn" > Server< / td >
< td > Description< / td >
< 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 >
2020-08-04 16:40:58 +00:00
< button class = "add-admin" id = "add-saved-server-new" title = "Add new server" style = "cursor: pointer;" > < / button >
2019-10-09 06:35:35 +00:00
< / td >
< / tr >
< / table >
< div id = "ajax-servers" > < / div >
< div class = "add-note addName alert-info" style = "width: inherit; margin-right: 15px;" >
In this section you can create, edit and delete servers. And after use them as autocomplete in the "Add" sections
2019-10-11 04:49:55 +00:00
< br / >
< br / >
How to use pre saved servers you can see in
< a href = "https://haproxy-wi.org/description.py?description=saved" title = "How to use pre saved servers" target = "_blank" >
< b > this video< / b >
< / a >
2019-10-09 06:35:35 +00:00
< / div >
< / div >
2019-10-18 17:23:35 +00:00
< div id = "userlist" >
2019-12-04 13:38:07 +00:00
< form name = "add-userlist" action = "/app/add.py" method = "post" >
2019-10-18 17:23:35 +00:00
< table >
< caption > < h3 > Add Userlist< / h3 > < / caption >
< tr >
< td class = "addName" > Select server: < / td >
< td class = "addOption" >
< select required name = "serv" id = "serv3" >
< option disabled selected > Choose server< / option >
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
{% endfor %}
< / select >
< div class = "tooltip tooltipTop" > < b > Note:< / b > If you reconfigure Master server, Slave will reconfigured automatically< / div >
< / td >
< td rowspan = "4" class = "add-note addName alert-info" >
It is possible to control access to frontend/backend/listen sections or to
http stats by allowing only authenticated and authorized users. To do this,
it is required to create at least one userlist and to define users.
< / td >
< / tr >
< tr >
< td class = "addName" > Userlist name:< / td >
< td class = "addOption" >
2019-10-25 07:18:57 +00:00
{{ input('new_userlist', required='required', title="Userlist name", placeholder="basic-auth-list") }}
2019-10-18 17:23:35 +00:00
< / td >
< / tr >
< tr >
< td class = "addName" > Groups:< / td >
< td class = "addOption" >
< span id = "userlist-groups" >
2019-10-25 07:18:57 +00:00
{{ input('userlist-group', title="User`s group", 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 >
< div class = "tooltip tooltipTop" > It is also possible to attach users to this group by using a comma separated list of names preceded by "users" keyword.< / div >
< / td >
< / tr >
< tr >
< td class = "addName" > User:< / td >
< td class = "addOption" >
< span id = "userlist-users" >
2019-10-25 07:18:57 +00:00
{{ input('userlist-user', required='required', title="User name", placeholder="user_name") }}
{{ input('userlist-password', required='required', title="User password. By default it insecure-password", placeholder="password") }}
{{ input('userlist-user-group', title="User`s group", placeholder="user`s 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 >
< div class = "tooltip tooltipTop" > It is also possible to attach groups to this user by using a comma separated list of groups.< / div >
< / td >
< / tr >
< tr >
< td class = "addButton" >
< button type = "submit" value = "" name = "" class = "btn btn-default" > Add Userlist< / button >
< / td >
< / tr >
< / table >
< / form >
< div class = "add-note addName alert-info" style = "width: inherit; margin-right: 15px;" >
In this section you can create userlists. And after use them in the "Add" sections
< br / >
< br / >
How to use userlists you can read
< a href = "https://haproxy-wi.org/description.py?description=userlist" title = "How to use userlists" target = "_blank" >
< b > here< / b >
< / a >
< / div >
2019-10-25 07:18:57 +00:00
< / div >
2020-01-12 16:13:48 +00:00
< div id = "lists" >
< table class = "overview" >
< tr class = "overviewHead" >
2020-04-23 21:11:37 +00:00
< th class = "padding10 first-collumn" > Server for upload< / th >
2020-07-31 14:36:03 +00:00
< th > New blacklist< / th >
< th > Existing blacklists< / th >
2020-01-12 16:13:48 +00:00
< / tr >
< tr >
2020-04-23 21:11:37 +00:00
< td class = "padding10 first-collumn" >
< select required name = "serv-black-list" id = "serv-black-list" >
< option disabled selected > Choose server< / option >
2020-04-28 14:33:30 +00:00
< option value = "all" > ALL< / option >
2020-04-23 21:11:37 +00:00
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
{% endfor %}
< / select >
< / td >
< td style = "width: 25%;" >
2020-01-12 16:13:48 +00:00
Name: {{ input('new_blacklist_name') }}
< button onclick = "createList('black')" > Create< / button >
< / td >
< td style = "width: 30%;" >
{% for list in black_lists %}
< a onclick = "editList('{{ list }}', 'black')" style = "cursor: pointer;" title = "Edit list {{ list }}" > {{ list }}< / a >
{% endfor %}
< / td >
2020-04-23 21:11:37 +00:00
< / tr >
{{ input('group', value=group, type='hidden') }}
< / table >
< table >
< tr class = "overviewHead" >
< th class = "padding10 first-collumn" > Server for upload< / th >
2020-07-31 14:36:03 +00:00
< th > New whitelist< / th >
< th > Existing whitelists< / th >
2020-04-23 21:11:37 +00:00
< / tr >
< tr >
< td class = "padding10 first-collumn" >
< select required name = "serv-white-list" id = "serv-white-list" >
< option disabled selected > Choose server< / option >
2020-04-28 14:33:30 +00:00
< option value = "all" > ALL< / option >
2020-04-23 21:11:37 +00:00
{% for select in selects %}
< option value = "{{ select.2 }}" > {{ select.1 }}< / option >
{% endfor %}
< / select >
< / td >
< td style = "width: 25%;" >
2020-01-12 16:13:48 +00:00
Name: {{ input('new_whitelist_name') }}
< button onclick = "createList( 'white')" > Create< / button >
< / td >
< td style = "width: 30%;" >
{% for list in white_lists %}
< a onclick = "editList('{{ list }}', 'white')" style = "cursor: pointer;" title = "Edit list {{ list }}" > {{ list }}< / a >
{% endfor %}
< / td >
< / tr >
< / table >
2020-04-23 21:11:37 +00:00
< div id = "ajax" > < / div >
2020-01-12 16:13:48 +00:00
< div class = "add-note addName alert-info" style = "width: inherit; margin-right: 15px;" >
In this section you can create and edit black and white lists. And after use them in the HAProxy configs or in the "Add proxy" pages
< / div >
2020-01-18 23:50:43 +00:00
< div id = "dialog-confirm-cert-edit" title = "View certificate " style = "display: none;" >
2020-01-12 16:13:48 +00:00
< span > < b > Note:< / b > Each new address must be specified from a new line< / span >
< textarea id = "edit_lists" 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;" >
2018-08-08 17:15:18 +00:00
< center > < pre id = "dialog-confirm-body" > < / pre > < / center >
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
});
< / script >
2019-12-04 13:38:07 +00:00
{% endblock %}