Руководство разработчика по ngrok
Проект ngrok состоит из двух компонентов: клиента ngrok (ngrok) и сервера ngrok (ngrokd). Клиент ngrok является более сложным компонентом, поскольку имеет пользовательские интерфейсы для отображения сохранённых запросов и ответов.
git clone git@github.com:inconshreveable/ngrok.git
cd ngrok && make
bin/ngrok [LOCAL PORT]
Существуют цели Makefile для сборки только клиента или сервера.
make client
make server
Примечание: Вы должны собирать с Go 1.1+! У вас должен быть установлен Mercurial SCM.
И клиент, и сервер содержат статические файлы активов. К ним относятся сертификаты TLS/SSL и html/css/js для веб-интерфейса клиента. Версии выпуска встраивают все эти данные в сами двоичные файлы, тогда как отладочные версии считывают эти файлы из файловой системы.
Всегда следует разрабатывать на отладочных версиях, чтобы не перекомпилировать при тестировании изменений в статических активах.
Существуют цели Makefile для создания клиента и сервера для выпусков:
make release-client
make release-server
make release-all
Стратегия, которую я использую для разработки на ngrok, заключается в следующем:
Добавьте следующие строки в /etc/hosts:
127.0.0.1 ngrok.me
127.0.0.1 test.ngrok.me
Запустите ngrokd со следующими параметрами:
./bin/ngrokd -domain ngrok.me
Создайте файл конфигурации ngrok «debug.yml» со следующим содержимым:
server_addr: ngrok.me:4443
tunnels:
test:
proto:
http: 8080
Затем запустите ngrok с помощью одной из следующих команд:
./bin/ngrok -config=debug.yml -log=ngrok.log start test
./bin/ngrok -config=debug.yml -log=ngrok.log -subdomain=test 8080
Это позволит вам настроить клиент ngrok для взаимодействия с сервером ngrok локально под вашим контролем. Счастливого хакинга!
На высоком уровне туннелирование ngrok работает следующим образом:
Сообщения передаются по сети в виде сетевых строк вида:
<длина сообщения><полезная нагрузка сообщения>
Длина сообщения отправляется как 64-битное целое число с прямым порядком байтов.
Определения и общие процедуры протокола находятся в папке src/ngrok/msg
Здесь определены все различные типы сообщений (Auth, AuthResp, ReqTunnel, RegProxy, StartProxy и т. д.) и задокументированы их поля. Это хорошее место, чтобы понять, какие именно сообщения отправляются между клиентом и сервером.
Код для сервера находится в папке src/ngrok/server
Точка входа ngrokd находится в src/ngrok/server/main.go. В src/ngrok/main/ngrokd/ngrokd.go есть заглушка для создания двоичного файла с правильным именем и нахождения в собственном пакете «main», чтобы соответствовать системе сборки Go.
Код клиента находится в папке src/ngrok/client
Точка входа ngrok находится в src/ngrok/client/main.go. В src/ngrok/main/ngrok/ngrok.go есть заглушка для создания двоичного файла с правильным именем и нахождения в собственном пакете «main», чтобы соответствовать системе сборки Go.
HTML-код и код JavaScript для веб-интерфейса ngrok, а также другие статические ресурсы, такие как сертификаты TLS/SSL, находятся в каталоге верхнего уровня assets.
Более подробную документацию можно найти в комментариях к самому коду.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )