[gelöst] ast_data wie konfiguieren

Kasoft

Neuer User
Mitglied seit
20 Aug 2004
Beiträge
168
Punkte für Reaktionen
0
Punkte
0
Ich habe Ast_data einkompiliert und die data.conf sauber konfiguert. Asterisk startet auch ast_data und es kommen ast_data spezifische Ausgaben in der CLI . Aber ich schaffe es nicht neue User zu erstellen. Ich hab händisch einen
User direkt in die SIPFriends geschrieben. Es funktioniert leider nicht.
Hat mir jemand einen Tipp?

MfG
Kasoft
 
Was für eine Datenbank? Wie angebunden (ODBC oder direkt)? Zeig mal Deine data.conf und den Datenbankeintrag für den User.
 
Ich verwende MySQL direkt:

Data.conf
Code:
[Global]
 SIPFriends = mysql
 IAXFriends = mysql
 ExtensionLookup = mysql
 VoiceMail = mysql
 Directory = mysql
 EndOfCall = mysql
.
.
.
[mysql]
 QType = Default
 Hostname = localhost
 DBName = asterisk
 User = xxx
 Password = xxx
; Port = 3306
; Sock = tmp/mysql.sock
 InitPoolSize = 3
 MaxPoolSize = 5

Datenbank wurde generiert teils aus contrib/scripts teils aus ast_data Archiv (So wie es in der Anweisung steht)

MfG
KAsoft
 
Warum sind beide Zeilen ausgeklammert?
; Port = 3306
; Sock = tmp/mysql.sock

"show data handlers" würde mich auch interessieren
 
Hallo Speedy,

sobald ich die beiden auskommentiere versucht er über eine TCP/IP
Verbindung sich zu verbinden. Das führt dann zu folgenden Fehlern:

Code:
Oct 26 07:23:56 ERROR[16384]: data_mysql.c:181 db_connect: ID1: Failed to connec
t to mysql database asterisk@localhost. Error from DBEngine: Can't connect to lo
cal MySQL server through socket 'tmp/mysql.sock' (2)
Oct 26 07:23:56 ERROR[16384]: data_mysql.c:181 db_connect: ID2: Failed to connec
t to mysql database asterisk@localhost. Error from DBEngine: Can't connect to lo
cal MySQL server through socket 'tmp/mysql.sock' (2)
Oct 26 07:23:56 ERROR[16384]: data_mysql.c:181 db_connect: ID3: Failed to connec
t to mysql database asterisk@localhost. Error from DBEngine: Can't connect to lo
cal MySQL server through socket 'tmp/mysql.sock' (2)

show data handlers liefer das hier:
Code:
List of Data Resource Handlers:
  Handler(s) for SIP_FIND_PEER:
    'mysql' is registered (MySQL SIP Peer Lookup Handler)
  Handler(s) for SIP_FIND_USER:
    'mysql' is registered (MySQL SIP User Lookup Handler)
  Handler(s) for SIP_UPDATE_PEER:
    'mysql' is registered (MySQL SIP Peer Update Handler)
  Handler(s) for IAX_FIND_PEER:
    'mysql' is registered (MySQL IAX Peer Lookup Handler)
  Handler(s) for IAX_FIND_USER:
    'mysql' is registered (MySQL IAX User Lookup Handler)
  Handler(s) for IAX_UPDATE_PEER:
    'mysql' is registered (MySQL IAX Update Peer Handler)
  Handler(s) for EXTENSION_LOOKUP:
    'mysql' is registered (MySQL Extension Lookup Handler)
  Handler(s) for VM_FIND_USER:
    'mysql' is registered (MySQL Voicemail User Lookup Handler)
  Handler(s) for VM_CHANGE_PASSWORD:
    'mysql' is registered (MySQL Voicemail Password Change Handler)
  Handler(s) for VM_DIRECTORY:
    'mysql' is registered (MySQL Voicemail Directory Handler)
  Handler(s) for END_OF_CALL:
    'mysql' is registered (MySQL End of Call Handler)
=== End of List ===

Für mich sieht es aus als wäre alles korrekt.

MfG
Kasoft
 
Bei "Sock = tmp/mysql.sock" muß natürlich der Pfad stimmen! Unter Debian muß es z.B. heißen: "Sock = /var/run/mysqld/mysqld.sock".

show data handlers sieht ok aus.

"show data mysql status" zeigt, ob bzw. wie oft er schon nach daten geschaut, gelesen und geschrieben hat:
Code:
pbx01*CLI> show data mysql status
==============================================================================
Database: asterisk@localhost:3306
Queries Handled:
     VM_DIRECTORY                            VM_RESET_PASSWORD    VM_CHANGE_PASSWORD                      VM_FIND_USER   EXTENSION_LOOKUP                        SIP_UPDATE_PEER  SIP_FIND_USER                           SIP_FIND_PEER
