mirror of https://github.com/Aidaho12/haproxy-wi
parent
ce51059ed0
commit
fdc7badc61
|
@ -93,7 +93,7 @@ def login_page():
|
|||
except Exception:
|
||||
lang = 'en'
|
||||
|
||||
return render_template('login.html', role=role, user=user1, lang=lang)
|
||||
return render_template('login.html', user_params='', role=role, user=user1, lang=lang)
|
||||
|
||||
|
||||
@app.route('/logout', methods=['GET', 'POST'])
|
||||
|
|
|
@ -4498,3 +4498,16 @@ def check_ha_virt(vip_id: int) -> bool:
|
|||
except Exception:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def select_ha_cluster_name_and_slaves() -> object:
|
||||
try:
|
||||
query = (
|
||||
HaCluster.select(HaCluster.id, HaCluster.name, HaClusterSlave.server_id)
|
||||
.join(HaClusterSlave)
|
||||
)
|
||||
result = query.execute()
|
||||
except Exception as e:
|
||||
out_error(e)
|
||||
else:
|
||||
return result
|
||||
|
|
|
@ -11,9 +11,11 @@ def create_cluster(cluster: object, group_id: int) -> str:
|
|||
vip = common.is_ip_or_dns(cluster['vip'])
|
||||
syn_flood = int(cluster['syn_flood'])
|
||||
return_master = int(cluster['return_to_master'])
|
||||
cluster_name = common.checkAjaxInput(cluster['name'])
|
||||
desc = common.checkAjaxInput(cluster['desc'])
|
||||
|
||||
try:
|
||||
cluster_id = sql.create_cluster(cluster['name'], syn_flood, group_id, cluster['desc'])
|
||||
cluster_id = sql.create_cluster(cluster_name, syn_flood, group_id, desc)
|
||||
roxywi_common.logging(cluster_id, 'New cluster has been created', keep_history=1, roxywi=1, service='HA cluster')
|
||||
except Exception as e:
|
||||
return f'error: Cannot create new HA cluster: {e}'
|
||||
|
@ -69,7 +71,8 @@ def create_cluster(cluster: object, group_id: int) -> str:
|
|||
def update_cluster(cluster: object, group_id: int) -> str:
|
||||
cluster_id = int(cluster['cluster_id'])
|
||||
syn_flood = int(cluster['syn_flood'])
|
||||
cluster_name = cluster['name']
|
||||
cluster_name = common.checkAjaxInput(cluster['name'])
|
||||
desc = common.checkAjaxInput(cluster['desc'])
|
||||
|
||||
try:
|
||||
router_id = sql.get_router_id(cluster_id, default_router=1)
|
||||
|
@ -77,7 +80,7 @@ def update_cluster(cluster: object, group_id: int) -> str:
|
|||
raise Exception(f'error: Cannot get router: {e}')
|
||||
|
||||
try:
|
||||
sql.update_cluster(cluster_id, cluster['name'], cluster['desc'], syn_flood)
|
||||
sql.update_cluster(cluster_id, cluster_name, desc, syn_flood)
|
||||
except Exception as e:
|
||||
raise Exception(f'error: Cannot update HA cluster: {e}')
|
||||
|
||||
|
@ -193,7 +196,7 @@ def update_slaves(json_data: object, router_id: int) -> None:
|
|||
|
||||
for slave_id, value in cluster['servers'].items():
|
||||
if value['master']:
|
||||
master_ip = value['ip']
|
||||
master_ip = common.is_ip_or_dns(value['ip'])
|
||||
|
||||
for server in server_ids_from_db:
|
||||
server_ids.append(server[0])
|
||||
|
@ -227,7 +230,7 @@ def update_slaves(json_data: object, router_id: int) -> None:
|
|||
if value['master']:
|
||||
continue
|
||||
try:
|
||||
sql.update_server_master(master_ip, value['ip'])
|
||||
sql.update_server_master(master_ip, common.is_ip_or_dns((value['ip'])))
|
||||
except Exception as e:
|
||||
raise Exception(f'error: Cannot update master on slave {value["ip"]}: {e}')
|
||||
|
||||
|
|
|
@ -189,8 +189,7 @@ def generate_kp_inv(json_data: json, install_service) -> object:
|
|||
cluster_id = int(json_data['cluster_id'])
|
||||
haproxy = json_data['services']['haproxy']['enabled']
|
||||
nginx = json_data['services']['nginx']['enabled']
|
||||
# apache = json_data['apache']
|
||||
apache = 0
|
||||
apache = json_data['services']['apache']['enabled']
|
||||
keepalived_path_logs = sql.get_setting('keepalived_path_logs')
|
||||
syn_flood_protect = str(json_data['syn_flood'])
|
||||
routers = {}
|
||||
|
|
|
@ -2,7 +2,6 @@ from flask import render_template, abort
|
|||
|
||||
import modules.db.sql as sql
|
||||
import modules.roxywi.common as roxywi_common
|
||||
import modules.server.server as server_mod
|
||||
|
||||
|
||||
def create_smon(name: str, hostname: str, port: int, enable: int, url: str, body: str, group: int, desc: str, telegram: int,
|
||||
|
|
|
@ -30,10 +30,13 @@ def before_request():
|
|||
@get_user_params()
|
||||
def add(service):
|
||||
roxywi_auth.page_for_admin(level=3)
|
||||
|
||||
user_params = g.user_params
|
||||
add = request.form.get('add')
|
||||
conf_add = request.form.get('conf')
|
||||
kwargs = {
|
||||
'h2': 1,
|
||||
'user_params': g.user_params,
|
||||
'add': request.form.get('add'),
|
||||
'conf_add': request.form.get('conf'),
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
|
||||
if service == 'haproxy':
|
||||
user_group = request.cookies.get('group')
|
||||
|
@ -51,21 +54,15 @@ def add(service):
|
|||
if not os.path.exists(black_dir):
|
||||
os.makedirs(black_dir)
|
||||
|
||||
white_lists = roxywi_common.get_files(folder=white_dir, file_format="lst")
|
||||
black_lists = roxywi_common.get_files(folder=black_dir, file_format="lst")
|
||||
maps = roxywi_common.get_files(folder=f'{lib_path}/maps/{user_group}', file_format="map")
|
||||
kwargs.setdefault('options', sql.select_options())
|
||||
kwargs.setdefault('saved_servers', sql.select_saved_servers())
|
||||
kwargs.setdefault('white_lists', roxywi_common.get_files(folder=white_dir, file_format="lst"))
|
||||
kwargs.setdefault('black_lists', roxywi_common.get_files(folder=black_dir, file_format="lst"))
|
||||
kwargs.setdefault('maps', roxywi_common.get_files(folder=f'{lib_path}/maps/{user_group}', file_format="map"))
|
||||
|
||||
return render_template(
|
||||
'add.html', h2=1, role=user_params['role'], user=user_params['user'], selects=user_params['servers'], add=add,
|
||||
conf_add=conf_add, group=user_group, options=sql.select_options(), saved_servers=sql.select_saved_servers(),
|
||||
white_lists=white_lists, black_lists=black_lists, user_services=user_params['user_services'],
|
||||
token=user_params['token'], lang=user_params['lang'], maps=maps
|
||||
)
|
||||
return render_template('add.html', **kwargs)
|
||||
elif service == 'nginx':
|
||||
return render_template(
|
||||
'add_nginx.html', h2=1, role=user_params['role'], user=user_params['user'], selects=user_params['servers'], add=add,
|
||||
conf_add=conf_add, user_services=user_params['user_services'], token=user_params['token'], lang=user_params['lang']
|
||||
)
|
||||
return render_template('add_nginx.html', **kwargs)
|
||||
else:
|
||||
return redirect(url_for('index'))
|
||||
|
||||
|
|
|
@ -28,32 +28,34 @@ def before_request():
|
|||
@get_user_params()
|
||||
def admin():
|
||||
roxywi_auth.page_for_admin()
|
||||
|
||||
user_params = g.user_params
|
||||
users = sql.select_users()
|
||||
settings = sql.get_setting('', all=1)
|
||||
ldap_enable = sql.get_setting('ldap_enable')
|
||||
services = sql.select_services()
|
||||
gits = sql.select_gits()
|
||||
masters = sql.select_servers(get_master_servers=1)
|
||||
is_needed_tool = common.is_tool('ansible')
|
||||
grafana = 0
|
||||
backups = sql.select_backups()
|
||||
s3_backups = sql.select_s3_backups()
|
||||
user_subscription = roxywi_common.return_user_subscription()
|
||||
|
||||
if not roxy.is_docker():
|
||||
grafana, stderr = server_mod.subprocess_execute("systemctl is-active grafana-server")
|
||||
grafana = grafana[0]
|
||||
grafana = tools_common.is_tool_active('grafana-server')
|
||||
|
||||
return render_template(
|
||||
'admin.html', role=user_params['role'], user=user_params['user'], users=users, groups=sql.select_groups(),
|
||||
servers=sql.select_servers(full=1), masters=masters, sshs=sql.select_ssh(), roles=sql.select_roles(),
|
||||
settings=settings, backups=backups, s3_backups=s3_backups, services=services, timezones=pytz.all_timezones,
|
||||
page="users.py", user_services=user_params['user_services'], ldap_enable=ldap_enable, gits=gits, guide_me=1,
|
||||
user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'],
|
||||
token=user_params['token'], is_needed_tool=is_needed_tool, lang=user_params['lang'], grafana=grafana
|
||||
)
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'lang': g.user_params['lang'],
|
||||
'users': sql.select_users(),
|
||||
'groups': sql.select_groups(),
|
||||
'sshs': sql.select_ssh(),
|
||||
'servers': sql.select_servers(full=1),
|
||||
'roles': sql.select_roles(),
|
||||
'timezones': pytz.all_timezones,
|
||||
'settings': sql.get_setting('', all=1),
|
||||
'ldap_enable': sql.get_setting('ldap_enable'),
|
||||
'services': sql.select_services(),
|
||||
'gits': sql.select_gits(),
|
||||
'masters': sql.select_servers(get_master_servers=1),
|
||||
'is_needed_tool': common.is_tool('ansible'),
|
||||
'grafana': grafana,
|
||||
'backups': sql.select_backups(),
|
||||
's3_backups': sql.select_s3_backups(),
|
||||
'guide_me': 1,
|
||||
'user_subscription': roxywi_common.return_user_subscription()
|
||||
}
|
||||
|
||||
return render_template('admin.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/tools')
|
||||
|
|
|
@ -21,12 +21,9 @@ def before_request():
|
|||
@get_user_params()
|
||||
def checker_settings():
|
||||
roxywi_common.check_user_group_for_flask()
|
||||
user_params = g.user_params
|
||||
kwargs = {'user_params': g.user_params}
|
||||
|
||||
return render_template(
|
||||
'checker.html', role=user_params['role'], user=user_params['user'], lang=user_params['lang'],
|
||||
token=user_params['token'], user_services=user_params['user_services']
|
||||
)
|
||||
return render_template('checker.html', **kwargs)
|
||||
|
||||
|
||||
@bp.post('/settings/update')
|
||||
|
@ -62,16 +59,11 @@ def load_checker():
|
|||
def checker_history():
|
||||
roxywi_common.check_user_group_for_flask()
|
||||
|
||||
alerts_history = sql.alerts_history('Checker', g.user_params['group_id'])
|
||||
user_subscription = roxywi_common.return_user_subscription()
|
||||
kwargs = {
|
||||
'role': g.user_params['role'],
|
||||
'user': g.user_params['user'],
|
||||
'user_services': g.user_params['user_services'],
|
||||
'token': g.user_params['token'],
|
||||
'user_params': g.user_params,
|
||||
'lang': g.user_params['lang'],
|
||||
'smon': alerts_history,
|
||||
'user_subscription': user_subscription,
|
||||
'smon': sql.alerts_history('Checker', g.user_params['group_id']),
|
||||
'user_subscription': roxywi_common.return_user_subscription(),
|
||||
}
|
||||
|
||||
return render_template('smon/checker_history.html', **kwargs)
|
||||
|
|
|
@ -78,14 +78,10 @@ def find_in_config(service):
|
|||
def config(service, serv, edit, config_file_name, new):
|
||||
config_read = ""
|
||||
cfg = ""
|
||||
stderr = ""
|
||||
error = ""
|
||||
aftersave = ""
|
||||
is_restart = ''
|
||||
is_serv_protected = ''
|
||||
new_config = new
|
||||
user_params = g.user_params
|
||||
service_desc = sql.select_service(service)
|
||||
|
||||
if serv and config_file_name:
|
||||
cfg = config_mod.return_cfg(service, serv, config_file_name)
|
||||
|
@ -118,12 +114,23 @@ def config(service, serv, edit, config_file_name, new):
|
|||
if new_config is not None:
|
||||
config_read = ' '
|
||||
|
||||
return render_template(
|
||||
'config.html', role=user_params['role'], user=user_params['user'], select_id="serv", serv=serv, aftersave=aftersave,
|
||||
config=config_read, cfg=cfg, selects=user_params['servers'], stderr=stderr, error=error, service=service,
|
||||
is_restart=is_restart, user_services=user_params['user_services'], config_file_name=config_file_name,
|
||||
is_serv_protected=is_serv_protected, token=user_params['token'], lang=user_params['lang'], service_desc=service_desc
|
||||
)
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'serv': serv,
|
||||
'aftersave': '',
|
||||
'config': config_read,
|
||||
'cfg': cfg,
|
||||
'stderr': '',
|
||||
'error': error,
|
||||
'service': service,
|
||||
'is_restart': is_restart,
|
||||
'config_file_name': config_file_name,
|
||||
'is_serv_protected': is_serv_protected,
|
||||
'service_desc': sql.select_service(service),
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
|
||||
return render_template('config.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/<service>/<server_ip>/save', methods=['POST'])
|
||||
|
@ -173,7 +180,6 @@ def versions(service, server_ip):
|
|||
aftersave = ''
|
||||
file = set()
|
||||
stderr = ''
|
||||
user_params = g.user_params
|
||||
|
||||
if service in ('haproxy', 'keepalived'):
|
||||
conf_format = 'cfg'
|
||||
|
@ -205,11 +211,16 @@ def versions(service, server_ip):
|
|||
except OSError as e:
|
||||
stderr = "Error: %s - %s." % (e.filename, e.strerror)
|
||||
|
||||
return render_template(
|
||||
'delver.html', role=user_params['role'], user=user_params['user'], select_id="serv", serv=server_ip, aftersave=aftersave,
|
||||
selects=user_params['servers'], file=file, service=service, user_services=user_params['user_services'],
|
||||
token=user_params['token'], lang=user_params['lang'], stderr=stderr
|
||||
)
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'serv': server_ip,
|
||||
'aftersave': aftersave,
|
||||
'file': file,
|
||||
'service': service,
|
||||
'stderr': stderr,
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
return render_template('delver.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/version/<service>/list', methods=['POST'])
|
||||
|
@ -228,11 +239,9 @@ def list_of_version(service):
|
|||
@get_user_params(disable=1)
|
||||
def show_version(service, server_ip, configver, save):
|
||||
roxywi_auth.page_for_admin(level=3)
|
||||
user_params = g.user_params
|
||||
service_desc = sql.select_service(service)
|
||||
configs_dir = get_config.get_config_var('configs', f'{service_desc.service}_save_configs_dir')
|
||||
configver = configs_dir + configver
|
||||
servers = roxywi_common.get_dick_permit(service=service_desc.slug)
|
||||
aftersave = 0
|
||||
stderr = ''
|
||||
|
||||
|
@ -256,41 +265,47 @@ def show_version(service, server_ip, configver, save):
|
|||
else:
|
||||
stderr = config_mod.master_slave_upload_and_restart(server_ip, configver, save_action, service)
|
||||
|
||||
return render_template(
|
||||
'configver.html', role=user_params['role'], user=user_params['user'], select_id="serv", serv=server_ip, aftersave=aftersave,
|
||||
selects=servers, stderr=stderr, save=save, configver=configver, service=service,
|
||||
user_services=user_params['user_services'], token=user_params['token'], lang=user_params['lang']
|
||||
)
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'serv': server_ip,
|
||||
'aftersave': aftersave,
|
||||
'configver': configver,
|
||||
'service': service,
|
||||
'stderr': stderr,
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
|
||||
return render_template('configver.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/section/haproxy/<server_ip>')
|
||||
@get_user_params()
|
||||
def haproxy_section(server_ip):
|
||||
user_params = g.user_params
|
||||
is_restart = 0
|
||||
hap_configs_dir = get_config.get_config_var('configs', 'haproxy_save_configs_dir')
|
||||
cfg = f"{hap_configs_dir}{server_ip}-{get_date.return_date('config')}.cfg"
|
||||
error = config_mod.get_config(server_ip, cfg)
|
||||
sections = section_mod.get_sections(cfg)
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'is_restart': 0,
|
||||
'config': '',
|
||||
'serv': server_ip,
|
||||
'sections': section_mod.get_sections(cfg),
|
||||
'error': error,
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
|
||||
return render_template(
|
||||
'sections.html', role=user_params['role'], user=user_params['user'], serv=server_ip, selects=user_params['servers'],
|
||||
sections=sections, error=error, token=user_params['token'], lang=user_params['lang'], is_restart=is_restart, config='',
|
||||
user_services=user_params['user_services']
|
||||
)
|
||||
return render_template('sections.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/section/haproxy/<server_ip>/<section>')
|
||||
@get_user_params()
|
||||
def haproxy_section_show(server_ip, section):
|
||||
user_params = g.user_params
|
||||
hap_configs_dir = get_config.get_config_var('configs', 'haproxy_save_configs_dir')
|
||||
cfg = f"{hap_configs_dir}{server_ip}-{get_date.return_date('config')}.cfg"
|
||||
error = config_mod.get_config(server_ip, cfg)
|
||||
sections = section_mod.get_sections(cfg)
|
||||
start_line, end_line, config_read = section_mod.get_section_from_config(cfg, section)
|
||||
server_id = sql.select_server_id_by_ip(server_ip)
|
||||
is_restart = sql.select_service_setting(server_id, 'haproxy', 'restart')
|
||||
sections = section_mod.get_sections(cfg)
|
||||
|
||||
os.system(f"/bin/mv {cfg} {cfg}.old")
|
||||
|
||||
|
@ -299,12 +314,21 @@ def haproxy_section_show(server_ip, section):
|
|||
except Exception:
|
||||
pass
|
||||
|
||||
return render_template(
|
||||
'sections.html', role=user_params['role'], user=user_params['user'], serv=server_ip, selects=user_params['servers'],
|
||||
error=error, sections=sections, cfg=cfg, token=user_params['token'], lang=user_params['lang'],
|
||||
is_restart=is_restart, config=config_read, start_line=start_line, end_line=end_line, section=section,
|
||||
user_services=user_params['user_services']
|
||||
)
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'is_restart': sql.select_service_setting(server_id, 'haproxy', 'restart'),
|
||||
'serv': server_ip,
|
||||
'sections': sections,
|
||||
'cfg': cfg,
|
||||
'config': config_read,
|
||||
'start_line': start_line,
|
||||
'end_line': end_line,
|
||||
'section': section,
|
||||
'error': error,
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
|
||||
return render_template('sections.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/section/haproxy/<server_ip>/save', methods=['POST'])
|
||||
|
@ -342,24 +366,23 @@ def haproxy_section_save(server_ip):
|
|||
@bp.route('/map/<service>/<serv>')
|
||||
@get_user_params()
|
||||
def show_compare_config(service, serv):
|
||||
config_read = ""
|
||||
cfg = ""
|
||||
stderr = ""
|
||||
error = ""
|
||||
aftersave = ""
|
||||
is_restart = ''
|
||||
is_serv_protected = ''
|
||||
config_file_name = ''
|
||||
user_params = g.user_params
|
||||
service_desc = sql.select_service(service)
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'aftersave': '',
|
||||
'serv': serv,
|
||||
'cfg': '',
|
||||
'config': '',
|
||||
'config_file_name': '',
|
||||
'is_serv_protected': '',
|
||||
'is_restart': '',
|
||||
'service': service,
|
||||
'stderr': '',
|
||||
'error': '',
|
||||
'service_desc': sql.select_service(service),
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
|
||||
return render_template(
|
||||
'config.html', role=user_params['role'], user=user_params['user'], select_id="serv", serv=serv, aftersave=aftersave,
|
||||
config=config_read, cfg=cfg, selects=user_params['servers'], stderr=stderr, error=error, service=service,
|
||||
is_restart=is_restart, user_services=user_params['user_services'], config_file_name=config_file_name,
|
||||
is_serv_protected=is_serv_protected, token=user_params['token'], lang=user_params['lang'],
|
||||
service_desc=service_desc
|
||||
)
|
||||
return render_template('config.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/compare/<service>/<server_ip>/files')
|
||||
|
|
|
@ -6,7 +6,7 @@ from flask_login import login_required
|
|||
from app.routes.ha import bp
|
||||
from middleware import get_user_params, check_services
|
||||
import modules.db.sql as sql
|
||||
import app.modules.common.common as common
|
||||
import modules.common.common as common
|
||||
import modules.server.server as server_mod
|
||||
import modules.roxywi.common as roxywi_common
|
||||
import modules.service.keepalived as keepalived
|
||||
|
@ -24,17 +24,16 @@ def before_request():
|
|||
@check_services
|
||||
@get_user_params()
|
||||
def cluster_function(service):
|
||||
user_params = g.user_params
|
||||
group_id = user_params['group_id']
|
||||
group_id = g.user_params['group_id']
|
||||
if request.method == 'GET':
|
||||
clusters = sql.select_clusters(group_id)
|
||||
is_needed_tool = common.is_tool('ansible')
|
||||
user_subscription = roxywi_common.return_user_subscription()
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'clusters': sql.select_clusters(group_id),
|
||||
'is_needed_tool': common.is_tool('ansible'),
|
||||
'user_subscription': roxywi_common.return_user_subscription()
|
||||
}
|
||||
|
||||
return render_template(
|
||||
'ha_cluster.html', role=user_params['role'], user=user_params['user'], clusters=clusters, is_needed_tool=is_needed_tool,
|
||||
user_services=user_params['user_services'], token=user_params['token'], lang=user_params['lang'], user_subscription=user_subscription
|
||||
)
|
||||
return render_template('ha_cluster.html', **kwargs)
|
||||
elif request.method == 'PUT':
|
||||
cluster = json.loads(request.form.get('jsonData'))
|
||||
|
||||
|
@ -61,23 +60,22 @@ def cluster_function(service):
|
|||
@check_services
|
||||
@get_user_params()
|
||||
def get_ha_cluster(service, cluster_id):
|
||||
user_params = g.user_params
|
||||
group_id = user_params['group_id']
|
||||
clusters = sql.select_cluster(cluster_id)
|
||||
router_id = sql.get_router_id(cluster_id, default_router=1)
|
||||
slaves = sql.select_cluster_slaves(cluster_id, router_id)
|
||||
virts = sql.select_clusters_virts()
|
||||
vips = sql.select_cluster_vips(cluster_id)
|
||||
servers = roxywi_common.get_dick_permit(virt=1)
|
||||
cluster_services = sql.select_cluster_services(cluster_id)
|
||||
services = sql.select_services()
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'servers': roxywi_common.get_dick_permit(virt=1),
|
||||
'clusters': sql.select_cluster(cluster_id),
|
||||
'slaves': sql.select_cluster_slaves(cluster_id, router_id),
|
||||
'virts': sql.select_clusters_virts(),
|
||||
'vips': sql.select_cluster_vips(cluster_id),
|
||||
'cluster_services': sql.select_cluster_services(cluster_id),
|
||||
'services': sql.select_services(),
|
||||
'group_id': g.user_params['group_id'],
|
||||
'router_id': router_id,
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
|
||||
return render_template(
|
||||
'ajax/ha/clusters.html', role=user_params['role'], user=user_params['user'], servers=servers,
|
||||
user_services=user_params['user_services'], token=user_params['token'], lang=user_params['lang'],
|
||||
clusters=clusters, slaves=slaves, virts=virts, vips=vips, cluster_services=cluster_services, services=services,
|
||||
group_id=group_id, router_id=router_id
|
||||
)
|
||||
return render_template('ajax/ha/clusters.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/<service>/settings/<int:cluster_id>')
|
||||
|
@ -120,12 +118,11 @@ def get_cluster_settings(service, cluster_id):
|
|||
@check_services
|
||||
@get_user_params()
|
||||
def show_ha_cluster(service, cluster_id):
|
||||
user_params = g.user_params
|
||||
services = []
|
||||
service = 'keepalived'
|
||||
service_desc = sql.select_service(service)
|
||||
router_id = sql.get_router_id(cluster_id, default_router=1)
|
||||
servers = sql.select_cluster_master_slaves(cluster_id, user_params['group_id'], router_id)
|
||||
servers = sql.select_cluster_master_slaves(cluster_id, g.user_params['group_id'], router_id)
|
||||
waf_server = ''
|
||||
cmd = "ps ax |grep -e 'keep_alive.py' |grep -v grep |wc -l"
|
||||
keep_alive, stderr = server_mod.subprocess_execute(cmd)
|
||||
|
@ -161,14 +158,20 @@ def show_ha_cluster(service, cluster_id):
|
|||
servers_with_status1.append(servers_with_status)
|
||||
|
||||
user_subscription = roxywi_common.return_user_subscription()
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'servers': servers_with_status1,
|
||||
'waf_server': waf_server,
|
||||
'service': service,
|
||||
'services': services,
|
||||
'service_desc': service_desc,
|
||||
'keep_alive': ''.join(keep_alive),
|
||||
'restart_settings': restart_settings,
|
||||
'user_subscription': user_subscription,
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
|
||||
return render_template(
|
||||
'service.html', role=user_params['role'], user=user_params['user'],
|
||||
servers=servers_with_status1, keep_alive=''.join(keep_alive), service=service, services=services,
|
||||
user_services=user_params['user_services'], user_status=user_subscription['user_status'],
|
||||
user_plan=user_subscription['user_plan'], waf_server=waf_server, restart_settings=restart_settings,
|
||||
service_desc=service_desc, token=user_params['token'], lang=user_params['lang']
|
||||
)
|
||||
return render_template('service.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/<service>/slaves/<int:cluster_id>', methods=['GET', 'POST'])
|
||||
|
|
|
@ -23,16 +23,13 @@ def before_request():
|
|||
@get_user_params()
|
||||
def install_monitoring():
|
||||
roxywi_auth.page_for_admin(level=2)
|
||||
|
||||
user_params = g.user_params
|
||||
is_needed_tool = common.is_tool('ansible')
|
||||
geoip_country_codes = sql.select_geoip_country_codes()
|
||||
|
||||
return render_template(
|
||||
'install.html', role=user_params['role'], user=user_params['user'], servers=user_params['servers'],
|
||||
user_services=user_params['user_services'], lang=user_params['lang'], geoip_country_codes=geoip_country_codes,
|
||||
is_needed_tool=is_needed_tool, token=user_params['token']
|
||||
)
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'is_needed_tool': common.is_tool('ansible'),
|
||||
'geoip_country_codes': sql.select_geoip_country_codes(),
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
return render_template('install.html', **kwargs)
|
||||
|
||||
|
||||
@bp.post('/<service>')
|
||||
|
|
|
@ -25,26 +25,27 @@ def before_request():
|
|||
@get_user_params()
|
||||
def logs_internal():
|
||||
log_type = request.args.get('type')
|
||||
log_path = get_config.get_config_var('main', 'log_path')
|
||||
selects = roxywi_common.get_files(log_path, file_format="log")
|
||||
|
||||
if log_type == '2':
|
||||
roxywi_auth.page_for_admin(level=2)
|
||||
else:
|
||||
roxywi_auth.page_for_admin()
|
||||
|
||||
user_params = g.user_params
|
||||
log_path = get_config.get_config_var('main', 'log_path')
|
||||
selects = roxywi_common.get_files(log_path, file_format="log")
|
||||
|
||||
if log_type is None:
|
||||
selects.append(['fail2ban.log', 'fail2ban.log'])
|
||||
selects.append(['roxy-wi.error.log', 'error.log'])
|
||||
selects.append(['roxy-wi.access.log', 'access.log'])
|
||||
|
||||
return render_template(
|
||||
'logs_internal.html', autorefresh=1, role=user_params['role'], user=user_params['user'],
|
||||
user_services=user_params['user_services'], token=user_params['token'], lang=user_params['lang'],
|
||||
selects=selects, serv='viewlogs'
|
||||
)
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'autorefresh': 1,
|
||||
'selects': selects,
|
||||
'serv': 'viewlogs',
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
return render_template('logs_internal.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/<service>', defaults={'waf': None})
|
||||
|
@ -52,15 +53,14 @@ def logs_internal():
|
|||
@check_services
|
||||
@get_user_params()
|
||||
def logs(service, waf):
|
||||
user_params = g.user_params
|
||||
serv = request.args.get('serv')
|
||||
rows = request.args.get('rows')
|
||||
grep = request.args.get('grep')
|
||||
exgrep = request.args.get('exgrep')
|
||||
hour = request.args.get('hour')
|
||||
minute = request.args.get('minute')
|
||||
hour1 = request.args.get('hour1')
|
||||
minute1 = request.args.get('minute1')
|
||||
# exgrep = request.args.get('exgrep')
|
||||
# hour = request.args.get('hour')
|
||||
# minute = request.args.get('minute')
|
||||
# hour1 = request.args.get('hour1')
|
||||
# minute1 = request.args.get('minute1')
|
||||
log_file = request.args.get('file')
|
||||
|
||||
if rows is None:
|
||||
|
@ -78,11 +78,21 @@ def logs(service, waf):
|
|||
else:
|
||||
return redirect(url_for('index'))
|
||||
|
||||
return render_template(
|
||||
'logs.html', autorefresh=1, role=user_params['role'], user=user_params['user'], select_id='serv', rows=rows,
|
||||
remote_file=log_file, selects=servers, waf=waf, service=service, user_services=user_params['user_services'],
|
||||
token=user_params['token'], lang=user_params['lang'], service_name=service_name, grep=grep, serv=serv
|
||||
)
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'autorefresh': 1,
|
||||
'servers': servers,
|
||||
'serv': serv,
|
||||
'service': service,
|
||||
'service_name': service_name,
|
||||
'grep': grep,
|
||||
'rows': rows,
|
||||
'remote_file': log_file,
|
||||
'waf': waf,
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
|
||||
return render_template('logs.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/<service>/<serv>', methods=['GET', 'POST'])
|
||||
|
@ -92,12 +102,11 @@ def show_remote_log_files(service, serv):
|
|||
serv = common.checkAjaxInput(serv)
|
||||
log_path = sql.get_setting(f'{service}_path_logs')
|
||||
return_files = server_mod.get_remote_files(serv, log_path, 'log')
|
||||
lang = roxywi_common.get_user_lang_for_flask()
|
||||
|
||||
if 'error: ' in return_files:
|
||||
return return_files
|
||||
|
||||
lang = roxywi_common.get_user_lang_for_flask()
|
||||
|
||||
return render_template(
|
||||
'ajax/show_log_files.html', serv=serv, return_files=return_files, path_dir=log_path, lang=lang
|
||||
)
|
||||
|
@ -106,22 +115,13 @@ def show_remote_log_files(service, serv):
|
|||
@bp.route('/<service>/<serv>/<rows>', defaults={'waf': '0'}, methods=['GET', 'POST'])
|
||||
@bp.route('/<service>/waf/<serv>/<rows>', defaults={'waf': '1'}, methods=['GET', 'POST'])
|
||||
def show_logs(service, serv, rows, waf):
|
||||
if request.method == 'GET':
|
||||
grep = request.args.get('grep')
|
||||
exgrep = request.args.get('exgrep')
|
||||
hour = request.args.get('hour')
|
||||
minute = request.args.get('minute')
|
||||
hour1 = request.args.get('hour1')
|
||||
minute1 = request.args.get('minute1')
|
||||
log_file = request.args.get('file')
|
||||
else:
|
||||
grep = request.form.get('grep')
|
||||
exgrep = request.form.get('exgrep')
|
||||
hour = request.form.get('hour')
|
||||
minute = request.form.get('minute')
|
||||
hour1 = request.form.get('hour1')
|
||||
minute1 = request.form.get('minute1')
|
||||
log_file = request.form.get('file')
|
||||
grep = request.form.get('grep') or request.args.get('grep')
|
||||
exgrep = request.form.get('exgrep') or request.args.get('exgrep')
|
||||
hour = request.form.get('hour') or request.args.get('hour')
|
||||
minute = request.form.get('minute') or request.args.get('minute')
|
||||
hour1 = request.form.get('hour1') or request.args.get('hour1')
|
||||
minute1 = request.form.get('minute1') or request.args.get('minute1')
|
||||
log_file = request.form.get('file') or request.args.get('file')
|
||||
|
||||
if roxywi_common.check_user_group_for_flask():
|
||||
try:
|
||||
|
|
|
@ -24,41 +24,45 @@ import modules.service.haproxy as service_haproxy
|
|||
@app.errorhandler(403)
|
||||
@get_user_params()
|
||||
def page_is_forbidden(e):
|
||||
user_params = g.user_params
|
||||
return render_template(
|
||||
'error.html', user=user_params['user'], role=user_params['role'], user_services=user_params['user_services'],
|
||||
title=e, e=e
|
||||
), 403
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'title': e,
|
||||
'e': e
|
||||
}
|
||||
return render_template('error.html', **kwargs), 403
|
||||
|
||||
|
||||
@app.errorhandler(404)
|
||||
@get_user_params()
|
||||
def page_not_found(e):
|
||||
user_params = g.user_params
|
||||
return render_template(
|
||||
'error.html', user=user_params['user'], role=user_params['role'], user_services=user_params['user_services'],
|
||||
title=e, e=e
|
||||
), 404
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'title': e,
|
||||
'e': e
|
||||
}
|
||||
return render_template('error.html', **kwargs), 404
|
||||
|
||||
|
||||
@app.errorhandler(405)
|
||||
@get_user_params()
|
||||
def method_not_allowed(e):
|
||||
user_params = g.user_params
|
||||
return render_template(
|
||||
'error.html', user=user_params['user'], role=user_params['role'], user_services=user_params['user_services'],
|
||||
title=e, e=e
|
||||
), 405
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'title': e,
|
||||
'e': e
|
||||
}
|
||||
return render_template('error.html', **kwargs), 405
|
||||
|
||||
|
||||
@app.errorhandler(500)
|
||||
@get_user_params()
|
||||
def internal_error(e):
|
||||
user_params = g.user_params
|
||||
return render_template(
|
||||
'error.html', user=user_params['user'], role=user_params['role'], user_services=user_params['user_services'],
|
||||
title=e, e=e
|
||||
), 500
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'title': e,
|
||||
'e': e
|
||||
}
|
||||
return render_template('error.html', **kwargs), 500
|
||||
|
||||
|
||||
@app.before_request
|
||||
|
@ -78,24 +82,15 @@ def _db_close(exc):
|
|||
@check_services
|
||||
@get_user_params()
|
||||
def stats(service, serv):
|
||||
user_params = g.user_params
|
||||
service_desc = sql.select_service(service)
|
||||
|
||||
try:
|
||||
if serv is None:
|
||||
first_serv = user_params['servers']
|
||||
for i in first_serv:
|
||||
serv = i[2]
|
||||
break
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
servers = roxywi_common.get_dick_permit(service=service_desc.slug)
|
||||
return render_template(
|
||||
'statsview.html', autorefresh=1, role=user_params['role'], user=user_params['user'], selects=servers, serv=serv,
|
||||
service=service, user_services=user_params['user_services'], token=user_params['token'],
|
||||
select_id="serv", lang=user_params['lang'], service_desc=service_desc
|
||||
)
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'autorefresh': 1,
|
||||
'serv': serv,
|
||||
'service': service,
|
||||
'service_desc': sql.select_service(service),
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
return render_template('statsview.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/stats/view/<service>/<server_ip>')
|
||||
|
@ -114,11 +109,7 @@ def show_stats(service, server_ip):
|
|||
@login_required
|
||||
@get_user_params(1)
|
||||
def nettools():
|
||||
user_params = g.user_params
|
||||
return render_template(
|
||||
'nettools.html', autorefresh=0, role=user_params['role'], user=user_params['user'], servers=user_params['servers'],
|
||||
user_services=user_params['user_services'], token=user_params['token'], lang=user_params['lang']
|
||||
)
|
||||
return render_template('nettools.html', user_params=g.user_params, lang=g.user_params['lang'])
|
||||
|
||||
|
||||
@bp.post('/nettols/<check>')
|
||||
|
@ -146,10 +137,7 @@ def nettols_check(check):
|
|||
@login_required
|
||||
@get_user_params()
|
||||
def service_history(service, server_ip):
|
||||
users = sql.select_users()
|
||||
server_ip = common.checkAjaxInput(server_ip)
|
||||
user_subscription = roxywi_common.return_user_subscription()
|
||||
user_params = g.user_params
|
||||
|
||||
if service in ('haproxy', 'nginx', 'keepalived', 'apache', 'cluster'):
|
||||
service_desc = sql.select_service(service)
|
||||
|
@ -167,11 +155,16 @@ def service_history(service, server_ip):
|
|||
elif service == 'user':
|
||||
history = sql.select_action_history_by_user_id(server_ip)
|
||||
|
||||
return render_template(
|
||||
'history.html', role=user_params['role'], user=user_params['user'], users=users, serv=server_ip, service=service,
|
||||
history=history, user_services=user_params['user_services'], token=user_params['token'],
|
||||
user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'], lang=user_params['lang']
|
||||
)
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'user_subscription': roxywi_common.return_user_subscription(),
|
||||
'users': sql.select_users(),
|
||||
'serv': server_ip,
|
||||
'service': service,
|
||||
'history': history
|
||||
}
|
||||
|
||||
return render_template('history.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/servers')
|
||||
|
@ -180,35 +173,33 @@ def service_history(service, server_ip):
|
|||
def servers():
|
||||
roxywi_auth.page_for_admin(level=2)
|
||||
|
||||
user_params = g.user_params
|
||||
ldap_enable = sql.get_setting('ldap_enable')
|
||||
user_group = roxywi_common.get_user_group(id=1)
|
||||
settings = sql.get_setting('', all=1)
|
||||
services = sql.select_services()
|
||||
gits = sql.select_gits()
|
||||
servers = roxywi_common.get_dick_permit(virt=1, disable=0, only_group=1)
|
||||
masters = sql.select_servers(get_master_servers=1, uuid=user_params['user_uuid'])
|
||||
is_needed_tool = common.is_tool('ansible')
|
||||
user_roles = sql.select_user_roles_by_group(user_group)
|
||||
backups = sql.select_backups()
|
||||
s3_backups = sql.select_s3_backups()
|
||||
user_subscription = roxywi_common.return_user_subscription()
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'h2': 1,
|
||||
'users': sql.select_users(group=user_group),
|
||||
'groups': sql.select_groups(),
|
||||
'servers': roxywi_common.get_dick_permit(virt=1, disable=0, only_group=1),
|
||||
'roles': sql.select_roles(),
|
||||
'sshs': sql.select_ssh(group=user_group),
|
||||
'masters': sql.select_servers(get_master_servers=1, uuid=g.user_params['user_uuid']),
|
||||
'group': roxywi_common.get_user_group(id=1),
|
||||
'services': sql.select_services(),
|
||||
'timezones': pytz.all_timezones,
|
||||
'guide_me': 1,
|
||||
'settings': sql.get_setting('', all=1),
|
||||
'backups': sql.select_backups(),
|
||||
's3_backups': sql.select_s3_backups(),
|
||||
'page': 'servers.py',
|
||||
'ldap_enable': sql.get_setting('ldap_enable'),
|
||||
'gits': sql.select_gits(),
|
||||
'is_needed_tool': common.is_tool('ansible'),
|
||||
'user_roles': sql.select_user_roles_by_group(user_group),
|
||||
'user_subscription': roxywi_common.return_user_subscription(),
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
|
||||
if user_params['lang'] == 'ru':
|
||||
title = 'Сервера: '
|
||||
else:
|
||||
title = "Servers: "
|
||||
|
||||
return render_template(
|
||||
'servers.html',
|
||||
h2=1, title=title, role=user_params['role'], user=user_params['user'], users=sql.select_users(group=user_group),
|
||||
groups=sql.select_groups(), servers=servers, roles=sql.select_roles(), sshs=sql.select_ssh(group=user_group),
|
||||
masters=masters, group=user_group, services=services, timezones=pytz.all_timezones, guide_me=1,
|
||||
token=user_params['token'], settings=settings, backups=backups, s3_backups=s3_backups, page="servers.py",
|
||||
user_services=user_params['user_services'], ldap_enable=ldap_enable,
|
||||
user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'], gits=gits,
|
||||
is_needed_tool=is_needed_tool, lang=user_params['lang'], user_roles=user_roles
|
||||
)
|
||||
return render_template('servers.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/internal/show_version')
|
||||
|
|
|
@ -22,8 +22,6 @@ def before_request():
|
|||
@check_services
|
||||
@get_user_params()
|
||||
def metrics(service):
|
||||
user_params = g.user_params
|
||||
service_desc = sql.select_service(service)
|
||||
roxywi_common.check_user_group_for_flask()
|
||||
servers = ''
|
||||
services = '0'
|
||||
|
@ -53,14 +51,18 @@ def metrics(service):
|
|||
except Exception as e:
|
||||
return f'error: on Metrics page: {e}', 500
|
||||
|
||||
user_subscription = roxywi_common.return_user_subscription()
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'autorefresh': 1,
|
||||
'servers': servers,
|
||||
'service': service,
|
||||
'services': services,
|
||||
'service_desc': sql.select_service(service),
|
||||
'user_subscription': roxywi_common.return_user_subscription(),
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
|
||||
return render_template(
|
||||
'metrics.html', autorefresh=1, role=user_params['role'], user=user_params['user'], servers=servers,
|
||||
services=services, user_services=user_params['user_services'], service=service,
|
||||
user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'],
|
||||
token=user_params['token'], lang=user_params['lang'], service_desc=service_desc
|
||||
)
|
||||
return render_template('metrics.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/cpu', methods=['POST'])
|
||||
|
|
|
@ -19,13 +19,15 @@ def before_request():
|
|||
@bp.route('/overview')
|
||||
@get_user_params()
|
||||
def index():
|
||||
user_params = g.user_params
|
||||
groups = sql.select_groups()
|
||||
return render_template(
|
||||
'ovw.html', autorefresh=1, role=user_params['role'], user=user_params['user'], roles=sql.select_roles(),
|
||||
servers=user_params['servers'], user_services=user_params['user_services'], groups=groups,
|
||||
token=user_params['token'], guide_me=1, lang=user_params['lang']
|
||||
)
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'autorefresh': 1,
|
||||
'roles': sql.select_roles(),
|
||||
'groups': sql.select_groups(),
|
||||
'guide_me': 1,
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
return render_template('ovw.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/overview/services')
|
||||
|
@ -51,5 +53,4 @@ def overview_sub():
|
|||
@bp.route('/overview/logs')
|
||||
@get_user_params()
|
||||
def overview_logs():
|
||||
user_params = g.user_params
|
||||
return render_template('ajax/ovw_log.html', role=user_params['role'], lang=user_params['lang'], roxy_wi_log=roxy_logs.roxy_wi_log())
|
||||
return render_template('ajax/ovw_log.html', role=g.user_params['role'], lang=g.user_params['lang'], roxy_wi_log=roxy_logs.roxy_wi_log())
|
||||
|
|
|
@ -20,31 +20,26 @@ def before_request():
|
|||
@bp.route('')
|
||||
@get_user_params(virt=1)
|
||||
def portscanner():
|
||||
user_params = g.user_params
|
||||
port_scanner_settings = sql.select_port_scanner_settings(user_params['group_id'])
|
||||
port_scanner = tools_common.is_tool_active('roxy-wi-portscanner')
|
||||
user_subscription = roxywi_common.return_user_subscription()
|
||||
port_scanner_settings = sql.select_port_scanner_settings(g.user_params['group_id'])
|
||||
|
||||
if not port_scanner_settings:
|
||||
port_scanner_settings = ''
|
||||
count_ports = ''
|
||||
else:
|
||||
count_ports = list()
|
||||
for s in user_params['servers']:
|
||||
for s in g.user_params['servers']:
|
||||
count_ports_from_sql = sql.select_count_opened_ports(s[2])
|
||||
i = (s[2], count_ports_from_sql)
|
||||
count_ports.append(i)
|
||||
|
||||
kwargs = {
|
||||
'role': user_params['role'],
|
||||
'user': user_params['user'],
|
||||
'servers': user_params['servers'],
|
||||
'user_params': g.user_params,
|
||||
'servers': g.user_params['servers'],
|
||||
'port_scanner_settings': port_scanner_settings,
|
||||
'count_ports': count_ports,
|
||||
'port_scanner': port_scanner,
|
||||
'token': user_params['token'],
|
||||
'lang': user_params['lang'],
|
||||
'user_subscription': user_subscription
|
||||
'port_scanner': tools_common.is_tool_active('roxy-wi-portscanner'),
|
||||
'lang': g.user_params['lang'],
|
||||
'user_subscription': roxywi_common.return_user_subscription()
|
||||
}
|
||||
|
||||
return render_template('portscanner.html', **kwargs)
|
||||
|
@ -53,18 +48,12 @@ def portscanner():
|
|||
@bp.route('/history/<server_ip>')
|
||||
@get_user_params()
|
||||
def portscanner_history(server_ip):
|
||||
history = sql.select_port_scanner_history(server_ip)
|
||||
user_subscription = roxywi_common.return_user_subscription()
|
||||
kwargs = {
|
||||
'h2': 1,
|
||||
'role': g.user_params['role'],
|
||||
'user': g.user_params['user'],
|
||||
'servers': g.user_params['servers'],
|
||||
'user_services': g.user_params['user_services'],
|
||||
'token': g.user_params['token'],
|
||||
'user_params': g.user_params,
|
||||
'lang': g.user_params['lang'],
|
||||
'history': history,
|
||||
'user_subscription': user_subscription
|
||||
'history': sql.select_port_scanner_history(server_ip),
|
||||
'user_subscription': roxywi_common.return_user_subscription()
|
||||
}
|
||||
|
||||
return render_template('include/port_scan_history.html', **kwargs)
|
||||
|
|
|
@ -18,14 +18,7 @@ def before_request():
|
|||
@bp.route('')
|
||||
@get_user_params()
|
||||
def runtimeapi():
|
||||
user_params = g.user_params
|
||||
servbackend = ""
|
||||
|
||||
return render_template(
|
||||
'runtimeapi.html', title="RunTime API", role=user_params['role'], user=user_params['user'], select_id="serv",
|
||||
selects=user_params['servers'], token=user_params['token'], user_services=user_params['user_services'],
|
||||
servbackend=servbackend, lang=user_params['lang']
|
||||
)
|
||||
return render_template('runtimeapi.html', user_params=g.user_params, lang=g.user_params['lang'])
|
||||
|
||||
|
||||
@bp.route('/backends/<server_ip>')
|
||||
|
|
|
@ -95,7 +95,7 @@ def create_server():
|
|||
return render_template(
|
||||
'ajax/new_server.html', groups=sql.select_groups(), servers=sql.select_servers(server=ip), lang=lang,
|
||||
masters=sql.select_servers(get_master_servers=1), sshs=sql.select_ssh(group=group), page=page,
|
||||
user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'], adding=1
|
||||
user_subscription=user_subscription, adding=1
|
||||
)
|
||||
except Exception as e:
|
||||
return f'{e}'
|
||||
|
|
|
@ -10,6 +10,7 @@ import app.modules.common.common as common
|
|||
import app.modules.server.server as server_mod
|
||||
import app.modules.service.action as service_action
|
||||
import app.modules.service.common as service_common
|
||||
import app.modules.service.keepalived as keepalived
|
||||
import app.modules.roxywi.common as roxywi_common
|
||||
import app.modules.roxywi.overview as roxy_overview
|
||||
|
||||
|
@ -26,16 +27,20 @@ def before_request():
|
|||
@check_services
|
||||
@get_user_params()
|
||||
def services(service, serv):
|
||||
user_params = g.user_params
|
||||
services = []
|
||||
tools = []
|
||||
service_desc = sql.select_service(service)
|
||||
servers = roxywi_common.get_dick_permit(virt=1, service=service_desc.slug)
|
||||
if len(servers) == 1:
|
||||
serv = servers[0][2]
|
||||
servers_with_status1 = []
|
||||
autorefresh = 0
|
||||
waf_server = ''
|
||||
cmd = "ps ax |grep -e 'keep_alive.py' |grep -v grep |wc -l"
|
||||
keep_alive, stderr = server_mod.subprocess_execute(cmd)
|
||||
services_name = {'roxy-wi-checker': 'Master backends checker service',
|
||||
'roxy-wi-keep_alive': 'Auto start service',
|
||||
'roxy-wi-metrics': 'Master metrics service'}
|
||||
|
||||
if len(servers) == 1:
|
||||
serv = servers[0][2]
|
||||
|
||||
if serv:
|
||||
if roxywi_common.check_is_server_in_group(serv):
|
||||
|
@ -48,13 +53,9 @@ def services(service, serv):
|
|||
else:
|
||||
raise Exception('error: wrong group')
|
||||
else:
|
||||
|
||||
docker_settings = sql.select_docker_services_settings(service_desc.slug)
|
||||
restart_settings = sql.select_restart_services_settings(service_desc.slug)
|
||||
|
||||
services_name = {'roxy-wi-checker': 'Master backends checker service',
|
||||
'roxy-wi-keep_alive': 'Auto start service',
|
||||
'roxy-wi-metrics': 'Master metrics service'}
|
||||
for s, v in services_name.items():
|
||||
if distro.id() == 'ubuntu':
|
||||
if s == 'roxy-wi-keep_alive':
|
||||
|
@ -64,12 +65,10 @@ def services(service, serv):
|
|||
cmd = "rpm --query " + s + "-* |awk -F\"" + s + "\" '{print $2}' |awk -F\".noa\" '{print $1}' |sed 's/-//1' |sed 's/-/./'"
|
||||
service_ver, stderr = server_mod.subprocess_execute(cmd)
|
||||
try:
|
||||
services.append([s, service_ver[0]])
|
||||
tools.append([s, service_ver[0]])
|
||||
except Exception:
|
||||
services.append([s, ''])
|
||||
tools.append([s, ''])
|
||||
|
||||
haproxy_sock_port = sql.get_setting('haproxy_sock_port')
|
||||
servers_with_status1 = []
|
||||
for s in servers:
|
||||
servers_with_status = list()
|
||||
servers_with_status.append(s[0])
|
||||
|
@ -104,24 +103,10 @@ def services(service, serv):
|
|||
servers_with_status.append(h)
|
||||
servers_with_status.append(s[17])
|
||||
elif service == 'keepalived':
|
||||
h = (['', ''],)
|
||||
cmd = [
|
||||
"/usr/sbin/keepalived -v 2>&1|head -1|awk '{print $2}' && systemctl status keepalived |"
|
||||
"grep -e 'Active' |awk '{print $2, $9$10$11$12$13}' && ps ax |grep keepalived|grep -v grep |wc -l"
|
||||
]
|
||||
try:
|
||||
out = server_mod.ssh_command(s[2], cmd)
|
||||
out1 = []
|
||||
for k in out.split():
|
||||
out1.append(k)
|
||||
h = (out1,)
|
||||
servers_with_status.append(h)
|
||||
servers_with_status.append(h)
|
||||
servers_with_status.append(s[22])
|
||||
except Exception:
|
||||
servers_with_status.append(h)
|
||||
servers_with_status.append(h)
|
||||
servers_with_status.append(s[22])
|
||||
status1, status2 = keepalived.get_status(s[2])
|
||||
servers_with_status.append(status1)
|
||||
servers_with_status.append(status2)
|
||||
servers_with_status.append(s[22])
|
||||
elif service == 'apache':
|
||||
h = (['', ''],)
|
||||
apache_stats_user = sql.get_setting('apache_stats_user')
|
||||
|
@ -142,6 +127,7 @@ def services(service, serv):
|
|||
servers_with_status.append(h)
|
||||
servers_with_status.append(s[22])
|
||||
else:
|
||||
haproxy_sock_port = sql.get_setting('haproxy_sock_port')
|
||||
cmd = f'echo "show info" |nc {s[2]} {haproxy_sock_port} -w 1 -v|grep -e "Ver\|Uptime:\|Process_num"'
|
||||
out = server_mod.subprocess_execute(cmd)
|
||||
|
||||
|
@ -154,9 +140,7 @@ def services(service, serv):
|
|||
|
||||
servers_with_status.append(s[12])
|
||||
|
||||
servers_with_status.append(sql.is_master(s[2]))
|
||||
servers_with_status.append(sql.select_servers(server=s[2]))
|
||||
|
||||
is_keepalived = sql.select_keepalived(s[2])
|
||||
|
||||
if is_keepalived:
|
||||
|
@ -173,15 +157,25 @@ def services(service, serv):
|
|||
|
||||
servers_with_status1.append(servers_with_status)
|
||||
|
||||
user_subscription = roxywi_common.return_user_subscription()
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'clusters': sql.select_ha_cluster_name_and_slaves(),
|
||||
'master_slave': sql.is_master(0, master_slave=1),
|
||||
'user_subscription': roxywi_common.return_user_subscription(),
|
||||
'autorefresh': autorefresh,
|
||||
'servers': servers_with_status1,
|
||||
'lang': g.user_params['lang'],
|
||||
'serv': serv,
|
||||
'service': service,
|
||||
'services': tools,
|
||||
'service_desc': service_desc,
|
||||
'restart_settings': restart_settings,
|
||||
'docker_settings': docker_settings,
|
||||
'waf_server': waf_server,
|
||||
'keep_alive': ''.join(keep_alive)
|
||||
}
|
||||
|
||||
return render_template(
|
||||
'service.html', autorefresh=autorefresh, role=user_params['role'], user=user_params['user'], servers=servers_with_status1,
|
||||
keep_alive=''.join(keep_alive), serv=serv, service=service, services=services, user_services=user_params['user_services'],
|
||||
docker_settings=docker_settings, user_status=user_subscription['user_status'], user_plan=user_subscription['user_plan'],
|
||||
waf_server=waf_server, restart_settings=restart_settings, service_desc=service_desc, token=user_params['token'],
|
||||
lang=user_params['lang']
|
||||
)
|
||||
return render_template('service.html', **kwargs)
|
||||
|
||||
|
||||
@bp.post('/action/<service>/check-service')
|
||||
|
@ -210,8 +204,6 @@ def last_edit(service, server_ip):
|
|||
@bp.route('/cpu-ram-metrics/<server_ip>/<server_id>/<name>/<service>')
|
||||
@get_user_params()
|
||||
def cpu_ram_metrics(server_ip, server_id, name, service):
|
||||
user_params = g.user_params
|
||||
|
||||
if service == 'haproxy':
|
||||
sock_port = sql.get_setting('haproxy_sock_port')
|
||||
cmd = f'echo "show info" |nc {server_ip} {sock_port} -w 1|grep -e "node\|Nbproc\|Maxco\|MB\|Nbthread"'
|
||||
|
@ -228,19 +220,18 @@ def cpu_ram_metrics(server_ip, server_id, name, service):
|
|||
else:
|
||||
return_out = ''
|
||||
|
||||
server_status = (name, server_ip, return_out)
|
||||
|
||||
servers = []
|
||||
servers = [[name, server_ip, return_out]]
|
||||
user_id = request.cookies.get('uuid')
|
||||
group_id = int(request.cookies.get('group'))
|
||||
role = sql.get_user_role_by_uuid(user_id, group_id)
|
||||
kwargs = {
|
||||
'service_status': sorted(servers, key=common.get_key),
|
||||
'role': sql.get_user_role_by_uuid(user_id, group_id),
|
||||
'id': server_id,
|
||||
'service_page': service,
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
|
||||
servers.append(server_status)
|
||||
servers_sorted = sorted(servers, key=common.get_key)
|
||||
|
||||
return render_template(
|
||||
'ajax/overviewServers.html', service_status=servers_sorted, role=role, id=server_id, service_page=service, lang=user_params['lang']
|
||||
)
|
||||
return render_template('ajax/overviewServers.html', **kwargs)
|
||||
|
||||
|
||||
@bp.post('/haproxy/bytes')
|
||||
|
|
|
@ -20,20 +20,14 @@ import app.modules.tools.common as tools_common
|
|||
def smon():
|
||||
roxywi_common.check_user_group_for_flask()
|
||||
|
||||
smon = sql.smon_list(g.user_params['group_id'])
|
||||
smon_status = tools_common.is_tool_active('roxy-wi-smon')
|
||||
user_subscription = roxywi_common.return_user_subscription()
|
||||
kwargs = {
|
||||
'autorefresh': 1,
|
||||
'role': g.user_params['role'],
|
||||
'user': g.user_params['user'],
|
||||
'user_services': g.user_params['user_services'],
|
||||
'token': g.user_params['token'],
|
||||
'user_params': g.user_params,
|
||||
'lang': g.user_params['lang'],
|
||||
'smon': smon,
|
||||
'smon': sql.smon_list(g.user_params['group_id']),
|
||||
'group': g.user_params['group_id'],
|
||||
'smon_status': smon_status,
|
||||
'user_subscription': user_subscription,
|
||||
'smon_status': tools_common.is_tool_active('roxy-wi-smon'),
|
||||
'user_subscription': roxywi_common.return_user_subscription(),
|
||||
}
|
||||
|
||||
return render_template('smon/dashboard.html', **kwargs)
|
||||
|
@ -43,17 +37,13 @@ def smon():
|
|||
@login_required
|
||||
@get_user_params()
|
||||
def smon_dashboard(dashboard_id, check_id):
|
||||
check_id = int(check_id)
|
||||
roxywi_common.check_user_group_for_flask()
|
||||
user_subscription = roxywi_common.return_user_subscription()
|
||||
smon_name = sql.get_smon_service_name_by_id(dashboard_id)
|
||||
check_interval = sql.get_setting('smon_check_interval')
|
||||
check_id = int(check_id)
|
||||
smon = sql.select_one_smon(dashboard_id, check_id)
|
||||
present = datetime.now(timezone('UTC'))
|
||||
present = present.strftime('%b %d %H:%M:%S %Y %Z')
|
||||
present = datetime.strptime(present, '%b %d %H:%M:%S %Y %Z')
|
||||
cert_day_diff = 'N/A'
|
||||
uptime = smon_mod.check_uptime(dashboard_id)
|
||||
|
||||
try:
|
||||
avg_res_time = round(sql.get_avg_resp_time(dashboard_id, check_id), 2)
|
||||
|
@ -71,18 +61,15 @@ def smon_dashboard(dashboard_id, check_id):
|
|||
|
||||
kwargs = {
|
||||
'autorefresh': 1,
|
||||
'role': g.user_params['role'],
|
||||
'user': g.user_params['user'],
|
||||
'user_services': g.user_params['user_services'],
|
||||
'token': g.user_params['token'],
|
||||
'user_params': g.user_params,
|
||||
'lang': g.user_params['lang'],
|
||||
'smon': smon,
|
||||
'group': g.user_params['group_id'],
|
||||
'user_subscription': user_subscription,
|
||||
'check_interval': check_interval,
|
||||
'uptime': uptime,
|
||||
'user_subscription': roxywi_common.return_user_subscription(),
|
||||
'check_interval': sql.get_setting('smon_check_interval'),
|
||||
'uptime': smon_mod.check_uptime(dashboard_id),
|
||||
'avg_res_time': avg_res_time,
|
||||
'smon_name': smon_name,
|
||||
'smon_name': sql.get_smon_service_name_by_id(dashboard_id),
|
||||
'cert_day_diff': cert_day_diff,
|
||||
'check_id': check_id,
|
||||
'dashboard_id': dashboard_id,
|
||||
|
@ -97,20 +84,13 @@ def smon_dashboard(dashboard_id, check_id):
|
|||
@get_user_params()
|
||||
def status_page():
|
||||
if request.method == 'GET':
|
||||
smon_list = sql.smon_list(g.user_params['group_id'])
|
||||
pages = sql.select_status_pages(g.user_params['group_id'])
|
||||
smon_status = tools_common.is_tool_active('roxy-wi-smon')
|
||||
user_subscription = roxywi_common.return_user_subscription()
|
||||
kwargs = {
|
||||
'role': g.user_params['role'],
|
||||
'user': g.user_params['user'],
|
||||
'user_services': g.user_params['user_services'],
|
||||
'token': g.user_params['token'],
|
||||
'user_params': g.user_params,
|
||||
'lang': g.user_params['lang'],
|
||||
'smon': smon_list,
|
||||
'pages': pages,
|
||||
'smon_status': smon_status,
|
||||
'user_subscription': user_subscription
|
||||
'smon': sql.smon_list(g.user_params['group_id']),
|
||||
'pages': sql.select_status_pages(g.user_params['group_id']),
|
||||
'smon_status': tools_common.is_tool_active('roxy-wi-smon'),
|
||||
'user_subscription': roxywi_common.return_user_subscription()
|
||||
}
|
||||
|
||||
return render_template('smon/manage_status_page.html', **kwargs)
|
||||
|
@ -184,18 +164,12 @@ def smon_history_statuses_avg(page_id):
|
|||
def smon_history():
|
||||
roxywi_common.check_user_group_for_flask()
|
||||
|
||||
smon = sql.alerts_history('SMON', g.user_params['group_id'])
|
||||
smon_status = tools_common.is_tool_active('roxy-wi-smon')
|
||||
user_subscription = roxywi_common.return_user_subscription()
|
||||
kwargs = {
|
||||
'role': g.user_params['role'],
|
||||
'user': g.user_params['user'],
|
||||
'user_services': g.user_params['user_services'],
|
||||
'token': g.user_params['token'],
|
||||
'user_params': g.user_params,
|
||||
'lang': g.user_params['lang'],
|
||||
'smon': smon,
|
||||
'smon_status': smon_status,
|
||||
'user_subscription': user_subscription
|
||||
'smon': sql.alerts_history('SMON', g.user_params['group_id']),
|
||||
'smon_status': tools_common.is_tool_active('roxy-wi-smon'),
|
||||
'user_subscription': roxywi_common.return_user_subscription()
|
||||
}
|
||||
|
||||
return render_template('smon/history.html', **kwargs)
|
||||
|
@ -212,10 +186,7 @@ def smon_host_history(server_ip):
|
|||
smon = sql.alerts_history('SMON', g.user_params['group_id'], host=needed_host)
|
||||
user_subscription = roxywi_common.return_user_subscription()
|
||||
kwargs = {
|
||||
'role': g.user_params['role'],
|
||||
'user': g.user_params['user'],
|
||||
'user_services': g.user_params['user_services'],
|
||||
'token': g.user_params['token'],
|
||||
'user_params': g.user_params,
|
||||
'lang': g.user_params['lang'],
|
||||
'smon': smon,
|
||||
'smon_status': smon_status,
|
||||
|
@ -248,32 +219,19 @@ def smon_history_cur_status(dashboard_id, check_id):
|
|||
def smon_admin():
|
||||
roxywi_auth.page_for_admin(level=3)
|
||||
user_group = g.user_params['group_id']
|
||||
smon_status = tools_common.is_tool_active('roxy-wi-smon')
|
||||
telegrams = sql.get_user_telegram_by_group(user_group)
|
||||
slacks = sql.get_user_slack_by_group(user_group)
|
||||
pds = sql.get_user_pd_by_group(user_group)
|
||||
smon_checks = sql.select_smon(user_group)
|
||||
smon_ping = sql.select_smon_ping()
|
||||
smon_tcp = sql.select_smon_tcp()
|
||||
smon_http = sql.select_smon_http()
|
||||
smon_dns = sql.select_smon_dns()
|
||||
user_subscription = roxywi_common.return_user_subscription()
|
||||
kwargs = {
|
||||
'role': g.user_params['role'],
|
||||
'user': g.user_params['user'],
|
||||
'user_services': g.user_params['user_services'],
|
||||
'token': g.user_params['token'],
|
||||
'user_params': g.user_params,
|
||||
'lang': g.user_params['lang'],
|
||||
'smon': smon_checks,
|
||||
'smon_status': smon_status,
|
||||
'user_subscription': user_subscription,
|
||||
'telegrams': telegrams,
|
||||
'slacks': slacks,
|
||||
'pds': pds,
|
||||
'smon_ping': smon_ping,
|
||||
'smon_tcp:': smon_tcp,
|
||||
'smon_http': smon_http,
|
||||
'smon_dns': smon_dns
|
||||
'smon': sql.select_smon(user_group),
|
||||
'smon_status': tools_common.is_tool_active('roxy-wi-smon'),
|
||||
'user_subscription': roxywi_common.return_user_subscription(),
|
||||
'telegrams': sql.get_user_telegram_by_group(user_group),
|
||||
'slacks': sql.get_user_slack_by_group(user_group),
|
||||
'pds': sql.get_user_pd_by_group(user_group),
|
||||
'smon_ping': sql.select_smon_ping(),
|
||||
'smon_tcp:': sql.select_smon_tcp(),
|
||||
'smon_http': sql.select_smon_http(),
|
||||
'smon_dns': sql.select_smon_dns()
|
||||
}
|
||||
|
||||
return render_template('smon/add.html', **kwargs)
|
||||
|
@ -315,7 +273,8 @@ def smon_add():
|
|||
'pds': sql.get_user_pd_by_group(user_group),
|
||||
'slacks': sql.get_user_slack_by_group(user_group),
|
||||
'telegrams': sql.get_user_telegram_by_group(user_group),
|
||||
'smon_service': sql.select_smon_check_by_id(last_id, check_type)
|
||||
'smon_service': sql.select_smon_check_by_id(last_id, check_type),
|
||||
'lang': lang
|
||||
}
|
||||
|
||||
return render_template('ajax/smon/show_new_smon.html', **kwargs)
|
||||
|
|
|
@ -34,32 +34,29 @@ def waf(service):
|
|||
if not roxywi_auth.is_access_permit_to_service(service):
|
||||
abort(403, f'You do not have needed permissions to access to {service.title()} service')
|
||||
|
||||
manage_rules = ''
|
||||
waf_rule_id = ''
|
||||
config_file_name = ''
|
||||
waf_rule_file = ''
|
||||
config_read = ''
|
||||
rules = ''
|
||||
serv = ''
|
||||
cfg = ''
|
||||
user_params = g.user_params
|
||||
|
||||
if service == 'nginx':
|
||||
servers = roxywi_common.get_dick_permit(nginx=1)
|
||||
else:
|
||||
servers = user_params['servers']
|
||||
servers = g.user_params['servers']
|
||||
|
||||
title = "Web application firewall"
|
||||
servers_waf = sql.select_waf_servers_metrics(user_params['user_uuid'])
|
||||
autorefresh = 1
|
||||
|
||||
return render_template(
|
||||
'waf.html', title=title, autorefresh=autorefresh, role=user_params['role'], user=user_params['user'], serv=serv,
|
||||
servers=servers_waf, servers_all=servers, manage_rules=manage_rules, rules=rules,
|
||||
user_services=user_params['user_services'], waf_rule_file=waf_rule_file, waf_rule_id=waf_rule_id,
|
||||
config=config_read, cfg=cfg, token=user_params['token'], config_file_name=config_file_name, service=service,
|
||||
lang=user_params['lang']
|
||||
)
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'title': 'Web application firewall',
|
||||
'autorefresh': 1,
|
||||
'serv': '',
|
||||
'servers': sql.select_waf_servers_metrics(g.user_params['user_uuid']),
|
||||
'servers_all': servers,
|
||||
'manage_rules': '',
|
||||
'rules': '',
|
||||
'waf_rule_file': '',
|
||||
'waf_rule_id': '',
|
||||
'config': '',
|
||||
'cfg': '',
|
||||
'config_file_name': '',
|
||||
'service': service,
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
return render_template('waf.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/<service>/<server_ip>/rules')
|
||||
|
@ -70,28 +67,27 @@ def waf_rules(service, server_ip):
|
|||
if not roxywi_auth.is_access_permit_to_service(service):
|
||||
abort(403, f'You do not have needed permissions to access to {service.title()} service')
|
||||
|
||||
manage_rules = '1'
|
||||
waf_rule_id = ''
|
||||
config_file_name = ''
|
||||
waf_rule_file = ''
|
||||
servers_waf = ''
|
||||
config_read = ''
|
||||
servers = ''
|
||||
cfg = ''
|
||||
user_params = g.user_params
|
||||
title = "Manage rules - Web application firewall"
|
||||
rules = sql.select_waf_rules(server_ip, service)
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'title': 'Manage rules - Web application firewall',
|
||||
'serv': server_ip,
|
||||
'servers': sql.select_waf_servers_metrics(g.user_params['user_uuid']),
|
||||
'servers_all': '',
|
||||
'manage_rules': '1',
|
||||
'rules': sql.select_waf_rules(server_ip, service),
|
||||
'waf_rule_file': '',
|
||||
'waf_rule_id': '',
|
||||
'config': '',
|
||||
'cfg': '',
|
||||
'config_file_name': '',
|
||||
'service': service,
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
|
||||
return render_template(
|
||||
'waf.html', title=title, autorefresh=0, role=user_params['role'], user=user_params['user'], serv=server_ip,
|
||||
servers=servers_waf, servers_all=servers, manage_rules=manage_rules, rules=rules,
|
||||
user_services=user_params['user_services'], waf_rule_file=waf_rule_file, waf_rule_id=waf_rule_id,
|
||||
config=config_read, cfg=cfg, token=user_params['token'], config_file_name=config_file_name, service=service,
|
||||
lang=user_params['lang']
|
||||
)
|
||||
return render_template('waf.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/<service>/<server_ip>/rule/<rule_id>')
|
||||
@bp.route('/<service>/<server_ip>/rule/<int:rule_id>')
|
||||
@get_user_params()
|
||||
def waf_rule_edit(service, server_ip, rule_id):
|
||||
roxywi_auth.page_for_admin(level=2)
|
||||
|
@ -99,24 +95,17 @@ def waf_rule_edit(service, server_ip, rule_id):
|
|||
abort(403, f'You do not have needed permissions to access to {service.title()} service')
|
||||
roxywi_common.check_is_server_in_group(server_ip)
|
||||
|
||||
manage_rules = ''
|
||||
servers_waf = ''
|
||||
config_read = ''
|
||||
servers = ''
|
||||
user_params = g.user_params
|
||||
rules = sql.select_waf_rules(server_ip, service)
|
||||
|
||||
if service == 'nginx':
|
||||
config_path = sql.get_setting('nginx_dir')
|
||||
else:
|
||||
config_path = sql.get_setting('haproxy_dir')
|
||||
|
||||
title = 'Edit a WAF rule'
|
||||
waf_rule_file = sql.select_waf_rule_by_id(rule_id)
|
||||
configs_dir = sql.get_setting('tmp_config_path')
|
||||
cfg = f"{configs_dir}{server_ip}-{get_date.return_date('config')}-{waf_rule_file}"
|
||||
error = config_mod.get_config(server_ip, cfg, waf=service, waf_rule_file=waf_rule_file)
|
||||
config_file_name = common.return_nice_path(config_path) + 'waf/rules/' + waf_rule_file
|
||||
config_read = ''
|
||||
|
||||
try:
|
||||
conf = open(cfg, "r")
|
||||
|
@ -125,12 +114,24 @@ def waf_rule_edit(service, server_ip, rule_id):
|
|||
except IOError:
|
||||
print('Cannot read imported config file')
|
||||
|
||||
return render_template(
|
||||
'waf.html', title=title, autorefresh=0, role=user_params['role'], user=user_params['user'], serv=server_ip,
|
||||
servers=servers_waf, servers_all=servers, manage_rules=manage_rules, rules=rules,
|
||||
user_services=user_params['user_services'], waf_rule_file=waf_rule_file, waf_rule_id=rule_id, config=config_read,
|
||||
cfg=cfg, token=user_params['token'], config_file_name=config_file_name, service=service, lang=user_params['lang']
|
||||
)
|
||||
kwargs = {
|
||||
'user_params': g.user_params,
|
||||
'title': 'Edit a WAF rule',
|
||||
'serv': server_ip,
|
||||
'servers': sql.select_waf_servers_metrics(g.user_params['user_uuid']),
|
||||
'servers_all': '',
|
||||
'manage_rules': '',
|
||||
'rules': sql.select_waf_rules(server_ip, service),
|
||||
'waf_rule_file': sql.select_waf_rule_by_id(rule_id),
|
||||
'waf_rule_id': rule_id,
|
||||
'config': config_read,
|
||||
'cfg': cfg,
|
||||
'config_file_name': config_file_name,
|
||||
'service': service,
|
||||
'lang': g.user_params['lang']
|
||||
}
|
||||
|
||||
return render_template('waf.html', **kwargs)
|
||||
|
||||
|
||||
@bp.route('/<service>/<server_ip>/rule/<rule_id>/save', methods=['POST'])
|
||||
|
|
|
@ -44,12 +44,7 @@
|
|||
<tr>
|
||||
<td class="addName">{{lang.words.select|title()}} {{lang.words.w_a}} {{lang.words.server}}: </td>
|
||||
<td class="addOption">
|
||||
<select required name="serv" id="serv">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('serv', values=user_params['servers'], is_servers='true') }}
|
||||
<div class="tooltip tooltipTop"><b>{{lang.words.note|title()}}:</b> {{lang.phrases.master_slave}}</div>
|
||||
</td>
|
||||
<td rowspan="5" class="add-note addName alert-info">
|
||||
|
@ -312,12 +307,7 @@
|
|||
<tr>
|
||||
<td class="addName">{{lang.words.select|title()}} {{lang.words.w_a}} {{lang.words.server}}: </td>
|
||||
<td class="addOption">
|
||||
<select required name="serv" id="serv2">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('serv2', values=user_params['servers'], is_servers='true') }}
|
||||
<div class="tooltip tooltipTop"><b>{{lang.words.note|title()}}:</b> {{lang.phrases.master_slave}}</div>
|
||||
</td>
|
||||
<td rowspan="5" class="add-note addName alert-info">
|
||||
|
@ -508,12 +498,7 @@
|
|||
<tr>
|
||||
<td class="addName">{{lang.words.select|title()}} {{lang.words.w_a}} {{lang.words.server}}: </td>
|
||||
<td class="addOption">
|
||||
<select required name="serv" id="serv3">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('serv3', values=user_params['servers'], is_servers='true') }}
|
||||
<div class="tooltip tooltipTop"><b>{{lang.words.note|title()}}:</b> {{lang.phrases.master_slave}}</div>
|
||||
</td>
|
||||
<td rowspan="4" class="add-note addName alert-info">
|
||||
|
@ -736,12 +721,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="padding10 first-collumn">
|
||||
<select required name="serv" id="serv5">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('serv5', values=user_params['servers'], is_servers='true') }}
|
||||
<button id="ssl_key_view" title="{{lang.words.view|title()}} {{lang.words.certs}}">{{lang.words.view|title()}}</button>
|
||||
</td>
|
||||
<td colspan="2" style="padding: 10px 0 10px 0;">
|
||||
|
@ -759,12 +739,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="first-collumn padding10" valign="top" style="padding-top: 15px;">
|
||||
<select required id="serv4">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('serv4', values=user_params['servers'], is_servers='true') }}
|
||||
</td>
|
||||
<td valign="top" style="padding-top: 27px;">
|
||||
{{ input('ssl_name') }}
|
||||
|
@ -785,12 +760,7 @@
|
|||
</tr>
|
||||
<tr>
|
||||
<td class="padding10 first-collumn">
|
||||
<select required id="serv_for_lets">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('serv_for_lets', values=user_params['servers'], is_servers='true') }}
|
||||
</td>
|
||||
<td>
|
||||
{{ input('lets_domain', placeholder="example.com") }}
|
||||
|
@ -909,12 +879,7 @@
|
|||
<tr>
|
||||
<td class="addName">{{lang.words.select|title()}} {{lang.words.w_a}} {{lang.words.server}}: </td>
|
||||
<td class="addOption">
|
||||
<select required name="serv" id="userlist_serv">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('userlist_serv', name='serv', values=user_params['servers'], is_servers='true') }}
|
||||
<div class="tooltip tooltipTop"><b>{{lang.words.note|title()}}:</b> {{lang.phrases.master_slave}}</div>
|
||||
</td>
|
||||
<td rowspan="4" class="add-note addName alert-info">{{lang.add_page.desc.userlist_desc}}</td>
|
||||
|
@ -967,12 +932,7 @@
|
|||
<tr>
|
||||
<td class="addName">{{lang.words.select|title()}} {{lang.words.w_a}} {{lang.words.server}}: </td>
|
||||
<td class="addOption">
|
||||
<select required name="serv" id="existing_userlist_serv">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('existing_userlist_serv', name='serv', values=user_params['servers'], is_servers='true') }}
|
||||
<div class="tooltip tooltipTop"><b>{{lang.words.note|title()}}:</b> {{lang.phrases.master_slave}}</div>
|
||||
</td>
|
||||
<td>
|
||||
|
@ -1002,12 +962,7 @@
|
|||
<tr>
|
||||
<td class="addName">{{lang.words.select|title()}} {{lang.words.w_a}} {{lang.words.server}}: </td>
|
||||
<td class="addOption">
|
||||
<select required name="serv" id="peers_serv">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('peers_serv', name='serv', values=user_params['servers'], is_servers='true') }}
|
||||
<div class="tooltip tooltipTop"><b>{{lang.words.note|title()}}:</b> {{lang.phrases.master_slave}}</div>
|
||||
</td>
|
||||
<td rowspan="4" class="add-note addName alert-info">
|
||||
|
@ -1074,13 +1029,7 @@
|
|||
<button onclick="createList('black')">{{lang.words.create|title()}}</button>
|
||||
</td>
|
||||
<td class="first-collumn">
|
||||
<select required name="serv-black-list" id="serv-black-list">
|
||||
<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>
|
||||
{{ select('serv-black-list', values=user_params['servers'], is_servers='true') }}
|
||||
</td>
|
||||
<td style="width: 30%; padding: 10px 0 10px 0;">
|
||||
{% for list in black_lists %}
|
||||
|
@ -1105,13 +1054,7 @@
|
|||
<button onclick="createList('white')">{{lang.words.create|title()}}</button>
|
||||
</td>
|
||||
<td class="first-collumn">
|
||||
<select required name="serv-white-list" id="serv-white-list">
|
||||
<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>
|
||||
{{ select('serv-white-list', values=user_params['servers'], is_servers='true') }}
|
||||
</td>
|
||||
<td style="width: 30%; padding: 10px 0 10px 0;">
|
||||
{% for list in white_lists %}
|
||||
|
@ -1146,13 +1089,7 @@
|
|||
<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>
|
||||
{{ select('serv-map', values=user_params['servers'], is_servers='true') }}
|
||||
</td>
|
||||
<td style="width: 30%; padding: 10px 0 10px 0;">
|
||||
{% for map in maps %}
|
||||
|
|
|
@ -20,12 +20,7 @@
|
|||
<tr>
|
||||
<td class="addName">{{lang.words.select|title()}} {{lang.words.w_a}} {{lang.words.server}}: </td>
|
||||
<td class="addOption">
|
||||
<select required name="serv" id="serv">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('serv', values=user_params['servers'], is_servers='true') }}
|
||||
<div class="tooltip tooltipTop"><b>{{lang.words.note|title()}}:</b> {{lang.phrases.master_slave}}</div>
|
||||
</td>
|
||||
<td rowspan="5" class="add-note addName alert-info">
|
||||
|
|
|
@ -8,13 +8,10 @@
|
|||
<span id="cluster-desc-{{cluster.id}}">{% if cluster.desc != '' %} ({{cluster.desc}}) {% endif %}</span>
|
||||
</a>
|
||||
<span class="server-action">
|
||||
{% if role <= 2 %}
|
||||
{% if user_params['role'] <= 2 %}
|
||||
<a class="plus" onclick="add_vip_ha_cluster('{{cluster.id}}', '{{cluster.name}}')"></a>
|
||||
<a class="edit" onclick="createHaClusterStep1(true, '{{cluster.id}}')"></a>
|
||||
<a class="delete" onclick="confirmDeleteCluster('{{cluster.id}}')"></a>
|
||||
<span class="portlet-header" title="{{lang.words.change2|title()}} {{lang.words.position}} {{cluster.name}}">
|
||||
<i class="fas fa-grip-vertical"></i>
|
||||
</span>
|
||||
{% endif %}
|
||||
</span>
|
||||
</div>
|
||||
|
@ -47,7 +44,7 @@
|
|||
VIP:
|
||||
<span id="cluster-vip">
|
||||
{%- for vip in vips %}
|
||||
{% if role <= 2 %}
|
||||
{% if user_params['role'] <= 2 %}
|
||||
<a style="cursor: pointer;" onclick="add_vip_ha_cluster('{{vip.cluster_id}}', '{{cluster.name}}', '{{vip.router_id}}', '{{vip.vip}}', 1)" title="{{lang.words.edit|title()}} VIP">{{vip.vip}}</a>
|
||||
{% else %}
|
||||
{{vip.vip}}
|
||||
|
@ -67,9 +64,6 @@
|
|||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
<!-- <div>-->
|
||||
<!-- {{lang.ha_page.return_master_desc}}: {% if cluster.return_master %} {{lang.words.true|title()}} {% else %} {{lang.words.false|title()}} {% endif %}-->
|
||||
<!-- </div>-->
|
||||
</div>
|
||||
{{ input('router_id-'+ cluster.id|string(), type='hidden') }}
|
||||
</div>
|
||||
|
|
|
@ -147,6 +147,12 @@
|
|||
<td>{{d.mac}}</td>
|
||||
</tr>
|
||||
<tr class="odd">
|
||||
<td class="padding10 first-collumn-wi">
|
||||
UP
|
||||
</td>
|
||||
<td>{{d.up}}</td>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
<td class="padding10 first-collumn-wi" style="width: 20%;">
|
||||
Description
|
||||
</td>
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
<td class="third-collumn-wi">
|
||||
{% for group in users_groups %}
|
||||
{% if USER.user_id|string() == group.user_id|string() %}
|
||||
{{ group.groups.name }}
|
||||
<span title="{{ group.groups.name }}: {{ group.groups.description }}"> {{ group.groups.name }}</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
|
@ -52,7 +52,7 @@
|
|||
<td class="third-collumn-wi">
|
||||
{% for group in users_groups %}
|
||||
{% if group.user_id|string() == USER.user_id|string() %}
|
||||
{{ group.groups.name }}{{ "," if not loop.last }}
|
||||
<span title="{{ group.groups.name }}: {{ group.groups.description }}"> {{ group.groups.name }}</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
|
|
|
@ -70,8 +70,8 @@
|
|||
<script src="/inc/toastr.js"></script>
|
||||
</head>
|
||||
<body>
|
||||
{% if user %}
|
||||
<input type="hidden" id="token" value="{{ token }}">
|
||||
{% if user_params['user'] %}
|
||||
<input type="hidden" id="token" value="{{ user_params['token'] }}">
|
||||
<script>show_version();</script>
|
||||
{% include 'include/main_menu.html' %}
|
||||
<div class="container">
|
||||
|
|
|
@ -25,16 +25,16 @@
|
|||
<script src="/inc/codemirror/mode/haproxy.js"></script>
|
||||
<script src="/inc/codemirror/keymap/sublime.js"></script>
|
||||
<script src="/inc/configshow.js"></script>
|
||||
{% if is_serv_protected and role > 2 %}
|
||||
{% if is_serv_protected and user_params['role'] > 2 %}
|
||||
<meta http-equiv="refresh" content="0; url=/app/service">
|
||||
{% else %}
|
||||
{% if selects|length == 0 %}
|
||||
{% if user_params['servers']|length == 0 %}
|
||||
{% include 'include/getstarted.html' %}
|
||||
{% else %}
|
||||
<p>
|
||||
<form action="{{ action }}" method="post" class="left-space">
|
||||
<input type="hidden" id="service" value="{{service|default('haproxy', true)}}" />
|
||||
{% include 'include/select.html' %}
|
||||
{{ select('serv', values=user_params['servers'], is_servers='true', selected=serv) }}
|
||||
{% if service == 'nginx' or service == 'apache' %}
|
||||
<a class="ui-button ui-widget ui-corner-all" title="{{lang.words.show|title()}} {{lang.words.running}} {{lang.words.config}}" onclick="showConfigFiles()">{{lang.words.open|title()}}</a>
|
||||
{% else %}
|
||||
|
@ -47,10 +47,10 @@
|
|||
<a class="ui-button ui-widget ui-corner-all" title="{{lang.words.show|title()}} {{lang.words.map}}" onclick="showMap()">{{lang.words.map|title()}}</a>
|
||||
{% endif %}
|
||||
<a class="ui-button ui-widget ui-corner-all" title="{{lang.words.compare|title()}} {{lang.words.configs}}" onclick="showCompareConfigs()">{{lang.words.compare|title()}}</a>
|
||||
{% if role <= 3 %}
|
||||
{% if user_params['role'] <= 3 %}
|
||||
<a class="ui-button ui-widget ui-corner-all" title="{{lang.words.show|title()}} {{lang.words.versions}}" onclick="openVersions()">{{lang.menu_links.versions.link}}</a>
|
||||
{% endif %}
|
||||
{% if role <= 2 %}
|
||||
{% if user_params['role'] <= 2 %}
|
||||
<a href="/app/servers#backup" class="ui-button ui-widget ui-corner-all" title="Git">Git</a>
|
||||
{% endif %}
|
||||
</form>
|
||||
|
@ -63,7 +63,7 @@
|
|||
{% endif %}
|
||||
|
||||
{% if config %}
|
||||
{% if role <= 3 %}
|
||||
{% if user_params['role'] <= 3 %}
|
||||
<h4 class="left-space">{{lang.words.config|title()}} {% if config_file_name and config_file_name != 'undefined' %}{{config_file_name.replace('92', '/')}}{%endif%} {{lang.words.from}} {{ serv }}</h4>
|
||||
<form action="/app/config/{{service}}/{{serv}}/save" name="saveconfig" id="saveconfig" method="post" class="left-space">
|
||||
<input type="hidden" value="{{ serv }}" name="serv">
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<p>
|
||||
<form action="/app/config/versions/{{service}}/{{serv}}" method="post" class="left-space">
|
||||
<input type="hidden" id="service" value="{{service}}">
|
||||
{% include 'include/select.html' %}
|
||||
{{ select('serv', values=user_params['servers'], is_servers='true') }}
|
||||
<button type="submit" value="open" name="open" class="btn btn-default">{{lang.words.open|title()}}</button>
|
||||
</form>
|
||||
</p>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{% block title %}{{ lang.menu_links.versions.h2 }} {{ lang.words[service] }}{% endblock %}
|
||||
{% block h2 %}{{ lang.menu_links.versions.h2 }} {{ lang.words[service] }}{% endblock %}
|
||||
{% block content %}
|
||||
{% if selects|length == 0 %}
|
||||
{% if user_params['servers']|length == 0 %}
|
||||
{% include 'include/getstarted.html' %}
|
||||
{% else %}
|
||||
<link href="/inc/css/table-6.3.9.css" rel="stylesheet" type="text/css">
|
||||
|
@ -10,7 +10,7 @@
|
|||
<p>
|
||||
<form action="{{ action }}" method="post" class="left-space">
|
||||
<input type="hidden" value="{{service}}" name="service" id="service">
|
||||
{% include 'include/select.html' %}
|
||||
{{ select('serv', values=user_params['servers'], is_servers='true', selected=serv) }}
|
||||
<a class="ui-button ui-widget ui-corner-all" title="Open versions" onclick="showListOfVersion(1)">{{lang.words.open|title()}}</a>
|
||||
<a href="/app/config/{{service}}" class="ui-button ui-widget ui-corner-all" title="Configs page">{{lang.words.configs|title()}}</a>
|
||||
{% if service != 'keepalived' %}
|
||||
|
@ -37,7 +37,7 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
{% if serv and not aftersave %}
|
||||
{% for select in selects %}
|
||||
{% for select in user_params['servers'] %}
|
||||
{% if select.2 == serv %}
|
||||
<script>showListOfVersion(1)</script>
|
||||
{% endif %}
|
||||
|
|
|
@ -9,27 +9,6 @@
|
|||
<link href="/inc/css/servers.css" rel="stylesheet"/>
|
||||
<link href="/inc/css/smon.css" rel="stylesheet">
|
||||
<link href="/inc/css/ha.css" rel="stylesheet">
|
||||
<script>
|
||||
$( function() {
|
||||
$( ".sortable" ).sortable({
|
||||
revert: true,
|
||||
placeholder: "ui-state-highlight"
|
||||
});
|
||||
$( ".sortable" ).disableSelection();
|
||||
|
||||
$( ".sortable" ).sortable({
|
||||
handle: ".portlet-header",
|
||||
stop: function(event, ui) {
|
||||
var itemOrder = $('.sortable').sortable("toArray");
|
||||
for (var i = 0; i < itemOrder.length; i++) {
|
||||
var pos = i;
|
||||
var id = itemOrder[i].split('-')[2]
|
||||
change_pos(pos, id);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
{% if user_subscription.user_status == 0 or user_subscription.user_plan == 'user' %}
|
||||
{% include 'include/no_sub.html' %}
|
||||
{% elif not is_needed_tool %}
|
||||
|
@ -41,10 +20,10 @@
|
|||
</h4>
|
||||
</div>
|
||||
{% else %}
|
||||
{% if role <= 2 %}
|
||||
{% if user_params['role'] <= 2 %}
|
||||
<div class="add-button add-button-big" title="{{lang.phrases.create_ha}}" onclick="createHaClusterStep1();">+ {{lang.ha_page.create_ha}}</div>
|
||||
{% endif %}
|
||||
<div class="up-pannel">
|
||||
<div class="up-pannel" class="sortable">
|
||||
{% for cluster in clusters %}
|
||||
<div id="cluster-{{cluster.id}}" class="div-server-hapwi animated-background"></div>
|
||||
{% endfor %}
|
||||
|
@ -155,6 +134,10 @@
|
|||
{{ checkbox('nginx_docker', title=lang.ha_page.try_install+' NGINX '+lang.ha_page.as_docker) }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="padding20 help_cursor"><span title="{{lang.ha_page.try_install}} Apache">Apache</span></td>
|
||||
<td class="help_cursor">{{ checkbox('apache', title=lang.ha_page.try_install+' Apache') }}</td>
|
||||
</tr>
|
||||
</table>
|
||||
<div class="alert alert-warning">
|
||||
{{lang.ha_page.save_apply|safe}}
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
<th class="padding10 first-collumn" style="width: 100px;">{{lang.words.service|title()}}</th>
|
||||
<th>{{lang.words.user|title()}}</th>
|
||||
<th style="width: 100px">{{lang.words.service|title()}} IP</th>
|
||||
<th style="width: 100px">{{lang.words.server|title()}}</th>
|
||||
<th style="width: 100px">{%if service == 'cluster' %}{{lang.words.cluster|title()}} {%else%}{{lang.words.server|title()}}{% endif %}</th>
|
||||
<th>{{lang.words.action|title()}}</th>
|
||||
<th>{{lang.words.date|title()}}</th>
|
||||
</tr>
|
||||
|
@ -56,7 +56,7 @@
|
|||
<td>
|
||||
{% for u in users %}
|
||||
{% if u.user_id == h.user_id %}
|
||||
<a href="/app/history.py?service=user&user_id={{u.user_id}}" title="Open history for {{u.username}}">{{ u.username }}</a>
|
||||
<a href="/app/history/user/{{u.user_id}}" title="Open history for {{u.username}}">{{ u.username }}</a>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</td>
|
||||
|
@ -64,7 +64,9 @@
|
|||
<td>
|
||||
{% if h.server_ip != None %}
|
||||
{% if h.service in ('haproxy', 'nginx', 'apache', 'keepalived') %}
|
||||
<a href="/app/hapservers.py?service={{h.service}}&serv={{h.server_ip}}" title="Open history for {{h.hostname}}">{{ h.hostname }}</a>
|
||||
<a href="/app/service/{{h.service}}/{{h.server_ip}}" title="Open history for {{h.hostname}}">{{ h.hostname }}</a>
|
||||
{% elif h.service == 'HA cluster' %}
|
||||
{{h.hostname}}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
</ul>
|
||||
|
||||
<div id="git_tab">
|
||||
{% if user_status == 0 or user_plan != 'support' %}
|
||||
{% if user_subscription['user_status'] == 0 or user_subscription['user_plan'] != 'support' %}
|
||||
{% include 'include/no_sub.html' %}
|
||||
{% else %}
|
||||
<table class="overview" id="ajax-git-table">
|
||||
|
|
|
@ -163,14 +163,14 @@
|
|||
{{lang.phrases.read_about_parameters}} <a href="https://roxy-wi.org/description/servers" title="{{lang.words.servers|title()}} {{lang.words.desc}}" target="_blank">{{lang.words.here}}</a>, {{lang.phrases.read_howto}} <a href="https://roxy-wi.org/howto/setup" title="How to setup servers, group and SSH credentials" target="_blank">{{lang.words.article}}</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% if user_status == 0 or user_plan == 'user' %}
|
||||
{% if user_subscription['user_status'] == 0 or user_subscription['user_plan'] == 'user' %}
|
||||
<script>
|
||||
$( function() {
|
||||
$('select:regex(id, slavefor)').selectmenu();
|
||||
$('select:regex(id, slavefor)').selectmenu("disable");
|
||||
{% if user_status == 0 %}
|
||||
{% if user_subscription['user_status'] == 0 %}
|
||||
$('#slavefor-th').attr("title", "{{lang.phrases.slave_for_title}}. {{lang.phrases.no_sub}}. {{lang.phrases.pls_sub}}.");
|
||||
{% elif user_plan == 'user' %}
|
||||
{% elif user_subscription['user_plan'] == 'user' %}
|
||||
$('#slavefor-th').attr("title", "{{lang.phrases.slave_for_title}}. {{lang.phrases.no_av_feat}}");
|
||||
{% endif %}
|
||||
});
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
<label for="{{id}}" title="{{title}}" class="{{id}}" style="{{style}}" data-help="{{title}}">{{desc}}</label><input name="{{name}}" type="checkbox" id="{{id}}" value="{{value|e}}" {{checked}} {{disabled}} />
|
||||
{%- endmacro %}
|
||||
|
||||
{%- macro select(id, values, name='', required='', first='', class='', selected='', title='', disabled='true') -%}
|
||||
{%- macro select(id, values, name='', required='', first='', class='', selected='', title='', disabled='true', is_servers='') -%}
|
||||
{% if name == '' %}
|
||||
{% set name = id %}
|
||||
{% endif %}
|
||||
|
@ -30,14 +30,26 @@
|
|||
<select {{required}} name="{{name}}" id="{{id}}" title="{{title}}" data-help="{{title}}" class="{{class}}">
|
||||
{% if first %}
|
||||
<option {{disabled}} selected>{{first}}</option>
|
||||
{% else %}
|
||||
<option {{disabled}} selected>------</option>
|
||||
{% endif %}
|
||||
{% if is_servers %}
|
||||
{% for value in values %}
|
||||
{% if value.2 == selected|string() %}
|
||||
<option value="{{value.2}}" selected>{{value.1}}</option>
|
||||
{% else %}
|
||||
<option value="{{ value.2 }}">{{ value.1 }}</option>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{% for v, des in values.items() %}
|
||||
{% if v == selected|string() %}
|
||||
<option value="{{v}}" selected>{{des}}</option>
|
||||
{% else %}
|
||||
<option value="{{v}}">{{des}}</option>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% for v, des in values.items() %}
|
||||
{% if v == selected|string() %}
|
||||
<option value="{{v}}" selected>{{des}}</option>
|
||||
{% else %}
|
||||
<option value="{{v}}">{{des}}</option>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</select>
|
||||
{%- endmacro %}
|
||||
|
||||
|
|
|
@ -45,8 +45,8 @@
|
|||
intro: "Roles description",
|
||||
},
|
||||
{% endif %}
|
||||
{% if role < 3 %}
|
||||
{% if role > 1 %}
|
||||
{% if user_params['role'] < 3 %}
|
||||
{% if user_params['role'] > 1 %}
|
||||
{% set board_id = 4 %}
|
||||
{% else %}
|
||||
{% set board_id = 7 %}
|
||||
|
@ -57,7 +57,7 @@
|
|||
intro: "Last log entries",
|
||||
},
|
||||
{% endif %}
|
||||
{% if role == 1 %}
|
||||
{% if user_params['role'] == 1 %}
|
||||
{
|
||||
element: document.querySelector('#overview-subs'),
|
||||
title: "Dashboard #8",
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
{% if user %}
|
||||
<span id="show-user-settings-button" class="user-circle login" title="{{lang.words.user3|title()}} {{lang.words.settings}}" style="margin-top: 5px;">{{user}}</span>
|
||||
{% if user_params['user'] %}
|
||||
<span id="show-user-settings-button" class="user-circle login" title="{{lang.words.user3|title()}} {{lang.words.settings}}" style="margin-top: 5px;">{{user_params['user']}}</span>
|
||||
{% else %}
|
||||
<a href=/app/login title="Login" class="login"> Login</a>
|
||||
{% endif %}
|
||||
|
|
|
@ -10,12 +10,12 @@
|
|||
<nav id="menu">
|
||||
<ul class="menu">
|
||||
<li><a href="{{ url_for('overview.index') }}" title="{{lang.menu_links.overview.title}}" class="overview-link ">{{lang.menu_links.overview.link}}</a></li>
|
||||
{% if '5' in user_services %}
|
||||
{% if role <= 3 %}
|
||||
{% if '5' in user_params['user_services'] %}
|
||||
{% if user_params['role'] <= 3 %}
|
||||
{% endif %}
|
||||
<li><a href="{{ url_for('ha.cluster_function', service='cluster') }}" title="{{lang.menu_links.ha.title}}" class="keepalived">HA {{lang.words.cluster}}</a></li>
|
||||
{% endif %}
|
||||
{% if '1' in user_services %}
|
||||
{% if '1' in user_params['user_services'] %}
|
||||
<li class="p_menu">
|
||||
<a href="{{ url_for('service.services', service='haproxy') }}" title="{{lang.menu_links.hapservers.haproxy.title}}" class="config-show">HAProxy</a>
|
||||
<ul class="v_menu">
|
||||
|
@ -25,7 +25,7 @@
|
|||
<li><a href="{{ url_for('logs.logs', service='haproxy') }}" title="HAProxy {{lang.menu_links.logs.title}}" class="logs head-submenu">{{lang.menu_links.logs.link}}</a></li>
|
||||
<li><a href="{{ url_for('runtime.runtimeapi') }}" title="Runtime API" class="runtime head-submenu">Runtime API</a></li>
|
||||
<li><a href="{{ url_for('metric.metrics', service='haproxy') }}" title="HAProxy {{lang.menu_links.metrics.title}}" class="metrics head-submenu">{{lang.menu_links.metrics.link}}</a></li>
|
||||
{% if role <= 3 %}
|
||||
{% if user_params['role'] <= 3 %}
|
||||
<li><a href="{{ url_for('add.add', service='haproxy') }}#proxy" title="{{lang.menu_links.add_proxy.title}}" class="add-proxy head-submenu" id="add1">{{lang.menu_links.add_proxy.link}}</a></li>
|
||||
<li><a href="{{ url_for('config.versions', service='haproxy') }}" title="{{lang.menu_links.versions.haproxy.title}}" class="version head-submenu">{{lang.menu_links.versions.link}}</a></li>
|
||||
<li><a href="{{ url_for('add.add', service='haproxy') }}#ssl" title="{{lang.menu_links.ssl.title}}" class="cert head-submenu" id="add3">{{lang.menu_links.ssl.link}}</a></li>
|
||||
|
@ -35,7 +35,7 @@
|
|||
</ul>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if '2' in user_services %}
|
||||
{% if '2' in user_params['user_services'] %}
|
||||
<li class="p_menu">
|
||||
<a href="{{ url_for('service.services', service='nginx') }}" title="{{lang.menu_links.hapservers.nginx.title}}" class="nginx-menu">NGINX</a>
|
||||
<ul class="v_menu">
|
||||
|
@ -44,7 +44,7 @@
|
|||
<li><a href="{{ url_for('main.stats', service='nginx') }}" title="{{lang.menu_links.stats.nginx.title}}" class="stats head-submenu">{{lang.menu_links.stats.link}}</a></li>
|
||||
<li><a href="{{ url_for('logs.logs', service='nginx') }}" title="NGINX {{lang.menu_links.logs.title}}" class="logs head-submenu">{{lang.menu_links.logs.link}}</a></li>
|
||||
<li><a href="{{ url_for('metric.metrics', service='nginx') }}" title="NGINX {{lang.menu_links.metrics.title}}" class="metrics head-submenu">{{lang.menu_links.metrics.link}}</a></li>
|
||||
{% if role <= 3 %}
|
||||
{% if user_params['role'] <= 3 %}
|
||||
<li><a href="{{ url_for('add.add', service='nginx') }}#proxy" title="{{lang.menu_links.add_proxy.title}}" class="add-proxy head-submenu">{{lang.menu_links.add_proxy.link}}</a></li>
|
||||
<li><a href="{{ url_for('config.versions', service='nginx') }}" title="{{lang.menu_links.versions.nginx.title}}" class="version head-submenu">{{lang.menu_links.versions.link}}</a></li>
|
||||
<li><a href="{{ url_for('add.add', service='haproxy') }}?service=nginx#ssl" title="{{lang.menu_links.ssl.title}}" class="cert head-submenu">{{lang.menu_links.ssl.link}}</a></li>
|
||||
|
@ -53,7 +53,7 @@
|
|||
</ul>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if '4' in user_services %}
|
||||
{% if '4' in user_params['user_services'] %}
|
||||
<li class="p_menu">
|
||||
<a href="{{ url_for('service.services', service='apache') }}" title="{{lang.menu_links.hapservers.apache.title}}" class="apache-menu">Apache</a>
|
||||
<ul class="v_menu">
|
||||
|
@ -62,15 +62,15 @@
|
|||
<li><a href="{{ url_for('main.stats', service='apache') }}" title="{{lang.menu_links.stats.apache.title}}" class="stats head-submenu">{{lang.menu_links.stats.link}}</a></li>
|
||||
<li><a href="{{ url_for('logs.logs', service='apache') }}" title="Apache {{lang.menu_links.logs.title}}" class="logs head-submenu">{{lang.menu_links.logs.link}}</a></li>
|
||||
<li><a href="{{ url_for('metric.metrics', service='apache') }}" title="Apache {{lang.menu_links.metrics.title}}" class="metrics head-submenu">{{lang.menu_links.metrics.link}}</a></li>
|
||||
{% if role <= 3 %}
|
||||
{% if user_params['role'] <= 3 %}
|
||||
<li><a href="{{ url_for('config.versions', service='apache') }}" title="{{lang.menu_links.versions.apache.title}}" class="version head-submenu">{{lang.menu_links.versions.link}}</a></li>
|
||||
<li><a href="{{ url_for('add.add', service='haproxy') }}?service=apache#ssl" title="{{lang.menu_links.ssl.title}}" class="cert head-submenu" id="add3">{{lang.menu_links.ssl.link}}</a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if '3' in user_services %}
|
||||
{% if role <= 2 %}
|
||||
{% if '3' in user_params['user_services'] %}
|
||||
{% if user_params['role'] <= 2 %}
|
||||
<li class="p_menu">
|
||||
<a href="{{ url_for('service.services', service='keepalived') }}" title="{{lang.menu_links.hapservers.keepalived.title}}" class="ha">Keepalived</a>
|
||||
<ul class="v_menu">
|
||||
|
@ -88,7 +88,7 @@
|
|||
<li><a href="{{ url_for('smon.smon') }}" title="{{lang.menu_links.monitoring.smon.dashboard}}" class="overview-link head-submenu">{{lang.menu_links.monitoring.smon.dashboard}}</a></li>
|
||||
<li><a href="{{ url_for('smon.status_page') }}" title="{{lang.menu_links.monitoring.smon.status_page}}" class="overview-link head-submenu">{{lang.menu_links.monitoring.smon.status_page}}</a></li>
|
||||
<li><a href="{{ url_for('smon.smon_history') }}" title="{{lang.menu_links.monitoring.smon.history}}" class="lists head-submenu">{{lang.menu_links.monitoring.smon.history}}</a></li>
|
||||
{% if role <= 3 %}
|
||||
{% if user_params['role'] <= 3 %}
|
||||
<li><a href="{{ url_for('smon.smon_admin') }}" title="{{lang.menu_links.monitoring.smon.admin}}" class="edit head-submenu">{{lang.menu_links.monitoring.smon.admin}}</a></li>
|
||||
<li><a href="{{ url_for('checker.checker_settings') }}" title="Checker: {{lang.words.settings}}" class="checker head-submenu">Checker: {{lang.words.settings|title()}}</a></li>
|
||||
{% endif %}
|
||||
|
@ -97,7 +97,7 @@
|
|||
<li><a href="{{ url_for('main.nettools') }}" title="{{lang.menu_links.monitoring.net_tools}}" class="net-tools head-submenu">{{lang.menu_links.monitoring.net_tools}}</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
{% if role <= 2 %}
|
||||
{% if user_params['role'] <= 2 %}
|
||||
<li class="p_menu">
|
||||
<a href="{{ url_for('install.install_monitoring') }}" title="{{lang.menu_links.servers.title}}" class="hap-menu">{{lang.words.installation|title()}}</a>
|
||||
<ul class="v_menu">
|
||||
|
@ -118,7 +118,7 @@
|
|||
</ul>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% if role <= 1 %}
|
||||
{% if user_params['role'] <= 1 %}
|
||||
<li class="p_menu" id="admin-area">
|
||||
<a href="{{ url_for('admin.admin') }}#users" title="{{lang.menu_links.admin_area.title}}" class="admin">{{lang.menu_links.admin_area.link}}</a>
|
||||
<ul class="v_menu">
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
<select autofocus required name="serv" id="{{ select_id }}">
|
||||
<option disabled>------</option>
|
||||
{% for select in selects %}
|
||||
{% if select.2 == serv %}
|
||||
<option value="{{ select.2 }}" selected>{{ select.1 }}</option>
|
||||
{% else %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</select>
|
||||
|
|
@ -45,8 +45,8 @@
|
|||
<td class="padding10 first-collumn">
|
||||
<select autofocus required name="haproxyaddserv" id="haproxyaddserv">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in servers %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% for select in user_params['servers'] %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
|
@ -54,7 +54,7 @@
|
|||
{{ checkbox('haproxy_docker', title=lang.admin_page.desc.install_as_docker) }}
|
||||
</td>
|
||||
<td class="syn-flood-protection-field">
|
||||
{{ checkbox('syn_flood', title=lang.words.enable|title() + ' SYN-flood '+ lang.words.protection, checked='checked') }}
|
||||
{{ checkbox('haproxy_syn_flood', title=lang.words.enable|title() + ' SYN-flood '+ lang.words.protection, checked='checked') }}
|
||||
</td>
|
||||
<td>
|
||||
<span class="ui-button ui-widget ui-corner-all" id="install" title="{{lang.words.install|title()}} HAProxy">{{lang.words.install|title()}}</span>
|
||||
|
@ -80,8 +80,8 @@
|
|||
<td class="padding10 first-collumn">
|
||||
<select autofocus required name="nginxaddserv" id="nginxaddserv">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in servers %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% for select in user_params['servers'] %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
|
@ -115,8 +115,8 @@
|
|||
<td class="padding10 first-collumn">
|
||||
<select autofocus required name="apacheaddserv" id="apacheaddserv">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in servers %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% for select in user_params['servers'] %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
|
@ -145,7 +145,7 @@
|
|||
</h4>
|
||||
</div>
|
||||
{% else %}
|
||||
{% if role|int() == 1 %}
|
||||
{% if user_params['role']|int() == 1 %}
|
||||
<table id="grafana-table">
|
||||
<caption><i class="fas fa-chart-bar caption-icon2"></i><h3>Grafana {{lang.words.and}} Prometheus {{lang.words.servers}}</h3></caption>
|
||||
<tr class="overviewHead">
|
||||
|
@ -172,7 +172,7 @@
|
|||
<td></td>
|
||||
<td>
|
||||
{% if grafana != "active" %}
|
||||
<span class="ui-button ui-widget ui-corner-all" id="grafna_install" title="{{lang.words.install|title()}} Grafana {{lang.words.and}} Prometheus {{lang.words.servers}}">{{lang.words.install|title()}}</span>
|
||||
<span class="ui-button ui-widget ui-corner-all" id="grafana_install" title="{{lang.words.install|title()}} Grafana {{lang.words.and}} Prometheus {{lang.words.servers}}">{{lang.words.install|title()}}</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
|
@ -198,8 +198,8 @@
|
|||
<td class="padding10 first-collumn">
|
||||
<select autofocus required name="haproxy_exp_addserv" id="haproxy_exp_addserv">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in servers %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% for select in user_params['servers'] %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
|
@ -223,14 +223,14 @@
|
|||
<td id="cur_nginx_exp_ver" class="padding10 first-collumn"></td>
|
||||
<td class="padding10 first-collumn" style="width: 20%;">
|
||||
{% set values = dict() %}
|
||||
{% set values = {'0.6.0':'0.6.0', '0.7.0':'0.7.0', '0.9.0':'0.9.0', '0.10.0':'0.10.0', '0.11.0':'0.11.0'} %}
|
||||
{{ select('nginxexpver', values=values, selected='0.11.0') }}
|
||||
{% set values = {'0.7.0':'0.7.0', '0.9.0':'0.9.0', '0.10.0':'0.10.0', '0.11.0':'0.11.0', '1.0.0':'1.0.0', '1.1.0':'1.1.0'} %}
|
||||
{{ select('nginxexpver', values=values, selected='1.1.0') }}
|
||||
</td>
|
||||
<td class="padding10 first-collumn">
|
||||
<select autofocus required name="nginx_exp_addserv" id="nginx_exp_addserv">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in servers %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% for select in user_params['servers'] %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
|
@ -254,14 +254,14 @@
|
|||
<td id="cur_apache_exp_ver" class="padding10 first-collumn"></td>
|
||||
<td class="padding10 first-collumn" style="width: 20%;">
|
||||
{% set values = dict() %}
|
||||
{% set values = {'0.10.0':'0.10.0', '0.13.4':'0.13.4', '1.0.1':'1.0.1'} %}
|
||||
{{ select('apacheexpver', values=values, selected='1.0.1') }}
|
||||
{% set values = {'0.10.0':'0.10.0', '0.13.4':'0.13.4', '1.0.4':'1.0.4'} %}
|
||||
{{ select('apacheexpver', values=values, selected='1.0.4') }}
|
||||
</td>
|
||||
<td class="padding10 first-collumn">
|
||||
<select autofocus required name="apache_exp_addserv" id="apache_exp_addserv">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in servers %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% for select in user_params['servers'] %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
|
@ -291,8 +291,8 @@
|
|||
<td class="padding10 first-collumn">
|
||||
<select autofocus required name="keepalived_exp_addserv" id="keepalived_exp_addserv">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in servers %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% for select in user_params['servers'] %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
|
@ -316,14 +316,14 @@
|
|||
<td id="cur_node_exp_ver" class="padding10 first-collumn"></td>
|
||||
<td class="padding10 first-collumn" style="width: 20%;">
|
||||
{% set values = dict() %}
|
||||
{% set values = {'1.2.0':'1.2.0', '1.2.2':'1.2.2', '1.3.0':'1.3.0', '1.3.1':'1.3.1', '1.5.0':'1.5.0', '1.6.1':'1.6.1'} %}
|
||||
{{ select('nodeexpver', values=values, selected='1.6.1') }}
|
||||
{% set values = {'1.2.0':'1.2.0', '1.2.2':'1.2.2', '1.3.0':'1.3.0', '1.3.1':'1.3.1', '1.5.0':'1.5.0', '1.6.1':'1.6.1', '1.7.0':'1.7.0'} %}
|
||||
{{ select('nodeexpver', values=values, selected='1.7.0') }}
|
||||
</td>
|
||||
<td class="padding10 first-collumn">
|
||||
<select autofocus required name="node_exp_addserv" id="node_exp_addserv">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in servers %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% for select in user_params['servers'] %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
|
@ -363,8 +363,8 @@
|
|||
<td class="padding10 first-collumn">
|
||||
<select autofocus required name="geoipserv" id="geoipserv">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in servers %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% for select in user_params['servers'] %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
</td>
|
||||
|
|
|
@ -321,6 +321,7 @@
|
|||
"resource_record_type": "Resource Record Type",
|
||||
"add_to_smon_desc": "Add the server for checking by SMON ping",
|
||||
"create_page_status": "Create status page",
|
||||
"not_in_cluster": "Not in a cluster",
|
||||
}
|
||||
%}
|
||||
{% set roles = {
|
||||
|
|
|
@ -321,6 +321,7 @@
|
|||
"resource_record_type": "Type d'enregistrement de ressource",
|
||||
"add_to_smon_desc": "Ajouter le serveur pour vérification par SMON ping",
|
||||
"create_page_status": "Créer une page de statut",
|
||||
"not_in_cluster": "Pas dans un cluster",
|
||||
}
|
||||
%}
|
||||
{% set roles = {
|
||||
|
|
|
@ -321,6 +321,7 @@
|
|||
"resource_record_type": "Tipo de registro de recurso",
|
||||
"add_to_smon_desc": "Adicione o servidor para verificação por ping SMON",
|
||||
"create_page_status": "Criar página de status",
|
||||
"not_in_cluster": "Não em um cluster",
|
||||
}
|
||||
%}
|
||||
{% set roles = {
|
||||
|
|
|
@ -321,6 +321,7 @@
|
|||
"resource_record_type": "Тип записи ресурса",
|
||||
"add_to_smon_desc": "Добавить сервер для проверки с помощью SMON ping",
|
||||
"create_page_status": "Создать страницу статуса",
|
||||
"not_in_cluster": "Не в кластере",
|
||||
}
|
||||
%}
|
||||
{% set roles = {
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
<tr>
|
||||
<td class="padding10 first-collumn" style="width: 10%;">
|
||||
<form action="" method="post" id="show_log_form">
|
||||
{% include 'include/select.html' %}
|
||||
{{ select('serv', values=servers, is_servers='true', selected=serv) }}
|
||||
</td>
|
||||
{% if not waf %}
|
||||
<td id="remote_log_files"></td>
|
||||
|
|
|
@ -24,7 +24,7 @@
|
|||
<td class="padding10 first-collumn" style="width: 10%;">
|
||||
<form action="" method="post" id="show_internal_log_form">
|
||||
<select autofocus required name="serv" id="viewlogs">
|
||||
<option selected>------</option>
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
{% if select.0 == serv %}
|
||||
<option value="{{ select.0 }}" selected>{{ select.1 }}</option>
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
<script src="/inc/metrics.js"></script>
|
||||
<script src="/inc/chart.min-4.3.0.js"></script>
|
||||
<input type="hidden" id="service" value="{{service}}">
|
||||
{% if user_status == 0 %}
|
||||
{% if user_subscription['user_status'] == 0 %}
|
||||
{% include 'include/no_sub.html' %}
|
||||
{% elif services == '0' %}
|
||||
<div style="text-align: center;">
|
||||
|
|
|
@ -3,21 +3,6 @@
|
|||
{% block h2 %}{{ lang.menu_links.monitoring.net_tools }}{% endblock %}
|
||||
{% block content %}
|
||||
{% from 'include/input_macros.html' import input, checkbox, select %}
|
||||
<style>
|
||||
.ping_pre {
|
||||
display: block;
|
||||
padding: 10px;
|
||||
margin: 0 0 10px;
|
||||
font-family: 'Courier New', monospace;
|
||||
font-size: 14px;
|
||||
line-height: 1.42857143;
|
||||
color: #333;
|
||||
word-break: break-all;
|
||||
word-wrap: break-word;
|
||||
background-color: #f5f5f5;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
</style>
|
||||
<script src="/inc/nettools.js"></script>
|
||||
<form name="nettools_icmp_form" id="nettools_icmp_form" method="post" action="/app/nettols/icmp">
|
||||
<table class="overview">
|
||||
|
@ -33,7 +18,7 @@
|
|||
<select autofocus required name="server_from" id="nettools_icmp_server_from">
|
||||
<option disabled selected>------</option>
|
||||
<option value="localhost">Roxy-WI</option>
|
||||
{% for server in servers %}
|
||||
{% for server in user_params['servers'] %}
|
||||
<option value="{{ server.2 }}">{{ server.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
|
@ -65,7 +50,7 @@
|
|||
<select autofocus required name="server_from" id="nettools_telnet_server_from">
|
||||
<option disabled selected>------</option>
|
||||
<option value="localhost">Roxy-WI</option>
|
||||
{% for server in servers %}
|
||||
{% for server in user_params['servers'] %}
|
||||
<option value="{{ server.2 }}">{{ server.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
|
@ -97,7 +82,7 @@
|
|||
<select autofocus required name="server_from" id="nettools_nslookup_server_from">
|
||||
<option disabled selected>------</option>
|
||||
<option value="localhost">Roxy-WI</option>
|
||||
{% for server in servers %}
|
||||
{% for server in user_params['servers'] %}
|
||||
<option value="{{ server.2 }}">{{ server.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
|
@ -106,7 +91,7 @@
|
|||
{% set values = dict() %}
|
||||
{% set values = {'A':'A','AAA':'AAA', 'CNAME':'CNAME', 'MX':'MX', 'TXT':'TXT', 'PTR':'PTR', 'SRV':'SRV',
|
||||
'SOA':'SOA', 'CAA':'CAA'} %}
|
||||
{{ select('nettools_nslookup_record_type', values=values, selected='A', required='required') }}
|
||||
{{ select('nettools_nslookup_record_type', values=values, selected='A', required='required') }}
|
||||
</td>
|
||||
<td class="padding10 first-collumn">
|
||||
{{ input('nettools_nslookup_name', title='Enter a DNS name') }}
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
$("#secIntervals").css("display", "none");
|
||||
var ip = []
|
||||
var hostnamea = []
|
||||
{% for s in servers %}
|
||||
{% for s in user_params['servers'] %}
|
||||
ip.push("{{s[2]}}")
|
||||
var host = "{{s[2]}}"
|
||||
host = host.replace(/\./g, '\\.');
|
||||
|
@ -24,7 +24,7 @@
|
|||
<table class="overview-wi" id="overview-roxy-wi">
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn-wi">
|
||||
{% if role <= 2 %}
|
||||
{% if user_params['role'] <= 2 %}
|
||||
<a href="servers#servers" title="{{lang.words.manage|title()}} {{lang.words.servers}}">{{lang.words.servers|title()}}</a>
|
||||
{% else %}
|
||||
{{lang.words.servers|title()}}
|
||||
|
@ -61,14 +61,14 @@
|
|||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% for s in servers %}
|
||||
{% for s in user_params['servers'] %}
|
||||
<tr class="{{ loop.cycle('odd', 'even') }}" id="{{s[2]}}"></tr>
|
||||
{% endfor %}
|
||||
</table>
|
||||
<table class="overview-wi" id="overview-load">
|
||||
<tr class="overviewHead" style="height: 30px;">
|
||||
<td class="padding10 first-collumn-wi" colspan="2">
|
||||
{% if role <= 1 %}
|
||||
{% if user_params['role'] <= 1 %}
|
||||
<a href="/app/logs/internal" title="{{lang.words.view|title()}} Roxy-WI {{lang.words.logs}}" class="logs_link">
|
||||
Roxy-WI {{lang.words.server_status}}
|
||||
</a>
|
||||
|
@ -97,7 +97,7 @@
|
|||
<thead>
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn-wi" colspan=2>
|
||||
{% if role <= 1 %}
|
||||
{% if user_params['role'] <= 1 %}
|
||||
<a href="admin#tools" title="{{lang.words.view|title()}} {{lang.words.services}} {{lang.words.status}}" class="logs_link">
|
||||
Roxy-WI {{lang.words.services_status}}
|
||||
</a>
|
||||
|
@ -114,11 +114,11 @@
|
|||
</thead>
|
||||
<tbody id="services_ovw"></tbody>
|
||||
</table>
|
||||
{% if role <= 2 %}
|
||||
{% if role == 2 %}
|
||||
{% if user_params['role'] <= 2 %}
|
||||
{% if user_params['role'] == 2 %}
|
||||
{% set admin_uri = 'servers' %}
|
||||
{% elif role == 1 %}
|
||||
{% set admin_uri = 'users.py' %}
|
||||
{% elif user_params['role'] == 1 %}
|
||||
{% set admin_uri = 'admin' %}
|
||||
{% endif %}
|
||||
<table class="overview-wi" id="overview-users">
|
||||
<thead>
|
||||
|
@ -148,11 +148,11 @@
|
|||
<tbody id="users-table"></tbody>
|
||||
</table>
|
||||
{% endif %}
|
||||
{% if role <= 1 %}
|
||||
{% if user_params['role'] <= 1 %}
|
||||
<table class="overview-wi" id="overview-groups">
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn-wi">
|
||||
<a href="/app/users#groups" title="Manage groups" class="logs_link">{{lang.words.groups|title()}}</a>
|
||||
<a href="/app/users#groups" title="{{lang.words.manage|title()}} {{lang.words.groups3}}" class="logs_link">{{lang.words.groups|title()}}</a>
|
||||
</td>
|
||||
<td class="second-collumn" style="width: 40%">{{lang.words.desc|title()}}</td>
|
||||
<td>
|
||||
|
@ -204,11 +204,11 @@
|
|||
{% endfor %}
|
||||
</table>
|
||||
{% endif %}
|
||||
{% if role <= 2 %}
|
||||
{% if user_params['role'] <= 2 %}
|
||||
<script>ShowOverviewLogs();</script>
|
||||
<table class="overview-wi" id="overview-logs"></table>
|
||||
{% endif %}
|
||||
{% if role <= 1 %}
|
||||
{% if user_params['role'] <= 1 %}
|
||||
<table class="overview-wi" id="overview-subs">
|
||||
<tr class="overviewHead" style="height: 30px;">
|
||||
<td class="padding10 first-collumn-wi" colspan="2">
|
||||
|
|
|
@ -29,10 +29,10 @@
|
|||
</div>
|
||||
{% else %}
|
||||
<div id="up-pannel">
|
||||
{% if servers|length == 0 %}
|
||||
{% if user_params['servers']|length == 0 %}
|
||||
{% include 'include/getstarted.html' %}
|
||||
{% endif %}
|
||||
{% for s in servers %}
|
||||
{% for s in user_params['servers'] %}
|
||||
<div id="div-server-{{s.0}}" class="div-server-hapwi
|
||||
{%- if port_scanner == 'active' %}
|
||||
div-server-head-up
|
||||
|
@ -64,7 +64,7 @@
|
|||
{% else %}
|
||||
{{s.1}}
|
||||
{% endif %}
|
||||
{% if role <= 2 %}
|
||||
{% if user_params['role'] <= 2 %}
|
||||
<span class="server-action"></span>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
@ -93,7 +93,7 @@
|
|||
<br />
|
||||
</div>
|
||||
<div class="server-act-links" id="server-{{s.0}}">
|
||||
{% if role <= 2 %}
|
||||
{% if user_params['role'] <= 2 %}
|
||||
{% set portscanner_enable_id = 'portscanner_enable-' + s.0|string() %}
|
||||
{% set portscanner_notify_id = 'portscanner_notify-' + s.0|string() %}
|
||||
{% set portscanner_history_id = 'portscanner_history-' + s.0|string() %}
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
{% block title %}Runtime API{% endblock %}
|
||||
{% block h2 %}Runtime API{% endblock %}
|
||||
{% block content %}
|
||||
{% from 'include/input_macros.html' import input, checkbox %}
|
||||
{% from 'include/input_macros.html' import input, checkbox, select %}
|
||||
<link href="/inc/css/table-6.3.9.css" rel="stylesheet" type="text/css">
|
||||
<script type="text/javascript" charset="utf8" src="/inc/dataTables.min.js"></script>
|
||||
<script type="text/javascript" charset="utf8" src="/inc/runtimeapi.js"></script>
|
||||
<div id="tabs">
|
||||
<ul>
|
||||
<li><a href="#runtimeapi" title="Runtime API - Roxy-WI">Runtime API</a></li>
|
||||
{% if role <= 3 %}
|
||||
{% if user_params['role'] <= 3 %}
|
||||
<li><a href="#maxconn" title="Runtime API: {{lang.words.change|title()}} Maxconn - Roxy-WI">{{lang.words.change|title()}} Maxconn</a></li>
|
||||
<li><a href="#servers" title="Runtime API: {{lang.words.servers|title()}} - Roxy-WI">{{lang.words.servers|title()}}</a></li>
|
||||
<li><a href="#table" title="Runtime API: Stick Table - Roxy-WI">Stick Table</a></li>
|
||||
|
@ -23,7 +23,7 @@
|
|||
<td class="padding10 first-collumn">{{lang.words.server|title()}}</td>
|
||||
<td>{{lang.words.action|title()}}</td>
|
||||
<td>{{lang.words.command|title()}}</td>
|
||||
{% if role <= 3 %}
|
||||
{% if user_params['role'] <= 3 %}
|
||||
<td class="checkbox-head">{{lang.words.save|title()}} {{lang.words.change}}</td>
|
||||
{% endif %}
|
||||
<td></td>
|
||||
|
@ -31,12 +31,12 @@
|
|||
<tr>
|
||||
<td class="padding10 first-collumn" style="width: 25%;">
|
||||
<form action="" method="post" id="runtimeapiform">
|
||||
{% include 'include/select.html' %}
|
||||
{{ select('serv', values=user_params['servers'], is_servers='true') }}
|
||||
</td>
|
||||
<td style="width: 30%;">
|
||||
<select required name="servaction" id="servaction">
|
||||
<option disabled>{{lang.words.select|title()}} {{lang.words.action}}</option>
|
||||
{% if role <= 3 %}
|
||||
{% if user_params['role'] <= 3 %}
|
||||
<option value="disable">Disable</option>
|
||||
<option value="shutdown">Shutdown</option>
|
||||
<option value="enable">Enable</option>
|
||||
|
@ -52,7 +52,7 @@
|
|||
<td>
|
||||
{{ input('servbackend', value=servbackend, title='Frontend, backend/server, show: info, pools or help') }}
|
||||
</td>
|
||||
{% if role <= 3 %}
|
||||
{% if user_params['role'] <= 3 %}
|
||||
<td class="checkbox">
|
||||
{{ checkbox('save', value='123') }}
|
||||
</td>
|
||||
|
@ -78,7 +78,7 @@
|
|||
{{lang.phrases.read_desc_runtime_api}} <a href="https://roxy-wi.org/description/runtimeapi#commands" title="Runtime API {{lang.words.desc}}" target="_blank">{{lang.words.here}}</a>
|
||||
</div>
|
||||
</div>
|
||||
{% if role <= 3 %}
|
||||
{% if user_params['role'] <= 3 %}
|
||||
<div id="maxconn">
|
||||
<table class="overview">
|
||||
<caption><h3>{{lang.words.global|title()}}</h3></caption>
|
||||
|
@ -93,12 +93,7 @@
|
|||
<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>
|
||||
{{ select('maxconn_global_select', values=user_params['servers'], is_servers='true') }}
|
||||
</td>
|
||||
<td style="width: 75%;">
|
||||
{{ input('maxconnintglobal', title=lang.words.enter|title() + ' maxconn', type="number", required='required') }}
|
||||
|
@ -124,12 +119,7 @@
|
|||
<tr>
|
||||
<td class="padding10 first-collumn" style="width: 20%;">
|
||||
<form action="" method="post" id="maxconnform">
|
||||
<select autofocus required name="serv" id="maxconn_select">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('maxconn_select', values=user_params['servers'], is_servers='true') }}
|
||||
</td>
|
||||
<td style="width: 25%">
|
||||
<select required name="maxconnfront" id="maxconnfront">
|
||||
|
@ -160,12 +150,7 @@
|
|||
<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>
|
||||
{{ select('maxconn_backend_select', values=user_params['servers'], is_servers='true') }}
|
||||
</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>
|
||||
|
@ -200,12 +185,7 @@
|
|||
<tr>
|
||||
<td class="padding10 first-collumn" style="width: 25%;">
|
||||
<form action="" method="post" id="runtimeapiServerIp">
|
||||
<select autofocus required name="ip_select_server" id="ip_select_server">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('ip_select_server', values=user_params['servers'], is_servers='true') }}
|
||||
</td>
|
||||
<td class="padding10 first-collumn">
|
||||
<select required name="ipBackendServer" id="ipBackendServer"></select>
|
||||
|
@ -241,12 +221,7 @@
|
|||
<tr>
|
||||
<td class="padding10 first-collumn" style="width: 25%;">
|
||||
<form action="" method="post" id="runtimeapiip">
|
||||
<select autofocus required name="ip_select" id="ip_select">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('ip_select', values=user_params['servers'], is_servers='true') }}
|
||||
</td>
|
||||
<td class="padding10 first-collumn">
|
||||
<select required name="ipbackend" id="ipbackend"></select>
|
||||
|
@ -277,12 +252,7 @@
|
|||
<tr>
|
||||
<td class="padding10 first-collumn" style="width: 25%;">
|
||||
<form action="" method="post" id="runtimeapiip_delete">
|
||||
<select autofocus required name="ip_select_delete" id="ip_select_delete">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('ip_select_delete', values=user_params['servers'], is_servers='true') }}
|
||||
</td>
|
||||
<td class="padding10 first-collumn">
|
||||
<select required name="ipbackend_delete" id="ipbackend_delete"></select>
|
||||
|
@ -311,12 +281,7 @@
|
|||
<tr>
|
||||
<td class="padding10 first-collumn" style="width: 25%;">
|
||||
<form action="" method="post" id="runtimeapitable">
|
||||
<select autofocus required name="table_serv_select" id="table_serv_select">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('table_serv_select', values=user_params['servers'], is_servers='true') }}
|
||||
</td>
|
||||
<td>
|
||||
<select required name="table_select" id="table_select">
|
||||
|
@ -343,12 +308,7 @@
|
|||
<tr>
|
||||
<td class="padding10 first-collumn" style="width: 25%;">
|
||||
<form action="" method="post" id="runtimeapilist">
|
||||
<select autofocus required name="list_serv_select" id="list_serv_select">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('list_serv_select', values=user_params['servers'], is_servers='true') }}
|
||||
</td>
|
||||
<td>
|
||||
<select required name="list_select" id="list_select">
|
||||
|
@ -374,12 +334,7 @@
|
|||
<tr>
|
||||
<td class="padding10 first-collumn" style="width: 25%;">
|
||||
<form action="" method="post" id="runtimeapisessions">
|
||||
<select autofocus required name="sessions_serv_select" id="sessions_serv_select">
|
||||
<option disabled selected>------</option>
|
||||
{% for select in selects %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('sessions_serv_select', values=user_params['servers'], is_servers='true') }}
|
||||
</td>
|
||||
<td>
|
||||
<button type="submit" name="Enter" value="Enter" id="enter">{{lang.words.w_get|title()}} {{lang.words.sessions}}</button>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
{% block title %}{{lang.words.edit|title()}} {{lang.words.section2}}{% endblock %}
|
||||
{% block h2 %}{{lang.words.edit|title()}} {{lang.words.section2}} {% endblock %}
|
||||
{% block content %}
|
||||
{% if is_serv_protected and role > 2 %}
|
||||
{% if is_serv_protected and user_params['role'] > 2 %}
|
||||
<meta http-equiv="refresh" content="0; url=/app/service/{{service}}">
|
||||
{% else %}
|
||||
<link rel="stylesheet" href="/inc/codemirror/lib/codemirror.css">
|
||||
|
@ -39,12 +39,12 @@
|
|||
{% endfor %}
|
||||
</select>
|
||||
<input type="hidden" value="{{ serv }}" name="serv" id="serv">
|
||||
{% if role <= 3 %}
|
||||
{% if user_params['role'] <= 3 %}
|
||||
<a class="ui-button ui-widget ui-corner-all" title="{{lang.words.edit|title()}} {{lang.words.running}} {{lang.words.config}}" onclick="openSection()">{{lang.words.edit|title()}}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% if config %}
|
||||
{% if role <= 3 %}
|
||||
{% if user_params['role'] <= 3 %}
|
||||
<div id="config" class="left-space">
|
||||
<h4>{{lang.phrases.you_are_editing}} "{{section}}" {{lang.phrases.section_from_server}} {{ serv }}</h4>
|
||||
<form action="/app/config/section/haproxy/{{serv}}/save" name="saveconfig" id="saveconfig" method="post">
|
||||
|
@ -56,7 +56,7 @@
|
|||
<div style="width: 95%;">
|
||||
<textarea name="config" class="config" id="config_text_area" rows="35" cols="100" style="height: 40%">{{ config }}</textarea>
|
||||
</div>
|
||||
{% if not is_serv_protected or role <= 2 %}
|
||||
{% if not is_serv_protected or user_params['role'] <= 2 %}
|
||||
<p>
|
||||
<button type="submit" value="test" name="save" class="btn btn-default" title="{{lang.words.check|title()}} {{lang.words.config}} {{lang.words.without}} {{lang.words.saving}}">{{lang.phrases.check_config}}</button>
|
||||
<button type="submit" value="save" name="save" class="btn btn-default" title="{{lang.phrases.save_title}}">{{lang.words.save|title()}}</button>
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
}
|
||||
});
|
||||
{% for s in services %}
|
||||
{% if 'is not installed' in s.1 or s.1 == '' or user_status == 0 %}
|
||||
{% if 'is not installed' in s.1 or s.1 == '' or user_subscription['user_status'] == 0 %}
|
||||
{% if s.0 == 'roxy-wi-checker' %}
|
||||
$(':regex(id, alert-)').checkboxradio('disable');
|
||||
{% elif s.0 == 'roxy-wi-keep_alive' or s.0 == 'roxy-wi-keep-alive' %}
|
||||
|
@ -72,7 +72,7 @@
|
|||
removeData();
|
||||
{%- if service == 'haproxy' %}
|
||||
{%- for s in servers %}
|
||||
{%- if s.8.0.9 %}
|
||||
{%- if s.7.0.9 %}
|
||||
getChartData(server_ip)
|
||||
getHttpChartData(server_ip)
|
||||
getWafChartData(server_ip)
|
||||
|
@ -82,12 +82,12 @@
|
|||
showOverviewServer('{{s.1}}', server_ip, '{{s.0}}', '{{service}}');
|
||||
{%- if service == 'nginx' %}
|
||||
showNginxConnections(server_ip)
|
||||
{% if s.8.0.21 %}
|
||||
{% if s.7.0.21 %}
|
||||
getNginxChartData(server_ip)
|
||||
{% endif %}
|
||||
{%- elif service == 'apache' %}
|
||||
showApachekBytes(server_ip)
|
||||
{% if s.8.0.27 %}
|
||||
{% if s.7.0.27 %}
|
||||
getApacheChartData(server_ip)
|
||||
{% endif %}
|
||||
{%- elif service == 'haproxy' %}
|
||||
|
@ -163,35 +163,35 @@
|
|||
{% endif %}
|
||||
{% set checker_desc = lang.services.hapservers_desc %}
|
||||
{% if service == 'nginx' %}
|
||||
{% set is_auto_start_enabled = s.8.0.17 %}
|
||||
{% set is_checker_enabled = s.8.0.19 %}
|
||||
{% set is_metrics_enabled = s.8.0.21 %}
|
||||
{% set is_auto_start_enabled = s.7.0.17 %}
|
||||
{% set is_checker_enabled = s.7.0.19 %}
|
||||
{% set is_metrics_enabled = s.7.0.21 %}
|
||||
{% if s.5.0.1 == 'active' or s.5.0.1 == 'Up' %}
|
||||
{% set additional_status_class = 'div-server-head-up' %}
|
||||
{% else %}
|
||||
{% set additional_status_class = 'div-server-head-down' %}
|
||||
{% endif %}
|
||||
{% elif service == 'keepalived' %}
|
||||
{% set is_auto_start_enabled = s.8.0.22 %}
|
||||
{% set is_checker_enabled = s.8.0.23 %}
|
||||
{% set is_auto_start_enabled = s.7.0.22 %}
|
||||
{% set is_checker_enabled = s.7.0.23 %}
|
||||
{% if s.5.0.1 == 'active' %}
|
||||
{% set additional_status_class = 'div-server-head-up' %}
|
||||
{% else %}
|
||||
{% set additional_status_class = 'div-server-head-down' %}
|
||||
{% endif %}
|
||||
{% elif service == 'apache' %}
|
||||
{% set is_auto_start_enabled = s.8.0.25 %}
|
||||
{% set is_checker_enabled = s.8.0.26 %}
|
||||
{% set is_metrics_enabled = s.8.0.27 %}
|
||||
{% set is_auto_start_enabled = s.7.0.25 %}
|
||||
{% set is_checker_enabled = s.7.0.26 %}
|
||||
{% set is_metrics_enabled = s.7.0.27 %}
|
||||
{% if 'Apache' in s.4.0 %}
|
||||
{% set additional_status_class = 'div-server-head-up' %}
|
||||
{% else %}
|
||||
{% set additional_status_class = 'div-server-head-down' %}
|
||||
{% endif %}
|
||||
{% elif service == 'haproxy' %}
|
||||
{% set is_auto_start_enabled = s.8.0.12 %}
|
||||
{% set is_checker_enabled = s.8.0.8 %}
|
||||
{% set is_metrics_enabled = s.8.0.9 %}
|
||||
{% set is_auto_start_enabled = s.7.0.12 %}
|
||||
{% set is_checker_enabled = s.7.0.8 %}
|
||||
{% set is_metrics_enabled = s.7.0.9 %}
|
||||
{% if s.5 != False %}
|
||||
{% set additional_status_class = 'div-server-head-up' %}
|
||||
{% else %}
|
||||
|
@ -216,7 +216,7 @@
|
|||
{% endif %}
|
||||
</span>
|
||||
{% endif %}
|
||||
{% if s.8.0.20 == 1 %}
|
||||
{% if s.7.0.20 == 1 %}
|
||||
<span class="lock" title="{{lang.phrases.server_is_inaccessible_for_editing}}"></span>
|
||||
{% endif %}
|
||||
{% for set in docker_settings %}
|
||||
|
@ -224,7 +224,7 @@
|
|||
<span class="box" title="This server is dockerized"></span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if role <= 3 %}
|
||||
{% if user_params['role'] <= 3 %}
|
||||
<span class="server-action">
|
||||
<a id="start-{{ s.2 }}" class="start" title="{{lang.words.start|title()}} {{service}} {{lang.words.service}}">
|
||||
<span class="service-start" onclick="confirmAjaxAction('start', '{{service}}', '{{s.2}}')"></span>
|
||||
|
@ -262,6 +262,7 @@
|
|||
{% endif %}
|
||||
</div>
|
||||
<div class="server-desc">
|
||||
IP: {{ copy_to_clipboard(value=s.2, style='font-weight: bold') }}
|
||||
{% if s.3 == '' %}
|
||||
{{lang.words.no_desc|title()}}
|
||||
{% else %}
|
||||
|
@ -299,40 +300,52 @@
|
|||
<span id="edit_date_{{s.2}}"></span>
|
||||
</span>
|
||||
<div class="overflow_div">
|
||||
IP: {{ copy_to_clipboard(value=s.2, style='font-weight: bold') }}
|
||||
{% if s.7.0.0 != None %}
|
||||
Master for: <b>{{ copy_to_clipboard(value=s.7.0.1, style='font-weight: bold') }}</b>
|
||||
{% endif %}
|
||||
{% if s.9.0 == '1' %}
|
||||
{% for cluster in clusters %}
|
||||
{% if cluster.haclusterslave.server_id|string() == s.0|string() %}
|
||||
{{lang.words.cluster|title()}}:
|
||||
<a href="/app/ha/cluster/{{cluster.id}}" title="{{lang.words.open|title()}} {{lang.words.cluster}}">{{cluster.name}}</a>
|
||||
{% break %}
|
||||
{% else %}
|
||||
{% if loop.last %}
|
||||
{{lang.phrases.not_in_cluster}}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% for master in master_slave %}
|
||||
{% if master.3 == s.2 %}
|
||||
{{lang.words.slave_for}}: <b>{{ copy_to_clipboard(value=master.0, style='font-weight: bold') }}</b>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if s.8.0 == '1' %}
|
||||
VRRP: <b>
|
||||
{% if s.9.1 == 'MASTER' or s.9.1 == 'BACKUP' or s.9.1 == 'INIT' or s.9.1 == 'FAULT' %}
|
||||
{{s.9.1}}
|
||||
{% if s.8.1 == 'MASTER' or s.8.1 == 'BACKUP' or s.8.1 == 'INIT' or s.8.1 == 'FAULT' %}
|
||||
{{s.8.1}}
|
||||
{% else %}
|
||||
<span title="{{lang.errors.cannot_get_info}} Keepalived" class="help_cursor">{{lang.words.error|title()}}</span>
|
||||
{% endif %}
|
||||
</b>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
<div class="server-act-links" id="server-{{s.8.0.0|string()}}-{{service}}">
|
||||
{% if role <= 2 %}
|
||||
{% set id = 'alert-' + s.8.0.0|string() %}
|
||||
<div class="server-act-links" id="server-{{s.7.0.0|string()}}-{{service}}">
|
||||
{% if user_params['role'] <= 2 %}
|
||||
{% set id = 'alert-' + s.7.0.0|string() %}
|
||||
{% if is_checker_enabled == 1 %}
|
||||
{{ checkbox(id, title=checker_desc, value='1', desc='Checker', checked='checked') }}
|
||||
{% else %}
|
||||
{{ checkbox(id, title=checker_desc, value='1', desc='Checker') }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if role <= 2 and service != 'keepalived' %}
|
||||
{% set id = 'metrics-' + s.8.0.0|string() %}
|
||||
{% if user_params['role'] <= 2 and service != 'keepalived' %}
|
||||
{% set id = 'metrics-' + s.7.0.0|string() %}
|
||||
{% if is_metrics_enabled == 1 %}
|
||||
{{ checkbox(id, title='Collecting metrics is enabled', value='1', desc='Metrics', checked='checked') }}
|
||||
{% else %}
|
||||
{{ checkbox(id, title='Enable collecting metrics', value='1', desc='Metrics') }}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if role <= 2 %}
|
||||
{% set id = 'active-' + s.8.0.0|string() %}
|
||||
{% if user_params['role'] <= 2 %}
|
||||
{% set id = 'active-' + s.7.0.0|string() %}
|
||||
{% if is_auto_start_enabled == 1 %}
|
||||
{{ checkbox(id, title='Auto Start is enabled', value='1', desc='Auto Start', checked='checked') }}
|
||||
{% else %}
|
||||
|
@ -354,7 +367,7 @@
|
|||
<a href="{{ url_for('main.stats', service=service, serv=s.2) }}" class="ui-button ui-widget ui-corner-all" {{stats_id}} title="{{lang.words.view|title()}} {{service}} {{lang.words.statistics}}">{{lang.menu_links.stats.link}}</a>
|
||||
{% endif %}
|
||||
<a href="{{ url_for('logs.logs', service=service) }}" {{logs_id}} class="ui-button ui-widget ui-corner-all" title="{{lang.words.view|title()}} {{service}} {{lang.words.logs}}">{{lang.menu_links.logs.link}}</a>
|
||||
{% if role <= 2 %}
|
||||
{% if user_params['role'] <= 2 %}
|
||||
<a href="{{ url_for('config.versions', service=service, server_ip=s.2) }}" class="ui-button ui-widget ui-corner-all" {{versions_id}} title="{{lang.words.view|title()}}/{{lang.words.rollback|title()}} {{lang.words.to}} {{lang.words.previous}} {{lang.words.config}}">{{lang.menu_links.versions.link}}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
@ -380,9 +393,9 @@
|
|||
{% if serv %}
|
||||
{% for s in servers %}
|
||||
{% if service in ('haproxy', 'nginx', 'apache') %}
|
||||
{% if (service == 'haproxy' and s.8.0.9)
|
||||
or (service == 'nginx' and s.8.0.21)
|
||||
or (service == 'apache' and s.8.0.27) %}
|
||||
{% if (service == 'haproxy' and s.7.0.9)
|
||||
or (service == 'nginx' and s.7.0.21)
|
||||
or (service == 'apache' and s.7.0.27) %}
|
||||
<div class="metrics-time-range">
|
||||
<b>{{lang.words.time_range|title()}}:</b>
|
||||
<select title="Choose time range" id="time-range">
|
||||
|
@ -399,7 +412,7 @@
|
|||
</div>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if service == 'haproxy' and s.8.0.9 %}
|
||||
{% if service == 'haproxy' and s.7.0.9 %}
|
||||
<div id="server_metrics_div" class="chart-container_overview">
|
||||
<canvas id="{{s.2}}" role="img"></canvas>
|
||||
</div>
|
||||
|
@ -411,11 +424,11 @@
|
|||
<canvas id="waf_{{s.2}}" role="img"></canvas>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% elif service == 'nginx' and s.8.0.21 %}
|
||||
{% elif service == 'nginx' and s.7.0.21 %}
|
||||
<div id="nginx_metrics_div" class="chart-container" style="display: block; width: 90%; height: 300px;">
|
||||
<canvas id="nginx_{{s.2}}" role="img"></canvas>
|
||||
</div>
|
||||
{% elif service == 'apache' and s.8.0.27 %}
|
||||
{% elif service == 'apache' and s.7.0.27 %}
|
||||
<div id="apache_metrics_div" class="chart-container" style="display: block; width: 90%; height: 300px;">
|
||||
<canvas id="apache_{{s.2}}" role="img"></canvas>
|
||||
</div>
|
||||
|
|
|
@ -4,21 +4,12 @@
|
|||
{% block content %}
|
||||
{% from 'include/input_macros.html' import input, checkbox, select %}
|
||||
<br />
|
||||
{% if selects|length == 0 %}
|
||||
{% if user_params['servers']|length == 0 %}
|
||||
{% include 'include/getstarted.html' %}
|
||||
{% else %}
|
||||
<form action="" method="post" class="left-space">
|
||||
<input type="hidden" id="service" value="{{service}}" />
|
||||
<select autofocus required name="serv" id="serv">
|
||||
<option disabled>------</option>
|
||||
{% for select in selects %}
|
||||
{% if select.2 == serv %}
|
||||
<option value="{{ select.2 }}" selected>{{ select.1 }}</option>
|
||||
{% else %}
|
||||
<option value="{{ select.2 }}">{{ select.1 }}</option>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</select>
|
||||
{{ select('serv', values=user_params['servers'], is_servers='true', selected=serv) }}
|
||||
<a class="ui-button ui-widget ui-corner-all" id="show" title="{{lang.words.show|title()}} {{lang.words.stats}}" onclick="showStats()">{{lang.words.open|title()}}</a>
|
||||
{% if service != 'nginx' and service != 'apache' %}
|
||||
<div id="stats_filter">
|
||||
|
|
|
@ -83,7 +83,7 @@
|
|||
</div>
|
||||
<p>
|
||||
<a href="/app/waf/{{service}}/{{serv}}/rules" class="ui-button ui-widget ui-corner-all" title="Return to rules management">{{lang.words.back|title()}}</a>
|
||||
{% if role <= 3 %}
|
||||
{% if user_params['role'] <= 3 %}
|
||||
<button type="submit" value="save" name="save" class="btn btn-default" title="{{lang.words.save|title()}} {{lang.words.without}} {{lang.words.reloading}}">{{lang.words.save|title()}}</button>
|
||||
{% if service == 'haproxy' %}
|
||||
<button type="submit" value="" name="" class="btn btn-default">{{lang.phrases.save_and_restart}}</button>
|
||||
|
|
|
@ -29,6 +29,24 @@ $( function() {
|
|||
$('#mail-section-head').click(function () {
|
||||
hideAndShowSettings('mail');
|
||||
});
|
||||
$( "#settings select" ).on('select2:select',function() {
|
||||
var id = $(this).attr('id');
|
||||
var val = $(this).val();
|
||||
updateSettings(id, val);
|
||||
updateSettings(id[1])
|
||||
});
|
||||
$( "#settings input" ).change(function() {
|
||||
var id = $(this).attr('id');
|
||||
var val = $(this).val();
|
||||
if($('#'+id).is(':checkbox')) {
|
||||
if ($('#'+id).is(':checked')){
|
||||
val = 1;
|
||||
} else {
|
||||
val = 0;
|
||||
}
|
||||
}
|
||||
updateSettings(id, val);
|
||||
});
|
||||
});
|
||||
function hideAndShowSettings(section) {
|
||||
var ElemId = $('#' + section + '-section-h3');
|
||||
|
@ -44,3 +62,31 @@ function hideAndShowSettings(section) {
|
|||
$.getScript(awesome);
|
||||
}
|
||||
}
|
||||
function updateSettings(param, val) {
|
||||
try {
|
||||
val = val.replace(/\//g, "92");
|
||||
} catch (e) {
|
||||
val = val;
|
||||
}
|
||||
toastr.clear();
|
||||
$.ajax({
|
||||
url: "/app/admin/setting/" + param,
|
||||
data: {
|
||||
val: val,
|
||||
token: $('#token').val()
|
||||
},
|
||||
type: "POST",
|
||||
success: function (data) {
|
||||
data = data.replace(/\s+/g, ' ');
|
||||
if (data.indexOf('error:') != '-1') {
|
||||
toastr.error(data);
|
||||
} else {
|
||||
toastr.clear();
|
||||
$("#" + param).parent().parent().addClass("update", 1000);
|
||||
setTimeout(function () {
|
||||
$("#" + param).parent().parent().removeClass("update");
|
||||
}, 2500);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1392,7 +1392,6 @@ label {
|
|||
background-position: 800px 0
|
||||
}
|
||||
}
|
||||
|
||||
.animated-background {
|
||||
animation-duration: 2s;
|
||||
animation-fill-mode: forwards;
|
||||
|
@ -1403,4 +1402,15 @@ label {
|
|||
background: linear-gradient(to right, #eeeeee 8%, #bbbbbb 18%, #eeeeee 33%);
|
||||
background-size: 800px 104px;
|
||||
position: relative;
|
||||
}
|
||||
}
|
||||
.ping_pre {
|
||||
padding: 10px;
|
||||
font-family: 'Courier New', monospace;
|
||||
font-size: 14px;
|
||||
line-height: 1.42857143;
|
||||
color: #333;
|
||||
word-break: break-all;
|
||||
word-wrap: break-word;
|
||||
background-color: #f5f5f5;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
|
|
37
inc/ha.js
37
inc/ha.js
|
@ -306,6 +306,7 @@ function saveCluster(jsonData, cluster_id=0, edited=0, reconfigure=0) {
|
|||
let hap_docker = 0;
|
||||
let nginx = 0;
|
||||
let nginx_docker = 0;
|
||||
let apache = 0;
|
||||
req_method = 'POST';
|
||||
if (edited) {
|
||||
req_method = 'PUT';
|
||||
|
@ -331,6 +332,9 @@ function saveCluster(jsonData, cluster_id=0, edited=0, reconfigure=0) {
|
|||
if ($('#nginx_docker').is(':checked')) {
|
||||
nginx_docker = '1';
|
||||
}
|
||||
if ($('#apache').is(':checked')) {
|
||||
apache = '1';
|
||||
}
|
||||
jsonData['cluster_id'] = cluster_id;
|
||||
jsonData['name'] = $('#ha-cluster-name').val();
|
||||
jsonData['desc'] = $('#ha-cluster-desc').val();
|
||||
|
@ -340,6 +344,7 @@ function saveCluster(jsonData, cluster_id=0, edited=0, reconfigure=0) {
|
|||
jsonData['syn_flood'] = syn_flood;
|
||||
jsonData['services'] = {'haproxy': {'enabled': hap, 'docker': hap_docker}};
|
||||
jsonData['services']['nginx'] = {'enabled': nginx, 'docker': nginx_docker};
|
||||
jsonData['services']['apache'] = {'enabled': apache, 'docker': 0};
|
||||
jsonData['router_id'] = $('#router_id-' + cluster_id).val();
|
||||
$.ajax({
|
||||
url: "/app/ha/cluster",
|
||||
|
@ -380,6 +385,9 @@ function Reconfigure(jsonData, cluster_id) {
|
|||
if (servers['services']['nginx']['enabled']) {
|
||||
total_installation = total_installation + 1;
|
||||
}
|
||||
if (servers['services']['apache']['enabled']) {
|
||||
total_installation = total_installation + 1;
|
||||
}
|
||||
var server_creating_title = $("#server_creating1").attr('title');
|
||||
var server_creating = $("#server_creating1").dialog({
|
||||
autoOpen: false,
|
||||
|
@ -401,10 +409,31 @@ function Reconfigure(jsonData, cluster_id) {
|
|||
let progress_step = 100 / total_installation;
|
||||
$.when(installServiceCluster(jsonData, 'keepalived', progress_step, cluster_id)).done(function () {
|
||||
if (servers['services']['haproxy']['enabled']) {
|
||||
installServiceCluster(jsonData, 'haproxy', progress_step, cluster_id);
|
||||
}
|
||||
if (servers['services']['nginx']['enabled']) {
|
||||
installServiceCluster(jsonData, 'nginx', progress_step, cluster_id);
|
||||
$.when(installServiceCluster(jsonData, 'haproxy', progress_step, cluster_id)).done(function () {
|
||||
if (servers['services']['nginx']['enabled']) {
|
||||
$.when(installServiceCluster(jsonData, 'nginx', progress_step, cluster_id)).done(function () {
|
||||
if (servers['services']['apache']['enabled']) {
|
||||
installServiceCluster(jsonData, 'apache', progress_step, cluster_id);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
if (servers['services']['apache']['enabled']) {
|
||||
installServiceCluster(jsonData, 'apache', progress_step, cluster_id);
|
||||
}
|
||||
}
|
||||
});
|
||||
} else {
|
||||
if (servers['services']['nginx']['enabled']) {
|
||||
$.when(installServiceCluster(jsonData, 'nginx', progress_step, cluster_id)).done(function () {
|
||||
if (servers['services']['apache']['enabled']) {
|
||||
installServiceCluster(jsonData, 'apache', progress_step, cluster_id);
|
||||
}
|
||||
});
|
||||
} else {
|
||||
if (servers['services']['apache']['enabled']) {
|
||||
installServiceCluster(jsonData, 'apache', progress_step, cluster_id);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
48
inc/users.js
48
inc/users.js
|
@ -15,7 +15,7 @@ $( function() {
|
|||
$('#apache_install').click(function() {
|
||||
installService('apache');
|
||||
});
|
||||
$('#grafna_install').click(function() {
|
||||
$('#grafana_install').click(function() {
|
||||
$("#ajaxmon").html('');
|
||||
$("#ajaxmon").html(wait_mess);
|
||||
$.ajax({
|
||||
|
@ -688,24 +688,6 @@ $( function() {
|
|||
updateSSH(id[1])
|
||||
sshKeyEnableShow(id[1])
|
||||
});
|
||||
$( "#settings select" ).on('select2:select',function() {
|
||||
var id = $(this).attr('id');
|
||||
var val = $(this).val();
|
||||
updateSettings(id, val);
|
||||
updateSettings(id[1])
|
||||
});
|
||||
$( "#settings input" ).change(function() {
|
||||
var id = $(this).attr('id');
|
||||
var val = $(this).val();
|
||||
if($('#'+id).is(':checkbox')) {
|
||||
if ($('#'+id).is(':checked')){
|
||||
val = 1;
|
||||
} else {
|
||||
val = 0;
|
||||
}
|
||||
}
|
||||
updateSettings(id, val);
|
||||
});
|
||||
$('#new-ssh_enable').click(function() {
|
||||
if ($('#new-ssh_enable').is(':checked')) {
|
||||
$('#ssh_pass').css('display', 'none');
|
||||
|
@ -1347,34 +1329,6 @@ function addGit(dialog_id) {
|
|||
});
|
||||
}
|
||||
}
|
||||
function updateSettings(param, val) {
|
||||
try {
|
||||
val = val.replace(/\//g, "92");
|
||||
} catch (e) {
|
||||
val = val;
|
||||
}
|
||||
toastr.clear();
|
||||
$.ajax({
|
||||
url: "/app/admin/setting/" + param,
|
||||
data: {
|
||||
val: val,
|
||||
token: $('#token').val()
|
||||
},
|
||||
type: "POST",
|
||||
success: function (data) {
|
||||
data = data.replace(/\s+/g, ' ');
|
||||
if (data.indexOf('error:') != '-1') {
|
||||
toastr.error(data);
|
||||
} else {
|
||||
toastr.clear();
|
||||
$("#" + param).parent().parent().addClass("update", 1000);
|
||||
setTimeout(function () {
|
||||
$("#" + param).parent().parent().removeClass("update");
|
||||
}, 2500);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
function sshKeyEnableShow(id) {
|
||||
$('#ssh_enable-'+id).click(function() {
|
||||
if ($('#ssh_enable-'+id).is(':checked')) {
|
||||
|
|
Loading…
Reference in New Issue