Initial upgrade of the perl script that enables to download sip user/peer entries...
[asterisk/asterisk.git] / contrib / scripts / retrieve_sip_conf_from_mysql.pl
1 #!/usr/bin/perl -Tw
2 # Retrieves the sip user/peer entries from the database
3 # Use these commands to create the appropriate tables in MySQL
4 #
5 #CREATE TABLE sip (id INT(11) NOT NULL,keyword VARCHAR(20) NOT NULL,data VARCHAR(50),PRIMARY KEY (id,keyword));
6 #
7
8 use DBI;
9 ################### BEGIN OF CONFIGURATION ####################
10
11 # the name of the extensions table
12 $table_name = "sip";
13 # the path to the extensions.conf file
14 # WARNING: this file will be substituted by the output of this program
15 $sip_conf = "/etc/asterisk/sip_additional.conf";
16 # the name of the box the MySQL database is running on
17 $hostname = "localhost";
18 # the name of the database our tables are kept
19 $database = "sip";
20 # username to connect to the database
21 $username = "root";
22 # password to connect to the database
23 $password = "";
24
25 ################### END OF CONFIGURATION #######################
26
27 $additional = "";
28
29 open EXTEN, ">$sip_conf" || die "Cannot create/overwrite extensions file: $sip_conf\n";
30
31 $dbh = DBI->connect("dbi:mysql:dbname=$database;host=$hostname", "$username", "$password");
32 $statement = "SELECT keyword,data from $table_name where id=0 and keyword <> 'account'";
33 my $result = $dbh->selectall_arrayref($statement);
34 unless ($result) {
35   # check for errors after every single database call
36   print "dbh->selectall_arrayref($statement) failed!\n";
37   print "DBI::err=[$DBI::err]\n";
38   print "DBI::errstr=[$DBI::errstr]\n";
39   exit;
40 }
41 my @resultSet = @{$result};
42 if ( $#resultSet > -1 ) {
43         foreach $row (@{ $result }) {
44                 my @result = @{ $row };
45                 $additional .= $result[0]."=".$result[1]."\n";
46         }
47 }
48
49 $statement = "SELECT data,id from $table_name where keyword='account' group by data";
50
51 $result = $dbh->selectall_arrayref($statement);
52 unless ($result) {
53   # check for errors after every single database call
54   print "dbh->selectall_arrayref($statement) failed!\n";
55   print "DBI::err=[$DBI::err]\n";
56   print "DBI::errstr=[$DBI::errstr]\n";
57 }
58
59 @resultSet = @{$result};
60 if ( $#resultSet == -1 ) {
61   print "No sip accounts defined in $table_name\n";
62   exit;
63 }
64
65 foreach my $row ( @{ $result } ) {
66         my $account = @{ $row }[0];
67         my $id = @{ $row }[1];
68         print EXTEN "[$account]\n";
69         $statement = "SELECT keyword,data from $table_name where id=$id and keyword <> 'account' order by keyword";
70         my $result = $dbh->selectall_arrayref($statement);
71         unless ($result) {
72                 # check for errors after every single database call
73                 print "dbh->selectall_arrayref($statement) failed!\n";
74                 print "DBI::err=[$DBI::err]\n";
75                 print "DBI::errstr=[$DBI::errstr]\n";
76                 exit;
77         }
78
79         my @resSet = @{$result};
80         if ( $#resSet == -1 ) {          
81                 print "no results\n";
82                 exit;
83         }
84         foreach my $row ( @{ $result } ) {
85                 my @result = @{ $row };
86                 print EXTEN "$result[0]=$result[1]\n";
87         }                                               
88         print EXTEN "$additional\n";
89 }
90
91 exit 0;
92