Zphone check dacl.agi: Unterschied zwischen den Versionen
Admin (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=Allgemeine Info= zphone_check_dacl.agi ist ein AGI Script welches die Rufberechtigungen für einen Teilnehmer prüft, ob er eine Verbindung aufbauen/wählen kann…“) |
(kein Unterschied)
|
Version vom 29. Oktober 2009, 14:46 Uhr
Inhaltsverzeichnis
Allgemeine Info
zphone_check_dacl.agi ist ein AGI Script welches die Rufberechtigungen für einen Teilnehmer prüft, ob er eine Verbindung aufbauen/wählen kann oder nicht. Der klassische Einsatzzweck ist die Amtsberechtigung.
Syntax
zphone_check_dacl.agi ZIEL TEILNEHMER
ZIEL ist das gerufene Ziel, also in den meisten Fällen ${EXTEN}
TEILNEHMER ist der Anrufer, i.d.r ${CALLERID(num)}
Besitzt der Anrufer nicht die nötige Berechtigung, so wird der Ruf einfach beendet! ( hangup )
Beispiel
exten => _0X.,1,AGI(zphone_check_dacl.agi,${EXTEN:1},${CALLERID(num)}) exten => _0X.,2,Dial(SIP/${EXTEN:1}@trunk) exten => _0X.,3,Hangup
Im oben beschriebenen Beispiel wird über eine führende Null (0) das Amt angewählt.
An erster Position prüft das AGI Script, ob der Anrufer die Nötigen Rechte für diesen Anruf besitzt.
Bedingt durch die "Amtsnull" muss dem AGI die EXTEN Variable um eine Stelle gekürzt übergeben werden!!!
Wenn der Anrufer das Ziel anwählen kann, wird an zweiter Position der Ruf über SIP aufgebaut. Im anderen Fall endet der Ruf an dieser Stelle.
Code
#!/usr/bin/php4-cgi -q <?php /* * AGI Script for checking dialout permissions * (c) Lukas Ziaja <lz@metasec.de> */ include_once("/var/www/zphone/etc/config.inc.php"); include_once($CCBOX["INC"]."ccbox.inc.php"); include_once($CCBOX["INC"]."func_sql.inc.php"); include_once($CCBOX["INC"]."func_voip_system.inc.php"); $in = fopen("php://stdin", "r" ); /* * clean up the overgiven parameterstrings */ foreach ( $argv as $key => $val ) $argv[$key] = trim($val); /* * just do some debug output */ echo "noop DST:".$argv[1]." SRC:".$argv[2]."\n"; if ( !zphone_check_dial_out_acl( trim($argv[1]), trim($argv[2]) ) ) { print("hangup\n"); } fclose($in); return true; ?>