Picture of vde
Registered 5 years 250 days
vde Monday, 18 March 2019, 02:41 PM
Specs Autoprovisionierung-Datei ?
Hallo,
ich stehe vor der Aufgabe, fabrikneue ip222 in einem privaten Netzwerk (innovaphone.com ist nicht erreichbar) zu autoprovisionieren. Dank DHCP bin ich soweit dass das Telefon einen GET Request auf "seine" Provisionierungsdatei macht.

Mir ist aber nicht klar wie diese Datei aussehen muss. Darin müssen vor allem SIP-settings und -Account, der admin Account, Display- und NTP- settings gesetzt werden. Nach dem Laden der Provisionierungsdatei + Booten soll das Telefon erreichbar sein.

Ich vermute, eine Handvoll config change Befehle werden genügen?
Unklar ist mir z.B. wo das SIP Passwort eingetragen wird und was es mit dem initialen

vars check ....

auf sich hat dass das web interface > config > download liefert.
Danke vorab für Hinweise aller Art !



Picture of Sebastian Hayer-Lutz (innovaphone)
Moderator Registered 6 years 332 days
Sebastian Hayer-Lutz (innovaphone) Monday, 18 March 2019, 04:16 PM
Re: Specs Autoprovisionierung-Datei ?
Hallo Volker,

der Weg via DHCP ist der richtige wenn kein Zugang nach Extern besteht. (Sonst könnte man im my.innovaphone.com Projekt eine redirect URL hinterlegen)

> Mir ist aber nicht klar wie diese Datei aussehen muss.
Vom Prinzip hast du recht.. Ein paar "config change .." Zeilen mit deinen Parametern und das Phone ist wie gewünscht parametrisiert.


Das SIP Kennwort wird verschlüsselt in einer VAR gespeichert.


Du kannst das Kennwort im Plain speichern und verschlüssel "lassen" (natürlich kein toller weg), oder direkt den verschlüsselten Wert speichern.

Der Notwendige Hinweis in diesem Zusammenhang: Der "Schlüssel" für die Verschlüsselung ist das Admin-Kennwort der GUI des Telefons.
(Wenn du also überall das gleiche hast, kannst du den verschlüsselten Wert ins Update Script schreiben)

Bitte denke daran, nach einem "vars create" ist ein reboot nötig.

Mini Exkurs: Aber das GUI Passwort musst du auch setzten ;) Das ist das Henne/Ei Problem. Die einzige richtige Lösung dafür ist MTLS

> und was es mit dem initialen vars check
> auf sich hat dass das web interface
Das was der Parameter beschreibt - eine Checkvariable
Diese kannst du in deinem Updatescript getrost ignorieren.



Picture of vde
Registered 5 years 250 days
vde Monday, 18 March 2019, 05:15 PM
Re: Specs Autoprovisionierung-Datei ?
> Das SIP Kennwort wird verschlüsselt in einer VAR gespeichert.
in welcher denn ? ich finde es nicht...

Ginge das alternativ auch so:

config change PHONE SIG /prot SIP /h323 SIP_USER /gk-pwd SIP_PASSWORD /gk-pwd* SIP_PASSWORD /proxy SIP.SERVER.de /auth-name SIP_USER

Picture of Sebastian Hayer-Lutz (innovaphone)
Moderator Registered 6 years 332 days
Sebastian Hayer-Lutz (innovaphone) Tuesday, 19 March 2019, 09:29 AM
Re: Specs Autoprovisionierung-Datei ?
Hi Volker,

nur als Tipp: Am besten einfach einmal auf einem Gerät konfigurieren und dann ein "config show" machen

Für den SIP Account an USER-1 brauchst du die config Zeile und dass Kennwort. (Die Angabe )

config change PHONE SIG /prot SIP /gk-id test.de /h323 123 /proxy2 1.2.3.4 /auth-name username /gk-pwd ******** /tones 0 /coder G711A,20,
vars create PHONE/USER-PWD/00000 pc s70de79a4e04a6c50b058a3b65d8fdefb


