亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? manager.pm

?? asterisk用 的voip記費軟件
?? PM
字號:
package Asterisk::Manager;require 5.004;use Asterisk;use IO::Socket;use Digest::MD5;use strict;use warnings;=head1 NAMEAsterisk::Manager - Asterisk Manager Interface=head1 SYNOPSISuse Asterisk::Manager;my $astman = new Asterisk::Manager;$astman->user('username');$astman->secret('test');$astman->host('localhost');$astman->connect || die "Could not connect to " . $astman->host . "!\n";$astman->disconnect;=head1 DESCRIPTIONThis module provides a simple interface to the asterisk manager interface.=cutmy $EOL = "\r\n";my $BLANK = $EOL x 2;my $VERSION = '0.01';sub version { $VERSION; }sub new {	my ($class, %args) = @_;	my $self = {};	$self->{_CONNFD} = undef;	$self->{_PROTOVERS} = undef;	$self->{_ERRORSTR} = undef;	$self->{_HOST} = 'localhost';	$self->{_PORT} = 5038;	$self->{_USER} = undef;	$self->{_SECRET} = undef;	$self->{_EVENTCB} = {};	$self->{_DEBUG} = 0;	$self->{_CONNECTED} = 0;	bless $self, ref $class || $class;	return $self;}sub DESTROY { }sub user {	my ($self, $user) = @_;	if ($user) {		$self->{_USER} = $user;	}	return $self->{_USER};}sub secret {	my ($self, $secret) = @_;	if ($secret) {		$self->{_SECRET} = $secret;	}	return $self->{_SECRET};}sub host {	my ($self, $host) = @_;	if ($host) {		$self->{_HOST} = $host;	}	return $self->{_HOST};}sub port {	my ($self, $port) = @_;	if ($port) {		$self->{_PORT} = $port;	}	return $self->{_PORT};}sub connected {	my ($self, $connected) = @_;	if (defined($connected)) {		$self->{_CONNECTED} = $connected;	}	return $self->{_CONNECTED};}sub error {	my ($self, $error) = @_;	if ($error) {		$self->{_ERRORSTR} = $error;	}	return $self->{_ERRORSTR};}sub debug {	my ($self, $debug) = @_;	if ($debug) {		$self->{_DEBUG} = $debug;	}	return $self->{_DEBUG};}sub connfd {	my ($self, $connfd) = @_;	if ($connfd) {		$self->{_CONNFD} = $connfd;	}	return $self->{_CONNFD};}sub read_response {	my ($self, $connfd) = @_;	my @response;	if (!$connfd) {		$connfd = $self->connfd;	}	while (my $line = <$connfd>) {		last if ($line eq $EOL);		if (wantarray) {			$line =~ s/$EOL//g;			push(@response, $line) if $line;		} else {			$response[0] .= $line;		}	}	return wantarray ? @response : $response[0];}sub connect {	my ($self) = @_;	my $host = $self->host;	my $port = $self->port;	my $user = $self->user;	my $secret = $self->secret;	my %resp;	my $conn = new IO::Socket::INET( Proto => 'tcp',					 PeerAddr => $host,					 PeerPort => $port					);	if (!$conn) {		$self->error("Connection refused ($host:$port)\n");		return undef;	}	$conn->autoflush(1);	my $input = <$conn>;	$input =~ s/$EOL//g;	my ($manager, $version) = split('/', $input);	if ($manager !~ /Asterisk Call Manager/) {		return $self->error("Unknown Protocol\n");	}	$self->{_PROTOVERS} = $version;	$self->connfd($conn);	# check if the remote host supports MD5 Challenge authentication	my %authresp = $self->sendcommand( Action => 'Challenge',					   AuthType => 'MD5'					 );	if ((defined($authresp{Response}) && $authresp{Response} eq 'Success')) {		# do md5 login		my $md5 = new Digest::MD5;		$md5->add($authresp{Challenge});		$md5->add($secret);		my $digest = $md5->hexdigest;		%resp = $self->sendcommand(  Action => 'Login',					     AuthType => 'MD5',					     Username => $user,					     Key => $digest					  );	} else {		# do plain text login		%resp = $self->sendcommand(  Action => 'Login',					     Username => $user,					     Secret => $secret					  );	}	if ( ($resp{Response} ne 'Success') && ($resp{Message} ne 'Authentication accepted') ) {		$self->error("Authentication failed for user $user\n");		return undef;	}	$self->connected(1);	return $conn;}sub astman_h2s {	my ($self, %thash) = @_;	my $tstring = '';	foreach my $key (keys %thash) {		$tstring .= $key . ': ' . $thash{$key} . ${EOL};	}	return $tstring;}sub astman_s2h {	my ($self, $tstring) = @_;	my %thash;	foreach my $line (split(/$EOL/, $tstring)) {		if ($line =~ /(\w*):\s*(\w*)/) {			$thash{$1} = $2;		}	}	return %thash;}#$want is how you want the data returned#$want = 0 (default) returns the results in a hash#$want = 1 returns the results in a large string#$want = 2 returns the results in an arraysub sendcommand {	my ($self, %command, $want) = @_;	if (!defined($want)) {		$want = 0;	}		my $conn = $self->connfd || return;	my $cstring = $self->astman_h2s(%command);		$conn->send("$cstring$EOL");		if ($want == 1) {		my $response = $self->read_response($conn);		print "\n=====>response:$response$EOL";		return $response;	}	my @resp = $self->read_response($conn);	if ($want == 2) {		return @resp;	} else {		return map { split(': ', $_) } @resp;	}}sub setcallback {	my ($self, $event, $function) = @_;	if (defined($function) && ref($function) eq 'CODE') {		$self->{_EVENTCB}{$event} = $function;	}}sub eventcallback {	my ($self, %resp) = @_;	my $callback;	my $event = $resp{Event};	return if (!$event);	if (defined($self->{_EVENTCB}{$event})) {		$callback = $self->{_EVENTCB}{$event};	} elsif (defined($self->{_EVENTCB}{DEFAULT})) {		$callback = $self->{_EVENTCB}{DEFAULT};	} else {		return;	}	return &{$callback}(%resp);}sub eventloop {	my ($self) = @_;	while (1) {		$self->handleevent;	}}sub handleevent {	my ($self) = @_;	my %resp = map { split(': ', $_); } $self->read_response;	$self->eventcallback(%resp);	return %resp;}sub action {	my ($self, $command, $wanthash) = @_;	return if (!$command);	my $conn = $self->connfd || return;	print $conn "Action: $command" . $BLANK;	my @resp = $self->read_response($conn);	if ($wanthash) {		return map { split(': ', $_) } @resp;	} elsif (wantarray) {		return @resp;	} else {		return $resp[0];	}}sub command {	my ($self, $command) = @_;	return if (!$command);	return $self->sendcommand('Action' => 'Command',				  'Command' => $command, 1 );}sub disconnect {	my ($self) = @_;	my $conn = $self->connfd;	my %resp = $self->sendcommand('Action' => 'Logoff');	print "\n===============";	print %resp;	print "===============\n";	if (defined($resp{Response}) && $resp{Response} eq 'Goodbye') {		$self->{_CONNFD} = undef;		$self->connected(0);		return 1;	}	return 0;}1;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品小仙女| 亚洲免费观看高清完整版在线观看 | 久久婷婷综合激情| 五月综合激情日本mⅴ| 色丁香久综合在线久综合在线观看| 国产精品丝袜在线| 高清久久久久久| 国产日韩欧美不卡在线| 26uuu欧美日本| 麻豆免费精品视频| 中文字幕欧美三区| 日韩电影一区二区三区| 久久亚洲综合色| 欧美无砖砖区免费| 成人一区二区三区视频| 蜜臀av一区二区三区| 亚洲日本韩国一区| 欧美国产在线观看| 欧美高清一级片在线| 亚洲一二三四在线| 91高清视频免费看| 欧美肥妇bbw| 日本vs亚洲vs韩国一区三区二区| jizz一区二区| 亚洲专区一二三| 91精品国产色综合久久不卡电影| 国产成人综合亚洲网站| 色激情天天射综合网| 亚洲午夜久久久久中文字幕久| 久久在线免费观看| 欧美福利电影网| 色欧美日韩亚洲| 91论坛在线播放| 波多野结衣在线aⅴ中文字幕不卡| 国产麻豆成人精品| 蜜臀国产一区二区三区在线播放| 亚洲成人午夜电影| 亚洲一区二区免费视频| 夜夜精品视频一区二区| 亚洲精品免费电影| 亚洲欧美日韩系列| 综合网在线视频| 亚洲人成网站色在线观看| 国产精品久久三| 中文字幕一区视频| 亚洲视频香蕉人妖| 亚洲美女在线国产| 亚洲成人一二三| 亚洲一二三区在线观看| 成人免费一区二区三区在线观看| 久久久高清一区二区三区| 久久看人人爽人人| 久久久久久久久蜜桃| 欧美极品少妇xxxxⅹ高跟鞋 | 亚洲国产欧美日韩另类综合| 亚洲欧美日韩系列| 亚洲777理论| 蜜桃久久av一区| 激情五月婷婷综合网| 国产成人在线视频免费播放| 成人午夜视频在线| 日本道色综合久久| 这里只有精品视频在线观看| 精品久久人人做人人爱| 国产日韩欧美制服另类| 亚洲影院理伦片| 美女免费视频一区二区| 欧美欧美午夜aⅴ在线观看| www.av亚洲| 99国内精品久久| 欧美性极品少妇| 欧美日韩免费高清一区色橹橹 | 欧美中文字幕亚洲一区二区va在线| 成人妖精视频yjsp地址| 91亚洲国产成人精品一区二区三| 91网址在线看| 91麻豆精品国产91久久久久 | 天堂一区二区在线| 美女精品自拍一二三四| 国产在线一区二区| 99精品欧美一区二区三区综合在线| 91精品国产乱码久久蜜臀| 中文字幕欧美激情一区| 国产电影一区二区三区| 欧美精选一区二区| 亚洲欧美综合色| 色悠悠久久综合| 亚洲精品一二三区| 91精品1区2区| 欧美成人欧美edvon| 3d动漫精品啪啪1区2区免费| av电影天堂一区二区在线| 色婷婷国产精品| 夜夜精品浪潮av一区二区三区| 欧美一区二区三区四区高清| 欧美一区二区久久| 欧美日韩精品系列| 欧美国产激情二区三区| 亚洲超碰97人人做人人爱| 成人午夜av影视| 日韩欧美一区二区免费| 亚洲与欧洲av电影| gogo大胆日本视频一区| 欧美色综合天天久久综合精品| 久久这里只有精品6| 亚洲国产精品一区二区www在线| 成人小视频在线| 91精品国产欧美一区二区| 亚洲视频免费看| 国产一区二区三区美女| 精品欧美黑人一区二区三区| 亚洲成a天堂v人片| 色成人在线视频| 亚洲精品中文字幕在线观看| 国产成+人+日韩+欧美+亚洲| 欧美日韩高清不卡| 亚洲永久精品大片| 色偷偷久久一区二区三区| 国产精品久线在线观看| 国产中文字幕一区| 精品国产一二三区| 看片的网站亚洲| 中文字幕第一页久久| 国产精品一区二区x88av| 精品福利一区二区三区| 国产河南妇女毛片精品久久久| 国产亚洲制服色| 丁香一区二区三区| 一区二区三区在线观看网站| 欧美视频一区二区| 日韩中文字幕一区二区三区| 欧美精品乱人伦久久久久久| 麻豆免费看一区二区三区| 欧美精品一区二区三区在线 | 国产精品国产精品国产专区不蜜| 欧美日韩中文另类| 91丨porny丨户外露出| 色欧美乱欧美15图片| 91捆绑美女网站| 国产麻豆成人精品| 亚洲免费观看高清完整版在线 | 国产成人av影院| 全部av―极品视觉盛宴亚洲| 免费的成人av| 欧美成人女星排行榜| 久久国内精品视频| 精品电影一区二区| 国产精品69久久久久水密桃| 久久久久国产精品麻豆| 国产不卡一区视频| 中文字幕在线观看一区| 色婷婷综合久久久久中文| 日本人妖一区二区| 精品粉嫩超白一线天av| 亚洲精品五月天| 日韩欧美国产一区在线观看| 波多野结衣欧美| 精久久久久久久久久久| 亚洲福利视频导航| 亚洲激情图片qvod| 亚洲人成伊人成综合网小说| 中文子幕无线码一区tr| 在线免费不卡视频| 成人精品国产一区二区4080| 久久97超碰国产精品超碰| 日日摸夜夜添夜夜添国产精品 | www.亚洲色图| 亚洲成人av免费| 日韩一区二区影院| 国产综合一区二区| 中文字幕一区二区视频| 欧美熟乱第一页| 国产剧情一区在线| 亚洲综合成人在线视频| 欧美va亚洲va国产综合| 成人免费毛片a| 日韩中文字幕不卡| 亚洲国产精品ⅴa在线观看| 欧美视频一区二| 国产精品一区二区不卡| 亚洲乱码国产乱码精品精可以看| 欧美丰满一区二区免费视频 | 日本强好片久久久久久aaa| 欧美福利视频导航| 菠萝蜜视频在线观看一区| 亚洲成在人线在线播放| 久久久综合网站| 欧美性猛片xxxx免费看久爱| 国内精品久久久久影院色| 亚洲激情自拍视频| 久久精品综合网| 欧美高清视频在线高清观看mv色露露十八| 国产乱码一区二区三区| 亚洲成人免费在线观看| 国产精品久久久久影院亚瑟| 在线不卡欧美精品一区二区三区| 国产91精品久久久久久久网曝门| 亚洲综合色丁香婷婷六月图片| 久久久久久久国产精品影院| 欧美日韩亚洲综合一区二区三区|