Subversion: получить IP-адрес пользователя в хуке pre-commit? - PullRequest
2 голосов
/ 23 сентября 2011

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

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

Итак, наконец, мой вопрос:

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

Ответы [ 2 ]

2 голосов
/ 27 апреля 2012

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

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 (это соединение между клиентом и сервером).

2 голосов
/ 23 сентября 2011

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

вы можете установить библиотеку из Git по этой ссылке:1005 * GITClientIP (или используйте прилагаемый код).

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

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

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