ID      In/Out  Reads   Writes  Deletes Status
  1     In        1244     218       0  Connected 0 days, 08:25:05
  2     In           0       0       0  Connected 0 days, 08:25:05
  3     In           0       0       0  Connected 0 days, 08:25:05
==============================================================================

und mit "database show" sollten die eingetragenen Clients aufgeführt sein:
Code:
[...]
/SIP/Registry/100                                 : 10.0.0.200:5060:3600:100:sip:[email protected]
/SIP/Registry/102                                 : 10.0.0.201:5060:300:102:sip:[email protected]:5060;transport=udp
[...]

Ein "sip show peers" zeigt nur die peers (clients) aus der sip.conf - die Clients aus der Datenbank lassen sich so nicht anzeigen.

--EDIT--

Hier noch ein Demo-Intert für einen Client mit der Nummer "100", Username "100", Passwort "passwort":
Code:
INSERT INTO sipfriends (name, secret, context, username, type, mailbox, nat, canreinvite, codecflags) VALUES ('100', 'passwort', 'default', '100', '3', '100', '0', '1', '8');
codeflags=8 ist für den codec alaw.
 
Hallo Ber5erker,

Oh man daran könnte es natürlich liegen... Ich hab andauernd versucht über sip show peers und sip show users versucht die Clients anzuzeigen.
Ich werde auf jeden Fall heute Abend das kontrollieren.
Aber trotz alledem wunderts mich warum ich mich trotz angelegter User
nicht anmelden konnte. Aber kanns erst heute Abend kontrollieren.
Werde dann Bescheid geben obs geklappt hat.

MfG
Kasoft
 
Wie Ber5erker schon sagt, die Zeile mit "Sock = ..." muss schon korrekt sein. Ansonsten werden Standardwerte genommen, eben jene auskommentierte. Ansonsten kann ich noch "data debug" empfehlen, dann siehst Du welche Anfragen live an die Datenbank gehen.
 
Hallo,

data debug liefert die Liveanfragen. Sprich mein Sip-User versucht sich
anzumelden aber wird nicht reingelassen. Response bleibt immer leer:
Code:
  == ==== Packet Dump ====
  == Query Type: SIP_FIND_PEER
  == (20)DataSource = (STR)"mysql"
  == (100)Name = (STR)"100"
  == (108)Password = (STR)"pass"
  == (110)Context = (STR)"default"
  == (101)Username = (STR)"100"
  == (120)IPAddress = (IP)0.0.0.0
  == (122)Port = (INT)0
  == (124)RegSeconds = (INT)0
  == (103)Mailbox = (STR)"100"
  == (125)NATFlag = (INT)0
  == (126)CanReinviteFlag = (INT)1
  == (118)AccountCode = (STR)""
  == (127)AMAFlags = (INT)0
  == (128)DTMFMode = (INT)1
  == (129)CallingPresence = (INT)0
  == (113)CallerIDName = (STR)""
  == (112)CallerIDNumber = (STR)""
  == (130)CodecFlags = (INT)8
  == (139)UserAgent = (STR)""
  == (109)MD5Password = (STR)""
  == (10)ErrorNumber = (INT)0
  == (11)ErrorMessage = (STR)"OK"
  == ==== End of Packet Dump ====
  == Request:
  == ==== Packet Dump ====
  == Query Type: SIP_FIND_PEER
  == (100)Name = (STR)"100"
  == ==== End of Packet Dump ====
  == Response:
  == ==== Packet Dump ====
  == Query Type: SIP_FIND_PEER
  == (20)DataSource = (STR)"mysql"
  == (100)Name = (STR)"100"
  == (108)Password = (STR)"pass"
  == (110)Context = (STR)"default"
  == (101)Username = (STR)"100"
  == (120)IPAddress = (IP)0.0.0.0
  == (122)Port = (INT)0
  == (124)RegSeconds = (INT)0
  == (103)Mailbox = (STR)"100"
  == (125)NATFlag = (INT)0
  == (126)CanReinviteFlag = (INT)1
  == (118)AccountCode = (STR)""
  == (127)AMAFlags = (INT)0
  == (128)DTMFMode = (INT)1
  == (129)CallingPresence = (INT)0
  == (113)CallerIDName = (STR)""
  == (112)CallerIDNumber = (STR)""
  == (130)CodecFlags = (INT)8
  == (139)UserAgent = (STR)""
  == (109)MD5Password = (STR)""
  == (10)ErrorNumber = (INT)0
  == (11)ErrorMessage = (STR)"OK"
  == ==== End of Packet Dump ====
  == Request:
  == ==== Packet Dump ====
  == Query Type: SIP_FIND_PEER
  == (100)Name = (STR)"100"
  == ==== End of Packet Dump ====
  == Response:
  == ==== Packet Dump ====
  == Query Type: SIP_FIND_PEER
  == (20)DataSource = (STR)"mysql"
  == (100)Name = (STR)"100"
  == (108)Password = (STR)"pass"
  == (110)Context = (STR)"default"
  == (101)Username = (STR)"100"
  == (120)IPAddress = (IP)0.0.0.0
  == (122)Port = (INT)0
  == (124)RegSeconds = (INT)0
  == (103)Mailbox = (STR)"100"
  == (125)NATFlag = (INT)0
  == (126)CanReinviteFlag = (INT)1
  == (118)AccountCode = (STR)""
  == (127)AMAFlags = (INT)0
  == (128)DTMFMode = (INT)1
  == (129)CallingPresence = (INT)0
  == (113)CallerIDName = (STR)""
  == (112)CallerIDNumber = (STR)""
  == (130)CodecFlags = (INT)8
  == (139)UserAgent = (STR)""
  == (109)MD5Password = (STR)""
  == (10)ErrorNumber = (INT)0
  == (11)ErrorMessage = (STR)"OK"
  == ==== End of Packet Dump ====