Wenn die configzeile die "********" als PW hat, wird das verschlüsslete Kennwort in der Config gesucht.
Du kannst auch die ganze Zeile setzte, hättest das Kennwort dann aber im Klartext im Script.
Picture of vde
Registered 5 years 250 days
vde Tuesday, 19 March 2019, 12:03 PM
Re: Specs Autoprovisionierung-Datei ?

> nur als Tipp: Am besten einfach einmal auf einem Gerät konfigurieren und dann ein "config show" machen

via telnet ? das Telefon schliesst die connection sofort

telnet -l admin 192.168.110.52
Trying 192.168.110.52...
Connected to 192.168.110.52.
Escape character is '^]'.
Connection closed by foreign host.

Picture of Sebastian Hayer-Lutz (innovaphone)
Moderator Registered 6 years 332 days
Sebastian Hayer-Lutz (innovaphone) Tuesday, 19 March 2019, 12:10 PM
Re: Specs Autoprovisionierung-Datei ?
> nur als Tipp: Am besten einfach einmal auf einem Gerät konfigurieren und dann ein "config show" machen

Achso - sry, nein smile
Auf der GUI einfach deine Einstellungen setzten die du brauchst/haben möchtest, und dann unter Maintenance links in der Navi auf Config Show klicken.

Ich meinte damit nur: Wenn man sich unsicher ist wie der Befehl korrekt zusammengebaut werden muss kann mann immer über GUI konfigurieren und sich den korrekten Befehl für ein Update Script rauskopieren.
Picture of vde
Registered 5 years 250 days
vde Tuesday, 19 March 2019, 01:38 PM in response to Sebastian Hayer-Lutz (innovaphone)
Re: Specs Autoprovisionierung-Datei ?
Also ich steige da nicht durch.

Habe das Tel via http konfiguriert und Konfigdatei per download gesichert. Das Telefon geht.
Factory Reset.
DHCP zeigt nun auf die Konfig Datei, GET Request des Tel ist erfolgreich aber die Konfig wird nicht übernommen. GUI zeigt Factory Einstellungen.

Nun im GUI ein Upload derselben Konfigdatei und reset, Telefon geht wieder nach Booten incl. GET Request

Wenn die Konfig Datei beim Booten per http GET gelesen wird dann hat das offenbar keine Wirkung. Woran kann das liegen?

Und wie berechnet man den crypto string in

vars create PHONE/USER-PWD/00000 pc s70de79a4e04a6c50b058a3b65d8fdefb
vars check 9b61dfad369eb105d0aa53

im Beispiel oben ?



Picture of Sebastian Hayer-Lutz (innovaphone)
Moderator Registered 6 years 332 days
Sebastian Hayer-Lutz (innovaphone) Tuesday, 19 March 2019, 02:18 PM
Re: Specs Autoprovisionierung-Datei ?
Hallo Volker,

ich verstehe nicht so ganz was du das mit dem GET Request gemacht haben willst.

Am besten zeigst du uns mal dein Update-Script, denn darum geht ja im Kern smile

Die VARS werden AES verschlüsselt gespeichert. Der Schlüssel für die symmetrische Crypto ist die Kombi aus User+Passwort der GUI.

Das heißt im Umkehrschluss, wenn du auf zwei Geräten den gleichen Adminzugang hast, kannst du die VARS 1:1 rüber kopieren und so auch via update Script verteilen.
Picture of vde
Registered 5 years 250 days
vde Tuesday, 19 March 2019, 03:30 PM
Re: Specs Autoprovisionierung-Datei ?
Das Telefon soll sich beim Booten per http GET eine Konfigurationsdatei laden, die 1:1 dem Ergebnis von CONFIG-SHOW im Web GUI entspricht.

Offenbar liefert CONFIG-SHOW etwas anderes als ein Update-Skript, aber was ist der Unterschied ?

Picture of Sebastian Hayer-Lutz (innovaphone)
Moderator Registered 6 years 332 days
Sebastian Hayer-Lutz (innovaphone) Tuesday, 19 March 2019, 04:19 PM
Re: Specs Autoprovisionierung-Datei ?
> Das Telefon soll sich beim Booten per http GET eine Konfigurationsdatei laden,
Ja, macht Sinn

> die 1:1 dem Ergebnis von CONFIG-SHOW im Web GUI entspricht.
Das wird "1:1" nicht funktionieren und ist auch nicht vorgesehen

