Nem tudom mihez hasonlítani az ellátást. Talán macskával? Enélkül is lehetségesnek tűnik, de vele egy kicsit jobb. Főleg ha működik))
A probléma megfogalmazása:
- SIP telefonokat szeretnék gyorsan, egyszerűen és biztonságosan beállítani. Telefon telepítésekor, és még inkább újrakonfigurálásakor.
- Sok gyártó saját konfigurációs formátummal, saját segédprogramokkal rendelkezik a konfigurációk létrehozásához, és saját módszerekkel védi a konfigurációkat. És nem igazán akarok mindenkivel foglalkozni.
- Sok kiépítési megoldás, a) egy gyártóra vagy egy telefonrendszerre összpontosít, b) meglehetősen nehézkes a megvalósítása, sok szkript, paraméter, brrr...
A 3. ponttal kapcsolatban megjegyzem, hogy vannak kiváló szolgáltató rendszerek
A Habré tele van receptekkel is a különféle gyártók eszközeinek beállításához:
a formátumod
Ahogy az xkcd-ben mondják, ha nem akarsz 14 formátummal foglalkozni -
Valami ilyesmi:
{
"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"
}
]
}
Tehát minden telefonban konfigurálnia kell a helyi időt és a SIP-vonalakat. Itt minden egyszerű. További példákat láthat
saját szerver-kiépítés
A gyártói kézikönyvekben általában van egy pont, ahol ez áll: vegyél egy csv-t, írd le a bejelentkezési jelszavadat-mac-címedet, generálj fájlokat a saját szkriptünkkel, tedd az Apache webszerver alá, és minden rendben lesz.
A kézikönyv következő bekezdése általában azt mondja, hogy a generált konfigurációs fájlt is titkosíthatja.
De ezek mind klasszikusok. A turmixok és a Twitter modern megközelítése azt mondja, hogy egy kész webszervert kell készíteni, amely nem lesz olyan erős, mint az Apache, de csak egy apróságot fog megtenni. Konfigurációk létrehozása és küldése hivatkozás segítségével.
Álljunk meg itt, és ne feledjük, hogy ma már szinte minden SIP telefon képes fogadni a konfigurációkat a http/https protokollon keresztül, így nem veszünk fontolóra más megvalósításokat (ftp, tftp, ftps). Ezután minden telefon tudja a saját MAC-címét. Ezért két linket készítünk: az egyik személyes - az eszközkulcs alapján, a második az általános, amely egy közös token és egy MAC-cím kombinációjával működik.
Illetve nem fogok rágódni a zero-confignál, pl. a telefon beállítása a nulláról, azaz. bedugtad a hálózatra és működni kezdett. Nem, az én forgatókönyvem szerint csatlakoztatja a hálózathoz, elvégzi az előzetes beállítást (beállítja, hogy megkapja a konfigurációt a kiépítési kiszolgálótól), majd megissza a pina coladát, és szükség szerint újrakonfigurálja a telefont a kiépítésen keresztül. A 66-os terjesztési lehetőség a DHCP-kiszolgáló felelőssége.
Amúgy teljesen elegem van a „provisioning” mondásból, ezért a szó lerövidült „provision”-ra, kérlek ne rúgj be.
És még valami: a szolgáltató szerverünknek nincs felhasználói felülete, pl. felhasználói felület. Egyelőre talán, de nem biztos, mert... nincs rá szükségem. De van API a beállítások mentésére/törlésére, a támogatott gyártók, modellek listájának lekérésére, minden a swagger specifikáció kánonjai szerint le van írva.
Miért API és nem UI? Mert Már van saját telefonrendszerem, akkor van egy hitelesítő adatforrásom, ahonnan csak ezeket az adatokat kell vinnem, össze kell fordítanom a szükséges json-t és közzé kell tenni a provizórikus szerveren. A kiépítési szerver pedig a json fájlban megadott szabályok szerint megadja a kívánt eszköznek a konfigurációját, vagy nem adja meg, ha az eszköz nem megfelelő, vagy nem felel meg a szintén ebben a json-ban megadott feltételeknek.
Így alakult a kiépítési mikroszolgáltatás. Hívott
Főbb jellemzők:
-
mindenesetre korlátozott hozzáférés a konfigurációhoz idő szerint, alapértelmezés szerint 10 perc. Ha újra elérhetővé szeretné tenni a konfigurációt, tegye újra közzé a konfigurációt.
-
egyetlen formátum az összes szállító számára, minden beállítás eltávolításra kerül a szonátában, szabványos json-fájlt küld, konfigurálja az elérhető berendezéseket.
-
Az eszközöknek kiadott összes konfiguráció naplózásra kerül, az összes problémás terület megtekinthető a naplóban és a hibák láthatók
-
Lehetőség van egy közös hivatkozás használatára egy tokennel, minden telefon megkapja a saját konfigurációját a Mac-cím megadásával. Vagy személyes link kulcson keresztül.
-
A telefonok konfigurációinak kezeléséhez (kezeléséhez) és kiépítéséhez (provisioning) szolgáló API-k portokra vannak osztva
-
Tesztek. Nagyon fontos volt számomra, hogy a kiadott konfig formátumát javítsam, és tesztekkel lefedjem a konfig kiadásának minden szokásos helyzetét. Hogy mindez egyértelműen működjön.
Hátrányok:
Eddig a Sonata-n belül semmilyen módon nem használták a titkosítást. Azok. természetesen elkezdheti használni a https-t, ha például az nginx-et a szonáta elé teszed. De szabadalmaztatott módszereket még nem alkalmaztak. Miért? A projekt még fiatal, piacra dobta első száz készülékét. És persze gyűjtök ötleteket, visszajelzéseket. Továbbá, hogy minden biztonságos legyen, hogy a konfigokat ne lehessen szippantani a hálózaton, valószínűleg érdemes a titkosítási kulcsokkal, tls-ekkel és velük a sündisznóval bajlódni, de ez lesz a folytatás.
UI hiánya. Talán ez jelentős hátrány a végfelhasználó számára, de a rendszergazdának a konzolos segédprogram fontosabb, mint egy teljes értékű alkalmazás. Tervezték egy konzolos segédprogram elkészítését, de nem tudom, hogy szükség van-e rá?
Az eredmény?
Kicsi és egyszerű webszerver több telefonmodell kiépítéséhez API-val a felügyelethez.
Mégegyszer, hogy kell ennek működnie?
- Szonáta telepítése.
- Létrehozunk egy json konfigurációt, és közzétesszük szonátában.
- Ezután kapunk egy létesítési hivatkozást a szonátától.
- Akkor ezt a linket jelezzük telefonon.
- Az eszköz betölti a konfigurációt
A következő műveletnek csak két lépése van:
- Létrehozunk egy json konfigurációt, és közzétesszük szonátában
- Az eszköz betölti a konfigurációt
Mely telefonok kerülnek reklámozásra?
Eladók: Grandstream, Fanvil, Yealink. A gyártón belüli konfigurációk többé-kevésbé azonosak, de a firmware-től függően eltérőek lehetnek – szükség lehet további tesztelésre.
Milyen szabályokat állíthat fel?
Idővel. Megadhatja azt az időt, ameddig a konfiguráció elérhető lesz.
Mac cím alapján. Amikor a konfigurációt az eszköz személyes linkjén keresztül küldi el, a mac-cím is ellenőrzésre kerül.
ip által. IP-cím alapján, ahonnan a kérés érkezett.
Hogyan kommunikáljunk a szonátával?
API-n keresztül, http kérések készítése. Az API elérhető lesz a telepítésben. Mert Az API támogatja a swagger specifikációt, használhatja
Jólvan szuper. Klassz cucc, mit szólnál, ha kipróbálnád?
A legegyszerűbb módja a docker-lemezkép telepítése lerakat alapján
Mi van, ha ismerem a node.js fájlt?
Ha van tapasztalata a JavaScript használatában, akkor gyorsan rájön, hogyan működik itt minden.
Lesz Sonata fejlesztés?
Részben elértem a céljaimat. A további fejlesztés a telefonbeállítás automatizálása témakörben a feladataim kérdése. Lehetőség van a konfigurációk bővítésére is a telefon gombjainak konfigurálására, címjegyzék-kiépítés hozzáadására, esetleg valami másra, írja meg a megjegyzésekben.
Összegzés és köszönetnyilvánítás
Építő jellegű javaslatokat/kifogásokat/megjegyzéseket és kérdéseket szívesen fogadok, mert... Könnyen lehet, hogy valamit értetlenül írt le.
Köszönetemet fejezem ki minden kollégámnak, aki segített, tanácsot adott, tesztelt, telefont biztosított/adományozott a tesztekhez. Valójában sok ember, akivel a munkahelyemen kommunikáltam, különböző mértékben vesz részt a projektben,
Forrás: will.com