2006-07-22 17:49:52 -04:00
|
|
|
use FreeSWITCH::Client;
|
|
|
|
use Data::Dumper;
|
|
|
|
use Term::ReadLine;
|
|
|
|
my $password = "ClueCon";
|
|
|
|
|
|
|
|
|
|
|
|
my $fs = init FreeSWITCH::Client {-password => $password} or die "Error $@";
|
2006-07-22 20:37:19 -04:00
|
|
|
my $term = new Term::ReadLine "FreeSWITCH CLI";
|
2006-07-22 17:49:52 -04:00
|
|
|
my $prompt = "FS>";
|
|
|
|
my $OUT = $term->OUT .. \*STDOUT;
|
|
|
|
|
|
|
|
my $log = shift;
|
|
|
|
|
2006-07-25 10:14:07 -04:00
|
|
|
$SIG{CHLD} = sub {$fs->disconnect(); die "done"};
|
|
|
|
|
2006-07-22 17:49:52 -04:00
|
|
|
if ($log) {
|
|
|
|
$pid = fork;
|
|
|
|
if (!$pid) {
|
|
|
|
my $fs2 = init FreeSWITCH::Client {-password => $password} or die "Error $@";
|
2006-07-25 10:14:07 -04:00
|
|
|
|
|
|
|
|
|
|
|
$fs2->cmd({ command => "log $log" });
|
2006-07-22 17:49:52 -04:00
|
|
|
while (1) {
|
|
|
|
my $reply = $fs2->readhash(undef);
|
2006-07-25 10:14:07 -04:00
|
|
|
if ($reply->{socketerror}) {
|
|
|
|
die "socket error";
|
|
|
|
}
|
2006-07-22 17:49:52 -04:00
|
|
|
if ($reply->{body}) {
|
|
|
|
print $reply->{body} . "\n";
|
|
|
|
} elsif ($reply->{'reply-text'}) {
|
|
|
|
print $reply->{'reply-text'} . "\n";
|
|
|
|
}
|
|
|
|
}
|
2006-07-25 10:14:07 -04:00
|
|
|
exit;
|
2006-07-22 17:49:52 -04:00
|
|
|
}
|
2006-07-25 10:14:07 -04:00
|
|
|
|
2006-07-22 17:49:52 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
while ( defined ($_ = $term->readline($prompt)) ) {
|
|
|
|
my $reply;
|
|
|
|
|
|
|
|
if ($_) {
|
2006-07-25 10:14:07 -04:00
|
|
|
my $reply = $fs->cmd({command => "api $_"});
|
|
|
|
if ($reply->{socketerror}) {
|
|
|
|
$fs2->disconnect();
|
|
|
|
die "socket error";
|
|
|
|
}
|
2006-07-22 17:49:52 -04:00
|
|
|
if ($reply->{body}) {
|
|
|
|
print $reply->{body};
|
|
|
|
} elsif ($reply->{'reply-text'}) {
|
|
|
|
print $reply->{'reply-text'};
|
|
|
|
}
|
|
|
|
print "\n";
|
|
|
|
if ($_ =~ /exit/) {
|
|
|
|
last;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
$term->addhistory($_) if /\S/;
|
|
|
|
}
|
|
|
|
|