Das Gerät hat eine Config die mit "config change" und "vars create" persitent verändern kannst.

Du solltest nur die Änderungen in deinem Update Script (dein GET) haben die du auf dem Phone ändern willst.


Picture of vde
Registered 5 years 250 days
vde Tuesday, 19 March 2019, 05:59 PM in response to Sebastian Hayer-Lutz (innovaphone)
Re: Specs Autoprovisionierung-Datei ?

> Die VARS werden AES verschlüsselt gespeichert. Der Schlüssel für die symmetrische Crypto ist die Kombi aus User+Passwort der GUI.

es gibt gut ein dutzend AES Verfahren, welches ? Von der Länge des verschlüsselten Strings zu schliessen wird kein salt verwendet. Habe diverse Kombinationen aus
AES=aes-128-ctr aes-192-ctr aes-256-ctr aes-128-cbc aes-192-cbc aes-256-cbc
sowie
user+password= admin+ip222 admin-ip222 admin:ip222 adminip222 admin ip222
durchprobiert, keines der Ergebnisse passt.


Picture of Muschelpuster
Registered 7 years 342 days
Muschelpuster Tuesday, 19 March 2019, 06:26 PM
1 of 1 users consider this post helpful
Re: Specs Autoprovisionierung-Datei ?
Na ja, das macht durchaus auch Sinn, dass die Verschlüsselung nicht offen gelegt wird. Es geht ja sogar so weit, dass noch die Position des Passwortes heran gezogen wird. Wenn man 2x das gleiche PW an verschiedenen Punkten speichert sind die verschlüsselten Werte davon unterschiedlich (ok, bei SIP scheinbar nicht).
Wie Sebastian empfohlen hat ist es ein Leichtes ein Phone manuell zu befruchten, die Schlüssel auszulesen und in die Datei zu kopieren.

Ich fürchte aber, dass hier noch ein kleines Problem vorliegt! Wenn Du pro Endgerät ein anderes PW generieren willst, sehe ich über die simple Konfig-Datei hier keinen Erfolg. Dann muss es schon der PHP-Update-Server sein, der pro Telefon andere Daten raus haut (die man bei ihm aber auch hinterlegen muss), oder eine eigene aktive Lösung.

Ich habe gerade mal einen SIP-Account an meinem Telefon eingerichtet, das ist durchaus kryptischer als H.323. Wenn ich jetzt mal davon ausgehe, dass meine PW in einer VAR steht, müsste es diese Zeile sein:
vars create PHONE/USER-PWD/00001 pc cb3781f0
Und das kann ich auch unverschlüsselt rein jagen:
vars create PHONE/USER-PWD/00001 p 1234
Das Ganze war jetzt für User-2, bei User-1 ist die Variable 00000 zuständig. Aber ob das bei dem ganzen Kram den der SIP-Account noch im Telefon hinterlassen hat vermag ich nicht zu sagen.

unverschlüsselte Grüße
Niels
Picture of Muschelpuster
Registered 7 years 342 days
Muschelpuster Tuesday, 19 March 2019, 05:49 PM in response to vde
1 of 1 users consider this post helpful
Re: Specs Autoprovisionierung-Datei ?
Moin,

ich habe mir zum Lernen mal einen Excel-Generator gebaut: http://forum.innovaphone.com/moodle2/mod/forum/discuss.php?d=21324&parent=51218
Der ist alles andere als fertig, denn mit dem Gewinn an Erfahrung braucht man so etwas ja immer weniger, aber vielleicht hilft er Dir etwas zu verstehen, was in so eine Datei rein kann.

Ich finde es noch wichtig, die Kontrolle über die Geräte zu behalten. Daher macht es durchaus Sinn, nach der Erstkonfig auf eine andere Datei umzuschalten, die zyklisch gepollt wird. Die kann ja erst einmal ruhig leer sein, aber spätestens für ein Softwareupdate macht dieser Schritt Freude. Dabei ist es aber wichtig, die DHCP-Datei-URL zu ignorieren, sonst geht das Phone trotz neuer URL weiter auf die DHCP-URL.

