JSON for WEB-apps

Here you can post your feature requests and suggestions
Post Reply
dimka88
Posts: 866
Joined: 13 Oct 2014, 05:51
Contact:

JSON for WEB-apps

Post 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
Присоединяйтесь к обсуждению.
nik247
Posts: 108
Joined: 11 Oct 2014, 15:57

Re: JSON for WEB-apps

Post by nik247 »

+1
ivanmfan
Posts: 2
Joined: 10 Apr 2017, 17:47

Re: JSON for WEB-apps

Post by ivanmfan »

Было бы супер, рекомендую сразу придерживаться архитектуры REST API, https://habrahabr.ru/post/38730/
dimka88
Posts: 866
Joined: 13 Oct 2014, 05:51
Contact:

Re: JSON for WEB-apps

Post 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 
Dmitry
Администратор
Posts: 954
Joined: 09 Oct 2014, 10:06

Re: JSON for WEB-apps

Post by Dmitry »

это не замена жсон, это способ структурирования запросов
dimka88
Posts: 866
Joined: 13 Oct 2014, 05:51
Contact:

Re: JSON for WEB-apps

Post 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"
  }
]
ivanmfan
Posts: 2
Joined: 10 Apr 2017, 17:47

Re: JSON for WEB-apps

Post by ivanmfan »

Только это будет вот так
GET /session/ifname/ipoe7
Вернёт данные
DELETE /session/ifname/ipoe7
Сделает terminate

И как пример
PUT /session/ifname/ipoe7
{description:”user description”}

Этот запрос установит описание к сессии
dimka88
Posts: 866
Joined: 13 Oct 2014, 05:51
Contact:

Re: JSON for WEB-apps

Post 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
Post Reply