Advertisement
Guest User

Untitled

a guest
May 16th, 2011
243
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.28 KB | None | 0 0
  1. #!/usr/bin/perl -w
  2. # Written by ES on 5/16/11
  3. #use Asterisk::Manager;
  4. use Asterisk::AMI;
  5. use Mysql;
  6. use strict;
  7.  
  8. # become daemon
  9. my $pid = fork();
  10. open ("PID", ">/var/run/eswitch.pid");
  11. print PID $pid;
  12. close (PID);
  13. if($pid) {
  14.   #end parent process
  15. #  print "#parent process";
  16.   exit(0);
  17. }else {
  18. #  print "#child process";
  19. }
  20.  
  21. # set new process group
  22. setpgrp;
  23. # setsid ? only C
  24.  
  25. open(STDERR, ">>", "/var/log/eswitch.log");
  26.  
  27. my $host = XXXXXXXXXXXX;
  28. my $database = XXXXXXXXXXXX;
  29. my $user = XXXXXXXXXXXX;
  30. my $pw = XXXXXXXXXXXX;
  31. my $connect = Mysql->connect($host, $database, $user, $pw);
  32. my $astman = amiconnect();
  33.  
  34. while(1) {
  35.   open ("LOG", ">> /var/log/eswitch.log");
  36.   sleep(2);
  37.   my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime(time);
  38.   print LOG ("$year-$mon-$mday $hour:$min:$sec\n");
  39.   $year+=1900;$mon++;
  40.   my $sql = "select customer, snumber, dnumber, dtype from active";
  41.   my $res = $connect->query($sql);
  42.   while(my @row = $res->fetchrow()) {
  43.         print LOG ("Calling ".$row[2]." from ".$row[1]." at $year-$mon-$mday $hour:$min:$sec.\n");
  44.         my $response = $astman->action({Action => 'Originate',
  45.                                         Channel => 'Local/'.$row[2].'@outbound',
  46.                                         Context => 'page',
  47.                                         CallerID => $row[1],
  48.                                         Exten => $row[1],
  49.                                         Priority => 1,
  50.                                         OriginateHack => 1,
  51.                                         Async => 1});
  52.         print LOG ($response->{'Message'} );
  53.         $connect->query("delete from active where customer='".$row[0]."' and snumber='".$row[1]."' and dnumber='".$row[2]."' and dtype='".$row[3]."'");
  54.   }
  55. #  close (LOG);
  56. }
  57.  
  58. sub amiconnect {
  59.         my $ami = Asterisk::AMI->new(   PeerAddr => '127.0.0.1',
  60.                                         PeerPort => '5038',
  61.                                         Username => XXXXXXXXXXXX,
  62.                                         Secret   => XXXXXXXXXXXX,
  63.                                         Keepalive=> '2',
  64.                                         on_error => \&amiconnect
  65.         );
  66.         die "Unable to connect to asterisk" unless ($ami);
  67.         return $ami;
  68. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement