Sonata - SIP-ի տրամադրման սերվեր

Ես չգիտեմ, թե ինչի հետ համեմատել տրամադրումը: Միգուցե կատվի հետ? Թվում է, թե դա հնարավոր է առանց դրա, բայց դրա հետ մի փոքր ավելի լավ է: Հատկապես եթե ստացվում է))

Խնդրի ձևակերպում.

  1. Ես ուզում եմ կարգավորել SIP հեռախոսները արագ, հեշտությամբ և ապահով: Հեռախոսը տեղադրելիս և նույնիսկ ավելին այն վերակազմավորելիս:
  2. Շատ վաճառողներ ունեն իրենց կազմաձևման ձևաչափերը, կոնֆիգուրացիաներ ստեղծելու իրենց սեփական կոմունալ ծառայությունները և կոնֆիգուրացիաները պաշտպանելու իրենց սեփական ուղիները: Եվ ես իսկապես չեմ ուզում գործ ունենալ բոլորի հետ:
  3. Բազմաթիվ պրովիդինգային լուծումներ, ա) կենտրոնացած են մեկ մատակարարի կամ մեկ հեռախոսային համակարգի վրա, բ) բավականին դժվար է իրականացնել, շատ սցենարներ, պարամետրեր, brrr...

3-րդ կետի վերաբերյալ մեկնաբանություն կանեմ, որ կան գերազանց տրամադրման համակարգեր FreePBX-ի համար, FusionPBX-ի համար, Kazoo-ի համար, որտեղ տարբեր վաճառողների հեռախոսների կաղապարները հասանելի են հանրությանը: Կան կոմերցիոն լուծումներ, որտեղ կարող եք նաև կարգավորել տարբեր արտադրողների հեռախոսների աշխատանքը տրամադրման մոդուլում, օրինակ՝ Yeastar PBX:

Habré-ն նաև լի է տարբեր վաճառողներից սարքեր կարգավորելու բաղադրատոմսերով. ժամանակ, два. Բայց ինչպես ասում են՝ բոլոր համակարգերն ունեն ճակատագրական թերություն. Այսպիսով, մենք կպատրաստենք մեր հեծանիվը:

ձեր սեփական ձևաչափը

Ինչպես ասում են xkcd-ում, եթե չես ուզում գործ ունենալ 14 ձևաչափի հետ, գալ 15-րդ. Հետևաբար, մենք օգտագործում ենք ընդհանուր կարգավորումներ ցանկացած հեռախոսի համար և պատրաստում ենք մեր սեփական json կոնֆիգուրացիայի ձևաչափը:

Նման մի բան.

{
   "key": "sdgjdeu9443908",
   "token": "590sfdsf8u984",
   "model": "gxp1620",
   "vendor": "grandstream",
   "mac": "001565113af8",
   "timezone_offset": "GMT+03",
   "ntp_server": "pool.ntp.org",
   "status": true,
   "accounts": [
      {
         "name": "Мобилон",
         "line": 1,
         "sip_register": "sip.mobilonsip.ru",
         "sip_name": "sip102",
         "sip_user": "sip102",
         "sip_password": "4321",
         "sip_auth": "sip102"
      }
   ]
}

Այսպիսով, ցանկացած հեռախոսում դուք պետք է կարգավորեք տեղական ժամանակի և SIP գծերը: Այստեղ ամեն ինչ պարզ է. Դուք կարող եք տեսնել ավելի շատ օրինակներ այստեղ.

ձեր սեփական սերվերի ապահովումը

Արտադրողի ձեռնարկներում սովորաբար կա մի կետ, որտեղ ասվում է՝ վերցրեք csv, գրեք ձեր login-password-mac-հասցեն, ստեղծեք ֆայլեր՝ օգտագործելով մեր սեփական սկրիպտը, դրեք դրանք Apache վեբ սերվերի տակ և ամեն ինչ լավ կլինի:

Ձեռնարկի հաջորդ պարբերությունը սովորաբար ասում է ձեզ, որ կարող եք նաև գաղտնագրել ստեղծված կազմաձևման ֆայլը:

Բայց սրանք բոլորը դասական են: Սմուզիների և Twitter-ի հետ ժամանակակից մոտեցումն ասում է, որ պետք է պատրաստել պատրաստի վեբ սերվեր, որն այնքան հզոր չի լինի, որքան Apache-ն, այլ միայն մի փոքր բան կանի։ Ստեղծեք և ուղարկեք կազմաձևեր՝ օգտագործելով հղումը:

Եկեք կանգ առնենք այստեղ և հիշենք, որ գրեթե բոլոր SIP հեռախոսներն այժմ կարող են կոնֆիգուրացիաներ ստանալ http/https-ի միջոցով, ուստի մենք չենք դիտարկում այլ իրականացումներ (ftp, tftp, ftps): Այնուհետև յուրաքանչյուր հեռախոս գիտի իր MAC հասցեն: Հետևաբար, մենք կկազմենք երկու հղում՝ մեկը անձնական՝ հիմնված սարքի բանալիի վրա, երկրորդ ընդհանուրը, որն աշխատում է ընդհանուր նշանի և MAC հասցեի համադրությամբ:

