Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

github.com/mdigger/mx-http-proxy

Package Overview
Dependencies
Alerts
File Explorer
Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

github.com/mdigger/mx-http-proxy

  • v0.0.0-20191015221156-36f2ef38aaa5
  • Source
  • Go
  • Socket score

Version published
Created
Source

MX HTTP Proxy

Приложение запускается как сервис и позволяет выполнять через REST API команды на удаленном сервере Zultys MX. Для отслеживания событий сервера Zultys MX используется Server-Sent Events API.

Описание API

Сервер включает в себя описание поддерживаемого API в виде документа в формате OpenAPI 3.0 (HTML view). Так же поддерживается визуальное представление данного документа при обращении к корню сервиса.

Пример использования API
POST /login HTTP/1.1
Host: localhost:8000
Content-Type: application/json; charset=utf-8
Content-Length: 144

{
    "login":"login",
    "password":"password",
    "type":"User",
    "platform":"iPhone",
    "version":"7.0",
    "loginCapab":"Audio",
    "mediaCapab":"Voicemail|CallRec"
}
HTTP/1.1 200 OK
Server: MX-HTTP-Proxy/0.1.3 (2ce6c32)
X-API-Version: 1.0.2
Access-Control-Allow-Origin: *
Content-Type: application/json; charset=utf-8
Content-Length: 180

{
    "token": "81snQUFPMDs7GEye",
    "user": "43892780322813134",
    "device": "273",
    "softPhonePwd": "nfsi8ohraw2ReJtjCuE7f3KyTWc2doUi",
    "api": 11,
    "mx": "631HC"
}

Параметры запуска сервера

Все настройки сервиса осуществляются через параметры для запуска.

-port <port>

Задает имя хоста (опционально) и порт, на котором будет отвечать HTTP-сервер.

Так же может быть задано через переменную окружения PORT.

-mx <mxhost>

Задает адрес сервера Zultys MX. Если порт не указан, то по умолчанию используется порт 7778.

Так же может быть задано через переменную окружения MX:

$ export MX=mxhost.connector73.net

Внимание: незащищенное соединение с сервером Zultys MX не поддерживается!

-log <params> Задает настройки для вывода лога работы сервиса.

Для вывода лога используется stderr. Если необходимо переопределить вывод лога в файл, то можно воспользоваться следующим методом:

$ ./mx-http-proxy 2>mx-http-proxy.log

Вы можете задать уровень сообщений для вывода в лог:

  • all - выводить все записи лога
  • trace - выводить все записи лога, начиная от команд и событий от сервера MX
  • debug - выводить все записи лога, начиная с отладочных выводов, но исключая вывод команд и событий сервера MX
  • info - выводить все записи лога, начиная от информационных, но исключая отладочные данные
  • warn - не выводить информационных сообщений лога, а только об ошибках и предупреждениях
  • error - выводить только сообщения об ошибках
  • none - вообще отключить вывод лога

Так же можно задать формат вывода лога:

  • json - использовать формат JSON для вывода лога
  • console - использовать консольный формат для вывода лога
  • color - использовать консольный формат с цветовым выделением для вывода лога
  • develop - аналогичен формату color, но значения атрибутов лога выводит с новой строки

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

Можно задать сразу несколько значений параметра лога, указав их через запятую или двоеточие:

./mx-http-proxy -log dev,all

Настройки лога по умолчанию можно изменить для всех приложений, задав их в виде переменной окружения LOG:

$ export LOG=COLOR

Или только для однократного запуска приложения:

$ LOG=DEV ./mx-http-proxy -mx localhost

Вывод лога в формате JSON позволяет легче разбирать его программным образом:

$ ./mx-http-proxy -log json,all
{"ts":1533494002,"lvl":0,"msg":"service","name":"MX-HTTP-Proxy","version":"dev"}
{"ts":1533494002,"lvl":0,"log":"http","msg":"server","listen":"localhost:8000","tls":false,"url":"http://localhost:8000/"}

Сообщения, относящиеся к командам сервера MX используют тип лога - mx, а для информации об обработке HTTP-запросов используется - http. Все остальные выводы обычно не используют префикс:

21:52:50.512539 INFO  service name=MX-HTTP-Proxy version=dev date=2018-08-05 build=063525b
21:52:50.512949 INFO  [http]: server listen=localhost:8000 tls=false url=http://localhost:8000/
21:53:00.036338 TRACE [mx]: dmtest3: <- 0001 <loginRequest type="User" platform="iPhone" version="7.0" loginCapab="Audio" mediaCapab="Voicemail|CallRec"><userName>dmtest3</userName><pwd>nnke/C/yi/f...U5OVTqg5joXHc=&#xA;</pwd></loginRequest>
21:53:00.070054 TRACE [mx]: dmtest3: -> 0001 <loginResponce Code="0" sn="631HC" apiversion="11" ext="273" userId="43892780322813134" softPhonePwd="yTEuJ15RheF2...BogZXzp27fAqc334X"  proto="TLS" mxport="5061" clientport="1234" >Login OK</loginResponce>
21:53:00.070779 DEBUG store connection login=dmtest3 token=m_r3PY2i1jkxNo6W
21:53:00.071176 INFO  [http]: POST /login code=200 user=dmtest3 size=180 duration=144.83142ms gzip=false
21:53:01.821825 TRACE [mx]: dmtest3: <presence from="0" status="Available" mxStatus=""></presence>
21:53:01.822540 DEBUG sse user=dmtest3 event=presence data={"presence":"Available"}

Поддержка Docker

Данный сервис доступен в виде образов Docker:

$ docker pull mdigger/mx-http-proxy
$ docker run --rm \
    -p 8000:8000 \
    -e MX=631hc.connector73.net \
    mdigger/mx-http-proxy -log all,color

Мониторинг

По адресу /debug/vars доступны описания некоторых метрик сервиса в формате JSON, которые могут быть использованы для мониторинга.

FAQs

Package last updated on 15 Oct 2019

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc