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

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

?? rest.pm

?? Punjab is a jabber XMLRPC/SOAP/REST client. It is a xmlrpc, soap, or REST server that allows for p
?? PM
?? 第 1 頁 / 共 2 頁
字號:
package PunJab::REST;use strict;use warnings;use POE;use POE::Filter::XML;use POE::Filter::XML::Node;use POE::Filter::XML::NS qw/ :JABBER :IQ /;use POE::Filter::XML::Utils;use PunJab;use PunJab::Util;use PunJab::Session;use PunJab::Server::REST;use POSIX qw(strftime);use Data::Uniqid qw ( suniqid uniqid luniqid );my %help;sub new {    shift;    my $config = shift;    $config->{'type'} = "rest_shell";          PunJab::Server::REST->new($config,'rest_server');        POE::Session->create	( inline_states =>	  { _start => sub {	      my $kernel = $_[KERNEL];	      if ($config->{debug}>0) {		  &debug("REST Interface Session Started\n");	      }	      	      $kernel->alias_set("rest_shell");	      $kernel->post( rest_server => publish => rest_shell => "ls" );	      $kernel->post( rest_server => publish => rest_shell => "help" );	      $kernel->post( rest_server => publish => rest_shell => "date" );	      $kernel->post( rest_server => publish => rest_shell => "gmtime" );	      $kernel->post( rest_server => publish => rest_shell => "login" );	      $kernel->post( rest_server => publish => rest_shell => "logout" );	      $kernel->post( rest_server => publish => rest_shell => "presences" );	      $kernel->post( rest_server => publish => rest_shell => "messages" );	      $kernel->post( rest_server => publish => rest_shell => "iqs" );	      $kernel->post( rest_server => publish => rest_shell => "roster" );	      $kernel->post( rest_server => publish => rest_shell => "register" );	      $kernel->post( rest_server => publish => rest_shell => "vcard" );	      $kernel->post( rest_server => publish => rest_shell => "browse" );	      $kernel->post( rest_server => publish => rest_shell => "pubsub" );	      # give a stream option to all methods.	      #$kernel->post( rest_server => publish => rest_shell => "stream" );	      #$kernel->post( rest_server => publish => rest_shell => "transport" );	      $kernel->yield('get_help');	  },	    session_register => sub {                my $sid = $_[ARG0];		                $punjab_session->register($sid);                $punjab_session->logged_in($sid,1);                $punjab_session->activity($sid,time());                if ($_[HEAP]->{'CONFIG'}->{debug} > 1) {                    &debug("REST Session $sid registered");                }            },            session_unregister => sub {                my $sid = $_[ARG0];                $punjab_session->unregister($sid);                if ($_[HEAP]->{'CONFIG'}->{debug} > 1) {                    &debug("REST Session $sid unregistered");                }            },	                # -------------------------- #            # rest calls            # -------------------------- #	    date => sub {		my $rest_transaction = $_[ARG0];		if ($rest_transaction->method() eq "GET") {		    my $date = localtime();		    $rest_transaction->return(&str_to_node("<resources><date>".$date."</date></resources>"));		} else {		    $rest_transaction->error($rest_transaction->method(). " is not supported.");		}	    },	    gmtime => sub {		my $rest_transaction = $_[ARG0];		if ($rest_transaction->method() eq "GET") {		    my $date = gmtime();		    $rest_transaction->return(&str_to_node("<resources><gmtime>" . $date."</gmtime></resources>"));		} else {		    $rest_transaction->error($rest_transaction->method(). " is not supported.");		}	    },	    login     => \&login,	    logout    => \&logout,	    ls        => \&ls,	    help      => \&help,	    presences => \&presences,	    messages  => \&messages,	    iqs       => \&iqs,            roster    => \&roster,            vcard     => \&vcard,	    register  => \&register,	    browse    => \&browse,	    disco     => \&disco,	    pubsub    => \&pubsub,	    send_rest     => \&send_rest,	    get_help      => \&get_help,	    get_presence  => \&get_presence,            get_roster    => \&get_roster,	    send_roster   => \&send_roster,	    return_browse => \&return_browse,	    return_pubsub => \&return_pubsub,	    	    check_timeout => \&check_timeout,	    check_timeout_continue => \&check_timeout_continue,	},	  heap => { CONFIG => $config },	  options => { debug => $config->{'debug'}, trace => $config->{'debug'} }	  );        return undef;}sub login {    # this will need to be overwritten or changed into a redifinable tool    my ($kernel,$heap,$session,$rest_transaction) = @_[KERNEL, HEAP, SESSION, ARG0];    my ($options,$content,$session_id,$error);    my $params   = $rest_transaction->params();    my $port     = $params->{'port'};    my $ch       = $params->{'challenge'};    my $jid      = $params->{'jid'};    my $pass     = $params->{'pass'};    if ($rest_transaction->method() eq "GET") {	if (not defined $rest_transaction->request()->authorization()) {	    $rest_transaction->auth(&str_to_node("<error><code>401</code><fault>Bad Authentication</fault><description>auth failed</description></error>"));	    return;	} 		($jid,$pass) = $rest_transaction->request()->authorization_basic();	# need to grab port!		if (not defined($jid) or not defined($pass)) {	    $rest_transaction->error("you need a username and password");	    return FALSE;	}    }    if ($rest_transaction->method() eq "POST") {	my $input   = $rest_transaction->stdin();	$input =~ s/\x00//gi;	&debug($input);	my ($stdin) = &stdin_to_node($input);		my $pc      = $stdin->get_children_hash();       	$port = $pc->{'port'}->data() if defined $pc->{'port'};	$pass = $pc->{'password'}->data() if defined $pc->{'password'};	$jid  = $pc->{'jid'}->data() if defined $pc->{'jid'};	    }    ### Grab hostname     #my $hostname = &get_host($jid);    my ($username,$hostname,$resource) = &parse_jid($jid);    if (not defined($username) or not defined($hostname)) {	if ($rest_transaction->method() eq "GET") {	    $rest_transaction->auth(&str_to_node("<error><code>401</code><fault>Bad Authentication</fault><description>auth failed</description></error>"));		} else {	    $rest_transaction->error(&str_to_node("<error><code>401</code><fault>Bad Authentication</fault><description>auth failed</description></error>"));		}	return FALSE;    }    #my $port_num = '5222' if not defined $port;    if (not defined($port) or $port eq "") {	$port = 5222;    }    $resource = "PunJab" if not defined $resource or $resource eq "";    ### Create the session    # this needs some work    my $ip = $rest_transaction->request()->{remote_ip};    $ip = luniqid if not defined $ip;    my $key = $jid.$pass.$resource.$ip;    $session_id = $punjab_session->key($key);           ### Start the jabber client.      if ($heap->{'CONFIG'}->{debug} > 1) {	&debug('Connecting : ' .$jid." : ". $session_id . ":" .$port."\n");    }    if ($punjab_session->check_session($session_id)) {        $rest_transaction->return(&str_to_node("<login><sid>".$session_id."</sid></login>"));        return;    }    	    PunJab::JabberConnection->new($session_id,				  $jid,				  $pass,				  $username,				  $resource,				  $hostname,				  $port,				  $heap->{'CONFIG'},				  $rest_transaction,				  'session_register',				  'session_unregister');        $kernel->delay('check_timeout', $heap->{'CONFIG'}->{'idle_check'});        }sub logout {    my ($kernel,$heap,$session,$rest_transaction) = @_[KERNEL, HEAP, SESSION, ARG0];    my $params = $rest_transaction->params();    my $args   = $rest_transaction->args(); # maybe support this too?     &debug($rest_transaction->stdin());    my ($stdin)= &stdin_to_node($rest_transaction->stdin());        my $sid = $params->{'sid'};             return if not defined $sid;        if ($punjab_session->check_session($sid)) {	$kernel->post($sid,'disconnect');    } else {	$rest_transaction->error("Session does not exist");	return;    }    $rest_transaction->return(&str_to_node("<logout><sid>".$sid."</sid></logout>"));}sub messages {    my ($kernel,$heap,$session,$rest_transaction) = @_[KERNEL, HEAP, SESSION, ARG0];    my $params = $rest_transaction->params();     my $args   = $rest_transaction->args();      my $sid  = $params->{'sid'};    my $to   = $params->{'to'};    my $from = $params->{'from'};    my $id   = $params->{'id'};     my $type = $params->{'type'};    my $c    = $params->{'check'};    my $s    = $params->{'stream'};        my $p    = shift @$args if defined $args;    return if not defined $sid;    my $messages  = POE::Filter::XML::Node->new('messages');    if ($punjab_session->check_session($sid)) {        $punjab_session->activity($sid,time());		if ($rest_transaction->method() eq "GET") {	    # grab the message	    	    $rest_transaction->request()->{'rest_type'} = 'messages';	    $kernel->post('Manager'.$sid,'start_message_event','send_rest',$rest_transaction) if $s;	    if (defined $c and $c==1) {                $kernel->post('Manager'.$sid,'check_managed_message',$to,$from,'send_rest',$rest_transaction);            } else {                $kernel->post('Manager'.$sid,'get_managed_message',$to,$from,$id,$type,'send_rest',$rest_transaction);            }	    return;	} elsif ($rest_transaction->method() eq "POST") {	    my ($stdin)= &stdin_to_node($rest_transaction->stdin());	    my $pc        = $stdin->get_children();	    if (defined($pc)) {		# need to do more checks		foreach my $p (@$pc) {		    if ($p->name() eq "message") {			$kernel->post($sid,'send_xml',$p);			$messages->insert_tag($p);		    }		}	    } else {		$rest_transaction->error("Error in xml");		return;	    }	} 	$rest_transaction->return($messages);	        } else {		$rest_transaction->error("Session does not exist");	return;    }     }sub presences{    my ($kernel,$heap,$session,$rest_transaction) = @_[KERNEL, HEAP, SESSION, ARG0];    my $params = $rest_transaction->params();    my $args   = $rest_transaction->args();    my ($stdin)= &stdin_to_node($rest_transaction->stdin());    my ($pc,$status,$show);        my $sid  = $params->{'sid'};     my $to   = $params->{'to'};     my $from = $params->{'from'};     my $s    = $params->{'stream'};        return if not defined $sid;    my $presences = POE::Filter::XML::Node->new('presences');            if ($punjab_session->check_session($sid)) {        $punjab_session->activity($sid,time());		if ($rest_transaction->method() eq "GET") {	    # grab the presence	    $rest_transaction->request()->{'rest_type'} = 'presences';	    $kernel->post('Manager'.$sid,'start_presence_event','send_rest',$rest_transaction) if $s;	    $kernel->post('Manager'.$sid,'get_managed_presence',$to,$from,'send_rest',$rest_transaction);	  	    return;	} elsif ($rest_transaction->method() eq "POST") {	    $pc        = $stdin->get_children();	    if (defined($pc)) {		# need to do more checks		foreach my $p (@$pc) {		    if ($p->name() eq "presence") {			$kernel->post($sid,'send_xml',$p);			$presences->insert_tag($p);		    } else {			my $tp = POE::Filter::XML::Node->new('presence');			$tp->insert_tag($p->name)->data($p->data());			$kernel->post($sid,'send_xml',$tp);			$presences->insert_tag($tp);		    }		}	    } else {		    }	} 	$rest_transaction->return($presences);	        } else {	$rest_transaction->error("Session does not exist");    }}sub roster{    my ($kernel,$heap,$session,$rest_transaction) = @_[KERNEL, HEAP, SESSION, ARG0];    my $params = $rest_transaction->params();    my $args   = $rest_transaction->args(); # maybe support this too?    my ($stdin)= &stdin_to_node($rest_transaction->stdin());    my $s    = $params->{'stream'};    &debug($s);    my $sid = $params->{'sid'};     return if not defined $sid;    my $item;    my $id = luniqid;    if ($punjab_session->check_session($sid)) {	$punjab_session->activity($sid,time());	$rest_transaction->request()->{'rest_type'} = 'roster';	if ($rest_transaction->method() eq "GET") {	    # should this go on the heap? It may be a bit to crazy	    $rest_transaction->request()->{'start_roster'} = $sid;	    $kernel->post('Manager'.$sid,'start_roster', 'get_roster', 			  $rest_transaction,$id,$sid,'JABBER'.$sid);	    return;	} elsif ($rest_transaction->method() eq "POST") {	    my $iq = POE::Filter::XML::Node->new('iq');	    $iq->attr('type',+IQ_SET);	    $iq->attr('id',$id);	    	    my $query = $iq->insert_tag('query',['xmlns',+NS_JABBER_ROSTER]);	    if (ref($stdin) eq "POE::Filter::XML::Node") {		my $items        = $stdin->get_children();		foreach my $i (@$items) {		    my $p = POE::Filter::XML::Node->new('presence');		    $p->attr('type','subscribe');		    $p->attr('to',$i->attr('jid'));		    $kernel->post($sid,'send_xml',$p);		    $query->insert_tag($i);		}	    } else {		$item  = $query->insert_tag('item');		$item->attr('name',$params->{'name'}) if defined $params->{'name'};		$item->attr('jid',$params->{'jid'}) if defined $params->{'jid'};		$item->insert_tag('group')->data($params->{'group'}) if defined $params->{'group'};	    }	    $kernel->post($sid,'send_xml',$iq);	    	    	    $kernel->post('Manager'.$sid,'manage_events', 'send_rest', 			  $rest_transaction,$iq,$sid);	    return;	}	    } else {	$rest_transaction->error("Session does not exist");	return;    }}sub get_roster() {    my ($kernel,$session,$heap,$ret_val, $rest_transaction,$node,$sid) = 	@_[KERNEL, SESSION, HEAP, ARG0 .. ARG3];        if ($punjab_session->check_session($sid)) {		if (defined($rest_transaction->request()->{'start_roster'})) {	    # we want to combine presence with our roster	    $kernel->post('Manager'.$sid,'get_managed_roster','get_presence',$rest_transaction,$sid);	} else {	    $kernel->post('Manager'.$sid,'get_managed_roster','send_rest',$rest_transaction);	}	    } else {	$rest_transaction->error("Session does not exist");    }}sub get_presence() {    my ($kernel,$session,$heap,$ret_val, $rest_transaction,$node,$sid) = 	@_[KERNEL, SESSION, HEAP, ARG0 .. ARG3];    $sid = $rest_transaction->request()->{'start_roster'} if defined $rest_transaction->request()->{'start_roster'};        if ($punjab_session->check_session($sid)) {		if (defined($rest_transaction->request()->{'start_roster'})) {	    # should this go on the heap? It may be a bit to crazy	    $rest_transaction->request()->{'roster'} = $ret_val;	    	    $kernel->post('Manager'.$sid,'get_managed_presence',undef,undef,'send_roster',$rest_transaction);	} else {	    $kernel->post('Manager'.$sid,'get_managed_presence',undef,undef,'send_rest',$rest_transaction);	}	    } else {	$rest_transaction->error("Session does not exist");    }}sub send_roster {    my ($kernel,$session,$heap,$ret_val,$rest_trans) = 	@_[KERNEL, SESSION, HEAP, ARG0, ARG1];        my $ret = POE::Filter::XML::Node->new('roster');      if(ref($rest_trans->request()->{'roster'}) eq 'ARRAY') {	foreach my $r (@{$rest_trans->request()->{'roster'}}) {	    my $rvn = &str_to_node($r->{'xml'});	    foreach my $tr (@$ret_val) {		my $tmp_jid = $r->{'jid'};		$tmp_jid =~ s/\+/\\+/gi;		if ($tr->{'from_attr'} =~ /$tmp_jid/) {		    my $trvn = &str_to_node($tr->{'xml'});		    $rvn->insert_tag($trvn);		    next;		}	    }	    $ret->insert_tag($rvn);	}	    }         $rest_trans->return($ret);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看www91| 夜夜精品浪潮av一区二区三区| 欧美一区二区三区公司| 欧美日韩国产一级片| 欧美图片一区二区三区| 国产精品入口麻豆原神| 国产精品美女久久久久久| 国产精品另类一区| 亚洲男女毛片无遮挡| 亚洲色图一区二区三区| 一区二区三区四区在线播放| 一区二区久久久| 香蕉久久一区二区不卡无毒影院 | 国产高清不卡一区| 国产精品一区二区三区四区| 国产成人一区二区精品非洲| 成人国产亚洲欧美成人综合网 | 久久亚洲精品国产精品紫薇| 精品播放一区二区| 欧美激情一区二区三区四区| 中文字幕一区二区三| 一区二区成人在线视频| 免费人成黄页网站在线一区二区| 久久99精品国产.久久久久久| 久久疯狂做爰流白浆xx| 懂色av一区二区三区免费看| 91首页免费视频| 欧美日韩一区高清| 精品成人一区二区三区四区| 国产农村妇女毛片精品久久麻豆| 中文字幕制服丝袜一区二区三区 | 亚洲另类一区二区| 香港成人在线视频| 国产一区二区导航在线播放| 91亚洲永久精品| 欧美猛男超大videosgay| 精品捆绑美女sm三区| 国产精品狼人久久影院观看方式| 亚洲视频网在线直播| 日韩精品国产欧美| 粉嫩绯色av一区二区在线观看| 91久久精品一区二区三| 日韩免费一区二区三区在线播放| 国产精品久久久一本精品| 亚洲va欧美va国产va天堂影院| 黄页网站大全一区二区| 色婷婷综合久久久中文字幕| 日韩视频在线永久播放| 国产精品国产三级国产aⅴ原创| 亚洲大尺度视频在线观看| 国产精品1024久久| 欧美久久久久久久久中文字幕| 久久久久久麻豆| 亚洲午夜在线视频| 高清在线成人网| 69堂亚洲精品首页| 亚洲欧洲一区二区在线播放| 蜜臀a∨国产成人精品| 99re视频这里只有精品| 精品三级在线看| 亚洲制服丝袜av| 成人a区在线观看| 日韩一区二区三区在线视频| 亚洲免费在线观看| 国产成人精品免费视频网站| 在线观看91av| 风间由美一区二区三区在线观看| 欧美二区三区的天堂| 最近日韩中文字幕| 国产精品亚洲视频| 91精品国产福利在线观看| 亚洲同性同志一二三专区| 激情久久久久久久久久久久久久久久| 欧美亚洲国产怡红院影院| 国产精品午夜电影| 国产乱国产乱300精品| 欧美高清hd18日本| 亚洲午夜精品一区二区三区他趣| 粉嫩aⅴ一区二区三区四区 | 亚洲va中文字幕| 色偷偷成人一区二区三区91| 欧美激情一区在线观看| 精品综合久久久久久8888| 欧美日韩国产一二三| 一区二区三区自拍| 91在线小视频| 国产精品毛片无遮挡高清| 国产福利不卡视频| 2020国产精品| 国内精品伊人久久久久av一坑| 91精品在线免费| 首页亚洲欧美制服丝腿| 欧美日韩中文字幕一区二区| 99久久婷婷国产综合精品电影 | 五月天视频一区| 欧美午夜视频网站| 亚洲成人黄色小说| 欧美精品一卡两卡| 午夜久久久久久久久| 欧美三级视频在线| 亚洲成a人片在线观看中文| 欧美亚洲综合在线| 亚洲国产精品久久久男人的天堂| 一本色道综合亚洲| 亚洲已满18点击进入久久| 日本乱码高清不卡字幕| 亚洲自拍偷拍图区| 欧美日韩一区在线| 视频一区视频二区中文字幕| 制服丝袜亚洲色图| 久久99精品国产麻豆婷婷洗澡| 精品免费国产二区三区| 国产麻豆精品久久一二三| 国产欧美精品一区二区色综合 | 欧美性videosxxxxx| 亚洲一区视频在线观看视频| 欧美日韩在线直播| 全国精品久久少妇| 久久婷婷久久一区二区三区| 国产91精品久久久久久久网曝门| 国产精品网站在线播放| 91免费视频网| 五月婷婷久久丁香| 精品少妇一区二区三区日产乱码| 国产精品综合久久| 日韩理论在线观看| 欧美丰满美乳xxx高潮www| 韩日精品视频一区| 自拍偷拍亚洲综合| 欧美日韩中文国产| 狠狠色丁香婷婷综合| 国产精品欧美一级免费| 91黄视频在线| 美女mm1313爽爽久久久蜜臀| 日本一区二区免费在线| 91精彩视频在线观看| 日韩成人午夜电影| 欧美激情综合在线| 欧美色中文字幕| 国产在线一区观看| 亚洲视频在线观看三级| 亚洲宅男天堂在线观看无病毒| 欧美一级片免费看| 成人18精品视频| 午夜精品福利一区二区三区av| 精品国产亚洲一区二区三区在线观看| 成人免费毛片嘿嘿连载视频| 亚洲一区av在线| 久久久午夜精品| 91久久一区二区| 国产在线国偷精品产拍免费yy| 亚洲视频在线一区二区| 精品免费视频.| 欧美视频一区在线| 国产精品 日产精品 欧美精品| 一区二区三区国产精品| 26uuu国产在线精品一区二区| 91免费视频网| 国产精品99久久久久久似苏梦涵| 亚洲一区二区av在线| 国产日韩亚洲欧美综合| 制服丝袜亚洲精品中文字幕| av电影一区二区| 狠狠色狠狠色综合| 亚洲r级在线视频| 亚洲欧洲成人av每日更新| 欧美成人精品福利| 欧美亚洲国产一区在线观看网站 | 欧美浪妇xxxx高跟鞋交| av日韩在线网站| 国产精品中文字幕欧美| 天堂一区二区在线| 亚洲欧美日本韩国| 国产嫩草影院久久久久| 日韩三级视频中文字幕| 欧美午夜免费电影| 91免费观看视频| 国产不卡视频一区二区三区| 日韩国产成人精品| 亚洲综合小说图片| 亚洲欧洲在线观看av| 久久久精品影视| 欧美成人video| 在线成人午夜影院| 欧美日韩一区三区四区| 色视频成人在线观看免| 成人黄色一级视频| 精品一区二区三区免费观看| 日韩电影在线免费| 亚洲成人激情av| 亚洲国产精品久久久久秋霞影院| 亚洲欧美中日韩| 中文久久乱码一区二区| 国产亚洲一区二区在线观看| 精品久久久久久久人人人人传媒| 欧美肥大bbwbbw高潮| 欧美浪妇xxxx高跟鞋交| 欧美日韩视频专区在线播放| 欧洲av在线精品| 欧洲视频一区二区|