Искав совершенно другое, случайно наткнулся на решение здесь
viewtopic.php?f=4&t=2425&start=40#p81854.
Однако там тоже не полностью готовый ответ, и мне, как чайнику, пришлось некоторое время поковыряться, чтобы это запустить.
Решение рабочее, однако при обновлении системы будет затёрто и придётся корректировать вновь, поэтому если кто подскажет как это автоматизировать - буду благодарен.
В первую очередь для себя (чтобы проще потом найти), ну и для таких же чайников дублирую сюда инструкцию со всеми правками.
Для начала необходимо добавить функцию последовательного перебора пар логин-пароль в файл general.class.php (именно этот файл будет переписан при обновлении системы).
Подключаемся к МД по SSH (с помощью putty, например, по умолчанию логин pi, пароль raspberrymj или raspberry).
В консоли открываем файл командой:
Код: Выделить всё
sudo nano /var/www/html/lib/general.class.php
Проматываем в конец и дописываем код функции:
Код: Выделить всё
function check_login($user, $pass){
if(is_array(EXT_ACCESS_USERNAME)) {
for($i=0; $i<=count(EXT_ACCESS_USERNAME); $i++) {
if($user == EXT_ACCESS_USERNAME[$i] && $pass == EXT_ACCESS_PASSWORD[$i]) { return true;}
}
} else {
if($user == EXT_ACCESS_USERNAME && $pass == EXT_ACCESS_PASSWORD) {return true;}
}
}
Далее в этом же файл где-то близко к его началу находим и комментируем двойным слэшем строку
Код: Выделить всё
// if ($_SERVER['PHP_AUTH_USER'] != EXT_ACCESS_USERNAME || $_SERVER['PHP_AUTH_PW'] != EXT_ACCESS_PASSWORD)
Под этой строкой вставляем новую строку
Код: Выделить всё
if(!check_login($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']))
После чего сохраняем изменения и закрываем nano: Ctrl+O, Enter, Ctrl+X.
Далее нужно отредактировать файл config.php, открываем его:
Ищем строки
Код: Выделить всё
//Define('EXT_ACCESS_USERNAME', ''); // access details for external network (internet)
//Define('EXT_ACCESS_PASSWORD', '');
Если они были раскомментированы, комментируем их обратно, а ниже добавляем следующее:
Код: Выделить всё
$user = array("user1", "user2");
$pass = array("pass1", "pass2");
Define('EXT_ACCESS_USERNAME', $user);
Define('EXT_ACCESS_PASSWORD', $pass);
где вместо user1 и user2 вставлям логины пользователей, вместо pass1 и pass2 пароли.
Если нужно больше пользователей - добавляем в таком же формате через запятую после "user2" и "pass2".
Cохраняем изменения и закрываем nano: Ctrl+O, Enter, Ctrl+X.
Перезагружаем систему командой
Готово.
Хочу еще тут же отметить, что строка с дефайном домашней сети в config.php
должна быть раскомментирована, иначе авторизация не будет запрашиваться.
Более того, если МД сидит за натом роутера, да ещё и доступ к нему через облако (как в моём случае через KeenDNS), то чтобы авторизация запрашивалась необходимо указать несуществующий адрес сети.
Например, у меня домашняя сеть 192.168.0.*, но в дефайне я указал 192.168.1.*. Только в этом случае авторизация будет запрашиваться.