Žilinská univerzita > Fakulta riadenia a informatiky > Katedra informačných sietí

Story o OpenSERe a CPL

Ako rozbehať CPL na OpenSERe (Andrej Krivulčík):

Návod:http://www.kom.tu-darmstadt.de/~jschmitt/HowToSER_CPL.htm.

Je to síce pre SER, no v plnej miere aplikovateľné aj na OpenSER. Treba to čítať do konca, pôvodne nám to nešlo, lebo sme od samého nadšenia, že sa ten OpenSER rozbehol aj s modulmi "zabudli" nastaviť, aby sa REGISTER požiadavky posielali registračnému procesu pre CPL. Server odpovedal OK, takže sme na to nejak hneď neprišli.

if (method == "REGISTER") ... a if (method == "INVITE")

... treba dať v /etc/openser/openser.cfg PRED podmienku

if (uri == myself)

..., inak k tomu nikdy nedôjde (logging is your friend).

Pokiaľ bolo všetko nastavené správne, malo by fungovať uploadovanie CPL skriptov pomocou SIPu. Nie je však asi čím... Problém spočíva v tom, že CPLEd si o CPL myslí niečo iné ako OpenSER, napriek tomu, že používajú rovnaké DTD na prácu s ním. Takže CPLEd vytvorí koreňový element <cpl xmlns="urn:ietf:params:xml:ns:cpl" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:ietf:params:xml:ns:cpl cpl.xsd" >.

DTD ale pre element <cpl/> nedefinuje atribúty xmlns atď, takže parser v OpenSERe nám za to vynadá do logov a skript neprijme. Pokiaľ tieto atribúty vymažeme ručne, pre zmenu CPLEd odmietne skript načítať. Validný je dokument bez týchto atribútov. Na internete o tomto probléme ani zmienka. OpenSERu môžeme nanútiť CPL aj skrze príkazový riadok. Dokumentácia pre SER tvrdí, že by malo zafungovať niečo ako:

serctl fifo LOAD_CPL user@domain /path/to/cpl/script

Prependnutie open vyriešilo všetko, no kolegovia z vývojárskeho tímu OpenSERu nám pripravili peknú logickú hádanku s minimom indícií o tom, že user@domain sa v OpenSERe musí definovať ako:

sip:user@domain.

openserctl fifo LOAD_CPL sip:user@domain /path/to/cpl/script 

Takto sa dajú vkladať len validné dokumenty, takže z výstupu CPLEdu treba zmazať nedefinované atribúty elementu <cpl/>. Fuknčnosť CPL sa za siedmimi firewallmi a siedmimi NAT kontroluje ťažko, zvlášť pokiaľ sa mi nevráti ani odpoveď na REGISTER, ktorý pošle CPLEd (REGISTER od twinkle odpoveď dostane, fakt zaujímavé), ale do databázy sa to dostalo.

Zaujíma ma: - (OT) Prečo sa ku mne vráti odpoveď na REGISTER jedného programu a nie na REGISTER druhého programu - Ktorý program to XML spracúva zle (alebo čomu na tom nerozumiem).

Skupiny: