Page 1 of 1
JSON for WEB-apps
Posted: 05 Feb 2018, 17:25
by dimka88
В телеграм чате
https://t.me/joinchat/DS6swRC3DvEWdNijTqaaeA проскакивала информация об актуальности web для управления сервером, думаю необходимо предоставить транспорт от accel-ppp до WEB в формате JSON, это упростит развитие WEB приложений и не только, для управления NAS, возможно позволит делегировать некоторые функции не квалифицированному персоналу. Для начала попробовать организовать просто выдачу информации, как accel-cmd show stat и accel-cmd show sessions, возможно даже объединить вывод.
accel-ppp.conf
Code: Select all
[JSON]
service-json=x.x.x.x:port
allow-from=x.x.x.x/x
Присоединяйтесь к обсуждению.
Re: JSON for WEB-apps
Posted: 05 Feb 2018, 17:43
by nik247
+1
Re: JSON for WEB-apps
Posted: 05 Feb 2018, 21:19
by ivanmfan
Было бы супер, рекомендую сразу придерживаться архитектуры REST API,
https://habrahabr.ru/post/38730/
Re: JSON for WEB-apps
Posted: 06 Feb 2018, 06:14
by dimka88
Я так и не понял плюсы REST API перед JSON =(
ivanmfan, попробуйте растолковать на примере accel-ppp
Code: Select all
root@dev:~# accel-cmd show sessions
ifname | username | calling-sid | ip | type | comp | state | uptime
--------+----------+-------------------+--------------+------+------+--------+----------
ipoe7 | | 00:0c:29:e3:86:f5 | 100.64.0.255 | ipoe | | active | 12:37:39
ipoe5 | | 00:0c:29:e3:86:f5 | 100.64.0.52 | ipoe | | active | 00:09:43
ipoe1 | | 00:0c:29:e3:86:f5 | 100.64.0.53 | ipoe | | active | 00:08:56
ipoe9 | | 00:0c:29:e3:86:f5 | 100.64.0.82 | ipoe | | active | 00:07:48
ipoe3 | | 00:0c:29:e3:86:f5 | 100.64.0.55 | ipoe | | active | 00:03:24
ipoe4 | | 00:0c:29:e3:86:f5 | 100.64.0.70 | ipoe | | active | 00:03:02
ipoe6 | | 00:0c:29:e3:86:f5 | 100.64.0.75 | ipoe | | active | 00:02:51
ipoe0 | | 00:0c:29:e3:86:f5 | 100.64.0.72 | ipoe | | active | 00:02:28
ipoe2 | | 00:0c:29:e3:86:f5 | 100.64.0.88 | ipoe | | active | 00:02:22
Re: JSON for WEB-apps
Posted: 06 Feb 2018, 07:48
by Dmitry
это не замена жсон, это способ структурирования запросов
Re: JSON for WEB-apps
Posted: 06 Feb 2018, 09:54
by dimka88
То как я понял REST получается очень логично, спс
ivanmfan.
Запросы на завершение сессии
Code: Select all
GET /terminate/ifname/ipoe7
GET /terminate/calling-sid/00:0c:29:e3:86:f5
GET /terminate_hard/ip/100.64.0.255
Code: Select all
ifname | username | ip | ip6 | ip6-dp | calling-sid | called-sid | sid | comp | rx-bytes-raw | tx-bytes-raw | rx-pkts | tx-pkts | uptime-raw
--------+----------+--------------+-----+--------+-------------------+------------+------------------+------+--------------+--------------+---------+---------+------------
ipoe7 | | 100.64.0.255 | | | 00:0c:29:e3:86:f5 | ens224.18 | 0818e4d4d40ff231 | | 33456 | 33848 | 102 | 132 | 54800
ipoe3 | | 100.64.0.95 | | | 00:0c:29:e3:86:f5 | ens224.10 | 0818e4d4d40ff973 | | 0 | 1016 | 0 | 12 | 134
ipoe4 | | 100.64.0.53 | | | 00:0c:29:e3:86:f5 | ens224.14 | 0818e4d4d40ff974 | | 0 | 960 | 0 | 11 | 124
ответ в формате JSON
Code: Select all
[
{
"ifname": "ipoe7",
"username": " ",
"ip": "100.64.0.255",
"ip6": "",
"ip6-dp": "",
"calling-sid": "00:0c:29:e3:86:f5",
"called-sid": "ens224.18",
"sid": "0818e4d4d40ff231",
"comp": "",
"rx-bytes-raw": "33456",
"tx-bytes-raw": "33848",
"rx-pkts": "102",
"tx-pkts": "132",
"type": "ipoe",
"state": "active",
"uptime-raw": "54800"
},
{
"ifname": "ipoe3",
"username": " ",
"ip": "100.64.0.255",
"ip6": "",
"ip6-dp": "",
"calling-sid": "00:0c:29:e3:86:f5",
"called-sid": "ens224.10",
"sid": "0818e4d4d40ff973",
"comp": "",
"rx-bytes-raw": "0",
"tx-bytes-raw": "1016",
"rx-pkts": "0",
"tx-pkts": "12",
"type": "ipoe",
"state": "active",
"uptime-raw": "134"
},
{
"ifname": "ipoe4",
"username": " ",
"ip": "100.64.0.255",
"ip6": "",
"ip6-dp": "",
"calling-sid": "00:0c:29:e3:86:f5",
"called-sid": "ens224.14",
"sid": "0818e4d4d40ff974",
"comp": "",
"rx-bytes-raw": "0",
"tx-bytes-raw": "960",
"rx-pkts": "0",
"tx-pkts": "11",
"type": "ipoe",
"state": "active",
"uptime-raw": "124"
}
]
Re: JSON for WEB-apps
Posted: 06 Feb 2018, 15:14
by ivanmfan
Только это будет вот так
GET /session/ifname/ipoe7
Вернёт данные
DELETE /session/ifname/ipoe7
Сделает terminate
И как пример
PUT /session/ifname/ipoe7
{description:”user description”}
Этот запрос установит описание к сессии
Re: JSON for WEB-apps
Posted: 07 Feb 2018, 21:05
by dimka88
Прочитав на хабре статью
https://habrahabr.ru/post/265845/ я понял, что не одинок со своей кашей в голове и REST. Мне кажется нам будет удобнее использовать JSON-pure API.
*Использует только один метод для передачи данных — обычно POST для HTTP и SEND в случае использования Web Sockets
*Механизм передачи и содержимое запроса полностью независимы. Все ошибки, предупреждения и данные передаются в теле запроса, в формате JSON
*Используется лишь один код ответа, чтобы подтвердить успешную передачу, обычно это 200 ОК
*Механизм передачи и содержимое ответа полностью независимы. Все ошибки, предупреждения и данные передаются в теле ответа, в формате JSON
*Гораздо проще дебажить, ведь все данные находятся в одном месте в легко-читаемом формате JSON
*Легко перенести на любой канал связи, например, HTTP/S, WebSockets, XMPP, telnet, SFTP, SCP, or SSH