Das Ganze braucht etwas Erfahrung, grundsätzlich steht alles im Wiki, aber das auf Anhieb alles mitzunehmen ist vermutlich nur wenigen Menschen auf dieser Welt vergönnt.

ergänzende Grüße
Niels
Picture of vde
Registered 5 years 250 days
vde Tuesday, 19 March 2019, 07:27 PM in response to vde
Re: Specs Autoprovisionierung-Datei ?
Jetzt hab ichs halbwegs zusammen. Vielleicht kann ich anderen die Suche im Heuhaufen etwas abkürzen und skizziere hier meine Minimal-Provisionierung in Eigenregie

Telefon mit Factory Settings booten

Web GUI > Download > download => liefert config-file-1 (factory settings)

Im Web gui Telefon manuell konfigurieren so dass es läuft (nach reboot)

Web GUI > Download > download => liefert config-file-2

diff config-file-1 config-file-2 > ip222-MAC.cfg

Diese Datei enthält nur die geänderten Settings. Bei mir:
config change PHONE SIG /prot SIP /h323 1129*35 /proxy 10.247.0.233 /auth-name 1129*35 /tones 15
vars create PHONE/USER-PWD/00000 pc bc71c0f72285bc17xxxxxxxxxxxxxxxx
mod cmd FLASHDIR0 add-item 101 (cn=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)(type=inmiss)(mode=voice)(time=1552995645)(e164=41)(name=xxxxxxxxxxx)(info=<call clir='0'><peer id='0' time='1552995645' type='setup'/><reg e164='1129*35'/></call>)(guid;bin=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)(usn=1)
mod cmd FLASHDIR0 add-view 102 cn=phone-dir

Die letzten beiden Zeilen sehen nach call history aus, alsow weg damit, dann verbleiben

config change PHONE SIG /prot SIP /h323 1129*35 /proxy 10.247.0.233 /auth-name 1129*35 /tones 15
vars create PHONE/USER-PWD/00000 pc bc71c0f72285bc17xxxxxxxxxxxxxxxx

Wer (wie ich) die verschlüsselten Strings nicht nachvollziehen der ersetzt
vars create PHONE/USER-PWD/00000 pc bc71c0f72285bc17xxxxxxxxxxxxxxxx
durch Klartext
vars create PHONE/USER-PWD/00000 p KLARTEXT

Diese Konfig-Datei dann auf einem http server sichern zB in HTTPHOST:/var/www/ip222-MAC.cfg.
Sie wird beim Booten durch ein Update Skript aufgerufen:

mod cmd UP0 cfg http://HTTPHOST/ip222-MAC.cfg reset 2019-03-19

wobei 2019-03-19 meine willkürliche "Versions-ID" ist anhand der das Telefon entscheiden soll ob seine Konfiguration aktuell ist. Das Update-Skriüt wird abgelegt unter HTTPHOST:/var/www/ip222-MAC.upd

Zuletzt wird der dhcp Server so konfiguriert dass er für option 215 das zur MAC gehörende update Skript liefert. Bei mir für den isc-dhcp-server:

option space innovaphone;
...
option innovaphone.update-url code 215 = text;
...
option innovaphone.update-url = concat(
"http://HTTPHOST/ip222-",
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,1,1))),2),
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,2,1))),2),
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,3,1))),2),
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,4,1))),2),
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,5,1))),2),
suffix (concat ("0", binary-to-ascii (16, 8, "", substring(hardware,6,1))),2), ".upd");

Summary:
  • Telefon bootet und schickt dhcp Request mit dhcp option 215
  • DHCP response verweist auf HTTPHOST:/var/www/ip222-MAC.upd
  • Telefon macht HTTP GET HTTPHOST:/var/www/ip222-MAC.upd
  • ip222-MAC.upd verweist auf HTTPHOST:/var/www/ip222-MAC.cfg
  • Telefon macht HTTP GET HTTPHOST:/var/www/ip222-MAC.cfg
  • Zurück zu step 1 falls das Telefon rebootet, sonst fertig
Soweit meine minimale Hello-World-Provisionierung. Ich kann am Telefon ein Factory Reset machen, nach 1/2 Minute ist es wieder einsatzbereit.
← You can define your color theme preference here