Данные в таблице users:
tel_number - номер телефона
ext_number - номер extension
name - имя пользователя
ip_address - ip адрес телефона
secret - md5 хеш строки [user]:asterisk:[password]
echo -n “<user>:<realm>:<secret>” | md5sum
#! /usr/local/bin/perl
use strict;
use warnings;
use File::Copy;
use DBI;
binmode(STDOUT,':utf8');
my $dn = "DBI:mysql:asterisk";
my $user = "ast_reader";
my $pass = 'ast_reader_password';
my $temp_file = '/tmp/sip_users.tmp';
my $sip_users_file = '/usr/local/etc/asterisk/sip_users.conf';
my %attr = (PrintError=>0, RaiseError=>1, mysql_enable_utf8=>1);
my $dbh = DBI->connect($dn, $user, $pass, \%attr);
my $sth = $dbh->prepare('select tel_number, ext_number, name, ip_address, secret from users'); $sth->execute();
open(my $fh, '>:encoding(UTF-8)', $temp_file);
print $fh "; WARNING!!! This File is automatically overwritten by sip_reload command!\n";
print $fh "; DO NOT MODIFY THIS FILE! Use sip_reload command from shell.\n\n";
while (my $ref = $sth->fetchrow_hashref()) {
print $fh "[$ref->{'tel_number'}](sip-tmpl,codec-tmpl)\n";
print $fh " permit=$ref->{'ip_address'}\n";
print $fh " accountcode=$ref->{'tel_number'}\n";
print $fh " callerid=$ref->{'name'} <$ref->{'tel_number'}>\n";
print $fh " md5secret=$ref->{'secret'}\n\n";
print "$ref->{'name'} - $ref->{'tel_number'} - $ref->{'ext_number'}\n"
}
print $fh "; Created: ", scalar (localtime), "\n";
close $fh;
$sth->finish;
$dbh->disconnect();
move($temp_file, $sip_users_file) or die("Can't move file.");
system qq(asterisk -rx 'sip reload');