Hi.
Am 16.04.14 18:35, schrieb Bernd Kast:
> Hallo,
>
> ich kenne mich mit Telefonanlagen nicht sonderlich gut aus, und habe
> zuvor nie Ruby programmiert.Mein Ziel war es über Autoprovisioning ein
> LDAP Telefonbuch auf Openstage 40 zu konfigurieren.
> Das funktioniert zwar, allerdings musste ich dafür einiges im Code
> ändern, unter anderem den Ablauf der Kommunikation zwischen
> Provisioningservice und Openstages.
> Vor allem das Überspielen des Ldap-Templates war knifflig.
>
> Deshalb jetzt die Fragen:
>
> 1. was haltet ihr von meinen Änderungen bzw. gibt es eventuell doch
> eine einfache, saubere Lösung (ich hatte weder hier noch im Code
> etwas gefunden)?
Wenn Du Parameter setzen willst, die für alle Telefone gleich sind, bist
Du im Controller genau richtig.
> 2. in der Datei "app/controllers/config_siemens_controller.rb" sind
> praktisch alle Variablen aufgelistet, die man an den Openstage
> einstellen kann, muss man deren Werte (wie ich es gemacht habe) im
> Code ändern, oder kann man sie über die GUI setzen? Beispiele sind
> "ldap-server-address" "ldap-user" oder auch "sntp-addr" (die auf
> "NULL" gesetzt wird s.u)
Eine GUI gibt es dafür nicht. Nur die Tasten können per GUI belegt werden.
> 3. kann jemand abschätzen ob ich durch das einschieben des
> Fileprovisionings irgend eine Funktion zerstöre? Die
> Netzwerkkommunikation, die ich mitgeschnitten habe sieht zwar gut
> aus (wird erst abgebrochen, wenn der Provisioningserver "CleanUp"
> sendet) dadurch dass ich keinen Überblick habe bin ich mir trotzdem
> unsicher, ob nicht etwas schief läuft, oder ich nur gerade Glück
> habe. V.a.habe ich in der Provisionierungsdoku von Siemens nicht
> gefunden, ob man Dateien und Einstellungen in einem Schritt
> provisionieren darf.
>
> Dass ich das ganze durch Autoprovisioning machen möchte liegt daran,
> dass bei mir sobald ich Autoprovisioning benutzte alle manuellen
> Änderungen an den Telefonen überschrieben werden. Es war bei mir deshalb
> nicht mehr möglich LDAP manuell zu konfigurieren. Sogar die Uhrzeit war
> falsch, da die IP des sntp Servers auf "NULL" gesetzt und nicht die vom
> DHCP-Server gemeldete Adresse benutzt wurde.
Es werden natürlich mit Absicht alle Parameter vom Provisioning gesetzt.
Wenn Du einzelne PArameter dem User überlassen willst, kannst Du die
einfach aus dem Controller raus nehmen.
Das mit dem ntp Server ist eigentlich Absicht, damit auch Telefone
provisioniert werden können, die sich nicht im Netz der Telefonanlage
befinden. Es ist nur seltsam, dass der Zeitserver nicht vom DHCP bezogen
wird. Das Problem hatte ich noch nicht.
Da Du eh am Testen bist, wäre es interessant zu wissen, ob er vom DHCP
bezogen wird, wenn Du den Parameter aus dem Controller nimmst, einen
falschen Wert auf dem Telefon von Hand einträgst und dann das Telefon
neu startest.
>
> Damit das Template von den Telefonen geholt wird habe ich Folgendes
> geändert:
>
> 1. eine Datei angelegt, die als Template für das Fileprovisioning
> dient: "app/views/config_siemens/send-files.xml.erb"
> |
> <DlsMessagexsi:schemaLocation="
http://www.siemens.com/DLS"xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"xmlns="
http://www.siemens.com/DLS">
> <Message nonce="<%=@my_nonce%>">
> <Action>FileDeployment</Action>
> <ItemList>
> <%@new_settings.each do|setting|%>
> <Item name="<%=setting[0]%>"
> <%if!setting[1].nil?%>index="<%=setting[1]%>"<%end%>><%=setting[2]%></Item>
> <%end%>
> </ItemList>
> </Message>
> </DlsMessage>
> |
> 2. in "app/controllers/config_siemens_controller.rb"
> |
> elsif["reply-to"].include?contact_reason
> respond_to {|format|
> format.xml {render :action =>"clean-up"}
> }
> elsif(contact_reason =='status')
> respond_to {|format|
> format.xml {render :action =>"index"}
> }
> else
> @new_settings=Array.new
> @new_settings<<['file-server',nil, '192.168.3.1']
> @new_settings<<['file-account',nil, 'gsmaster']
> @new_settings<<['file-username',nil, 'gsmaster']
> @new_settings<<['file-pwd',nil, 'Gerlinde']
> @new_settings<<['file-path',nil, '/home/gsmaster']
> @new_settings<<['file-name',nil, 'ldap_templet_openstage.txt']
> @new_settings<<['file-port',nil, '21']
> @new_settings<<['file-type',nil, 'LDAP']
> respond_to {|format|
> format.xml {render :action =>"send-files"}
> }
> |
> Der Unterschied ist, dass als Standard, wenn kein "if" greift das
> "send-files"-template gefüllt wird. Als Antwort darauf erhält man
> immer (auch, wenn das Telefon die Datei nicht holen kann) eine
> Nachricht mit contact_reason "status" => erst dann wird "index"
> gesendet (frägt den aktuellen Status aller Parameter ab um sie dann
> zu setzen). Nicht getestet habe ich, ob man mehrere Dateien auf
> einmal Provisionieren kann, wenn man anstatt "nil" einen Index benutzt.
>
Das mit den mehreren Dateien kann funktionieren, ist aber beim Openstage
zickig, weil der Response Body eine gewisse Grösse nicht übersteigen
darf. Das musst Du aber ausprobieren. Allgemein hält sich das
Provisioning auch nicht ganz an den Siemens Standard. Es werden immer
alle Parameter gesendet. Egal was das Telefon will. Im Zweifelsfall holt
es sich dann mehrmals hintereinander alle Parameter, falls der Body zu
gross wird.
Gruss
Sascha
--
Sascha Daniels
s...@alternative-solution.de
www.alternative-solution.de