Каков наилучший или самый простой способ запустить скрипт по запросу http

1

Есть этот сервер, к которому у меня есть доступ к удаленному рабочему столу. Это машина с Windows, и я использую ее для развертывания кода на промежуточном сервере (который также работает на этом компьютере), поэтому мы можем протестировать наш pull-запрос перед тем, как объединить его для разработки ветки. Сейчас я делаю это вручную, но я уже написал небольшой пакетный скрипт, который позволяет мне автоматизировать процесс. В общем, теперь мне нужно только подключиться к этому компьютеру и запустить этот скрипт, предоставляя ему некоторые параметры. Это все еще боль, и я хочу настроить команду слеша https://api.slack.com/slash-commands в слабости нашей команды, чтобы иметь возможность инициировать выполнение этого скрипта прямо из слабого канала нашей команды. Итак, для этого мне нужен веб-сервер, доступный из внешней сети, чтобы отправить туда мой POST-запрос с параметрами. Но а. эта машина стоит за нашей работой. Там нет сервера, который может принять такой запрос

Я немного потерян. Если бы я мог настроить какой-либо сервер для прослушивания этого запроса, он все равно не был бы доступен для внешнего Интернета, верно? или это будет? Но тогда не было бы угрозой безопасности выставить такую ​​конечную точку для запросов POST?

Так что у меня есть эта смутная идея, которая может быть глупой, но я просто хочу, чтобы кто-то, имеющий опыт в этих вещах, сказал мне, где искать, чтобы дать мне направление. Итак, что я думаю, может быть, я мог бы установить какой-нибудь сервис (например, демон), который будет постоянно работать на этом удаленном компьютере и время от времени проверять какой-нибудь другой сервер. Как пинговать какой-нибудь сервер в Интернете частыми GET-запросами. Этот другой сервер будет общедоступным сервером, доступным для моей слабой интеграции. Он получит запрос POST с моими параметрами из slack и сохранит его. Затем, когда придет следующий GET с моего удаленного компьютера, он ответит тем, что я ему отправил.

Это, наверное, очень глупая идея, но это единственное, что у меня есть. Какие-либо предложения? Комментарии?

dKab
источник

Ответы:

2

Отказ от ответственности - если вы ищете специфику Windows, в этом ответе его нет (я системный администратор Linux, поэтому я понимаю технологии и уже делал подобные вещи в среде Linux - Windows будет похожа)

Есть (по крайней мере) два способа решения этой проблемы - В зависимости от ваших временных рамок, ваша идея иметь внешний сервер, который вы можете регулярно устанавливать для запуска развертывания, является хорошей - она ​​обеспечивает уровень изоляции вашего сеть при выполнении работы.

Альтернативным способом будет запуск веб-сервера в вашей локальной сети. Вы должны иметь возможность добавить на свой компьютер стандартный стек WAMP (Windows, Apache, MySQL, PHP), а затем кодировать веб-сайт PHP для обработки веб-запросов, SANITIZE INPUT и выполнить скрипт. Вам также потребуется перенести / проколоть соответствующий порт от вашего маршрутизатора до веб-сервера - и, для хорошей меры, возможно, также потребуется включить HTTPS на нем.

Вариант C будет состоять в том, чтобы настроить WAMP, как указано выше, и получить LEB (нижний предел), а также настроить в качестве VPN-сервера на LEB и использовать веб-сервер в качестве клиента. Настройте NAT, межсетевой экран и переадресацию портов на LEB, чтобы обойти внутреннюю VPN и позволить трафику проходить по мере необходимости. Вам также может понадобиться установить MTU на блоке равным 1400 или около того, потому что вы инкапсулируете VPN в VPN.

davidgo
источник
1

Ajax Ajax - это традиционный способ выполнения асинхронного HTTP-запроса. Данные могут быть отправлены с использованием метода HTTP POST и получены с использованием метода HTTP GET. Давайте посмотрим и сделаем запрос GET. Я буду использовать JSONPlaceholder, бесплатный онлайн REST API для разработчиков, который возвращает случайные данные в формате JSON.

Чтобы сделать HTTP-вызов в Ajax, вы должны инициализировать новый метод XMLHttpRequest (), указать конечную точку URL-адреса и метод HTTP (в данном случае, GET). Наконец, мы используем метод open () для связи метода HTTP и конечной точки URL-адреса и вызываем метод send () для запуска запроса.

Мы записываем HTTP-ответ на консоль, используя свойство XMLHTTPRequest.onreadystatechange, которое содержит обработчик событий, который будет вызываться при активации события readystatechanged.

const Http = new XMLHttpRequest (); const url = 'https: //jsonplaceholder.typicode.com/posts'; Http.open ("GET", URL); Http.send (); Http.onreadystatechange = (e) => {console.log (Http.responseText)} Если вы видите консоль вашего браузера, он вернет матрицу данных в формате JSON. Но как мы узнаем, что запрос сделан? Другими словами, как мы можем обрабатывать ответы с помощью Ajax?

Свойство onreadystatechange имеет два метода: readyState и status, которые позволяют нам проверять состояние нашего запроса.

Если readyState равен 4, это означает, что запрос выполнен. Свойство readyState имеет 5 ответов. Узнайте больше об этом здесь.

Помимо прямого вызова Ajax с помощью JavaScript, существуют и другие более мощные методы для выполнения HTTP-вызова, такие как $ .Ajax, который является методом jQuery. Я буду обсуждать это сейчас.

Усман Аслам
источник
0

Опираясь на отличные моменты, сделанные @davidgo.

  1. Установите полный стек на локальный компьютер с WAMP .

  2. Откройте безопасный туннель к Интернету. Вы можете создать это самостоятельно или использовать существующий продукт. Я могу порекомендовать ngrok, который предоставляет защищенный туннель VPN из коробки и прекрасно работает со Slack.

  3. Обратитесь в отдел безопасности / политики безопасности вашей компании, чтобы убедиться, что ваше решение соответствует требованиям.

Эрик Калкокен
источник