Բացի այդ, ես չեմ կանգնի զրոյական կոնֆիգուրայի վրա, այսինքն. հեռախոսը զրոյից կարգավորելը, այսինքն. դուք այն միացրել եք ցանցին, և այն սկսել է աշխատել: Ոչ, իմ սցենարով, դուք այն միացնում եք ցանցին, կատարում եք նախնական կարգավորումը (կարգավորեք այն, որպեսզի ստանա կոնֆիգուրգը մատակարարող սերվերից), այնուհետև խմեք pina colada և վերակազմավորեք հեռախոսը, ըստ անհրաժեշտության, մատակարարման միջոցով: Տարբերակ 66-ի բաշխումը DHCP սերվերի պատասխանատվությունն է:

Ի դեպ, ես լրիվ հոգնել եմ «ապահովում» ասելուց, այդ իսկ պատճառով բառը կրճատվել է «ապահովում», խնդրում եմ, ինձ ոտքով մի՛ խփեք։

Եվ ևս մեկ բան. մեր մատակարարման սերվերը չունի UI, այսինքն. օգտագործողի ինտերֆեյս. Միգուցե առայժմ, բայց վստահ չեմ, քանի որ... Ես դրա կարիքը չունեմ։ Բայց կա API՝ կարգավորումները պահելու/ջնջելու, աջակցվող վաճառողների, մոդելների ցուցակ ստանալու համար, ամեն ինչ նկարագրված է ըստ swagger-ի ճշգրտման կանոնների։

Ինչու API և ոչ թե UI: Որովհետեւ Ես արդեն ունեմ իմ սեփական հեռախոսային համակարգը, այնուհետև ունեմ հավատարմագրերի աղբյուր, որտեղ ես պարզապես պետք է վերցնեմ այս տվյալները, հավաքեմ անհրաժեշտ json-ը և հրապարակեմ այն ​​տրամադրող սերվերում: Իսկ մատակարարման սերվերը, json ֆայլում նշված կանոնների համաձայն, անհրաժեշտ սարքին կտա իր կոնֆիգուրացիա, թե ոչ, եթե սարքը ճիշտ չէ կամ չի համապատասխանում այս json-ում նշված չափանիշներին:

Sonata - SIP-ի տրամադրման սերվեր

Այսպես ստացվեց տրամադրող միկրոծառայությունը. Կանչել սոնատ, աղբյուրի կոդը հասանելի է GitHub-ում, կա նաև պատրաստ դոկերի պատկեր, դոկերի օգտագործման օրինակ այստեղ.

ԿԱՐԵՎՈՐ մասեր:

  • ամեն դեպքում, կոնֆիգուրայի մուտքը սահմանափակ ժամանակով, լռելյայն 10 րոպե: Եթե ​​ցանկանում եք նորից հասանելի դարձնել կազմաձևը, նորից հրապարակեք կազմաձևը:

  • մեկ ձևաչափ բոլոր վաճառողների համար, բոլոր կարգավորումները հանվում են սոնատում, դուք ուղարկում եք ստանդարտացված json, կարգավորում ցանկացած հասանելի սարքավորում:

  • սարքերին տրված բոլոր կոնֆիգուրացիաները գրանցված են, բոլոր խնդրահարույց տարածքները կարող են դիտվել գրանցամատյանում և կարող են տեսնել սխալները

  • Հնարավոր է օգտագործել մեկ ընդհանուր հղում նշանով, յուրաքանչյուր հեռախոս ստանում է իր սեփական կոնֆիգուրը՝ նշելով mac հասցեն: Կամ անձնական հղում բանալու միջոցով:

  • API-ները կառավարման (կառավարման) և հեռախոսների կոնֆիգուրացիաների տրամադրման (տրամադրման) համար բաժանված են ըստ նավահանգիստների.

  • Թեստեր. Ինձ համար շատ կարևոր էր շտկել թողարկված կոնֆիգուրայի ձևաչափը և ծածկել կոնֆիգուրայի թողարկման բոլոր սովորական իրավիճակները թեստերով: Որպեսզի այս ամենը հստակ աշխատի:

Դեմ:

