mirror of https://github.com/Aidaho12/haproxy-wi
parent
d58b3b9ee2
commit
f02408155e
|
@ -797,7 +797,7 @@ def update_db_v_6_3_8():
|
||||||
|
|
||||||
def update_ver():
|
def update_ver():
|
||||||
try:
|
try:
|
||||||
Version.update(version='6.3.9.0').execute()
|
Version.update(version='6.3.10.0').execute()
|
||||||
except Exception:
|
except Exception:
|
||||||
print('Cannot update version')
|
print('Cannot update version')
|
||||||
|
|
||||||
|
|
|
@ -127,8 +127,8 @@ def change_ip_and_port() -> None:
|
||||||
|
|
||||||
haproxy_sock_port = sql.get_setting('haproxy_sock_port')
|
haproxy_sock_port = sql.get_setting('haproxy_sock_port')
|
||||||
|
|
||||||
MASTERS = sql.is_master(serv)
|
masters = sql.is_master(serv)
|
||||||
for master in MASTERS:
|
for master in masters:
|
||||||
if master[0] is not None:
|
if master[0] is not None:
|
||||||
cmd = 'echo "set server %s/%s addr %s port %s check-port %s" |nc %s %s' % (
|
cmd = 'echo "set server %s/%s addr %s port %s check-port %s" |nc %s %s' % (
|
||||||
backend_backend, backend_server, backend_ip, backend_port, backend_port, master[0], haproxy_sock_port)
|
backend_backend, backend_server, backend_ip, backend_port, backend_port, master[0], haproxy_sock_port)
|
||||||
|
@ -165,31 +165,59 @@ def change_ip_and_port() -> None:
|
||||||
config_mod.master_slave_upload_and_restart(serv, cfg, just_save='save')
|
config_mod.master_slave_upload_and_restart(serv, cfg, just_save='save')
|
||||||
|
|
||||||
|
|
||||||
def change_maxconn() -> None:
|
def change_maxconn_global() -> None:
|
||||||
frontend = common.checkAjaxInput(form.getvalue('maxconn_frontend'))
|
if form.getvalue('maxconn_global') is None:
|
||||||
maxconn = common.checkAjaxInput(form.getvalue('maxconn_int'))
|
print('error: Maxconn must be integer and not 0')
|
||||||
|
return
|
||||||
|
|
||||||
|
maxconn = common.checkAjaxInput(form.getvalue('maxconn_global'))
|
||||||
|
haproxy_sock_port = sql.get_setting('haproxy_sock_port')
|
||||||
|
masters = sql.is_master(serv)
|
||||||
|
|
||||||
|
for master in masters:
|
||||||
|
if master[0] is not None:
|
||||||
|
cmd = f'echo "set maxconn global {maxconn}" |nc {master[0]} {haproxy_sock_port}'
|
||||||
|
output, stderr = server_mod.subprocess_execute(cmd)
|
||||||
|
roxywi_common.logging(master[0], f'Maxconn has been changed. Globally to {maxconn}', login=1, keep_history=1, service='haproxy')
|
||||||
|
|
||||||
|
cmd = f'echo "set maxconn global {maxconn}" |nc {serv} {haproxy_sock_port}'
|
||||||
|
print(cmd)
|
||||||
|
roxywi_common.logging(serv, f'Maxconn has been changed. Globally to {maxconn}', login=1, keep_history=1, service='haproxy')
|
||||||
|
output, stderr = server_mod.subprocess_execute(cmd)
|
||||||
|
|
||||||
|
if stderr != '':
|
||||||
|
print(stderr[0])
|
||||||
|
elif output[0] == '':
|
||||||
|
configs_dir = get_config_var.get_config_var('configs', 'haproxy_save_configs_dir')
|
||||||
|
cfg = f"{configs_dir}{serv}-{get_date.return_date('config')}.cfg"
|
||||||
|
|
||||||
|
config_mod.get_config(serv, cfg)
|
||||||
|
cmd = 'string=`grep global %s -n -A5 |grep maxcon -n |awk -F":" \'{print $2}\'|awk -F"-" \'{print $1}\'` ' \
|
||||||
|
'&& sed -Ei "$( echo $string)s/[0-9]+/%s/g" %s' % (cfg, maxconn, cfg)
|
||||||
|
server_mod.subprocess_execute(cmd)
|
||||||
|
config_mod.master_slave_upload_and_restart(serv, cfg, just_save='save')
|
||||||
|
print(f'success: Maxconn globally has been set to {maxconn} ')
|
||||||
|
else:
|
||||||
|
print(f'error: {output[0]}')
|
||||||
|
|
||||||
|
|
||||||
|
def change_maxconn_frontend() -> None:
|
||||||
if form.getvalue('maxconn_int') is None:
|
if form.getvalue('maxconn_int') is None:
|
||||||
print('error: Maxconn must be integer and not 0')
|
print('error: Maxconn must be integer and not 0')
|
||||||
return
|
return
|
||||||
|
|
||||||
|
frontend = common.checkAjaxInput(form.getvalue('maxconn_frontend'))
|
||||||
|
maxconn = common.checkAjaxInput(form.getvalue('maxconn_int'))
|
||||||
haproxy_sock_port = sql.get_setting('haproxy_sock_port')
|
haproxy_sock_port = sql.get_setting('haproxy_sock_port')
|
||||||
|
|
||||||
masters = sql.is_master(serv)
|
masters = sql.is_master(serv)
|
||||||
|
|
||||||
for master in masters:
|
for master in masters:
|
||||||
if master[0] is not None:
|
if master[0] is not None:
|
||||||
if frontend == 'global':
|
cmd = f'echo "set maxconn frontend {frontend} {maxconn}" |nc {master[0]} {haproxy_sock_port}'
|
||||||
cmd = 'echo "set maxconn %s %s" |nc %s %s' % (frontend, maxconn, master[0], haproxy_sock_port)
|
|
||||||
else:
|
|
||||||
cmd = 'echo "set maxconn frontend %s %s" |nc %s %s' % (frontend, maxconn, master[0], haproxy_sock_port)
|
|
||||||
output, stderr = server_mod.subprocess_execute(cmd)
|
output, stderr = server_mod.subprocess_execute(cmd)
|
||||||
roxywi_common.logging(master[0], f'Maxconn has been changed. On: {frontend} to {maxconn}', login=1, keep_history=1, service='haproxy')
|
roxywi_common.logging(master[0], f'Maxconn has been changed. On: {frontend} to {maxconn}', login=1, keep_history=1, service='haproxy')
|
||||||
|
|
||||||
if frontend == 'global':
|
cmd = f'echo "set maxconn frontend {frontend} {maxconn}" |nc {serv} {haproxy_sock_port}'
|
||||||
cmd = 'echo "set maxconn %s %s" |nc %s %s' % (frontend, maxconn, serv, haproxy_sock_port)
|
|
||||||
else:
|
|
||||||
cmd = 'echo "set maxconn frontend %s %s" |nc %s %s' % (frontend, maxconn, serv, haproxy_sock_port)
|
|
||||||
print(cmd)
|
|
||||||
roxywi_common.logging(serv, f'Maxconn has been changed. On: {frontend} to {maxconn}', login=1, keep_history=1, service='haproxy')
|
roxywi_common.logging(serv, f'Maxconn has been changed. On: {frontend} to {maxconn}', login=1, keep_history=1, service='haproxy')
|
||||||
output, stderr = server_mod.subprocess_execute(cmd)
|
output, stderr = server_mod.subprocess_execute(cmd)
|
||||||
|
|
||||||
|
@ -209,6 +237,44 @@ def change_maxconn() -> None:
|
||||||
print(f'error: {output[0]}')
|
print(f'error: {output[0]}')
|
||||||
|
|
||||||
|
|
||||||
|
def change_maxconn_backend() -> None:
|
||||||
|
if form.getvalue('maxconn_int') is None:
|
||||||
|
print('error: Maxconn must be integer and not 0')
|
||||||
|
return
|
||||||
|
|
||||||
|
backend = common.checkAjaxInput(form.getvalue('maxconn_backend'))
|
||||||
|
backend_server = common.checkAjaxInput(form.getvalue('maxconn_backend_server'))
|
||||||
|
maxconn = common.checkAjaxInput(form.getvalue('maxconn_int'))
|
||||||
|
haproxy_sock_port = sql.get_setting('haproxy_sock_port')
|
||||||
|
|
||||||
|
masters = sql.is_master(serv)
|
||||||
|
for master in masters:
|
||||||
|
if master[0] is not None:
|
||||||
|
cmd = f'echo "set maxconn server {backend}/{backend_server} {maxconn}" |nc {master[0]} {haproxy_sock_port}'
|
||||||
|
output, stderr = server_mod.subprocess_execute(cmd)
|
||||||
|
roxywi_common.logging(master[0], f'Maxconn has been changed. On: {backend}/{backend_server} to {maxconn}', login=1, keep_history=1, service='haproxy')
|
||||||
|
|
||||||
|
cmd = f'echo "set maxconn server {backend}/{backend_server} {maxconn}" |nc {serv} {haproxy_sock_port}'
|
||||||
|
print(cmd)
|
||||||
|
roxywi_common.logging(serv, f'Maxconn has been changed. On: {backend} to {maxconn}', login=1, keep_history=1, service='haproxy')
|
||||||
|
output, stderr = server_mod.subprocess_execute(cmd)
|
||||||
|
|
||||||
|
if stderr != '':
|
||||||
|
print(stderr[0])
|
||||||
|
elif output[0] == '':
|
||||||
|
configs_dir = get_config_var.get_config_var('configs', 'haproxy_save_configs_dir')
|
||||||
|
cfg = f"{configs_dir}{serv}-{get_date.return_date('config')}.cfg"
|
||||||
|
|
||||||
|
config_mod.get_config(serv, cfg)
|
||||||
|
cmd = 'string=`grep %s %s -n -A10 |grep maxcon -n|grep %s |awk -F":" \'{print $2}\'|awk -F"-" \'{print $1}\'` ' \
|
||||||
|
'&& sed -Ei "$( echo $string)s/maxconn [0-9]+/maxconn %s/g" %s' % (backend, cfg, backend_server, maxconn, cfg)
|
||||||
|
server_mod.subprocess_execute(cmd)
|
||||||
|
config_mod.master_slave_upload_and_restart(serv, cfg, just_save='save')
|
||||||
|
print(f'success: Maxconn for {backend}/{backend_server} has been set to {maxconn} ')
|
||||||
|
else:
|
||||||
|
print(f'error: {output[0]}')
|
||||||
|
|
||||||
|
|
||||||
def table_select():
|
def table_select():
|
||||||
from jinja2 import Environment, FileSystemLoader
|
from jinja2 import Environment, FileSystemLoader
|
||||||
env = Environment(loader=FileSystemLoader('templates'), autoescape=True,
|
env = Environment(loader=FileSystemLoader('templates'), autoescape=True,
|
||||||
|
@ -245,7 +311,7 @@ def delete_ip_from_stick_table() -> None:
|
||||||
cmd = f'echo "clear table {table} key {ip}" |nc {serv} {haproxy_sock_port}'
|
cmd = f'echo "clear table {table} key {ip}" |nc {serv} {haproxy_sock_port}'
|
||||||
output, stderr = server_mod.subprocess_execute(cmd)
|
output, stderr = server_mod.subprocess_execute(cmd)
|
||||||
if stderr[0] != '':
|
if stderr[0] != '':
|
||||||
print('error: ' + stderr[0])
|
print(f'error: {stderr[0]}')
|
||||||
|
|
||||||
|
|
||||||
def clear_stick_table() -> None:
|
def clear_stick_table() -> None:
|
||||||
|
@ -255,7 +321,7 @@ def clear_stick_table() -> None:
|
||||||
cmd = f'echo "clear table {table} " |nc {serv} {haproxy_sock_port}'
|
cmd = f'echo "clear table {table} " |nc {serv} {haproxy_sock_port}'
|
||||||
output, stderr = server_mod.subprocess_execute(cmd)
|
output, stderr = server_mod.subprocess_execute(cmd)
|
||||||
if stderr[0] != '':
|
if stderr[0] != '':
|
||||||
print('error: ' + stderr[0])
|
print(f'error: {stderr[0]}')
|
||||||
|
|
||||||
|
|
||||||
def list_of_lists() -> None:
|
def list_of_lists() -> None:
|
||||||
|
@ -345,11 +411,11 @@ def select_session() -> None:
|
||||||
from jinja2 import Environment, FileSystemLoader
|
from jinja2 import Environment, FileSystemLoader
|
||||||
env = Environment(loader=FileSystemLoader('templates'), autoescape=True,
|
env = Environment(loader=FileSystemLoader('templates'), autoescape=True,
|
||||||
extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'], trim_blocks=True, lstrip_blocks=True)
|
extensions=['jinja2.ext.loopcontrols', 'jinja2.ext.do'], trim_blocks=True, lstrip_blocks=True)
|
||||||
serv = common.checkAjaxInput(form.getvalue('sessions_select'))
|
session = common.checkAjaxInput(form.getvalue('sessions_select'))
|
||||||
lang = roxywi_common.get_user_lang()
|
lang = roxywi_common.get_user_lang()
|
||||||
haproxy_sock_port = sql.get_setting('haproxy_sock_port')
|
haproxy_sock_port = sql.get_setting('haproxy_sock_port')
|
||||||
|
|
||||||
cmd = f'echo "show sess" |nc {serv} {haproxy_sock_port}'
|
cmd = f'echo "show sess" |nc {session} {haproxy_sock_port}'
|
||||||
output, stderr = server_mod.subprocess_execute(cmd)
|
output, stderr = server_mod.subprocess_execute(cmd)
|
||||||
|
|
||||||
template = env.get_template('ajax/sessions_table.html')
|
template = env.get_template('ajax/sessions_table.html')
|
||||||
|
@ -359,10 +425,10 @@ def select_session() -> None:
|
||||||
|
|
||||||
|
|
||||||
def show_session() -> None:
|
def show_session() -> None:
|
||||||
serv = common.checkAjaxInput(form.getvalue('sessions_select_show'))
|
session = common.checkAjaxInput(form.getvalue('sessions_select_show'))
|
||||||
sess_id = common.checkAjaxInput(form.getvalue('sessions_select_id'))
|
sess_id = common.checkAjaxInput(form.getvalue('sessions_select_id'))
|
||||||
haproxy_sock_port = sql.get_setting('haproxy_sock_port')
|
haproxy_sock_port = sql.get_setting('haproxy_sock_port')
|
||||||
cmd = f'echo "show sess {sess_id}" |nc {serv} {haproxy_sock_port}'
|
cmd = f'echo "show sess {sess_id}" |nc {session} {haproxy_sock_port}'
|
||||||
|
|
||||||
output, stderr = server_mod.subprocess_execute(cmd)
|
output, stderr = server_mod.subprocess_execute(cmd)
|
||||||
|
|
||||||
|
|
|
@ -2282,6 +2282,8 @@ def select_update_keep_alive_restart(server_id: int, service: str) -> int:
|
||||||
out_error(e)
|
out_error(e)
|
||||||
else:
|
else:
|
||||||
return restarted or 0
|
return restarted or 0
|
||||||
|
finally:
|
||||||
|
return 0
|
||||||
|
|
||||||
|
|
||||||
def update_keep_alive_restart(server_id: int, service: str, restarted: int) -> None:
|
def update_keep_alive_restart(server_id: int, service: str, restarted: int) -> None:
|
||||||
|
|
|
@ -113,10 +113,20 @@ if form.getvalue('maxconn_select') is not None:
|
||||||
serv = common.checkAjaxInput(form.getvalue('maxconn_select'))
|
serv = common.checkAjaxInput(form.getvalue('maxconn_select'))
|
||||||
runtime.get_backends_from_config(serv, backends='frontend')
|
runtime.get_backends_from_config(serv, backends='frontend')
|
||||||
|
|
||||||
|
if form.getvalue('maxconn_global') is not None:
|
||||||
|
import modules.config.runtime as runtime
|
||||||
|
|
||||||
|
runtime.change_maxconn_global()
|
||||||
|
|
||||||
if form.getvalue('maxconn_frontend') is not None:
|
if form.getvalue('maxconn_frontend') is not None:
|
||||||
import modules.config.runtime as runtime
|
import modules.config.runtime as runtime
|
||||||
|
|
||||||
runtime.change_maxconn()
|
runtime.change_maxconn_frontend()
|
||||||
|
|
||||||
|
if form.getvalue('maxconn_backend') is not None:
|
||||||
|
import modules.config.runtime as runtime
|
||||||
|
|
||||||
|
runtime.change_maxconn_backend()
|
||||||
|
|
||||||
if form.getvalue('table_serv_select') is not None:
|
if form.getvalue('table_serv_select') is not None:
|
||||||
import modules.config.runtime as runtime
|
import modules.config.runtime as runtime
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
{% import 'languages/'+lang|default('en')+'.html' as lang %}
|
{% import 'languages/'+lang|default('en')+'.html' as lang %}
|
||||||
{% for ssh in sshs %}
|
{% for ssh in sshs %}
|
||||||
<tr style="width: 50%;" id="ssh-table-{{ssh.id}}" class="ssh-table-{{ssh.id}}">
|
<tr style="width: 50%;" id="ssh-table-{{ssh.id}}" class="ssh-table-{{ssh.id}}">
|
||||||
<td class="first-collumn">
|
<td class="first-collumn padding10">
|
||||||
<input type="text" id="ssh_name-{{ssh.id}}" class="form-control" value="{{ssh.name}}" style="margin-bottom: 23px;">
|
<input type="text" id="ssh_name-{{ssh.id}}" class="form-control" value="{{ssh.name}}" style="margin-bottom: 23px;">
|
||||||
</td>
|
</td>
|
||||||
<td class="first-collumn" valign="top" style="padding-top: 15px;">
|
<td class="first-collumn" valign="top" style="padding-top: 15px;">
|
||||||
|
|
|
@ -128,7 +128,7 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
<button onclick="checkSshConnect('{{server.2}}')" title="Check SSH connect to the server {{server.1}}" class="overflow" style="width: 70px;height: 28px;">{{lang.words.check}}</button>
|
<button onclick="checkSshConnect('{{server.2}}')" title="Check SSH connect to the server {{server.1}}" class="overflow" style="width: 70px;height: 25px;">{{lang.words.check}}</button>
|
||||||
</div>
|
</div>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
|
|
@ -80,14 +80,48 @@
|
||||||
{% if role <= 3 %}
|
{% if role <= 3 %}
|
||||||
<div id="maxconn">
|
<div id="maxconn">
|
||||||
<table class="overview">
|
<table class="overview">
|
||||||
|
<caption><h3>{{lang.words.global|title()}}</h3></caption>
|
||||||
|
<thead>
|
||||||
|
<tr class="overviewHead">
|
||||||
|
<td class="padding10 first-collumn">{{lang.words.server|title()}}</td>
|
||||||
|
<td>Maxconn</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="padding10 first-collumn" style="width: 20%;">
|
||||||
|
<form action="" method="post" id="maxconnglobalform">
|
||||||
|
<select autofocus required name="serv" id="maxconn_global_select">
|
||||||
|
<option disabled selected>------</option>
|
||||||
|
{% for select in selects %}
|
||||||
|
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td style="width: 75%;">
|
||||||
|
{{ input('maxconnintglobal', title=lang.words.enter|title() + ' maxconn', type="number", required='required') }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<button type="submit" name="Enter" value="Enter" id="global_enter">{{lang.words.enter|title()}}</button>
|
||||||
|
</td>
|
||||||
|
</form>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<table class="overview">
|
||||||
|
<caption><h3>{{lang.words.frontends|title()}}</h3></caption>
|
||||||
|
<thead>
|
||||||
<tr class="overviewHead">
|
<tr class="overviewHead">
|
||||||
<td class="padding10 first-collumn">{{lang.words.server|title()}}</td>
|
<td class="padding10 first-collumn">{{lang.words.server|title()}}</td>
|
||||||
<td>{{lang.words.select|title()}} {{lang.words.frontend|title()}}</td>
|
<td>{{lang.words.select|title()}} {{lang.words.frontend|title()}}</td>
|
||||||
<td>Maxconn</td>
|
<td>Maxconn</td>
|
||||||
<td></td>
|
<td></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
<tr>
|
<tr>
|
||||||
<td class="padding10 first-collumn" style="width: 25%;">
|
<td class="padding10 first-collumn" style="width: 20%;">
|
||||||
<form action="" method="post" id="maxconnform">
|
<form action="" method="post" id="maxconnform">
|
||||||
<select autofocus required name="serv" id="maxconn_select">
|
<select autofocus required name="serv" id="maxconn_select">
|
||||||
<option disabled selected>------</option>
|
<option disabled selected>------</option>
|
||||||
|
@ -96,11 +130,11 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
<td style="width: 30%;">
|
<td style="width: 25%">
|
||||||
<select required name="maxconnfront" id="maxconnfront">
|
<select required name="maxconnfront" id="maxconnfront">
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td style="width: 50%;">
|
||||||
{{ input('maxconnint', title=lang.words.enter|title() + ' maxconn', type="number", required='required') }}
|
{{ input('maxconnint', title=lang.words.enter|title() + ' maxconn', type="number", required='required') }}
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
@ -108,6 +142,41 @@
|
||||||
</td>
|
</td>
|
||||||
</form>
|
</form>
|
||||||
</tr>
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<table>
|
||||||
|
<caption><h3>{{lang.words.backends|title()}}</h3></caption>
|
||||||
|
<thead>
|
||||||
|
<tr class="overviewHead">
|
||||||
|
<td class="padding10 first-collumn">{{lang.words.server|title()}}</td>
|
||||||
|
<td>{{lang.words.select|title()}} {{lang.words.backend|title()}}</td>
|
||||||
|
<td>{{lang.words.select|title()}} {{lang.words.server}}</td>
|
||||||
|
<td>Maxconn</td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<td class="padding10 first-collumn" style="width: 20%;">
|
||||||
|
<form action="" method="post" id="maxconnbackform">
|
||||||
|
<select autofocus required name="serv" id="maxconn_backend_select">
|
||||||
|
<option disabled selected>------</option>
|
||||||
|
{% for select in selects %}
|
||||||
|
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</select>
|
||||||
|
</td>
|
||||||
|
<td style="width: 25%;"><select required name="maxconnbackend" id="maxconnbackend"></select></td>
|
||||||
|
<td style="width: 25%;"><select required name="maxconn_backend_server" id="maxconn_backend_server"></select></td>
|
||||||
|
<td style="width: 25%;">
|
||||||
|
{{ input('maxconn_backend_int', title=lang.words.enter|title() + ' maxconn', type="number", required='required') }}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<button type="submit" name="Enter" value="Enter" id="backend_enter">{{lang.words.enter|title()}}</button>
|
||||||
|
</td>
|
||||||
|
</form>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
<div id="ajaxmaxconn"></div>
|
<div id="ajaxmaxconn"></div>
|
||||||
<div class="add-note addName alert-info" style="width: inherit; margin-right: 15px;">
|
<div class="add-note addName alert-info" style="width: inherit; margin-right: 15px;">
|
||||||
|
@ -136,12 +205,10 @@
|
||||||
</select>
|
</select>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<select required name="ipbackend" id="ipbackend">
|
<select required name="ipbackend" id="ipbackend"></select>
|
||||||
</select>
|
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<select required name="backend_server" id="backend_server">
|
<select required name="backend_server" id="backend_server"></select>
|
||||||
</select>
|
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
{{ input('backend_ip', title=lang.words.set|title()+' '+lang.words.new + ' ' + lang.words.server + ' IP', required='required', size='16') }}
|
{{ input('backend_ip', title=lang.words.set|title()+' '+lang.words.new + ' ' + lang.words.server + ' IP', required='required', size='16') }}
|
||||||
|
|
|
@ -4,7 +4,7 @@ function showRuntime() {
|
||||||
} else {
|
} else {
|
||||||
saveCheck = "";
|
saveCheck = "";
|
||||||
}
|
}
|
||||||
$.ajax( {
|
$.ajax({
|
||||||
url: "options.py",
|
url: "options.py",
|
||||||
data: {
|
data: {
|
||||||
servaction: $('#servaction').val(),
|
servaction: $('#servaction').val(),
|
||||||
|
@ -14,7 +14,7 @@ function showRuntime() {
|
||||||
token: $('#token').val()
|
token: $('#token').val()
|
||||||
},
|
},
|
||||||
type: "POST",
|
type: "POST",
|
||||||
success: function( data ) {
|
success: function (data) {
|
||||||
$("#ajaxruntime").html(data);
|
$("#ajaxruntime").html(data);
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
@ -25,6 +25,7 @@ $( function() {
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
$( "#maxconn_select" ).on('selectmenuchange',function() {
|
$( "#maxconn_select" ).on('selectmenuchange',function() {
|
||||||
|
let server_ip = $('#maxconn_select').val();
|
||||||
$.ajax( {
|
$.ajax( {
|
||||||
url: "options.py",
|
url: "options.py",
|
||||||
data: {
|
data: {
|
||||||
|
@ -33,27 +34,44 @@ $( function() {
|
||||||
},
|
},
|
||||||
type: "POST",
|
type: "POST",
|
||||||
success: function( data ) {
|
success: function( data ) {
|
||||||
data = data.replace(/\s+/g,' ');
|
data = data.replace(/\s+/g, ' ');
|
||||||
if (data.indexOf('error: ') != '-1') {
|
if (data.indexOf('error: ') != '-1') {
|
||||||
toastr.error(data);
|
toastr.error(data);
|
||||||
} else {
|
} else {
|
||||||
var value = data.split('<br>')
|
generate_select(data, '#maxconnfront');
|
||||||
$('#maxconnfront').find('option').remove();
|
|
||||||
$('#maxconnfront').append($("<option></option>").attr("value","disabled").text("Choose Frontend"));
|
|
||||||
$('#maxconnfront').append($("<option></option>").attr("value","global").text("global"));
|
|
||||||
|
|
||||||
for(let i = 0; i < data.split('<br>').length; i++){
|
|
||||||
if(value[i] != '') {
|
|
||||||
$('#maxconnfront').append($("<option></option>")
|
|
||||||
.attr("value",value[i])
|
|
||||||
.text(value[i]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$('#maxconnfront').selectmenu("refresh");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
});
|
});
|
||||||
|
$('#maxconnbackend').on('selectmenuchange', function (){
|
||||||
|
let server_ip = $('#maxconn_backend_select').val();
|
||||||
|
let backend = $('#maxconnbackend').val();
|
||||||
|
get_backend_servers(server_ip, backend, '#maxconn_backend_server', 0);
|
||||||
|
});
|
||||||
|
$( "#maxconn_backend_select" ).on('selectmenuchange',function() {
|
||||||
|
let server_ip = $('#maxconn_backend_select').val();
|
||||||
|
get_backends(server_ip, '#maxconnbackend', 0);
|
||||||
|
});
|
||||||
|
$('#maxconnglobalform').submit(function() {
|
||||||
|
$.ajax( {
|
||||||
|
url: "options.py",
|
||||||
|
data: {
|
||||||
|
serv: $('#maxconn_global_select').val(),
|
||||||
|
maxconn_global: $('#maxconnintglobal').val(),
|
||||||
|
token: $('#token').val()
|
||||||
|
},
|
||||||
|
type: "POST",
|
||||||
|
success: function( data ) {
|
||||||
|
data = data.replace(/\s+/g, ' ');
|
||||||
|
if (data.indexOf('error: ') != '-1') {
|
||||||
|
toastr.error(data);
|
||||||
|
} else {
|
||||||
|
toastr.success(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
return false;
|
||||||
|
});
|
||||||
$('#maxconnform').submit(function() {
|
$('#maxconnform').submit(function() {
|
||||||
$.ajax( {
|
$.ajax( {
|
||||||
url: "options.py",
|
url: "options.py",
|
||||||
|
@ -65,7 +83,29 @@ $( function() {
|
||||||
},
|
},
|
||||||
type: "POST",
|
type: "POST",
|
||||||
success: function( data ) {
|
success: function( data ) {
|
||||||
data = data.replace(/\s+/g,' ');
|
data = data.replace(/\s+/g, ' ');
|
||||||
|
if (data.indexOf('error: ') != '-1') {
|
||||||
|
toastr.error(data);
|
||||||
|
} else {
|
||||||
|
toastr.success(data);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
return false;
|
||||||
|
});
|
||||||
|
$('#maxconnbackform').submit(function() {
|
||||||
|
$.ajax( {
|
||||||
|
url: "options.py",
|
||||||
|
data: {
|
||||||
|
serv: $('#maxconn_backend_select').val(),
|
||||||
|
maxconn_backend: $('#maxconnbackend').val(),
|
||||||
|
maxconn_backend_server: $('#maxconn_backend_server').val(),
|
||||||
|
maxconn_int: $('#maxconn_backend_int').val(),
|
||||||
|
token: $('#token').val()
|
||||||
|
},
|
||||||
|
type: "POST",
|
||||||
|
success: function( data ) {
|
||||||
|
data = data.replace(/\s+/g, ' ');
|
||||||
if (data.indexOf('error: ') != '-1') {
|
if (data.indexOf('error: ') != '-1') {
|
||||||
toastr.error(data);
|
toastr.error(data);
|
||||||
} else {
|
} else {
|
||||||
|
@ -76,69 +116,13 @@ $( function() {
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
$( "#ip_select" ).on('selectmenuchange',function() {
|
$( "#ip_select" ).on('selectmenuchange',function() {
|
||||||
$.ajax( {
|
let server_ip = $('#ip_select').val();
|
||||||
url: "options.py",
|
get_backends(server_ip, '#ipbackend', 1);
|
||||||
data: {
|
|
||||||
ip_select: $('#ip_select').val(),
|
|
||||||
serv: $('#ip_select').val(),
|
|
||||||
token: $('#token').val()
|
|
||||||
},
|
|
||||||
type: "POST",
|
|
||||||
success: function( data ) {
|
|
||||||
data = data.replace(/\s+/g,' ');
|
|
||||||
if (data.indexOf('error: ') != '-1') {
|
|
||||||
toastr.error(data);
|
|
||||||
} else {
|
|
||||||
var value = data.split('<br>')
|
|
||||||
$('#ipbackend').find('option').remove();
|
|
||||||
$('#ipbackend').append($("<option></option>").attr("value","disabled").text("------"));
|
|
||||||
$('#backend_server').find('option').remove();
|
|
||||||
$('#backend_port').val('');
|
|
||||||
$('#backend_ip').val('');
|
|
||||||
for(let i = 0; i < data.split('<br>').length; i++){
|
|
||||||
if(value[i] != '') {
|
|
||||||
$('#ipbackend').append($("<option></option>")
|
|
||||||
.attr("value",value[i])
|
|
||||||
.text(value[i]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$('#ipbackend').selectmenu("refresh");
|
|
||||||
$('#backend_server').selectmenu("refresh");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
});
|
});
|
||||||
$( "#ipbackend" ).on('selectmenuchange',function() {
|
$( "#ipbackend" ).on('selectmenuchange',function() {
|
||||||
$.ajax( {
|
let server_ip = $('#ip_select').val();
|
||||||
url: "options.py",
|
let backend = $('#ipbackend').val();
|
||||||
data: {
|
get_backend_servers(server_ip, backend, '#backend_server', 1);
|
||||||
serv: $('#ip_select').val(),
|
|
||||||
ipbackend: $('#ipbackend').val(),
|
|
||||||
token: $('#token').val()
|
|
||||||
},
|
|
||||||
type: "POST",
|
|
||||||
success: function( data ) {
|
|
||||||
data = data.replace(/\s+/g,' ');
|
|
||||||
if (data.indexOf('error: ') != '-1') {
|
|
||||||
toastr.error(data);
|
|
||||||
} else {
|
|
||||||
var value = data.split('<br>')
|
|
||||||
$('#backend_server').find('option').remove();
|
|
||||||
$('#backend_server').append($("<option></option>").attr("value","disabled").text("------"));
|
|
||||||
$('#backend_port').val('');
|
|
||||||
$('#backend_ip').val('');
|
|
||||||
for(let i = 0; i < data.split('<br>').length; i++){
|
|
||||||
if(value[i] != ' ') {
|
|
||||||
value[i] = value[i].replace(/\s+/g,'');
|
|
||||||
$('#backend_server').append($("<option></option>")
|
|
||||||
.attr("value",value[i])
|
|
||||||
.text(value[i]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$('#backend_server').selectmenu("refresh");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} );
|
|
||||||
});
|
});
|
||||||
$( "#backend_server" ).on('selectmenuchange',function() {
|
$( "#backend_server" ).on('selectmenuchange',function() {
|
||||||
$('#backend_ip').val();
|
$('#backend_ip').val();
|
||||||
|
@ -168,7 +152,7 @@ $( function() {
|
||||||
} );
|
} );
|
||||||
});
|
});
|
||||||
$('#runtimeapiip').submit(function() {
|
$('#runtimeapiip').submit(function() {
|
||||||
$.ajax( {
|
$.ajax({
|
||||||
url: "options.py",
|
url: "options.py",
|
||||||
data: {
|
data: {
|
||||||
serv: $('#ip_select').val(),
|
serv: $('#ip_select').val(),
|
||||||
|
@ -179,8 +163,8 @@ $( function() {
|
||||||
token: $('#token').val()
|
token: $('#token').val()
|
||||||
},
|
},
|
||||||
type: "POST",
|
type: "POST",
|
||||||
success: function( data ) {
|
success: function (data) {
|
||||||
data = data.replace(/\s+/g,' ');
|
data = data.replace(/\s+/g, ' ');
|
||||||
if (data.indexOf('error: ') != '-1' || data.indexOf('Invalid ') != '-1') {
|
if (data.indexOf('error: ') != '-1' || data.indexOf('Invalid ') != '-1') {
|
||||||
toastr.error(data);
|
toastr.error(data);
|
||||||
} else {
|
} else {
|
||||||
|
@ -204,19 +188,7 @@ $( function() {
|
||||||
if (data.indexOf('error: ') != '-1') {
|
if (data.indexOf('error: ') != '-1') {
|
||||||
toastr.error(data);
|
toastr.error(data);
|
||||||
} else {
|
} else {
|
||||||
var value = data.split(',')
|
generate_select(data, '#table_select', 'All', ',');
|
||||||
$('#table_select').find('option').remove();
|
|
||||||
$('#table_select').append($("<option titile='Show all tables'></option>").attr("value","All").text("All"));
|
|
||||||
|
|
||||||
for(let i = 0; i < data.split(',').length; i++){
|
|
||||||
if(value[i] != '') {
|
|
||||||
value[i] = value[i].replace(/\s+/g,'');
|
|
||||||
$('#table_select').append($("<option title=\"Show table "+value[i]+"\"></option>")
|
|
||||||
.attr("value",value[i])
|
|
||||||
.text(value[i]));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$('#table_select').selectmenu("refresh");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
|
@ -234,7 +206,7 @@ $( function() {
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
$( "#list_serv_select" ).on('selectmenuchange',function() {
|
$( "#list_serv_select" ).on('selectmenuchange',function() {
|
||||||
$.ajax( {
|
$.ajax({
|
||||||
url: "options.py",
|
url: "options.py",
|
||||||
data: {
|
data: {
|
||||||
serv: $('#list_serv_select').val(),
|
serv: $('#list_serv_select').val(),
|
||||||
|
@ -242,7 +214,7 @@ $( function() {
|
||||||
token: $('#token').val()
|
token: $('#token').val()
|
||||||
},
|
},
|
||||||
type: "POST",
|
type: "POST",
|
||||||
success: function( data ) {
|
success: function (data) {
|
||||||
data = data.replace(/, /g, ',');
|
data = data.replace(/, /g, ',');
|
||||||
if (data.indexOf('error: ') != '-1') {
|
if (data.indexOf('error: ') != '-1') {
|
||||||
toastr.error(data);
|
toastr.error(data);
|
||||||
|
@ -271,8 +243,6 @@ $( function() {
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
function deleteTableEntry(id, table, ip) {
|
function deleteTableEntry(id, table, ip) {
|
||||||
$(id).parent().parent().css("background-color", "#f2dede");
|
$(id).parent().parent().css("background-color", "#f2dede");
|
||||||
|
@ -327,7 +297,7 @@ function getTable() {
|
||||||
} else {
|
} else {
|
||||||
$("#ajaxtable").html(data);
|
$("#ajaxtable").html(data);
|
||||||
$( "input[type=submit], button" ).button();
|
$( "input[type=submit], button" ).button();
|
||||||
$.getScript("/inc/script.js");
|
$.getScript("/inc/script-6.3.9.js");
|
||||||
$.getScript("/inc/fontawesome.min.js");
|
$.getScript("/inc/fontawesome.min.js");
|
||||||
FontAwesomeConfig = { searchPseudoElements: true, observeMutations: false };
|
FontAwesomeConfig = { searchPseudoElements: true, observeMutations: false };
|
||||||
}
|
}
|
||||||
|
@ -350,7 +320,7 @@ function getList() {
|
||||||
} else {
|
} else {
|
||||||
$("#ajaxlist").html(data);
|
$("#ajaxlist").html(data);
|
||||||
$( "input[type=submit], button" ).button();
|
$( "input[type=submit], button" ).button();
|
||||||
$.getScript("/inc/script.js");
|
$.getScript("/inc/script-6.3.9.js");
|
||||||
$.getScript("/inc/fontawesome.min.js");
|
$.getScript("/inc/fontawesome.min.js");
|
||||||
FontAwesomeConfig = { searchPseudoElements: true, observeMutations: false };
|
FontAwesomeConfig = { searchPseudoElements: true, observeMutations: false };
|
||||||
}
|
}
|
||||||
|
@ -408,7 +378,6 @@ function addNewIp() {
|
||||||
$( "#list_add_ip_form" ).dialog("destroy" );
|
$( "#list_add_ip_form" ).dialog("destroy" );
|
||||||
toastr.success('IP ' + ip + ' has been added');
|
toastr.success('IP ' + ip + ' has been added');
|
||||||
toastr.info('Do not forget upload updated list to the properly server. Restart does not need');
|
toastr.info('Do not forget upload updated list to the properly server. Restart does not need');
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -428,7 +397,7 @@ function getSessions() {
|
||||||
} else {
|
} else {
|
||||||
$("#ajaxsessions").html(data);
|
$("#ajaxsessions").html(data);
|
||||||
$( "input[type=submit], button" ).button();
|
$( "input[type=submit], button" ).button();
|
||||||
$.getScript("/inc/script.js");
|
$.getScript("/inc/script-6.3.9.js");
|
||||||
$.getScript("/inc/fontawesome.min.js");
|
$.getScript("/inc/fontawesome.min.js");
|
||||||
FontAwesomeConfig = { searchPseudoElements: true, observeMutations: false };
|
FontAwesomeConfig = { searchPseudoElements: true, observeMutations: false };
|
||||||
}
|
}
|
||||||
|
@ -489,3 +458,68 @@ function deleteSession(id, sess_id) {
|
||||||
}
|
}
|
||||||
} );
|
} );
|
||||||
}
|
}
|
||||||
|
function get_backends(server_ip, backends_select_tag, ip_and_port=0) {
|
||||||
|
$.ajax({
|
||||||
|
url: "options.py",
|
||||||
|
data: {
|
||||||
|
ip_select: 1,
|
||||||
|
serv: server_ip,
|
||||||
|
token: $('#token').val()
|
||||||
|
},
|
||||||
|
type: "POST",
|
||||||
|
success: function (data) {
|
||||||
|
data = data.replace(/\s+/g, ' ');
|
||||||
|
if (data.indexOf('error: ') != '-1') {
|
||||||
|
toastr.error(data);
|
||||||
|
} else {
|
||||||
|
generate_select(data, backends_select_tag);
|
||||||
|
if (ip_and_port == 1) {
|
||||||
|
$('#backend_server').find('option').remove();
|
||||||
|
$('#backend_server').selectmenu("refresh");
|
||||||
|
$('#backend_port').val('');
|
||||||
|
$('#backend_ip').val('');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
function get_backend_servers(server_ip, backend, servers_select_tag, ip_and_port=0) {
|
||||||
|
$.ajax({
|
||||||
|
url: "options.py",
|
||||||
|
data: {
|
||||||
|
serv: server_ip,
|
||||||
|
ipbackend: backend,
|
||||||
|
token: $('#token').val()
|
||||||
|
},
|
||||||
|
type: "POST",
|
||||||
|
success: function (data) {
|
||||||
|
data = data.replace(/\s+/g, ' ');
|
||||||
|
if (data.indexOf('error: ') != '-1') {
|
||||||
|
toastr.error(data);
|
||||||
|
} else {
|
||||||
|
generate_select(data, servers_select_tag);
|
||||||
|
if (ip_and_port == 1) {
|
||||||
|
$('#backend_port').val('');
|
||||||
|
$('#backend_ip').val('');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
function generate_select(values, select_tag, custom_value=0, separator='<br>') {
|
||||||
|
var value = values.split(separator)
|
||||||
|
$(select_tag).find('option').remove();
|
||||||
|
$(select_tag).append($("<option></option>").attr("value", "disabled").text("------"));
|
||||||
|
if (custom_value) {
|
||||||
|
$(select_tag).append($("<option></option>").attr("value", custom_value).text(custom_value));
|
||||||
|
}
|
||||||
|
for (let i = 0; i < values.split(separator).length; i++) {
|
||||||
|
if (value[i] != ' ' && value[i] != '' ) {
|
||||||
|
value[i] = value[i].replace(/\s+/g, '');
|
||||||
|
$(select_tag).append($("<option></option>")
|
||||||
|
.attr("value", value[i])
|
||||||
|
.text(value[i]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$(select_tag).selectmenu("refresh");
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue