{% extends "layout.twig" %} {% block title %}{{ server.name }}{% endblock %} {% block styles %} {% endblock %} {% block content %}

{{ server.name }}

{{ server.host }}

{% if import_message %}
{{ import_message.text }}
{% endif %}

{{ t('servers.server_info') }}

{{ t('common.status') }}
{{ server.status }}
{% if server_protocols|length <= 1 %}
VPN Port
{{ server.vpn_port }}
Subnet
{{ server.vpn_subnet }}
{% endif %}
{% for sp in server_protocols %}
{{ sp.name }} ({{ sp.slug }})
{% if sp.server_host %}Host: {{ sp.server_host }}{% endif %} {% if sp.server_port %}Port: {{ sp.server_port }}{% endif %}
{% else %}
Нет установленных протоколов
{% endfor %}
{% if server.status == 'active' %}
CPU
--
RAM
--
Disk
--
Network
--
{% endif %}

{{ t('clients.create') }}

{{ t('servers.config_import_title') }}

{{ t('servers.config_import_hint') }}

{{ t('servers.config_import_file_hint') }}

{{ t('backups.title') }}

{{ t('form.loading') }}

{{ t('clients.title') }} ({{ clients|length }})

{% if clients|length > 0 %}
{% for client in clients %} {% endfor %}
{{ t('clients.name') }} Логин {{ t('ai.protocol_type') }} {{ t('clients.ip') }} {{ t('clients.status') }} {{ t('clients.expiration') }} {{ t('clients.traffic') }} {{ t('clients.traffic_limit') }} {{ t('common.speed') }} {{ t('clients.last_handshake') }} {{ t('clients.actions') }}
{{ client.name }} {{ client.name }} {% if client.protocol_name %} {{ client.protocol_name }} {% else %} - {% endif %} {{ client.client_ip }} {% set is_online_by_handshake = client.last_handshake and (("now"|date('U') - client.last_handshake|date('U')) < 300) %} {% if client.name in online_logins or is_online_by_handshake %} Online {% elseif client.status == 'active' %} {{ t('status.active') }} {% else %} {{ t('status.disabled') }} {% endif %} {% if client.expires_at %} {% set expires_ts = client.expires_at|date('U') %} {% set now_ts = "now"|date('U') %} {% set diff_days = ((expires_ts - now_ts) / 86400)|round %} {% if diff_days < 0 %} {{ t('clients.expired') }} {% elseif diff_days <= 7 %} {{ diff_days }} {{ t('common.days') }} {% else %} {{ client.expires_at|date('Y-m-d') }} {% endif %} {% else %} {% endif %}
↑{{ (client.bytes_sent|default(0) / 1024 / 1024)|number_format(2) }} MB
↓{{ (client.bytes_received|default(0) / 1024 / 1024)|number_format(2) }} MB
{% if client.traffic_limit %} {% set total_traffic = (client.bytes_sent|default(0) + client.bytes_received|default(0)) %} {% set limit_gb = (client.traffic_limit / 1073741824)|number_format(2) %} {% set used_gb = (total_traffic / 1073741824)|number_format(2) %} {% set percentage = ((total_traffic / client.traffic_limit) * 100)|round %} {% if percentage >= 100 %} {{ t('clients.overlimit') }} {% elseif percentage >= 80 %} {{ used_gb }} / {{ limit_gb }} GB ({{ percentage }}%) {% else %} {{ used_gb }} / {{ limit_gb }} GB {% endif %} {% else %} {% endif %}
↑{{ ((client.speed_up|default(0) * 8) / 1000000)|number_format(2) }} Mbit
↓{{ ((client.speed_down|default(0) * 8) / 1000000)|number_format(2) }} Mbit
{% if client.last_handshake %} {{ client.last_handshake|split(' ')|first }} {{ client.last_handshake|split(' ')|last }} {% else %} {{ t('clients.never') }} {% endif %} {{ t('servers.view') }} {% if client.status == 'active' %}
{% else %}
{% endif %}
{% else %}
{{ t('clients.no_clients') }}
{% endif %}
{% endblock %}