В общем, решил запилить решение самостоятельно.
Наваял скриптик, позволяющий получить логин VPN-пользователя по названию интерфейса, который для него поднят.
#!/bin/bash
# $1 - interface name
# Task: get username by interface name
LOG=$(last | grep $1 | grep still | cut -f 1 -d ' ')
LOGIN=$(grep $LOG /etc/ppp/chap-secrets | cut -f 1 -d ' ')
LOGIN=${LOGIN//[\"]/}
echo $LOGIN
А далее немного модифицировал файл Webmin'а /usr/share/webmin/pptp-server/list_conns.cgi, добавив в цикл вывода таблицы подключений несколько своих строчек.
foreach $c (@conns) {
# bugaga0112358 - Prepare command
$cmd = 'listclient '.$c->[3];
# bugaga0112358 - Execute command
$c->[7] = `$cmd`;
local @cols;
push(@cols, "<a href='disc.cgi?pid=$c->[0]'>".
($c->[3] ? "<tt>$c->[3]</tt>"
: $text{'conns_unknown'})."</a>");
push(@cols, $c->[2]);
push(@cols, $c->[6] || $text{'conns_unknown'});
push(@cols, $c->[4] ? "<tt>$c->[4]</tt>"
: $text{'conns_unknown'});
push(@cols, $c->[5] ? "<tt>$c->[5]</tt>"
: $text{'conns_unknown'});
push(@cols, $c->[7] ? "<tt>$c->[7]</tt>"
: $text{'conns_unknown'});
print &ui_columns_row(\@cols);
}
print &ui_columns_end();
}
Результат удовлетворил начальство, а у меня остался небольшой осадок. Все-таки хочется узнать, как же оно там на самом деле должно работать =)