Zphone check dacl.agi: Unterschied zwischen den Versionen

Aus metasec wiki
Wechseln zu: Navigation, Suche
(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…“)
 
 
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt)
Zeile 4: Zeile 4:
  
 
=Syntax=
 
=Syntax=
zphone_check_dacl.agi ZIEL TEILNEHMER
+
zphone_check_dacl.agi ZIEL TEILNEHMER
  
 
ZIEL ist das gerufene Ziel, also in den meisten Fällen ${EXTEN}<br />
 
ZIEL ist das gerufene Ziel, also in den meisten Fällen ${EXTEN}<br />
Zeile 14: Zeile 14:
  
 
<pre>
 
<pre>
 +
 
exten => _0X.,1,AGI(zphone_check_dacl.agi,${EXTEN:1},${CALLERID(num)})
 
exten => _0X.,1,AGI(zphone_check_dacl.agi,${EXTEN:1},${CALLERID(num)})
 
exten => _0X.,2,Dial(SIP/${EXTEN:1}@trunk)
 
exten => _0X.,2,Dial(SIP/${EXTEN:1}@trunk)
Zeile 21: Zeile 22:
  
 
Im oben beschriebenen Beispiel wird über eine führende Null (0) das Amt angewählt.<br />
 
Im oben beschriebenen Beispiel wird über eine führende Null (0) das Amt angewählt.<br />
An erster Position prüft das AGI Script, ob der Anrufer die Nötigen Rechte für diesen Anruf besitzt.<br />
+
An erster Position prüft das AGI Script, ob der Anrufer die nötigen Rechte für diesen Anruf besitzt.<br />
 
Bedingt durch die "Amtsnull" muss dem AGI die EXTEN Variable um eine Stelle gekürzt übergeben werden!!!<br />
 
Bedingt durch die "Amtsnull" muss dem AGI die EXTEN Variable um eine Stelle gekürzt übergeben werden!!!<br />
 
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.
 
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.
Zeile 44: Zeile 45:
  
 
/*
 
/*
  *      clean up the overgiven parameterstrings
+
  *      clean up the parameterstrings
 
  */
 
  */
 
foreach ( $argv as $key => $val )
 
foreach ( $argv as $key => $val )
Zeile 54: Zeile 55:
 
echo "noop DST:".$argv[1]." SRC:".$argv[2]."\n";
 
echo "noop DST:".$argv[1]." SRC:".$argv[2]."\n";
  
 
+
if ( !zphone_check_dial_out_acl( $argv[1], $argv[2] ) ) {
 
+
 
+
if ( !zphone_check_dial_out_acl( trim($argv[1]), trim($argv[2]) ) ) {
+
 
     print("hangup\n");
 
     print("hangup\n");
 
}
 
}
Zeile 65: Zeile 63:
 
?>
 
?>
 
</pre>
 
</pre>
 +
 +
 +
=Debug=
 +
 +
Das Script kann zu Debugzwecken auf der Konsole ausgeführt werden
 +
 +
/var/lib/asterisk/agi-bin/zphone_check_dacl.agi 004912345678 13
 +
noop DST:004912345678 SRC:139
 +
hangup
 +
 +
 +
Hier prüfen wir, ob der Teilnehmer 13 die Nummer 004912345678 anrufen kann.<br />
 +
Der Teilnehmer darf es nicht und wird aufgelegt...

Aktuelle Version vom 29. Oktober 2009, 15:53 Uhr

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 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( $argv[1], $argv[2] ) ) {
    print("hangup\n");
}

fclose($in);
return true;
?>


Debug

Das Script kann zu Debugzwecken auf der Konsole ausgeführt werden

/var/lib/asterisk/agi-bin/zphone_check_dacl.agi 004912345678 13
noop DST:004912345678 SRC:139
hangup


Hier prüfen wir, ob der Teilnehmer 13 die Nummer 004912345678 anrufen kann.
Der Teilnehmer darf es nicht und wird aufgelegt...