Subversion: получить IP-адрес пользователя в хуке pre-commit?

Мы размещаем хранилище Subversion для разработки программного обеспечения. Таким образом, лица, не являющиеся сотрудниками, имеют доступ к некоторому нашему коду кодов. Политика нашей компании в области ИТ-безопасности требует, чтобы мы проверяли все файлы, загруженные извне нашей корпоративной сети. Все внутренние компьютеры оснащены современными антивирусными сканерами.

Мы планируем интегрировать антивирусную проверку в precommit-ловушку Subversion. Но это вызывает задержки при выполнении больших коммитов. Поэтому мы хотели бы сканировать только коммиты, созданные за пределами нашей интрасети. Чтобы определить источник, нам нужен IP-адрес пользователя, выполняющего фиксацию. Поскольку некоторые из наших сотрудников работают из дома, мы не можем использовать имена пользователей для идентификации коммитов из Интернета.

Таким образом, наконец, мой вопрос:

Как я могу получить IP-адрес, с которого выполняется фиксация в ловушке precommit?

2 ответа

Решение

Позвольте мне представить, что вы пишете свой хук на Perl, в этом случае вы можете использовать следующую библиотеку lib: DocumentationClientIP

Вы можете установить lib из Git по этой ссылке: GITClientIP (или использовать включенный код).

После установки вам нужно добавить что-то подобное в ваш код:

    use SVN::Utils::ClientIP qw(ssh_client_ip);

    print "The client's IP address is ", ssh_client_ip();

Я использую lsof (предварительная фиксация bash-скрипта):

srcip=$(/usr/sbin/lsof -Pn -p $PPID | grep ESTABLISHED)

или, чтобы получить только IP:

srcip=$(/usr/sbin/lsof -Pn|grep ssh|grep ESTA|cut -d\> -f 2|cut -d: -f 1)

Пока клиент подключается к серверу, выполняется предварительная фиксация. lsof показывает все открытые файлы (включая TCP-соединения и т. д.); Я выбираю все "файлы" для этого процесса (-p $PPID) и grep для ESTABLISHED (это связь между клиентом и сервером).

Другие вопросы по тегам