PHP прокси на локальный сервер Mercurial - PullRequest
0 голосов
/ 28 марта 2010

Мне было интересно, возможно ли создать php-прокси для сервера, который локально прослушивает onlu, чтобы шлюз php был общедоступным и направлял все на сервер, прослушивающий localhost.

Этот сервер будет hg serve mercurial, который прослушивает только 127.0.0.1, и php выполнит аутентификацию.

Как вы думаете, это возможно сделать? У кого-нибудь есть идея, как сделать общий прокси в php, чтобы не только http get работал, но и hg push?

Я знаю, что есть способы размещения Mercurial Repo с аутентификацией, но это на подключаемом компьютере, и у меня недостаточно места для дополнительных приложений и т. Д.

Ответы [ 3 ]

2 голосов
/ 28 марта 2010

Вам не нужно запускать hg serve.

Вместо этого используйте hgweb.cgi или hgwebdir.cgi. Это стандартные CGI-скрипты, которые можно запускать под Apache. hgweb.cgi обслуживает один репозиторий, а hgwebdir.cgi обслуживает несколько репозиториев. Они не требуют установки каких-либо специальных модулей на Apache, и вы можете использовать все встроенные механизмы контроля доступа и аутентификации Apache.

Лучшим справочником является PublishingRepositories в вики Mercurial, в котором объясняется, как это сделать, а также сравниваются другие параметры, включая ssh, для которых требуется еще меньше настроек.

2 голосов
/ 28 марта 2010

Если вы действительно хотите использовать PHP, вы можете использовать функции сокетов, чтобы создавать любые сети, которые вы хотите. (http://ch.php.net/manual/en/ref.sockets.php) И вы можете использовать fsockopen для подключения к тому, что вы хотите. Вы можете объединить это и использовать его в PHP-скрипте, который вы запускаете из консоли. Повторно используйте set_time_limit, чтобы ваш прокси работал. Вам понадобится много знаний и удачи, чтобы сделать это.

Но на самом деле это действительно странно, что вы делаете (см. Другие ответы и комментарии). Какой бы ни была причина для этой конфигурации, это неправильно.

1 голос
/ 28 марта 2010

Если вы запускаете ваш php в apache, то вы, вероятно, можете делать то, что вы хотите с php. Просто настройте apache для прокси на hgserve (при условии, что вы не можете запустить wsgi или cgi, что является лучшим решением), и все готово. Я не думаю, что есть что-то, что можно добавить в землю PHP, которую apache и hgserve уже не приводят к таблице.

Но, да, вы можете повторно реализовать функции прокси-сервера Apache в PHP, хотя вам также нужно будет обязательно включить поддержку RangeRequests, которые в некоторых ситуациях используются в Mercurial. Не забывайте свою логику кеширования RFC2616 (If-заголовки, Cache-Control, Expires, Last-Modified и т. Д.) Для эффективности ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...