Sock ist nun auch korrekt angegeben. Ich hab den Testuser
von Ber5erker genommen.
database show liefer mir überhaupt nichts zurück. Aber
ich vermute mal der würde nur angemeldete Clients anzeigen oder irre ich
mich da etwa??

MfG
 
Was mir dabei einfällt muss ich denn ausser data.conf noch etwas anderes konfiguieren? Zum Beispiel sip.conf und iax.conf???
 
Kasoft schrieb:
database show liefer mir überhaupt nichts zurück. Aber
ich vermute mal der würde nur angemeldete Clients anzeigen oder irre ich
mich da etwa??

Richtig, database show liefert den Inhalt der Asterisk-internen Datenbank. Da sind die angemeldeten Clients drin (und die die schon mal angemeldet waren).

Kasoft schrieb:
Was mir dabei einfällt muss ich denn ausser data.conf noch etwas anderes konfiguieren? Zum Beispiel sip.conf und iax.conf???
Nein, wenn Du die Beispieldateien hast dann sollten die gehen.

Da Deine Datenbankanbindung zu funktionieren scheint geh mal einen Schritt weiter. Mach mal ein "sip debug". Dann interessiert mich noch Dein Aufbau. Hat der Asterisk eine offizielle IP? Hat der Client eine offizielle IP, wenn nein nutzt Du einen STUN Server?
 
Hallo Speedy,

Zum Aufbau:
Ich habe einen vServer auf dem läuft immer die neuste CVS Asterisk. Meine
CDRs habe ich in MySQL drin (asterisk-addons) .

Der vServer hat eine eigene IP Adresse. Bisher habe ich alles über sip.conf
und extension.conf gemanaged und das hat sehr gut funktioniert. Als Endgerät
nutze ich die Fritz!Box Fon.
Wie gesagt bisher hat das anmelden Telefonieren etc sauber funktioniert. Nur ast_data läuft nicht...

SIP Debug bekommst du gleich sobald ich wieder an meinen Server kann.

MfG
Kasoft
 
Kasoft schrieb:
Als Endgerät
nutze ich die Fritz!Box Fon.


Da liegt wahrscheinlich der Hase begraben ... ich hab auf meinem Server auch einen Nutzer, der ein Grandstream hinter einer Fritz!Box betreibt. Ein tcpdump brachte das Problem zu Tage: Die Fritzbox macht symmetrisches NAT. Setz in der Datenbank das Feld "NAT" mal auf 5. Höchstwahrscheinlich gehts dann.
 
Speedy wenn das stimmt kriegst du erstmal'n dicken schmatzer :)

Werds gleich mal testen...
 
Hallo Speedy,

wie Recht du hattest. Es lag wirklich an der Fritz!Box. Nachdem ich NAT auf
symmetrisch gestellt hab hab ich sofort die FritzBox gefunden. Aber das mit
dem Schmatzer lass ich sein da ich ja vielleicht in Zukunft Hilfe brauche und
dich nicht vergraulen will :) Besten Dank nochmal

MfG
Kasoft
 
Hi,
Schön das es jetzt klappt. Diese Fritz!Box ist echt verflixt, ich hab 2-3 Tage gebraucht bis ich auf das symmetrische NAT und die Lösung dazu gekommen bin.
Ja das mit dem Schmatzer lassen wir :eek:)
Viel Erfolg dann mit der weiteren Einrichtung.
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.