Документация
→ Бланк настроек
Сам шаблон находится в /usr/local/nodeny/web/tmpl/user_blank.html. Давайте заменим его на свой, а не будем вносить изменения в текущий (читайте почему)
cd /usr/local/nodeny/ ee modules/MyNetwork/create.tmpl.user_blank.html
#<ACTION> file=>'web/tmpl/user_blank.html',hook=>'new'
<!doctype html>
<html>
<head><meta http-equiv='Content-Type' content='text/html; charset=utf-8'></head>
<body><pre>
id : {{id}}
login: {{name|safe}}
fio : {{fio|safe}}
</pre></body>
</html>
perl install.pl -x
Открываем в браузере бланк настроек любого клиента и видим результат. Обратите внимание на '|safe' после имени переменной - это отфильтровка спецсимволов, которые могут исказить html.
id : id учетной записи клиента name : логин pass : пароль fio : ФИО ppc : платежный код grp : номер группы клиента grp_name : имя группы state : on - доступ открыт, off - закрыт state_off : установлен если state равен off contract : договор contract_date : дата договора (timestamp) contract_date_as_text : дата договора в виде dd.mm.yyyy balance : баланс limit_balance : граница отключения block_if_limit : отключать ли запись при достижении границы отключения cstate : техническое состояние (настроить/ремонт/вирусы...) в виде числа comment : комментарий lstate : нужна авторизация/всегда онлайн discount : скидка traf : суммарный трафик traf_in : суммарный трафик к клиенту traf_out : суммарный трафик от клиента traf1 : трафик в байтах направления 1 ... traf4 : трафик в байтах направления 4 in1 : входящий трафик направления 1 out1 : исходящий трафик направления 1 ... dopdata : дополнительные данные services : подключенные услуги ips : ip адреса
Поля dopdata, services и ips содержат в себе другие поля, поскольку может быть подключено несколько услуг и ip.
ip : ip в текстовом виде, например, 10.100.4.8
ipn : ip в числовом виде, например, 174326792
tm_auth : время авторизации в секундах
start : timestamp начала авторизации
last : timestamp последнего сигнала авторизации
release : timestamp когда будет освобожден динамический ip
если не будет больше сигналов авторизации
properties : параметры авторизации через запятую
auth : 1 если авторизован
type : тип (статический/динамический)
Большинство параметров ip врядли вам понадобится, но работать с ними мы должны уметь:
Все ip клиента: {% for i in ips %} {{i.ip}} ({{i.type}}){% endfor %}
Возможно, возникнет необходимость отображать разные параметры, например шлюз или днс, в зависимости от того в какую сеть попадает данный ip. Для этого мы используем условия:
{% if ip.ipn >= inet.aton('10.0.0.0') && ip.ipn <= inet.aton('10.255.255.255') %}
серый ip {% else %} белый ip
{% endif %}
{% for i in services %}
{% if i.module eq 'inet_unlim' %}
{{i.description}}<br>
{% endif %}
{% endfor %}
{{dopdata._adr_street.show()}}
Обратите внимание, что для дополнительных полей мы используем метод show() - он преобразует закодированные данные в читаемые. Для улицы это наглядно т.к. они обычно кодируются числом.
Описание шаблонизатора NoDeny+.