Առայժմ գաղտնագրումը ոչ մի կերպ չի օգտագործվում Sonata-ում: Նրանք. Դուք, իհարկե, կարող եք սկսել օգտագործել https՝ օրինակ sonata-ի դիմաց դնելով nginx: Սակայն սեփականության մեթոդները դեռ չեն կիրառվել։ Ինչո՞ւ։ Նախագիծը դեռ երիտասարդ է, այն գործարկել է իր առաջին հարյուր սարքերը։ Եվ, իհարկե, ես հավաքում եմ գաղափարներ և արձագանքներ: Ավելին, որպեսզի ամեն ինչ ապահով լինի, որպեսզի կոնֆիգուրացիաները չհնչեն ցանցում, հավանաբար արժե անհանգստանալ գաղտնագրման բանալիների, tls-ի և դրանց հետ ոզնիի հետ, բայց սա կլինի շարունակություն:

UI-ի բացակայություն: Թերևս սա էական թերություն է վերջնական օգտագործողի համար, բայց համակարգի ադմինիստրատորի համար կոնսոլային կոմունալն ավելի կարևոր է, քան լիարժեք հավելվածը: Կային պլաններ ստեղծելու վահանակի կոմունալ ծրագիր, բայց ես վստահ չեմ, արդյոք դա անհրաժեշտ է:

Արդյունքը:

Փոքր և պարզ վեբ սերվեր՝ մի քանի հեռախոսի մոդելների կառավարման համար API-ով ապահովելու համար:

Եվս մեկ անգամ, ինչպե՞ս պետք է սա աշխատի:

  1. Սոնատի տեղադրում.
  2. Մենք ստեղծում ենք json կոնֆիգուրացիա և այն հրապարակում սոնատում։
  3. Այնուհետև մենք ստանում ենք տրամադրման հղում սոնատից։
  4. Այնուհետև հեռախոսում նշում ենք այս հղումը։
  5. Սարքը բեռնում է կազմաձևը

Հետագա գործողության մեջ կա ընդամենը երկու քայլ.

  1. Մենք ստեղծում ենք json կոնֆիգուրացիա և այն հրապարակում սոնատում
  2. Սարքը բեռնում է կազմաձևը

Ո՞ր հեռախոսներն են գովազդվելու:

Վաճառողներ Grandstream, Fanvil, Yealink: Վաճառողի ներսում կազմաձևերը քիչ թե շատ նույնն են, բայց կարող են տարբերվել՝ կախված որոնվածից. կարող է անհրաժեշտ լինել լրացուցիչ փորձարկում:

Ի՞նչ կանոններ կարող եք սահմանել:

Ըստ ժամանակի. Դուք կարող եք նշել այն ժամանակը, երբ կոնֆիգուրը հասանելի կլինի:
Mac հասցեով։ Սարքի անձնական հղման միջոցով կազմաձևումը ներկայացնելիս կստուգվի նաև mac հասցեն:
IP-ով: IP հասցեով, որտեղից կատարվել է հարցումը:

Ինչպե՞ս շփվել Sonata-ի հետ:

API-ի միջոցով՝ http հարցումներ կատարելով։ API-ն հասանելի կլինի ձեր տեղադրման ժամանակ: Որովհետեւ API-ն աջակցում է swagger ճշգրտմանը, կարող եք օգտագործել առցանց կոմունալ API-ին փորձարկման հարցումների համար:

Լավ, հիանալի: Հրաշալի իրեր, իսկ փորձե՞լ:

Ամենահեշտ ձևը պահեստի վրա հիմնված դոկերի պատկեր տեղադրելն է սոնատ-նմուշ. Պահեստը պարունակում է տեղադրման հրահանգներ:

Իսկ եթե ես իմանամ node.js-ը:

Եթե ​​JavaScript-ի օգտագործման փորձ ունեք, ապա արագ կհասկանաք, թե ինչպես է ամեն ինչ աշխատում այստեղ:

Կլինի՞ Sonata-ի մշակում:

Ես մասամբ հասա իմ նպատակներին. Հետագա զարգացումը իմ առաջադրանքների խնդիրն է հեռախոսի ավտոմատացման թեմայի վերաբերյալ: Հնարավորություն կա նաև ընդլայնել կոնֆիգուրացիաները՝ հեռախոսի կոճակները կարգավորելու համար, ավելացնել հասցեագրքի տրամադրում, գուցե մեկ այլ բան, գրեք մեկնաբանություններում։

Ամփոփում և շնորհակալագրեր

Ուրախ կլինեմ ունենալ կառուցողական առաջարկներ/առարկություններ/մեկնաբանություններ և հարցեր, քանի որ... Հնարավոր է, որ նա անհասկանալի բան է նկարագրել։

Ես նաև իմ երախտագիտությունն եմ հայտնում իմ բոլոր գործընկերներին, ովքեր օգնեցին, խորհուրդ տվեցին, փորձարկեցին և թեստերի համար հեռախոսներ տրամադրեցին/նվիրեցին։ Իրականում շատ մարդիկ, ում հետ ես շփվել եմ աշխատավայրում, ներգրավված են նախագծում տարբեր աստիճանի, AsterConfե, չաթերում և էլ. Շնորհակալություն գաղափարների և մտքերի համար:

Source: www.habr.com

Добавить комментарий