mirror of https://github.com/Aidaho12/haproxy-wi
parent
c0e75258d4
commit
99b27b5873
|
@ -779,9 +779,25 @@ def update_db_v_6_3_6():
|
|||
print("Updating... DB has been updated to version 6.3.6.0")
|
||||
|
||||
|
||||
def update_db_v_6_3_8():
|
||||
cursor = conn.cursor()
|
||||
sql = """
|
||||
ALTER TABLE `smon` ADD COLUMN ssl_expire_date varchar(64);
|
||||
"""
|
||||
try:
|
||||
cursor.execute(sql)
|
||||
except Exception as e:
|
||||
if e.args[0] == 'duplicate column name: ssl_expire_date' or str(e) == '(1060, "Duplicate column name \'ssl_expire_date\'")':
|
||||
print('Updating... DB has been updated to version 6.3.8')
|
||||
else:
|
||||
print("An error occurred:", e)
|
||||
else:
|
||||
print("Updating... DB has been updated to version 6.3.8")
|
||||
|
||||
|
||||
def update_ver():
|
||||
try:
|
||||
Version.update(version='6.3.7.0').execute()
|
||||
Version.update(version='6.3.8.0').execute()
|
||||
except Exception:
|
||||
print('Cannot update version')
|
||||
|
||||
|
@ -808,6 +824,7 @@ def update_all():
|
|||
update_db_v_6_3_4()
|
||||
update_db_v_6_3_5()
|
||||
update_db_v_6_3_6()
|
||||
update_db_v_6_3_8()
|
||||
update_ver()
|
||||
|
||||
|
||||
|
|
|
@ -420,6 +420,7 @@ class SMON(BaseModel):
|
|||
slack_channel_id = IntegerField(null=True)
|
||||
ssl_expire_warning_alert = IntegerField(constraints=[SQL('DEFAULT 0')])
|
||||
ssl_expire_critical_alert = IntegerField(constraints=[SQL('DEFAULT 0')])
|
||||
ssl_expire_date = CharField(null=True)
|
||||
|
||||
class Meta:
|
||||
table_name = 'smon'
|
||||
|
|
|
@ -2636,7 +2636,7 @@ def smon_list(user_group):
|
|||
if user_group == 1:
|
||||
query = (SMON.select(
|
||||
SMON.ip, SMON.port, SMON.status, SMON.en, SMON.desc, SMON.response_time, SMON.time_state,
|
||||
SMON.group, SMON.script, SMON.http, SMON.http_status, SMON.body, SMON.body_status
|
||||
SMON.group, SMON.script, SMON.http, SMON.http_status, SMON.body, SMON.body_status, SMON.ssl_expire_date
|
||||
).order_by(SMON.group))
|
||||
else:
|
||||
query = (SMON.select(
|
||||
|
@ -3871,12 +3871,19 @@ def inset_or_update_service_status(
|
|||
out_error(e)
|
||||
|
||||
|
||||
def update_smon_ssl_expire_date(service_ip: str, expire_date: str) -> None:
|
||||
SMON_update = SMON.update(ssl_expire_date=expire_date).where(SMON.ip == service_ip)
|
||||
try:
|
||||
SMON_update.execute()
|
||||
except Exception as e:
|
||||
out_error(e)
|
||||
|
||||
|
||||
def update_smon_alert_status(service_ip: str, alert_value: int, alert: str) -> None:
|
||||
if alert == 'ssl_expire_warning_alert':
|
||||
SMON_update = SMON.update(ssl_expire_warning_alert=alert_value).where(SMON.ip == service_ip)
|
||||
else:
|
||||
SMON_update = SMON.update(ssl_expire_critical_alert=alert_value).where(SMON.ip == service_ip)
|
||||
print(SMON_update)
|
||||
try:
|
||||
SMON_update.execute()
|
||||
except Exception as e:
|
||||
|
|
|
@ -28,6 +28,8 @@ except Exception as e:
|
|||
if serv:
|
||||
if lang == 'ru':
|
||||
title = f'История Port scanner для {serv}'
|
||||
elif lang == 'fr':
|
||||
title = f'Historique du scanner de ports pour {serv}'
|
||||
else:
|
||||
title = f'Port scanner history for {serv}'
|
||||
port_scanner_settings = sql.select_port_scanner_history(serv)
|
||||
|
@ -39,6 +41,8 @@ else:
|
|||
history = ''
|
||||
if lang == 'ru':
|
||||
title = 'Дашборд Port scanner'
|
||||
elif lang == 'fr':
|
||||
title = 'Tableau de bord du scanner de ports'
|
||||
else:
|
||||
title = 'Port scanner dashboard'
|
||||
user_group = roxywi_common.get_user_group(id=1)
|
||||
|
|
|
@ -100,6 +100,8 @@ if serv is not None and form.getvalue('config') is not None:
|
|||
|
||||
if user_params['lang'] == 'ru':
|
||||
title = 'Работа с секциями HAProxy'
|
||||
elif user_params['lang'] == 'fr':
|
||||
title = 'Utilisation des sections de configuration HAProxy'
|
||||
else:
|
||||
title = 'Working with HAProxy config sections'
|
||||
|
||||
|
|
|
@ -38,6 +38,8 @@ if action == 'add':
|
|||
roxywi_auth.page_for_admin(level=3)
|
||||
if lang == 'ru':
|
||||
title = "SMON: Админка"
|
||||
elif lang == 'fr':
|
||||
title = "SMON: Administratrice"
|
||||
else:
|
||||
title = "SMON: Admin"
|
||||
elif action == 'history':
|
||||
|
@ -48,18 +50,24 @@ elif action == 'history':
|
|||
smon = sql.alerts_history('SMON', user_group)
|
||||
if lang == 'ru':
|
||||
title = "SMON: История"
|
||||
elif lang == 'fr':
|
||||
title = "SMON: Histoire"
|
||||
else:
|
||||
title = "SMON: History"
|
||||
elif action == 'checker_history':
|
||||
smon = sql.alerts_history('Checker', user_group)
|
||||
if lang == 'ru':
|
||||
title = "Checker: История"
|
||||
elif lang == 'fr':
|
||||
title = "Checker: Histoire"
|
||||
else:
|
||||
title = "Checker: History"
|
||||
else:
|
||||
smon = sql.smon_list(user_group)
|
||||
if lang == 'ru':
|
||||
title = "SMON: Дашборд"
|
||||
elif lang == 'fr':
|
||||
title = "SMON: Tableau de bord"
|
||||
else:
|
||||
title = "SMON: Dashboard"
|
||||
autorefresh = 1
|
||||
|
|
|
@ -56,14 +56,14 @@
|
|||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
<a class="delete" onclick="confirmDeleteGroup({{ group.group_id }})" title="{{lang.words.delete|title()}} {{lang.words.group}} {{group.name}}" style="cursor: pointer;"></a>
|
||||
<a class="delete" onclick="confirmDeleteGroup({{ group.group_id }})" title="{{lang.words.delete|title()}} {{lang.words.group2}} {{group.name}}" style="cursor: pointer;"></a>
|
||||
</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<br /><span class="add-button" title="Add group" id="add-group-button">+ Add</span>
|
||||
<br /><span class="add-button" title="{{lang.words.add|title()}} {{lang.words.group2}}" id="add-group-button">+ {{lang.words.add|title()}}</span>
|
||||
<br /><br />
|
||||
<div class="add-note alert addName alert-info" style="width: inherit; margin-right: 15px;">
|
||||
{{lang.phrases.read_howto}} <a href="https://roxy-wi.org/howto/roles-and-groups" title="How to use groups and roles" target="_blank">{{lang.words.article}}</a>
|
||||
|
|
|
@ -42,6 +42,8 @@
|
|||
<td class="padding10" style="width: 10%; padding: 7px 7px 7px 10px;">
|
||||
{% if t.1 == 'info' %}
|
||||
{% set color = '#5ad05a' %}
|
||||
{% elif t.1 == 'warning' %}
|
||||
{% set color = '#daa70e' %}
|
||||
{% else %}
|
||||
{% set color = '#be2424' %}
|
||||
{% endif %}
|
||||
|
|
|
@ -1,4 +1,18 @@
|
|||
{% import 'languages/'+lang|default('en')+'.html' as lang %}
|
||||
{% set services_name = {
|
||||
'roxy-wi-checker': { 'name': 'Checker', 'desc': lang.admin_page.desc.checker_desc },
|
||||
'roxy-wi-keep_alive': { 'name': 'Auto start', 'desc': lang.admin_page.desc.auto_start_desc },
|
||||
'roxy-wi-metrics': { 'name': 'Metrics', 'desc': lang.admin_page.desc.metrics_desc },
|
||||
'roxy-wi-portscanner': { 'name': 'Port scanner', 'desc': lang.admin_page.desc.p_s_desc },
|
||||
'roxy-wi-smon': { 'name': 'SMON', 'desc': lang.admin_page.desc.smon_desc },
|
||||
'roxy-wi-socket': { 'name': 'Socket', 'desc': lang.admin_page.desc.socket_desc },
|
||||
'roxy-wi-prometheus-exporter': { 'name': 'Prometheus exporter', 'desc': 'Prometheus exporter exports Roxy-WI metrics' },
|
||||
'prometheus': { 'name': 'Prometheus', 'desc': 'Prometheus server' },
|
||||
'grafana-server': { 'name': 'Grafana', 'desc': 'Grafana server' },
|
||||
'fail2ban': { 'name': 'Fail2ban', 'desc': 'Fail2ban scans log files (e.g. /var/log/apache/error_log) and bans IPs that show the malicious signs' },
|
||||
'rabbitmq-server': { 'name': 'RabbitMQ', 'desc': 'RabbitMQ server' },
|
||||
}
|
||||
%}
|
||||
{% for s in services %}
|
||||
<tr class="{{ loop.cycle('odd', 'even') }}" id="{{s.0}}">
|
||||
<td class="padding10 first-collumn">
|
||||
|
@ -11,7 +25,7 @@
|
|||
<span title="{{s.0}} is not installed"><span class="serverNone server-status"></span></span>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{{s.0[0]|upper}}{{s.0[1:]}}
|
||||
{{services_name[s.0]['name']}}
|
||||
</td>
|
||||
<td class="padding10 first-collumn">
|
||||
{% if 'is not installed' in s.3 or not s.3 %}
|
||||
|
@ -40,24 +54,7 @@
|
|||
{% endif %}
|
||||
</td>
|
||||
<td>
|
||||
{% if s.0 == 'roxy-wi-smon' %}
|
||||
{% set description = lang.admin_page.desc.smon_desc %}
|
||||
{% elif s.0 == 'roxy-wi-checker' %}
|
||||
{% set description = lang.admin_page.desc.checker_desc %}
|
||||
{% elif s.0 == 'roxy-wi-keep_alive' %}
|
||||
{% set description = lang.admin_page.desc.auto_start_desc %}
|
||||
{% elif s.0 == 'roxy-wi-metrics' %}
|
||||
{% set description = lang.admin_page.desc.metrics_desc %}
|
||||
{% elif s.0 == 'roxy-wi-portscanner' %}
|
||||
{% set description = lang.admin_page.desc.p_s_desc %}
|
||||
{% elif s.0 == 'roxy-wi-socket' %}
|
||||
{% set description = lang.admin_page.desc.socket_desc %}
|
||||
{% elif s.0 == 'roxy-wi-prometheus-exporter' %}
|
||||
{% set description = 'Prometheus exporter' %}
|
||||
{% else %}
|
||||
{% set description = s.2 %}
|
||||
{% endif %}
|
||||
{{ description }}
|
||||
{{ services_name[s.0]['desc'] }}
|
||||
</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
</ul>
|
||||
<div id="channels">
|
||||
<table id="checker_table" class="overview">
|
||||
<caption><h3>Telegram {{lang.words.channels}}</h3></caption>
|
||||
<caption><i class="fab fa-telegram caption-icon"></i><h3>Telegram {{lang.words.channels}}</h3></caption>
|
||||
<tr class="overviewHead" style="width: 50%;">
|
||||
<td class="padding10 first-collumn" style="width: 25%;">
|
||||
<span title="Token that has given @father_bot">{{lang.words.token|title()}}</span>
|
||||
|
@ -66,7 +66,7 @@
|
|||
</td>
|
||||
{% endif %}
|
||||
<td>
|
||||
<button title="Send a test message" onclick="checkTelegram({{telegram.id}})">{{lang.words.test|title()}}</button>
|
||||
<button title="{{lang.phrases.send_test_mes}}" onclick="checkTelegram({{telegram.id}})">{{lang.words.test|title()}}</button>
|
||||
</td>
|
||||
<td>
|
||||
<a class="add" onclick="cloneTelegram({{telegram.id}})" id="clone-{{telegram.id}}" title="{{lang.words.w_copy|title()}} {{lang.words.the}} {{lang.words.settings}} {{telegram.chanel_name}}" style="cursor: pointer;"></a>
|
||||
|
@ -80,7 +80,7 @@
|
|||
<br /><span class="add-button" title="{{lang.words.add|title()}} Telegram {{lang.words.channel}}" id="add-telegram-button">+ {{lang.words.add|title()}}</span>
|
||||
<br /><br />
|
||||
<table id="checker_slack_table" class="overview">
|
||||
<caption><h3>Slack {{lang.words.channels|title()}}</h3></caption>
|
||||
<caption><i class="fab fa-slack caption-icon"></i><h3>Slack {{lang.words.channels|title()}}</h3></caption>
|
||||
<tr class="overviewHead" style="width: 50%;">
|
||||
<td class="padding10 first-collumn" style="width: 25%;">
|
||||
<span title="Token that has given with APP registration">{{lang.words.token|title()}}</span>
|
||||
|
@ -132,7 +132,7 @@
|
|||
<br /><span class="add-button" title="{{lang.words.add|title()}} Slack {{lang.words.channel|title()}}" id="add-slack-button">+ {{lang.words.add|title()}}</span>
|
||||
<br /><br />
|
||||
<table class="overview">
|
||||
<caption><h3>{{lang.words.test2|title()}} {{lang.words.message}}</h3></caption>
|
||||
<caption><i class="fas fa-envelope-open-text caption-icon"></i><h3>{{lang.words.test2|title()}} {{lang.words.message}}</h3></caption>
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn" style="width: 45%">{{lang.words.email|title()}}</td>
|
||||
<td style="width: 100%">{{lang.words.web_panel|title()}}</td>
|
||||
|
@ -156,7 +156,7 @@
|
|||
</div>
|
||||
<div id="checker_settings">
|
||||
<table class="overview checker_settings_table" id="checker_haproxy_table">
|
||||
<caption><h3>HAProxy {{lang.words.servers}}</h3></caption>
|
||||
<caption><i class="fas fa-network-wired caption-icon"></i><h3>HAProxy {{lang.words.servers}}</h3></caption>
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn">{{lang.words.server|title()}}</td>
|
||||
<td class="first-collumn" title="{{lang.words.alert|title()}} {{lang.words.via}} Telegram">Telegram</td>
|
||||
|
@ -235,7 +235,7 @@
|
|||
{% endfor %}
|
||||
</table>
|
||||
<table class="overview checker_settings_table" id="checker_nginx_table">
|
||||
<caption><h3>NGINX {{lang.words.servers}}</h3></caption>
|
||||
<caption><i class="fas fa-sitemap caption-icon"></i><h3>NGINX {{lang.words.servers}}</h3></caption>
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn">{{lang.words.server|title()}}</td>
|
||||
<td class="first-collumn" title="{{lang.words.alert|title()}} {{lang.words.via}} Telegram">Telegram</td>
|
||||
|
@ -296,7 +296,7 @@
|
|||
{% endfor %}
|
||||
</table>
|
||||
<table class="overview checker_settings_table" id="checker_apache_table">
|
||||
<caption><h3>Apache {{lang.words.servers}}</h3></caption>
|
||||
<caption><i class="fas fa-feather-alt caption-icon"></i><h3>Apache {{lang.words.servers}}</h3></caption>
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn">{{lang.words.server|title()}}</td>
|
||||
<td class="first-collumn" title="{{lang.words.alert|title()}} {{lang.words.via}} Telegram">Telegram</td>
|
||||
|
@ -357,7 +357,7 @@
|
|||
{% endfor %}
|
||||
</table>
|
||||
<table class="overview checker_settings_table" id="checker_keepalived_table">
|
||||
<caption><h3>Keepalived {{lang.words.servers}}</h3></caption>
|
||||
<caption><i class="fas fa-cloud caption-icon"></i><h3>Keepalived {{lang.words.servers}}</h3></caption>
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn">{{lang.words.server|title()}}</td>
|
||||
<td class="first-collumn" title="{{lang.words.alert|title()}} {{lang.words.via}} Telegram">Telegram</td>
|
||||
|
|
|
@ -3,6 +3,16 @@
|
|||
{% set new_ver = versions.1 %}
|
||||
{% set current_ver_without_dots = versions.2 %}
|
||||
{% set new_ver_without_dots = versions.3 %}
|
||||
{% set services_name = {
|
||||
'roxy-wi-checker': { 'link': 'checker', 'name': 'Checker', 'desc': lang.admin_page.desc.checker_desc },
|
||||
'roxy-wi-keep_alive': { 'link': 'auto_start', 'name': 'Auto start', 'desc': lang.admin_page.desc.auto_start_desc },
|
||||
'roxy-wi-metrics': { 'link': 'metrics', 'name': 'Metrics', 'desc': lang.admin_page.desc.metrics_desc },
|
||||
'roxy-wi-portscanner': { 'link': 'portscanner', 'name': 'Port scanner', 'desc': lang.admin_page.desc.p_s_desc },
|
||||
'roxy-wi-smon': { 'link': 'smon', 'name': 'SMON', 'desc': lang.admin_page.desc.smon_desc },
|
||||
'roxy-wi-socket': { 'link': 'socket', 'name': 'Socket', 'desc': lang.admin_page.desc.socket_desc },
|
||||
'roxy-wi-prometheus-exporter': { 'link': 'prometheus-exporter', 'name': 'Prometheus exporter', 'desc': 'Prometheus exporter exports Roxy-WI metrics' },
|
||||
}
|
||||
%}
|
||||
<tr class="odd">
|
||||
<td class="padding10 first-collumn">
|
||||
Roxy-WI
|
||||
|
@ -38,73 +48,45 @@
|
|||
<tr class="{{ loop.cycle('even', 'odd') }}">
|
||||
{% set is_need_update = 0 %}
|
||||
{% if s.0 == 'roxy-wi-smon' %}
|
||||
{% set service_name = 'SMON' %}
|
||||
{% set service_link = 'smon' %}
|
||||
{% set desc_link = 'https://roxy-wi.org/services/smon' %}
|
||||
{% if s.3|float < smon_ver|float %}
|
||||
{% set is_need_update = 1 %}
|
||||
{% if s.3|float < smon_ver|float %}
|
||||
{% set is_need_update = 1 %}
|
||||
{% endif %}
|
||||
{% elif s.0 == 'roxy-wi-checker' %}
|
||||
{% if s.3|float < checker_ver|float %}
|
||||
{% set is_need_update = 1 %}
|
||||
{% endif %}
|
||||
{% elif s.0 == 'roxy-wi-keep_alive' %}
|
||||
{% if s.3|float < keep_ver|float %}
|
||||
{% set is_need_update = 1 %}
|
||||
{% endif %}
|
||||
{% elif s.0 == 'roxy-wi-metrics' %}
|
||||
{% if s.3|float < metrics_ver|float %}
|
||||
{% set is_need_update = 1 %}
|
||||
{% endif %}
|
||||
{% set description = lang.admin_page.desc.smon_desc %}
|
||||
{% elif s.0 == 'roxy-wi-checker' %}
|
||||
{% set service_name = 'Checker' %}
|
||||
{% set service_link = 'checker' %}
|
||||
{% set desc_link = 'https://roxy-wi.org/services/checker' %}
|
||||
{% if s.3|float < checker_ver|float %}
|
||||
{% set is_need_update = 1 %}
|
||||
{% endif %}
|
||||
{% set description = lang.admin_page.desc.checker_desc %}
|
||||
{% elif s.0 == 'roxy-wi-keep_alive' %}
|
||||
{% set service_name = 'Auto start' %}
|
||||
{% set service_link = 'auto_start' %}
|
||||
{% set desc_link = 'https://roxy-wi.org/services/auto_start' %}
|
||||
{% if s.3|float < keep_ver|float %}
|
||||
{% set is_need_update = 1 %}
|
||||
{% endif %}
|
||||
{% set description = lang.admin_page.desc.auto_start_desc %}
|
||||
{% elif s.0 == 'roxy-wi-metrics' %}
|
||||
{% set service_name = 'Metrics' %}
|
||||
{% set service_link = 'metrics' %}
|
||||
{% set desc_link = 'https://roxy-wi.org/services/metrics' %}
|
||||
{% if s.3|float < metrics_ver|float %}
|
||||
{% set is_need_update = 1 %}
|
||||
{% endif %}
|
||||
{% set description = lang.admin_page.desc.metrics_desc %}
|
||||
{% elif s.0 == 'roxy-wi-portscanner' %}
|
||||
{% set service_name = 'Port scanner' %}
|
||||
{% set service_link = 'portscanner' %}
|
||||
{% set desc_link = 'https://roxy-wi.org/services/' + service_link %}
|
||||
{% if s.3|float < portscanner_ver|float %}
|
||||
{% set is_need_update = 1 %}
|
||||
{% endif %}
|
||||
{% set description = lang.admin_page.desc.p_s_desc %}
|
||||
{% elif s.0 == 'roxy-wi-socket' %}
|
||||
{% set service_name = 'Socket service' %}
|
||||
{% set service_link = 'socket' %}
|
||||
{% set desc_link = 'https://roxy-wi.org/services/' + service_link %}
|
||||
{% if s.3|float < socket_ver|float %}
|
||||
{% set is_need_update = 1 %}
|
||||
{% endif %}
|
||||
{% set description = lang.admin_page.desc.socket_desc %}
|
||||
{% elif s.0 == 'roxy-wi-prometheus-exporter' %}
|
||||
{% set service_name = 'Prometheus exporter' %}
|
||||
{% set service_link = 'prometheus-exporter' %}
|
||||
{% set desc_link = 'https://roxy-wi.org/services/' + service_link %}
|
||||
{% if s.3|float < prometheus_exp_ver|float %}
|
||||
{% set is_need_update = 1 %}
|
||||
{% endif %}
|
||||
{% set description = 'Prometheus exporter' %}
|
||||
{% elif s.0 == 'roxy-wi-portscanner' %}
|
||||
{% if s.3|float < portscanner_ver|float %}
|
||||
{% set is_need_update = 1 %}
|
||||
{% endif %}
|
||||
{% elif s.0 == 'roxy-wi-socket' %}
|
||||
{% if s.3|float < socket_ver|float %}
|
||||
{% set is_need_update = 1 %}
|
||||
{% endif %}
|
||||
{% elif s.0 == 'roxy-wi-prometheus-exporter' %}
|
||||
{% if s.3|float < prometheus_exp_ver|float %}
|
||||
{% set is_need_update = 1 %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<td class="padding10 first-collumn">
|
||||
<a href="{{desc_link}}" title="{{lang.words.read|title()}} {{lang.words.more}} {{lang.words.about}} {{service_name}}" target="_blank" class="link" rel="noopener noreferrer">{{service_name}}</a>
|
||||
<a href="https://roxy-wi.org/services/{{services_name[s.0]['link']}}" title="{{lang.words.read|title()}} {{lang.words.more}} {{lang.words.about}} {{services_name[s.0]['name']}}" target="_blank" class="link" rel="noopener noreferrer">{{services_name[s.0]['name']}}</a>
|
||||
</td>
|
||||
<td>
|
||||
{% if s.3 != '* is not installed' and s.3 != '' %}
|
||||
<b id="current-version-{{s.0}}"
|
||||
{% if is_need_update %}
|
||||
title="{{lang.admin_page.desc.a_new_version}} {{service_name}}"
|
||||
title="{{lang.admin_page.desc.a_new_version}} {{services_name[s.0]['name']}}"
|
||||
style="color: var(--red-color)"
|
||||
{% else %}
|
||||
title="{{lang.admin_page.desc.no_new_version}} {{service_name}}"
|
||||
title="{{lang.admin_page.desc.no_new_version}} {{services_name[s.0]['name']}}"
|
||||
style="color: var(--green-color)"
|
||||
{% endif %}
|
||||
>
|
||||
|
@ -134,20 +116,12 @@
|
|||
<td>
|
||||
{% if 'is not installed' not in s.3 and s.3 != '' %}
|
||||
{% if is_need_update %}
|
||||
<a class="ui-button ui-widget ui-corner-all" onclick="updateService('{{s.0}}')" title="{{lang.words.w_update|title()}} {{service_name}}">{{lang.words.w_update|title()}}</a>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
{% if s.0 in ('prometheus', 'grafana-server') %}
|
||||
<a class="ui-button ui-widget ui-corner-all" onclick="openTab(10)" title="{{lang.words.install|title()}} {{service_name}}">{{lang.words.install|title()}}</a>
|
||||
{% elif s.0 in ('rabbitmq-server', 'fail2ban') %}
|
||||
<a class="ui-button ui-widget ui-corner-all" href="https://roxy-wi/services/{{s.0.split('-')[0]}}" title="{{lang.words.install|title()}} {{s.0|title()}}" target="_blank">{{lang.words.install|title()}}</a>
|
||||
{% else %}
|
||||
<a class="ui-button ui-widget ui-corner-all" onclick="updateService('{{s.0}}', 'install')" title="{{lang.words.install|title()}} {{service_name}}">{{lang.words.install|title()}}</a>
|
||||
<a class="ui-button ui-widget ui-corner-all" onclick="updateService('{{s.0}}')" title="{{lang.words.w_update|title()}} {{services_name[s.0]['name']}}">{{lang.words.w_update|title()}}</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
<td colspan="2">
|
||||
{{description}}
|
||||
{{services_name[s.0]['desc']}}
|
||||
</td>
|
||||
</tr>
|
||||
{% endif %}
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
{% import 'languages/'+lang|default('en')+'.html' as lang %}
|
||||
{%- for service in service_status -%}
|
||||
<div class="server-info">
|
||||
{% if service_page == 'nginx' or service_page == 'keepalived' %}
|
||||
|
@ -5,9 +6,9 @@
|
|||
{% else %}
|
||||
<div class="server-name">
|
||||
{% endif %}
|
||||
Server status
|
||||
{{lang.words.server_status|title()}}
|
||||
<span class="update-icon">
|
||||
<a onclick="showOverviewServer('{{ service.0 }}', '{{ service.1 }}', '{{id}}', '{{service_page}}')" title="Refresh">
|
||||
<a onclick="showOverviewServer('{{ service.0 }}', '{{ service.1 }}', '{{id}}', '{{service_page}}')" title="{{lang.words.refresh|title()}}">
|
||||
<span class="service-reload"></span>
|
||||
</a>
|
||||
</span>
|
||||
|
|
|
@ -26,6 +26,16 @@
|
|||
{% set group = [] %}
|
||||
{% set group_prev = [] %}
|
||||
{%- for s in smon -%}
|
||||
{% set checks = lang.smon_page.desc.enabled_checks +': <br>' + lang.phrases.port_check|title() %}
|
||||
{% if s.http %}
|
||||
{% set checks = checks + ',<br>' + lang.smon_page.desc.http_status_check + ': ' + s.http.split(':')[0]|string() + '://' + s.ip|string() + ':' + s.port|string() + s.http.split(':')[1]|string() %}
|
||||
{% endif %}
|
||||
{% if s.body and s.body is not none %}
|
||||
{% set checks = checks + ',<br>' + lang.smon_page.desc.body_status_check + ':' + s.body %}
|
||||
{% endif %}
|
||||
{% if s.ssl_expire_date %}
|
||||
{% set checks = checks + ',<br> SSL ' + lang.words.expire + ': ' + s.ssl_expire_date %}
|
||||
{% endif %}
|
||||
{% if s.group %}
|
||||
{% if s.group not in group %}
|
||||
<div class="smon_group">
|
||||
|
@ -51,11 +61,8 @@
|
|||
{% else %}
|
||||
<div class="smon_services dis div-server-head-dis"
|
||||
{% endif %}
|
||||
title="{{lang.smon_page.desc.enabled_checks}}:
|
||||
{{lang.phrases.port_check|title()}}{% if s.http %},
|
||||
{{lang.smon_page.desc.http_status_check}}: {{s.http.split(':')[0]}}://{{s.ip}}:{{s.port}}{{s.http.split(':')[1]}}
|
||||
{% if s.body and s.body is not none %}, {{lang.smon_page.desc.body_status_check}}: {{s.body}}{% endif %}
|
||||
{% endif %}">
|
||||
data-help="{{checks}}"
|
||||
title="{{checks}}">
|
||||
<div class="ip">
|
||||
{% if s.ip|string|length > 23 %}
|
||||
<span style="font-size: 11px;">
|
||||
|
|
|
@ -1,4 +1,6 @@
|
|||
{% import 'languages/'+lang|default('en')+'.html' as lang %}
|
||||
{% from 'languages/languages.html' import languages %}
|
||||
{% from 'include/input_macros.html' import select %}
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>{% block title %}{% endblock %}</title>
|
||||
|
@ -40,12 +42,13 @@
|
|||
<meta name="theme-color" content="#ffffff">
|
||||
<script defer src="/inc/fa-solid.min.js"></script>
|
||||
<script defer src="/inc/fontawesome.min.js"></script>
|
||||
<script src="https://use.fontawesome.com/releases/v5.15.4/js/all.js" data-auto-replace-svg="nest"></script>
|
||||
<script>FontAwesomeConfig = { searchPseudoElements: true, observeMutations: false };</script>
|
||||
<script defer src="/inc/ion.sound.min.js"></script>
|
||||
<script defer src="/inc/intro/introjs.min.js"></script>
|
||||
<link href="/inc/intro/introjs.min.css" rel="stylesheet">
|
||||
<link href="/inc/intro/introjs-modern.css" rel="stylesheet">
|
||||
<link href="/inc/css/awesome.css" rel="stylesheet">
|
||||
<link href="/inc/css/awesome-6.3.8.css" rel="stylesheet">
|
||||
<link href="/inc/css/style.css" rel="stylesheet">
|
||||
<link href="/inc/css/nprogress.css" rel="stylesheet">
|
||||
<link href="/inc/css/jquery-ui.min.css" rel="stylesheet">
|
||||
|
@ -321,21 +324,7 @@
|
|||
<tr class="padding20">
|
||||
<td class="padding20">{{lang.words.language|title()}}</td>
|
||||
<td>
|
||||
<select id="lang_select">
|
||||
{% if lang.lang_short == 'ru' %}
|
||||
<option value="en" title="English">English</option>
|
||||
<option value="ru" title="Русский" selected>Русский</option>
|
||||
<option value="fr" title="Français">Français</option>
|
||||
{% elif lang.lang_short == 'fr' %}
|
||||
<option value="en" title="English">English</option>
|
||||
<option value="ru" title="Русский">Русский</option>
|
||||
<option value="fr" title="Français" selected>Français</option>
|
||||
{% else %}
|
||||
<option value="en" title="English" selected>English</option>
|
||||
<option value="ru" title="Русский">Русский</option>
|
||||
<option value="fr" title="Français">Français</option>
|
||||
{% endif %}
|
||||
</select>
|
||||
{{ select('lang_select', values=languages, selected=lang.lang_short) }}
|
||||
</td>
|
||||
</tr>
|
||||
<tr id="show-user-settings-group"></tr>
|
||||
|
|
|
@ -1,3 +1,16 @@
|
|||
{% set sections_name = {
|
||||
'rabbitmq': 'RabbitMQ',
|
||||
'nginx': 'NGINX',
|
||||
'haproxy': 'HAProxy',
|
||||
'apache': 'Apache',
|
||||
'keepalived': 'Keepalived',
|
||||
'main': 'Main',
|
||||
'mail': 'Mail',
|
||||
'monitoring': 'Monitoring',
|
||||
'logs': 'Logs',
|
||||
'ldap': 'LDAP',
|
||||
}
|
||||
%}
|
||||
<table id="settings">
|
||||
<tbody>
|
||||
{% set section = namespace(section='') %}
|
||||
|
@ -6,13 +19,9 @@
|
|||
<!-- continue -->
|
||||
{% else %}
|
||||
{% if section.section|string() != set.section|string() %}
|
||||
<th colspan="3" title="Show {{ set.section }} section" id="{{set.section}}-section-head" style="cursor: pointer; padding-top: 10px;">
|
||||
<th colspan="3" title="Show {{ set.section }} section" id="{{set.section}}-section-head" style="cursor: pointer; padding-top: 10px; color: #5b5a5a;">
|
||||
<h3 class="plus-after" id="{{set.section}}-section-h3" style="font-size: 1em; padding-left: 15px;">
|
||||
{% if set.section == 'ldap' %}
|
||||
{{ set.section|upper}}
|
||||
{% else %}
|
||||
{{ set.section[0]|upper}}{{set.section[1:] }}
|
||||
{% endif %}
|
||||
{{sections_name[set.section]}}
|
||||
</h3>
|
||||
</th>
|
||||
<tr class="overviewHead {{set.section}}-section" style="display: none">
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
{% else %}
|
||||
{% if page == 'users.py' %}
|
||||
<table id="grafana-table">
|
||||
<caption><h3>Grafana {{lang.words.and}} Prometheus {{lang.words.servers}}</h3></caption>
|
||||
<caption><i class="fas fa-chart-bar caption-icon2"></i><h3>Grafana {{lang.words.and}} Prometheus {{lang.words.servers}}</h3></caption>
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn">{{lang.words.current2|title()}} {{lang.words.installation}}</td>
|
||||
<td class="padding10 first-collumn" style="width: 40%;">{{lang.words.available|title()}} {{lang.words.versions}}</td>
|
||||
|
@ -41,7 +41,7 @@
|
|||
</table>
|
||||
{% endif %}
|
||||
<table id="haproxy-table">
|
||||
<caption><h3>HAProxy Exporter</h3></caption>
|
||||
<caption><i class="fas fa-network-wired caption-icon2"></i><h3>HAProxy Exporter</h3></caption>
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn" style="width: 20%;">{{lang.words.current2|title()}} {{lang.words.installation}}</td>
|
||||
<td class="padding10 first-collumn" style="width: 30%;">{{lang.words.available|title()}} {{lang.words.versions}}</td>
|
||||
|
@ -72,7 +72,7 @@
|
|||
</tr>
|
||||
</table>
|
||||
<table id="nginx-table">
|
||||
<caption><h3>NGINX Exporter</h3></caption>
|
||||
<caption><i class="fas fa-sitemap caption-icon2"></i><h3>NGINX Exporter</h3></caption>
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn" style="width: 20%;">{{lang.words.current2|title()}} {{lang.words.installation}}</td>
|
||||
<td class="padding10 first-collumn" style="width: 30%;">{{lang.words.available|title()}} {{lang.words.versions}}</td>
|
||||
|
@ -103,7 +103,7 @@
|
|||
</tr>
|
||||
</table>
|
||||
<table id="apache-table">
|
||||
<caption><h3>Apache Exporter</h3></caption>
|
||||
<caption><i class="fas fa-feather-alt caption-icon2"></i><h3>Apache Exporter</h3></caption>
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn" style="width: 20%;">{{lang.words.current2|title()}} {{lang.words.installation}}</td>
|
||||
<td class="padding10 first-collumn" style="width: 30%;">{{lang.words.available|title()}} {{lang.words.versions}}</td>
|
||||
|
@ -134,7 +134,7 @@
|
|||
</tr>
|
||||
</table>
|
||||
<table id="keepalived-table">
|
||||
<caption><h3>Keepalived Exporter</h3></caption>
|
||||
<caption><i class="fas fa-cloud caption-icon2"></i><h3>Keepalived Exporter</h3></caption>
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn" style="width: 20%;">{{lang.words.current2|title()}} {{lang.words.installation}}</td>
|
||||
<td class="padding10 first-collumn" style="width: 30%;">{{lang.words.available|title()}} {{lang.words.versions}}</td>
|
||||
|
@ -165,7 +165,7 @@
|
|||
</tr>
|
||||
</table>
|
||||
<table style="margin-top: 20px" id="node-table">
|
||||
<caption><h3>Node Exporter</h3></caption>
|
||||
<caption><i class="fas fa-server caption-icon2"></i><h3>Node Exporter</h3></caption>
|
||||
<tr class="overviewHead">
|
||||
<td class="padding10 first-collumn" style="width: 20%;">{{lang.words.current2|title()}} {{lang.words.installation}}</td>
|
||||
<td class="padding10 first-collumn" style="width: 30%;">{{lang.words.available|title()}} {{lang.words.versions}}</td>
|
||||
|
|
|
@ -119,8 +119,8 @@
|
|||
%}
|
||||
{% set services = dict() %}
|
||||
{% set services = {
|
||||
"hapservers_desc": "Checker surveille le service. Si le service change d\'état, Vérifier l\'alerte via Telegram, Slack, Email, Web ",
|
||||
"last_edit": "Last edit"
|
||||
"hapservers_desc": "Checker surveille le service. Si le service change d\'état, Vérifier l\'alerte via Telegram, Slack, Email, Web",
|
||||
"last_edit": "Dernière modif."
|
||||
}
|
||||
%}
|
||||
{% set errors = dict() %}
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
{% set languages = {
|
||||
'en': 'English',
|
||||
'ru': 'Русский',
|
||||
'fr': 'Français',
|
||||
'pt-br': 'Português',
|
||||
}
|
||||
%}
|
|
@ -0,0 +1,826 @@
|
|||
{% set lang_short = 'pt-br' %}
|
||||
{% set menu_links = dict() %}
|
||||
{% set menu_links = {
|
||||
"overview": {
|
||||
"link": "Visão geral",
|
||||
"title": "Servidor e seu estado",
|
||||
"h2": "Visão geral"
|
||||
},
|
||||
"hapservers": {
|
||||
"link": "Visão geral",
|
||||
"h2": "Visão geral",
|
||||
"haproxy": {
|
||||
"title": "Visão geral de servidores HAProxy",
|
||||
},
|
||||
"nginx": {
|
||||
"title": "Visão geral de servidores Nginx"
|
||||
},
|
||||
"apache": {
|
||||
"title": "Visão geral de servidores"
|
||||
},
|
||||
"keepalived": {
|
||||
"title": "Visão geral de Keepalived"
|
||||
},
|
||||
},
|
||||
"config": {
|
||||
"link": "Configs",
|
||||
"h2": "Configurar",
|
||||
"haproxy": {
|
||||
"title": "Configurar HAProxy"
|
||||
},
|
||||
"nginx": {
|
||||
"title": "Configurar Nginx"
|
||||
},
|
||||
"apache": {
|
||||
"title": "Configurar Apache"
|
||||
},
|
||||
"keepalived": {
|
||||
"title": "Configurar Keepalived"
|
||||
},
|
||||
},
|
||||
"stats": {
|
||||
"link": "Stats",
|
||||
"h2": "Estatística de",
|
||||
"haproxy": {
|
||||
"title": "Estatística de HAPROXY"
|
||||
},
|
||||
"nginx": {
|
||||
"title": "Estatística de NGINX"
|
||||
},
|
||||
"apache": {
|
||||
"title": "Estatística de Apache"
|
||||
},
|
||||
},
|
||||
"logs": {
|
||||
"link": "Logs",
|
||||
"title": "logs",
|
||||
"h2": "Logs de"
|
||||
},
|
||||
"metrics": {
|
||||
"link": "Métricas",
|
||||
"title": "métricas",
|
||||
"h2": "Métricas de",
|
||||
},
|
||||
"add_proxy": {
|
||||
"link": "Adicionar um proxy",
|
||||
"title": "Adicionar um proxy: Criar um proxy"
|
||||
},
|
||||
"versions": {
|
||||
"link": "Versões",
|
||||
"h2": "Gerenciar versões de configuração",
|
||||
"haproxy": {
|
||||
"title": "Gerenciar versões de configuração de HAProxy"
|
||||
},
|
||||
"nginx": {
|
||||
"title": "Gerenciar versões de configuração de NGINX"
|
||||
},
|
||||
"apache": {
|
||||
"title": "Gerenciar versões de configuração de Apache"
|
||||
},
|
||||
"keepalived": {
|
||||
"title": "Gerenciar versões de configuração de Keepalived"
|
||||
},
|
||||
},
|
||||
"ssl": {
|
||||
"link": "SSL",
|
||||
"title": "Adicionar um proxy: Carregar certificados SSL"
|
||||
},
|
||||
"lists": {
|
||||
"link": "Listas",
|
||||
"title": "Adicionar um proxy: Criar e carregar listas brancas e negras"
|
||||
},
|
||||
"ha": {
|
||||
"title": "Criar e configurar um cluster de alta disponibilidade"
|
||||
},
|
||||
"monitoring": {
|
||||
"link": "Monitorização",
|
||||
"title": "Ferramentas de monitorização",
|
||||
"smon": {
|
||||
"dashboard": "SMON: Painel",
|
||||
"history": "SMON: Histórico",
|
||||
"admin": "SMON: Painel de administrador"
|
||||
},
|
||||
"checker_history": "Checker: Histórico",
|
||||
"port_scan": "Port scanner",
|
||||
"net_tools": "Rede: ferramentos",
|
||||
},
|
||||
"servers": {
|
||||
"link": "Servidores",
|
||||
"title": "Gerenciar servidores"
|
||||
},
|
||||
"admin_area": {
|
||||
"link": "Area de administração",
|
||||
"title": "Area de administração"
|
||||
},
|
||||
"history": {
|
||||
"title": "Histórico de"
|
||||
}
|
||||
}
|
||||
%}
|
||||
{% set services = dict() %}
|
||||
{% set services = {
|
||||
"hapservers_desc": "O Checker está moditorando o serviço. Quando o serviço mudar o estado, o Checker vou enviar uma notificação via Telegram, Slack, Email, Web",
|
||||
"last_edit": "Editado por último"
|
||||
}
|
||||
%}
|
||||
{% set errors = dict() %}
|
||||
{% set errors = {
|
||||
"cannot_get_info": "Não é possível obter informações sobre",
|
||||
"something_wrong": "Algo deu errado com a instalação de",
|
||||
"check_logs": "Verificar logs",
|
||||
"select_server": "Selecione un servidor",
|
||||
"empty_name": "O nome não pode estar vazio"
|
||||
}
|
||||
%}
|
||||
{% set settings = {
|
||||
"rabbitmq": {
|
||||
"rabbitmq_host": "RabbitMQ-server host",
|
||||
"rabbitmq_port": "RabbitMQ-server port",
|
||||
"rabbitmq_vhost": "RabbitMQ-server vhost",
|
||||
"rabbitmq_queue": "RabbitMQ-server queue",
|
||||
"rabbitmq_user": "Usuario de RabbitMQ-server",
|
||||
"rabbitmq_password": "Senha do RabbitMQ-server",
|
||||
},
|
||||
"nginx": {
|
||||
"nginx_path_logs": "Caminho para os logs de NGINX",
|
||||
"nginx_stats_user": "Nome de usuario para acesar a pagina de estatística de NGINX",
|
||||
"nginx_stats_password": "Senha para acesar a pagina de estatística de NGINX",
|
||||
"nginx_stats_port": "Porta de estatísticas para pagina NGINX",
|
||||
"nginx_stats_page": "Estatística dos URIs para pagina NGINX",
|
||||
"nginx_dir": "Caminho para arquivos de configuração de NGINX",
|
||||
"nginx_config_path": "Caminho para o arquivo principal de configuração de NGINX",
|
||||
"nginx_container_name": "Nome do container Docker de NGINX",
|
||||
},
|
||||
"monitoring": {
|
||||
"smon_check_interval": "Intervalo de verificação para o SMON (em minutos)",
|
||||
"port_scan_interval": "Intervalo de verificação para o Checker (em minutos)",
|
||||
"portscanner_keep_history_range": "Intervalo de verificação por o Port scanner (em minutos)",
|
||||
"smon_keep_history_range": "Período de retenção de historico de SMON",
|
||||
"checker_keep_history_range": "Período de retenção de historico de Checker",
|
||||
"checker_maxconn_threshold": "Período de retenção de historico de Port scanner",
|
||||
"checker_check_interval": "Valor limite para a notificação de maxconn, em %",
|
||||
"smon_ssl_expire_warning_alert": "Aviso de alerta sobre a expiração do certificado SSL (em dias)",
|
||||
"smon_ssl_expire_critical_alert": "Alerta critico a expiração do certificado SSL (em dias)"
|
||||
},
|
||||
"main": {
|
||||
"time_zone": "Fuso horário.",
|
||||
"proxy": "Endereço e porta de prowy. Utiliza proto://ip:port",
|
||||
"session_ttl": "TTL de sessão de usuario (em dias)",
|
||||
"token_ttl": "TTL de token de usuario (em dias)",
|
||||
"tmp_config_path": "Caminho para o diretório temporário.. Indica um caminho válidos. O dono do directorio deve ser o usuario indicado na configuração de SSH. O camihno deve existir",
|
||||
"cert_path": "Caminho para o diretório SSL. O dono do directorio deve ser o usuario indicado na configuração de SSH. O camihno deve existir",
|
||||
"ssl_local_path": "aminho para o diretório com certificados SSL locais. O valor desse parâmetro debe ser o caminho relativo que começa com $HOME_ROXY_WI/app/",
|
||||
"lists_path": "Caminho para a lista branca e lista negra. O valor desse parâmetro debe ser o caminho relativo que começa com $HOME_ROXY_WI/app/",
|
||||
"maxmind_key": "A chave de licença para carregar GeoliteDB. Você pode cria-lo no maxmind.com",
|
||||
},
|
||||
"mail": {
|
||||
"mail_ssl": "Ativar TLS",
|
||||
"mail_from": "Endereço do remetente",
|
||||
"mail_smtp_host": "Endereço de servidor SMTP",
|
||||
"mail_smtp_port": "Endereço de servidor SMTP",
|
||||
"mail_smtp_user": "Nom de usuario",
|
||||
"mail_smtp_password": "Senha",
|
||||
},
|
||||
"logs": {
|
||||
"syslog_server_enable": "Obter logs do servidor Syslog",
|
||||
"syslog_server": "Endereço de servidor Syslog",
|
||||
"log_time_storage": "Período de retenção de logs de atividade (em dias)",
|
||||
"apache_log_path": "Caminho para os logs de Apache",
|
||||
},
|
||||
"ldap": {
|
||||
"ldap_enable": "Ativar LDAP",
|
||||
"ldap_server": "Endereço de servidor LDAP",
|
||||
"ldap_port": "Proto de LDAP(porta 389 or 636 està utilizado por defeito)",
|
||||
"ldap_user": "Nom de usuario de LDAP",
|
||||
"ldap_password": "Senha LDAP",
|
||||
"ldap_base": "Domínio base.. Exemplo: dc=domain, dc=com",
|
||||
"ldap_domain": "Domínio LDAP para entrar",
|
||||
"ldap_class_search": "Classe para buscar o usuario",
|
||||
"ldap_user_attribute": "Atributo para buscar",
|
||||
"ldap_search_field": "Endereço email do usuario",
|
||||
"ldap_type": "Utilizar LDAPS",
|
||||
},
|
||||
"haproxy": {
|
||||
"haproxy_path_logs": "Caminho para os logs de HAProxy",
|
||||
"stats_user": "Nome de usuario para acesar a pagina de estatística de HAProxy",
|
||||
"stats_password": "Senha para acesar a pagina de estatística de HAProxy",
|
||||
"stats_port": "Porta de estatísticas para pagina HAProxy",
|
||||
"stats_page": "Estatística dos URIs para pagina HAProxy",
|
||||
"haproxy_dir": "Caminho para arquivos de configuração de NGINX",
|
||||
"haproxy_config_path": "Caminho para o arquivo principal de configuração de HAProxy",
|
||||
"server_state_file": "Caminho para o arquivo do estado de HAProxy",
|
||||
"haproxy_sock": "Caminho para o arquivo de soquetes de HAProxy",
|
||||
"haproxy_sock_port": "porta de soquetes de HAProxy",
|
||||
"haproxy_container_name": "Nome do container Docker de HAProxy",
|
||||
},
|
||||
"apache": {
|
||||
"apache_path_logs": "Caminho para os logs de Apache",
|
||||
"apache_stats_user": "Nome de usuario para acesar a pagina de estatística de Apache",
|
||||
"apache_stats_password": "Senha para acesar a pagina de estatística de Apache",
|
||||
"apache_stats_port": "Porta de estatísticas para pagina Apache",
|
||||
"apache_stats_page": "Estatística dos URIs para pagina Apache",
|
||||
"apache_dir": "Caminho para arquivos de configuração de Apache",
|
||||
"apache_config_path": "Caminho para o arquivo principal de configuração de Apache",
|
||||
"apache_container_name": "Nome do container Docker de Apache",
|
||||
},
|
||||
"keepalived": {
|
||||
"keepalived_config_path": "Caminho para o arquivo principal de configuração de Keepalived",
|
||||
"keepalived_path_logs": "Caminho para os logs de Keepalived",
|
||||
},
|
||||
}
|
||||
%}
|
||||
{% set phrases = dict() %}
|
||||
{% set phrases = {
|
||||
"config_file_name": "Nome de arquivo de configuração",
|
||||
"no_events_added": "Nenhum evento adicionado.",
|
||||
"upload_and_restart": "Carregar e reiniciar",
|
||||
"upload_and_reload": "Carregar e recarregar",
|
||||
"save_and_restart": "Salvar e reiniciar",
|
||||
"save_and_reload": "Salvar e recarregar",
|
||||
"save_title": "Salvar em reiniciar o serviço",
|
||||
"return_to_config": "Voltar para a configuração",
|
||||
"check_config": "Verificar o config",
|
||||
"master_slave": "Se você econfigurar o servidor mestre, o escravo será reconfigurado automaticamente",
|
||||
"read_about_files": "Você pode ler a descrição dos arquivos de configuração",
|
||||
"read_about_parameters": "Você pode ler a descrição de todos os parâmetros",
|
||||
"read_howto": "ler um HowTo sobre isso",
|
||||
"howto_user": "Como utilizar",
|
||||
"select_file": "Escolhe um arquivo",
|
||||
"read_how_it_works": "Você pode ler como isso funciona",
|
||||
"metrics_not_installed": "Você não instalou o serviço Métricas.",
|
||||
"how_to_install_metrics": "Como instalar o serviço Métricas",
|
||||
"enable_avg_table": "Ativar exibição da tabela de médias",
|
||||
"disable_avg_table": "Desativar exibição da tabela de médiasDisable display of the table of averages",
|
||||
"protected_title": "Se a proteção estiver ativada, o servidor ficará inacessível para edição por todos, exceto administradores",
|
||||
"slave_for_title": "A edição da configuração do servidor mestre será applicada no servidor escravo",
|
||||
"server_unknown": "O status do servidor é desconhecido",
|
||||
"no_sub": "Você não está inscrito",
|
||||
"pls_sub": "Assine para ter acesso a este recurso",
|
||||
"no_av_feat": "Este recurso não é disponível para este tarifário:",
|
||||
"fwd_warn": "There are rules only from INPUT, IN_public_allow and OUTPUT chains",
|
||||
"search_in_ad": "Buscar usuario em AD",
|
||||
"are_you_sure": "Tem certeza?",
|
||||
"delete_dialog": "A exclusão é irrecuperável, todos os dados serão perdidos",
|
||||
"fields_mark": "Campos marcados com",
|
||||
"are_required": "São obrigatórios",
|
||||
"scan_title": "Examine o servidor em busca de serviços HAProxy, NGINX, Keepalived e Firewalld",
|
||||
"superAdmin_pass": "Você não pode editar a senha para a função super Admin",
|
||||
"superAdmin_services": "Você não pode editar os serviços ara a função super Admin",
|
||||
"pass_mismatched": "As senhas são incompatíveis",
|
||||
"private_key_note": "Chave privada. A chave pública deve ser pré-instalada em todos os servidores aos quais você planeja se conectar",
|
||||
"send_test_mes": "Envia uma mensagem de teste",
|
||||
"alert_service_change_status": "Alerta sobre a alteração de estado do serviço",
|
||||
"alert_backend_change_status": "Alerta sobre a alteração do status do bacjend",
|
||||
"alert_number_conn": "Alerta se o número de conexões está prestes a atingir o limite",
|
||||
"alert_master_backup": "Alerta sobre a alteração de estado do Master/Backup",
|
||||
"new_version": "Uma nova versão Roxy-WI apareceu. Verifica a",
|
||||
"all_alerts_enabled": "Alertas são ativadas",
|
||||
"disable_alerts": "Desativar alertas",
|
||||
"work_with_prev": "Aqui você pode editar as versões anteriores de configurações",
|
||||
"roll_back": "Reverta para eles, visualize ou exclua",
|
||||
"files_been_deleted": "Os seguintes arquivos foram exluídos",
|
||||
"version_has_been_uploaded": "A seguinte versão do arquivo de configuração foi carregada e salva como",
|
||||
"new_config_has_been_saved": "Um novo arquivo de de configuração foi carregado e salvo",
|
||||
"view_and_upload": "Visualizar e carregar esta versão de config",
|
||||
"int_vrrp": "Interface para endereço VRRP no servidor",
|
||||
"howto_ha": "Como criar um cluster de alta disponibilidade",
|
||||
"been_installed": "foi instalado",
|
||||
"wait_mess": "Não feche ou atualize a página. Aguarde até que o trabalho seja concluído. Isto pode tomar algum tempo",
|
||||
"you_are_editing": "Você está editando",
|
||||
"section_from_server": "Seção do servidor",
|
||||
"how_to_install": "como instalar",
|
||||
"port_check": "verificação de porta",
|
||||
"possible_service_name": "Possible service name",
|
||||
"server_info": "Informação sobre o servidor",
|
||||
"user_groups": "Grupos de usuários",
|
||||
"comparing_config": "Comparando arquivos de configuração",
|
||||
"select_older_config": "Selecione uma configuração mais antiga",
|
||||
"select_newer_config": "Selecione uma configuração mais nova",
|
||||
}
|
||||
%}
|
||||
{% set roles = {
|
||||
"superAdmin": "Tem o nível mais alto de permissões administrativas e controla as ações de todos os outros usuários",
|
||||
"admin": "Tem acesso em todos os lugares, exceto na área de administração",
|
||||
"user": "Tem os mesmos direitos que o administrador, mas não tem acesso à página Servidores",
|
||||
"guest": "Acesso somente leitura"
|
||||
}
|
||||
%}
|
||||
{% set add_page = {
|
||||
"desc": {
|
||||
"port_check": "a verificação de integridade básica do nivel TCP tenta se conectar à porta TCP do servidor. A verificação é válida quando o servidor responde com um pacote SYN/ACK",
|
||||
"maxconn": "número total de conexões permitidas. Isso impede que o processo aceite muitas conexões de uma só vez, o que o protege de ficar sem memória.",
|
||||
"server_template": "Criar uma lista de servidores de um modelo",
|
||||
"def_check": "Parâmetros padrão",
|
||||
"saved_options": "Estas são as opções que você salvou na guia 'Opções'",
|
||||
"press_down": "pressione o botão 'down'",
|
||||
"ip_port": "Se o endereço IP do ouvinte estiver vazio, ele escutará em todos os endereços IP. Comece a digitar IP ou pressione o botão 'Down'. Clique em + para adicionar pares 'porta:IP'. Se estiver usando VRRP, deixe o campo IP em branco. Se você atribuir um IP VRRP, o servidor escravo não será iniciado.",
|
||||
"listener_desc1": "Uma seção 'listen' define um proxy completo com suas partes frontend e backend combinadas em uma seção. Geralmente é útil para tráfego somente TCP",
|
||||
"listener_desc2": "Todos os nomes de proxy devem ser formados por letras maiúsculas e minúsculas, dígitos, '-' (traço), '_' (sublinhado), '.' (ponto) e ':' (dois pontos). Os nomes ACL diferenciam maiúsculas de minúsculas, o que significa que 'www' e 'WWW' são dois proxies diferentes",
|
||||
"listener_desc3": "Todos os nomes de proxy podem se sobrepor e causaram problemas nos logs. Desde a introdução da alternância de conteúdo, é obrigatório que dois proxies com recursos sobrepostos (front-end/back-end) tenham nomes diferentes. No entanto, ainda é permitido que um front-end e um back-end compartilhem o mesmo nome, pois essa configuração parece ser encontrada.",
|
||||
"front_desc1": "Uma seção 'frontend' descreve um conjunto de soquetes de escuta que aceitam conexões de cliente.",
|
||||
"back_des1": "Uma seção 'backend' descreve um conjunto de servidores saos quais o proxy se conectará para encaminhar conexões de entrada.",
|
||||
"ssl_offloading": "A terminação SSL significa que você está executando toda a encriptação e desencriptação na borda da sua rede, como no balanceador de carga.",
|
||||
"http_https": "Ativar a redireição de HTTP para HTTPS",
|
||||
"maxconn_desc": "Este valor não deve exceder o maxconn global. Valor maxconn global padrão",
|
||||
"maxconn_fix": "Fixar o número máximo de conexões simultâneas",
|
||||
"antibot": "Infelizmente, uma grande parte dos bots são usados com intenções maliciosas. Essas intenções incluem web scraping, spam, inundação de pedidos, bruteforce e verificação de vulnerabilidades.Por exemplo, os bots podem raspar suas listas de preços para que os concorrentes possam reduzir consistentemente você ou criar uma solução competitiva usando seus dados. Os bots podem também tentar localizar fóruns e seções de comentários onde possam postar spam. Eles podem procurar vulnerabilidades no seu site",
|
||||
"slow_attack": "Em um ataque Slow POST, um invasor começa enviando um cabeçalho HTTP POST legítimo para um servidor Web, exatamente como faria em circunstâncias normais. O cabeçalho especifica o tamanho exato do corpo da mensagem que se seguirá. No entanto, o corpo da mensagem é enviado a uma taxa alarmantemente baixa – às vezes tão lento quanto 1 byte por aproximadamente dois minutos",
|
||||
"http_compression": "A compactação HTTP permite que você reduza o corpo de uma resposta antes que ela seja retransmitida para um cliente, o que resulta no uso de menos largura de banda de rede por solicitação. Do ponto de vista do cliente, isso reduz a latência",
|
||||
"forward_for": "Quando o HAProxy Enterprise faz proxy de uma conexão TCP, ele substitui o endereço IP de origem do cliente pelo seu próprio ao se comunicar com o servidor back-end. No entanto, ao retransmitir mensagens HTTP, ele pode armazenar o endereço do cliente no cabeçalho HTTP X-Forwarded-For. O servidor de back-end pode então ser configurado para ler o valor desse cabeçalho para recuperar o endereço IP do cliente.",
|
||||
"redispatch": "No modo HTTP, se um servidor designado por um cookie estiver inoperante, os clientes podem definitivamente aderir a ele porque não podem liberar o cookie e não poderão mais acessar o serviço. A especificação de 'option redispatch' permitirá que o proxy interrompa sua persistência e os redistribua para um servidor em funcionamento. Também permite repetir conexões com outro servidor em caso de múltiplas falhas de conexão. Claro, isso requer ter 'retries' definido como um valor diferente de zero.",
|
||||
"force_close": "Como o HAProxy funciona no modo de proxy reverso, os servidores veem seu endereço IP como o endereço do cliente. Às vezes, isso é irritante quando o endereço IP do cliente é esperado nos logs do servidor. Para resolver esse problema, o conhecido cabeçalho HTTP 'X-Forwarded-For' pode ser adicionado pelo HAProxy a todas as solicitações enviadas ao servidor. Este cabeçalho contém um valor que representa o endereço IP do cliente. Como esse cabeçalho é sempre anexado ao final da lista de cabeçalhos existente, o servidor deve ser configurado para sempre usar apenas a última ocorrência desse cabeçalho. Consulte o manual do servidor para saber como ativar o uso deste cabeçalho padrão",
|
||||
"cookie": "Para enviar um cliente para o mesmo servidor onde foi enviado anteriormente para reutilizar uma sessão nesse servidor, você pode ativar a persistência de sessão baseada em cookie. Adicione uma diretiva de cookie à seção de back-end e defina o parâmetro de cookie para um valor exclusivo em cada linha do config do servidor",
|
||||
"c_prefix": "Esta palavra-chave indica que, em vez de depender de um cookie dedicado para a persistência, um cookie já existente será concluído",
|
||||
"c_nocache": "Esta opção é recomendada em conjunto com o modo de inserção quando houver um cache entre o cliente e o HAProxy",
|
||||
"c_nocache": "Esta opção é recomendada em conjunto com o modo de inserção quando houver um cache entre o cliente e o HAProxy",
|
||||
"c_postonly": "Esta opção garante que os cookies serão inseridos somente em respostas as pedidos POST",
|
||||
"c_dynamic": "Ativar cookies dinâmicos. Quando você usar cookies dinâmicos, o cookie de sessão cookies é criado dinamicamente para cada servidor",
|
||||
"def_backend": "If you want to use the default backend",
|
||||
"def_backend_exit": "backend debe existir",
|
||||
"port_for_bind": "Poro para ligar",
|
||||
"bind_ip_pair": "Vincule mais um par IP-port",
|
||||
"no_def_backend": "Se nenhuma condição for válida, o backend definido com 'default_backend' será usado.Se nenhum backend padrão for definido, ou os servidores na mesma seção são usados (no caso de uma seção 'listen') ou, no caso de um frontend, nenhum servidor é usado e uma resposta 503 Service Unavailable é retornada",
|
||||
"circuit_breaking": "O disjuntor é um padrão de design que é usado para detectar falhas e encapsula a lógica de impedir que uma falha se repita constantemente. O padrão de design do disjuntor funciona como um disjuntor elétrico que se destina a 'desarmar' ou abrir o circuito quando uma falha é detectada.",
|
||||
"peers_master": "Nota: Se você gostaria de usar os serviços HAProxy como cluster mestre-mestre, você deve definir nomes de host de servidores locais como nomes de servidores peers. Caso contrário, os peers não funcionarão",
|
||||
"peers_slave": "Nota: Se você gostaria de usar os serviços HAProxy como cluster mestre-escravo, você deve definir nomes de host de servidores locais como nomes de servidores pares. Caso contrário, os peers não funcionarão",
|
||||
"peers": "The peers section enables the replication of stick table data between two or more HAProxy instances",
|
||||
"userlist": "Você pode criar listas de usuários nesta seção para utilizar na seção 'Adicionar'",
|
||||
"userlist_name": "O nome da lista de usuários",
|
||||
"userlist_pass": "Senha de usuário. Por padrão é uma senha insegura",
|
||||
"userlist_user_grp": "Grupo de usuários",
|
||||
"userlist_user": "Também é possível anexar grupos a este usuário usando uma lista de grupos separada por vírgulas",
|
||||
"userlist_group": "Também é possível anexar usuários a este grupo usando uma lista separada por vírgulas de nomes precedidos pela palavra-chave 'users'",
|
||||
"userlist_desc": "É possível controlar o acesso às seções Frontend/Backend/Listen ou às estatísticas de HTTP, permitindo apenas usuários autenticados e autorizados. Para fazer isso, é necessário criar pelo menos uma lista de usuários e definir usuários",
|
||||
"servers": "Nesta seção você pode criar, editar e excluir servidores e de usá-los como preenchimento automático nas seções 'Adicionar'",
|
||||
"servers": "Nesta seção você pode criar, editar e excluir opções e de usá-los como preenchimento automático nas seções 'Adicionar'",
|
||||
"paste_cert": "Cole o conteúdo do arquivo de certificado",
|
||||
"paste_cert_desc": "Este arquivo pem será usado para criar uma conexão com HAProxy, NGINX ou Apache",
|
||||
"lists_howto": "Nesta seção você pode criar, editar listas brancas e negras e de usá-los como preenchimento automático nas seções 'Adicionar um proxy'. Leia aqui como fazer isso",
|
||||
"lists_new_line": "Cada novo endereço deve ser especificado a partir de uma nova linha",
|
||||
"was_success_added": "foi adicionado com sucesso",
|
||||
"create_ssl_proxy": "Crie um Proxy HTTPS com a terminação SSL no HAProxy e descarregamento SSL. O HAProxy enviará o tráfego HTTP no back-end. Você precisa",
|
||||
"create_ssl_front": "Crie um Frontend HTTPS com a terminação SSL no HAProxy e descarregamento SSL. O HAProxy enviará o tráfego HTTP no back-end. Você precisa",
|
||||
"create_ssl_backend": "Crie um Backend HTTPS com a terminação SSL no HAProxy e descarregamento SSL. O HAProxy enviará o tráfego HTTP no back-end. Você precisa",
|
||||
"create_https_proxy": "Crie um Proxy HTTPS sem a terminação SSL no HAProxy e descarregamento SSL. O HAProxy enviará o tráfego HTTPS no back-end.",
|
||||
"create_https_front": "Crie um Frontend HTTPS sem a terminação SSL no HAProxy e descarregamento SSL. O HAProxy enviará o tráfego HTTPS no back-end.",
|
||||
"create_https_backend": "Crie um Backend HTTPS sem a terminação SSL no HAProxy e descarregamento SSL. O HAProxy enviará o tráfego HTTPS no back-end.",
|
||||
"option_temp": "Crie, edite e exclua opções com determinados parâmetros. Usá-los como preenchimento automático nas seções 'Adicionar'",
|
||||
"server_temp": "Crie, edite e exclua servidores com determinados parâmetros. Usá-los como preenchimento automático nas seções 'Adicionar'",
|
||||
"use_add": "Usa isso as seções 'Adicionar'",
|
||||
},
|
||||
"buttons": {
|
||||
"disable_ssl_check": "Ativar a verificação de SSL",
|
||||
"disable_ssl_verify": "Desativar a verificação de SSL nos servidores",
|
||||
"set_options": "Definir opções",
|
||||
"set_options_m": "Definir opções manualmente",
|
||||
"show_full_settings": "Mostrar a lista completa de configurações",
|
||||
"show_full_settings": "Esconder a lista completa de configurações",
|
||||
}
|
||||
}
|
||||
%}
|
||||
{% set add_nginx_page = {
|
||||
"desc": {
|
||||
"upstream_desc1": "O módulo upstream é usado para definir grupos de servidores.",
|
||||
"upstream_desc2": "Define um grupo de servidores. Os servidores podem escutar em diferentes portas. Além disso, os servidores que atendem nos soquetes de domínio TCP e UNIX podem ser combinados.",
|
||||
"upstream_desc3": "Por padrão, os pedidos são distribuídas entre os servidores usando um método de balanceamento round-robin ponderado.",
|
||||
"keepalive": "O parâmetro de conexões define o número máximo de conexões keep-alive ociosas para servidores upstream que são preservadas no cache de cada processo de trabalho. Quando esse número é excedido, as conexões usadas menos recentemente são fechadas.",
|
||||
"fail_timeout": "O interval durante o qual o número especificado de tentativas malsucedidas de comunicação com o servidor deve acontecer para considerar o servidor indisponível; e o período de tempo em que o servidor será considerado indisponível.",
|
||||
"max_fails": "Define o número de tentativas malsucedidas de comunicação com o servidor que devem ocorrer na duração definida pelo parâmetro fail_timeout para considerar o servidor indisponível por uma duração também definida pelo parâmetro fail_timeout. Por padrão, o número de tentativas malsucedidas é definido como 1.",
|
||||
}
|
||||
}
|
||||
%}
|
||||
{% set admin_page = {
|
||||
"desc": {
|
||||
"latest_repo": "O Roxy-WI tentará instalar a versão mais recente do serviço do repositório oficial",
|
||||
"install_as_docker": "Instalar serviço como um container do Docker",
|
||||
"ext_prom": "Este exportador será usado para um Prometheus externo. Usa este checkbox para atualizar o Exporter.",
|
||||
"no_ansible": "Você não instalou",
|
||||
"before_install": "Antes de instalar exportadores, primeiro instale",
|
||||
"been_installed": "servidores instalados",
|
||||
"there_are_no": "Não há servidores Grafana e Prometheus",
|
||||
"country_codes": "códigos de país",
|
||||
"smon_desc": "SMON significa <b>S</b>imple <b>MON</b>itoring",
|
||||
"checker_desc": "O Checker foi projetado para monitorar serviços HAProxy, Nginx, Apache e Keepalived, bem como backends HAProxy e maxconn",
|
||||
"auto_start_desc": "O serviços Auto Start permite reiniciar os serviços HAProxy, NGINX, Apache e Keepalived se estiverem inoperantes",
|
||||
"metrics_desc": "Coleta o número de conexões para os serviços HAProxy, NGINX, Apache e HAProxy WAF",
|
||||
"p_s_desc": "Verifica se há portas abertas no servidor e salva o histórico",
|
||||
"socket_desc": "Socket é um serviço de envio de alertas e notificações",
|
||||
"a_new_version": "Há uma versão mais recente",
|
||||
"no_new_version": "Nã há uma versão mais recente",
|
||||
"main_app": "O aplicativo principal",
|
||||
"for_updating": "Usa Roxy-WI RPM ou DEB para atualizar",
|
||||
"how_to_using_repo": "como começar a usar repositório.",
|
||||
"proxy_settings": "Se o servidor Roxy-WI usar um proxy para se conectar à Internet, adicione as configurações de proxy ao yum.conf."
|
||||
}
|
||||
}
|
||||
%}
|
||||
{% set smon_page = {
|
||||
"desc": {
|
||||
"before_use": "antes de usar",
|
||||
"smon_is_not_run": "O serviço MON não é executado",
|
||||
"run_smon": "Executar o serviço SMON",
|
||||
"not_installed": "Você não instalou o serviço SMON",
|
||||
"not_added": "Você não adicionou servidores ao serviço SMON ",
|
||||
"create_server": "Crie o seu primero servidor",
|
||||
"see_check": "para ver se a nova verificação foi adicionada",
|
||||
"do_not_sort": "Não classifique",
|
||||
"do_not_sort_by_status": "Não classifique por estado",
|
||||
"sort_status": "Classifique por estado",
|
||||
"status_summary": "Resumo do estado",
|
||||
"enabled_checks": "Verificações ativadas",
|
||||
"http_status_check": "Verificação do estado HTTP",
|
||||
"body_status_check": "Verificação do corpo da resposta",
|
||||
"resp_time": "Tempo de resposta",
|
||||
"last_resp_time": "Último tempo de resposta",
|
||||
"UP": "UP",
|
||||
"DOWN": "DOWN",
|
||||
"HTTP_FAILURE": "HTTP FAILURE",
|
||||
"BODY_FAILURE": "BODY FAILURE",
|
||||
"UNKNOWN": "UNKNOWN",
|
||||
"PORT_DOWN": "PORT DOWN",
|
||||
}
|
||||
}
|
||||
%}
|
||||
{% set p_s_page = {
|
||||
"desc": {
|
||||
"is_enabled_and_up": "O port scanner está ativado serviço está UP",
|
||||
"is_enabled_and_down": "O port scanner está ativado, mais o serviço está DOWN",
|
||||
"scanning_ports": "Verificando portas abertas/filtradas para o servidor",
|
||||
"total_open_ports": "Número total de portas abertas",
|
||||
}
|
||||
}
|
||||
%}
|
||||
{% set words = {
|
||||
"cache": "cache",
|
||||
"compression": "compressão",
|
||||
"acceleration": "aceleração",
|
||||
"start": "iniciar",
|
||||
"start2": "comece",
|
||||
"stop": "parar",
|
||||
"restart": "reiniciar",
|
||||
"service": "serviço",
|
||||
"service2": "serviço",
|
||||
"services": "serviços",
|
||||
"services2": "serviços",
|
||||
"services3": "serviços",
|
||||
"services4": "serviços",
|
||||
"started": "iniciado",
|
||||
"reload": "recarregar",
|
||||
"reloading": "recarregando",
|
||||
"stopped": "parado",
|
||||
"no_desc": "sem descrição",
|
||||
"process_num": "process_num",
|
||||
"version": "versão",
|
||||
"version2": "versão",
|
||||
"versions": "versões",
|
||||
"error": "erro",
|
||||
"addresses": "endereços",
|
||||
"address": "endereço",
|
||||
"virtual": "virtual",
|
||||
"hosts": "hosts",
|
||||
"time_range": "Intervalo do tempo",
|
||||
"server": "servidor",
|
||||
"server2": "servidor",
|
||||
"status": "estado",
|
||||
"current": "atual",
|
||||
"current2": "atual",
|
||||
"total": "total",
|
||||
"server_status": "Estado do servidor",
|
||||
"services_status": "Estado dos servidores",
|
||||
"compare": "comparar",
|
||||
"map": "mapa",
|
||||
"about": "sobre",
|
||||
"help": "ajuda",
|
||||
"contacts": "contatos",
|
||||
"cabinet": " espaço pessoal",
|
||||
"legal": "legal",
|
||||
"alert": "alerta",
|
||||
"alert2": "alerta",
|
||||
"alerts": "alertas",
|
||||
"manage": "gerar",
|
||||
"user": " usuário",
|
||||
"user2": "usuário",
|
||||
"users": " usuários",
|
||||
"users2": "usuários",
|
||||
"username": "nome de usuário",
|
||||
"servers": "servidores",
|
||||
"servers2": "servidores",
|
||||
"creds": "credenciais",
|
||||
"creds2": "credenciais",
|
||||
"settings": "configurações",
|
||||
"settings2": "configurações",
|
||||
"install": "instalar",
|
||||
"installation": "instalação",
|
||||
"installing": "instalando",
|
||||
"proxy": "proxy",
|
||||
"provisioning": "provisioning",
|
||||
"backup": "backup",
|
||||
"backup2": "backup",
|
||||
"configs": "configs",
|
||||
"configs2": "configs",
|
||||
"config": "config",
|
||||
"from": "de",
|
||||
"view": "visão ",
|
||||
"internal": "interno",
|
||||
"internal2": "interna",
|
||||
"log": "log",
|
||||
"logs": "logs",
|
||||
"logs2": "logs",
|
||||
"admin_area": "área administrativa",
|
||||
"group": "grupo",
|
||||
"group2": "grupo",
|
||||
"groups": "grupos",
|
||||
"groups2": "grupos",
|
||||
"groups3": "grupos",
|
||||
"w_update": "atualizar",
|
||||
"updating": "atulizando",
|
||||
"monitoring": "monitoramento",
|
||||
"auto": "auto",
|
||||
"refresh": "recarregar",
|
||||
"refresh2": "recarresr",
|
||||
"no": "não",
|
||||
"not": "não",
|
||||
"yes": "sim",
|
||||
"interval": "interval",
|
||||
"desc": "descrição",
|
||||
"login": "login",
|
||||
"role": "função",
|
||||
"roles": "funções",
|
||||
"subs": "inscrição",
|
||||
"show_all": "mostrar tudo",
|
||||
"plan": "plan",
|
||||
"pay_method": "método de pagamento.",
|
||||
"active": "ativo",
|
||||
"open": "abrir",
|
||||
"opened": "aberto",
|
||||
"edit": "editar",
|
||||
"delete": "apagar",
|
||||
"add": "adicionar",
|
||||
"save": "salvar",
|
||||
"saved": "salvo",
|
||||
"saving": "salvando",
|
||||
"expand_all": "expandir tudo",
|
||||
"collapse_all": "recolhar tudo",
|
||||
"raw": "crua",
|
||||
"stats": "estado",
|
||||
"note": "nota",
|
||||
"back": "voltar",
|
||||
"show": "mostrar",
|
||||
"run": "executar",
|
||||
"running": "executando",
|
||||
"statistics": "estatisticas",
|
||||
"rollback": "rollback",
|
||||
"previous": "anterior",
|
||||
"to": "a",
|
||||
"listener": "ouvinte",
|
||||
"frontends": "frontends",
|
||||
"frontend": "frontend",
|
||||
"backends": "backends",
|
||||
"backend": "backend",
|
||||
"maintain": "manter",
|
||||
"drain": "desativado",
|
||||
"number": "número",
|
||||
"rows": "linhas",
|
||||
"row": "linha",
|
||||
"find": "busca",
|
||||
"exclude": "excluir",
|
||||
"file": "arquivo",
|
||||
"file2": "arquivo",
|
||||
"files": "arquivos",
|
||||
"here": "aqui",
|
||||
"action": "action",
|
||||
"actions": "actions",
|
||||
"command": "command",
|
||||
"save": "sakvar",
|
||||
"change": "mudar",
|
||||
"change2": "mudar",
|
||||
"changes": "mudanças",
|
||||
"enter": "entrar",
|
||||
"enter2": "enter",
|
||||
"lists": "listas",
|
||||
"list": "lista",
|
||||
"sessions": "sessões",
|
||||
"session": "sessão",
|
||||
"and": "e",
|
||||
"select": "escolhe",
|
||||
"select2": "escolher",
|
||||
"new": "novo",
|
||||
"new2": "novas",
|
||||
"port": "porta",
|
||||
"ports": "portas",
|
||||
"table": "tabela",
|
||||
"w_get": "obter",
|
||||
"dynamically": "dinamicamente",
|
||||
"set": "definir",
|
||||
"type": "tipo",
|
||||
"typing": "typing",
|
||||
"site": "site",
|
||||
"is": "dinamicamente",
|
||||
"w_empty": "vazio",
|
||||
"used": "usado",
|
||||
"w_clear": "clear",
|
||||
"this": "este",
|
||||
"this2": "esta",
|
||||
"this3": "este",
|
||||
"this4": "este",
|
||||
"entry": "entry",
|
||||
"age": "idade",
|
||||
"protocol": "protocol",
|
||||
"rate": "rate",
|
||||
"expire": "expire",
|
||||
"more": "mais",
|
||||
"info": "info",
|
||||
"source": "source",
|
||||
"overview": "visão geral",
|
||||
"personal": "pessoal",
|
||||
"read": "ler",
|
||||
"second": "segundo",
|
||||
"seconds": "segundos",
|
||||
"seconds2": "segundo",
|
||||
"minute": "minuto",
|
||||
"minute2": "minuto",
|
||||
"minutes": "minutos",
|
||||
"hour": "hora",
|
||||
"hours": "horas",
|
||||
"hours2": "horas",
|
||||
"day": "da",
|
||||
"days": "dias",
|
||||
"metrics": "métrica",
|
||||
"every": "cada",
|
||||
"every2": "cada",
|
||||
"every3": "cado",
|
||||
"hide": "esconder",
|
||||
"average": "médio",
|
||||
"peak": "pido",
|
||||
"connect": "conectar",
|
||||
"connections": "conexões",
|
||||
"connections2": "conexões",
|
||||
"enable": "ativar",
|
||||
"enabled": "desativar",
|
||||
"virt": "virt",
|
||||
"virtual": "virtual",
|
||||
"check": "verificar",
|
||||
"checking": "verificando",
|
||||
"protected": "protegido",
|
||||
"slave_for": "Escravo para",
|
||||
"name": "nome",
|
||||
"article": "artigo",
|
||||
"w_copy": "copiar",
|
||||
"for": "para",
|
||||
"history": "histórico",
|
||||
"history2": "histórico",
|
||||
"history3": "histórico",
|
||||
"rule": "regra",
|
||||
"rules": "regras",
|
||||
"rules2": "regras",
|
||||
"on": "sobre",
|
||||
"dest": "destino",
|
||||
"target": "alvo",
|
||||
"w_input": "entrade",
|
||||
"output": "saída",
|
||||
"password": "senha",
|
||||
"email": "email",
|
||||
"w_a": "um",
|
||||
"w_an": "uma",
|
||||
"key": "chave",
|
||||
"token": "token",
|
||||
"channel": "canal",
|
||||
"channels": "canais",
|
||||
"job": "job",
|
||||
"cancel": "cancelar",
|
||||
"repository": "repository",
|
||||
"init": "init",
|
||||
"period": "periodo",
|
||||
"the": "o",
|
||||
"scan": "sondar",
|
||||
"is_there": "Tem",
|
||||
"confirm": "confirme",
|
||||
"confirmation": "confirmation",
|
||||
"one": "umo",
|
||||
"one2": "uma",
|
||||
"or": "ou",
|
||||
"upload": "carregar",
|
||||
"uploading": "carregando",
|
||||
"uploaded": "carregado",
|
||||
"test": "test",
|
||||
"test2": "test",
|
||||
"disabled": "desativado",
|
||||
"via": "via",
|
||||
"web_panel": "painel web",
|
||||
"message": "mensagem",
|
||||
"menu": "menu",
|
||||
"language": "idioma",
|
||||
"apply": "aplicar",
|
||||
"logout": "logout",
|
||||
"last": "last",
|
||||
"last2": "last",
|
||||
"activity": "atividade",
|
||||
"never": "jamais",
|
||||
"is_online": "está online",
|
||||
"is_offline": "está offline",
|
||||
"valid": "valido",
|
||||
"remote": "distante",
|
||||
"remote2": "distante",
|
||||
"local": "local",
|
||||
"path": "caminho",
|
||||
"create": "criar",
|
||||
"created": "criado",
|
||||
"creating": "crianda",
|
||||
"diff": "diff",
|
||||
"diff2": "diff",
|
||||
"diff3": "diff",
|
||||
"master": "mestre",
|
||||
"slave": "escravo",
|
||||
"interface": "interface",
|
||||
"as": "como",
|
||||
"stay": "ficar",
|
||||
"protection": "proteção",
|
||||
"return": "voltar",
|
||||
"cluster": "cluster",
|
||||
"existing": "existente",
|
||||
"success": "succeso",
|
||||
"option": "opção",
|
||||
"option2": "opção",
|
||||
"options": "oopções",
|
||||
"template": "modelo",
|
||||
"templates": "modelos",
|
||||
"userlists": "listas de usuários",
|
||||
"whitelist": "lista branca",
|
||||
"whitelists": "listas brancas",
|
||||
"blacklist": "lista negra",
|
||||
"blacklists": "listas negras",
|
||||
"mode": "modo",
|
||||
"balance": "balance",
|
||||
"health": "saude",
|
||||
"cert": "certificado",
|
||||
"cert_name": "nome de certificado",
|
||||
"certs": "certificados",
|
||||
"certs2": "certificados",
|
||||
"advanced": "avançado",
|
||||
"generate": "gerar",
|
||||
"generated": "gerado",
|
||||
"server_template": "Servidor modelo",
|
||||
"custom": "custom",
|
||||
"param": "param",
|
||||
"param2": "param",
|
||||
"params": "params",
|
||||
"of": "of",
|
||||
"display": "exibir",
|
||||
"default_backend": "Default backend",
|
||||
"rule": "regra",
|
||||
"existing": "existing",
|
||||
"domain": "domain",
|
||||
"all": "todos",
|
||||
"just": "somente",
|
||||
"without": "sem",
|
||||
"work": "funcionar",
|
||||
"working": "funcionando",
|
||||
"section": "seção",
|
||||
"section2": "seção",
|
||||
"use": "use",
|
||||
"available": "disponível",
|
||||
"external": "exterior",
|
||||
"in": "em",
|
||||
"folder": "firetório",
|
||||
"folder2": "diretório",
|
||||
"clone": "clone",
|
||||
"date": "data",
|
||||
"time": "hora",
|
||||
"page": "pagina",
|
||||
"pages": "paginas",
|
||||
"body": "corpo",
|
||||
"level": "nivel",
|
||||
"host": "host",
|
||||
"uptime": "Uptime",
|
||||
"downtime": "Downtime",
|
||||
"record_type": "Record type",
|
||||
"upstream": "upstream",
|
||||
"haproxy": "HAProxy",
|
||||
"nginx": "NGINX",
|
||||
"apache": "Apache",
|
||||
"keepalived": "Keepalived",
|
||||
"scan": "sondar",
|
||||
"notify": "notificar",
|
||||
"notification": "notificação",
|
||||
"keeping": "manter",
|
||||
"keep": "mantendo",
|
||||
"close": "fechar",
|
||||
"state": "estado",
|
||||
"latest": "mais recente",
|
||||
"cloud": "nuvem",
|
||||
"provider": "provedor",
|
||||
"region": "região",
|
||||
"OS": "OS",
|
||||
"created_at": "Criado às",
|
||||
"edited_at": "Editado às",
|
||||
"instance_type": "Tipo de instância",
|
||||
"filter": "filtro",
|
||||
"rule_name": "Nome de regra",
|
||||
"rule": "regra",
|
||||
"rules": "regras",
|
||||
"send": "enviar",
|
||||
"additions": "adicionados",
|
||||
"deletions": "apagados",
|
||||
"recent": "recente"
|
||||
}
|
||||
%}
|
|
@ -105,7 +105,7 @@
|
|||
"net_tools": "Сетевые инструменты",
|
||||
},
|
||||
"servers": {
|
||||
"link": "Сервера",
|
||||
"link": "Серверы",
|
||||
"title": "Управление серверами"
|
||||
},
|
||||
"admin_area": {
|
||||
|
@ -405,7 +405,7 @@
|
|||
"smon_desc": "SMON означает <b>S</b>простой <b>MON</b>иторинг.",
|
||||
"checker_desc": "Checker предназначен для мониторинга сервисов HAProxy, Nginx, Apache и Keepalived, а также бэкендов HAProxy и maxconn.",
|
||||
"auto_start_desc": "Служба автозапуска позволяет перезапустить службы HAProxy, NGINX, Apache и Keepalived, если они не работают.",
|
||||
"metrics_desc": "Собирает количество подключений для сервисов HAProxy, NGINX, Apache и HAProxy WAF.",
|
||||
"metrics_desc": "Собирает количество подключений для сервисов HAProxy, NGINX, Apache и HAProxy WAF",
|
||||
"p_s_desc": "Проверяет сервер на наличие открытых портов и сохраняет историю",
|
||||
"socket_desc": "Socket — сервис для отправки предупреждений и уведомлений",
|
||||
"a_new_version": "Доступна новая версия",
|
||||
|
@ -431,7 +431,7 @@
|
|||
"sort_status": "Сортировать по статусу",
|
||||
"status_summary": "Сводка статуса",
|
||||
"enabled_checks": "Активные проверки",
|
||||
"http_status_check": "проверка состояния HTTP",
|
||||
"http_status_check": "Проверка состояния HTTP",
|
||||
"body_status_check": "Проверка реакции тела",
|
||||
"resp_time": "Время откл.",
|
||||
"last_resp_time": "Посл. время откл.",
|
||||
|
@ -624,7 +624,7 @@
|
|||
"is": "",
|
||||
"w_empty": "пуста",
|
||||
"used": "используется",
|
||||
"w_clear": "отчистить",
|
||||
"w_clear": "очистить",
|
||||
"this": "эту",
|
||||
"this2": "этой",
|
||||
"this3": "этот",
|
||||
|
|
|
@ -85,7 +85,7 @@
|
|||
{{lang.phrases.read_about_parameters}} <a href="https://roxy-wi.org/services/smon" title="SMON service description" target="_blank">{{lang.words.here}}</a>
|
||||
</div>
|
||||
<div id="smon-add-table" style="display: none;">
|
||||
<table class="overview">
|
||||
<table class="overview" id="smon-add-table-overview" title="{{lang.words.create|title()}} {{lang.words.w_a}} {{lang.words.new}} {{lang.words.server}} {{lang.words.for}} {{lang.words.monitoring}}">
|
||||
{% include 'include/tr_validate_tips.html' %}
|
||||
<tr>
|
||||
<td class="padding20">
|
||||
|
|
|
@ -6,6 +6,7 @@ import pytz
|
|||
|
||||
import modules.db.sql as sql
|
||||
import modules.common.common as common
|
||||
import modules.server.server as server_mod
|
||||
import modules.roxywi.auth as roxywi_auth
|
||||
import modules.roxywi.common as roxywi_common
|
||||
|
||||
|
@ -34,6 +35,7 @@ services = sql.select_services()
|
|||
gits = sql.select_gits()
|
||||
masters = sql.select_servers(get_master_servers=1)
|
||||
is_needed_tool = common.is_tool('ansible')
|
||||
grafana, stderr = server_mod.subprocess_execute("systemctl is-active grafana-server")
|
||||
|
||||
try:
|
||||
user_subscription = roxywi_common.return_user_status()
|
||||
|
@ -47,6 +49,6 @@ rendered_template = template.render(
|
|||
settings=settings, backups=sql.select_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']
|
||||
is_needed_tool=is_needed_tool, lang=user_params['lang'], grafana=grafana[0]
|
||||
)
|
||||
print(rendered_template)
|
||||
|
|
|
@ -305,7 +305,6 @@
|
|||
}
|
||||
.plus-after .fa-plus, .minus-after .fa-minus {
|
||||
padding-left: 10px;
|
||||
margin-bottom: -2px;
|
||||
}
|
||||
.row-down::after {
|
||||
display: none;
|
||||
|
@ -450,3 +449,13 @@
|
|||
cursor: pointer;
|
||||
padding-right: 5px;
|
||||
}
|
||||
.caption-icon {
|
||||
float: left;
|
||||
margin: 6px 5px 10px 10px;
|
||||
font-size: 15px;
|
||||
}
|
||||
.caption-icon2 {
|
||||
float: left;
|
||||
margin: 8px 5px 10px 10px;
|
||||
font-size: 15px;
|
||||
}
|
|
@ -3064,6 +3064,10 @@ function showServiceVersion(service) {
|
|||
$('#'+service+'_install').attr('title', 'Install');
|
||||
} else if (data.indexOf('warning: ') != '-1') {
|
||||
toastr.warning(data);
|
||||
} else if (data == '') {
|
||||
$('#cur_'+service+'_ver').text(service+' has not installed');
|
||||
$('#'+service+'_install').text('Install');
|
||||
$('#'+service+'_install').attr('title', 'Install');
|
||||
} else {
|
||||
$('#cur_'+service+'_ver').text(data);
|
||||
$('#cur_'+service+'_ver').css('font-weight', 'bold');
|
||||
|
|
Loading…
Reference in New Issue