Я настроил ртутное репо для обслуживания с использованием apache + wsgi + hgweb в OS X.
Теперь он полностью открыт для всех, кто наткнется на мой сервер с правильным номером порта ..
Как я могу настроить его так, чтобы только люди с парой имя пользователя + пароль, которую я одобряю, могли извлекать и / или нажимать из репо?
Я знаю, как очень легко добиться этого с помощью ssh, но в этом конкретном случае требуется, чтобы решение не требовало определения полных учетных записей пользователей на машине для каждого человека, которому я хотел бы предоставить доступ к репо.
Примеры конфигурации Apache для аутентификации приведены в Раздел «Добавление аутентификации» документа «Публикация Mercurial Repositories». Есть примеры для двух обычных случаев (ограничение любого доступа или просто операции push) и даже примеры использования htpasswd
и htdigest
инструменты (которые необходимы для поддержки файла паролей).
Использование WSGI вместо простого CGI (или любого другого метода) не влияет на эту часть настройки - просто укажите видимый для пользователя путь URL-адреса в поле <Location url-path>
заявление.
Предполагая, что у вас уже есть VirtualHost и под ним каталог, в котором вы разместили свой hgweb.wsgi
, вам необходимо добавить в этот каталог следующее:
AuthType Basic
AuthName "Mercurial Repositories Restricted Access"
AuthUserFile /path/to/hg_passwords_file
Require valid-user
Затем вы должны использовать htpasswd
инструмент для создания hg_passwords_file
вот так:
htpasswd -c hg_passwords_file username
для первого пользователя (и введите пароль по запросу).
Для дополнительных пользователей опустите -c
чтобы добавить их в файл вместо его повторного создания.