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

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

?? html.pm

?? Punjab is a jabber XMLRPC/SOAP/REST client. It is a xmlrpc, soap, or REST server that allows for p
?? PM
字號:
package PunJab::Server::HTML;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 POE::Filter::Stream;use HTTP::Status;use PunJab;use PunJab::Util;use PunJab::Session;use PunJab::Server::HTTP;use POSIX qw(strftime);use Digest::SHA1;use Digest::MD5 qw(md5 md5_hex md5_base64);use Data::Uniqid qw ( suniqid uniqid luniqid );use URI::QueryParam;use HTML::Template;#use File::MimeInfo::Magic;use File::Type;my $html_config;sub new {    shift;    my $config = shift;    my $alias  = shift;    $alias = "html" if not defined $alias;    $html_config = $config; # why does POE::Component::TCP::Server not allow you to put stuff on the heap?    PunJab::Server::HTTP->new($config,\&handler,\&streamer,\&html_error,'html_web_server');    # All we do here is serve files!    POE::Session->create	( inline_states =>	  { _start => sub {	      my $kernel = $_[KERNEL];	      if ($config->{debug}>0) {		  &debug("HTML Server Session Started\n");	      }	      $kernel->alias_set($alias);	      #$public_interfaces{$alias}{'file'} = 1;	  },         },	  heap => { CONFIG => $config },	  options => { debug => $config->{'debug'}, trace => $config->{'debug'} }	  );        return undef;}### Handlers for the html server. sub shutdown_service {    # loop and delete all interfaces        $_[KERNEL]->yield("shutdown");}sub html_error(){     my ($kernel, $heap, $sender, $syscall_name, $error_number, $error_string) = 	 @_[KERNEL, HEAP, SENDER, ARG0 .. ARG2];     my $params;     # when client dies we need to kill the stream event          &debug($syscall_name);     &debug($error_number);     &debug($error_string);}sub streamer(){     my ($kernel, $heap, $sender) = @_[KERNEL, HEAP, SENDER];     if (defined $heap->{'buffer'}) {	 $heap->{client}->set_output_filter( POE::Filter::Stream->new() );	 if ($heap->{'buffer'} ne "") {	     $heap->{'last_stream_count'} = $heap->{'stream_count'};	 } 	 &debug("stream count : last ($heap->{'last_stream_count'})  now ($heap->{'stream_count'}) \n\n");	 if ($heap->{'stream_count'}==0) {	     $heap->{'client'}->put("\n");	     $heap->{'stream_count'}++;	 }	 	 $heap->{'client'}->put($heap->{'buffer'});	 	 $heap->{'buffer'} = "" if $heap->{'buffer'} ne "";	 if ($heap->{'last_stream_count'} == $heap->{'stream_count'}) {	     	     $heap->{'client'}->put("\n");	     $heap->{'stream_count'}++;	 }	      }    }sub handler(){    my ($kernel,$heap,$sender,$request) = @_[KERNEL, HEAP, SENDER, ARG0];    if($request->isa('HTTP::Response'))    {         _request_failed( $request,                          403,                          "Bad Request",                          "This was a response?",			  $sender                          );	          return;     }    $heap->{'stream_count'} = 0;    my $response = HTTP::Response->new();    my $query_string = $request->uri->query();    my $session                = "html_shell";    my $http_method            = $request->method();    my $request_content_type   = $request->header('Content-Type');    my $request_content_length = $request->header('Content-Length');    my $debug_request          = $request->header('DebugRequest');    my $request_content        = $request->content();    # need to parse this into hash similar to query    my $uri_path;    my @path       = split(/\//,$request->uri->path());    shift @path;    if (not defined $path[0]) {		$uri_path = $html_config->{'directory_index'};	    } else {	$uri_path = join('/',@path);    }        eval {        HTMLTransaction->start($sender,			       $request,			       $response,			       $session,			       $http_method,			       $uri_path,			       $request_content);    };        if ($@) {        _request_failed( $response,                         500,                         "Application Faulted",                         "An exception fired while processing the request: $@",                         $sender,                         );    }    return;}sub _auth(){    my $html_transaction = shift;        if (not defined $html_transaction->request()->authorization()) {	# if it is a get do an http basic auth 		$html_transaction->auth("auth failed");		return;    }     my ($jid,$pass) = $html_transaction->request()->authorization_basic();        if (not defined $jid and not defined $pass) {	$html_transaction->error("Error in authorization.");	return +FALSE;    }    my ($username,$hostname,$resource) = &parse_jid($jid);    ### Create the session    # put this in a html header?    my $id      = $html_transaction->request()->{remote_ip};    my $shaobj  = new Digest::SHA1;    $shaobj->add($jid.$pass.$resource.$id);    my $sid = $shaobj->hexdigest();        return $sid;}sub _return_request(){}sub _request_failed() {  my ($response, $fault_code, $fault_string, $result_description,$sender) = @_;  # need to template this too  my $response_content = qq{<html><body><b>$fault_code</b><br/><b>$fault_string</b><br/><b>$result_description</b><br/></body></html>};  $response->code($fault_code);  $response->header("Content-Type", "text/html");  $response->header("Content-Length", length($response_content));  $response->content($response_content);  my $pb = $sender->postback( 'send_response', $response);  $pb->($response);}package HTMLTransaction;use URI::Split qw(uri_split uri_join);use PunJab::Util;use File::Basename;sub TR_REQUEST  () { 0 }sub TR_RESPONSE () { 1 }sub TR_SESSION  () { 2 }sub TR_METHOD   () { 3 }sub TR_PATH     () { 4 }sub TR_STDIN    () { 5 }sub TR_PARAMS   () { 6 }sub TR_CLIENT   () { 7 }sub start {  my ($type,$sender, $request, $response, $session,$method, $path, $stdin) = @_;  my $params;  my $client;   my $event;  for my $key ($request->uri->query_param) {      if ($key eq "event") {	  $event = $request->uri->query_param($key);	  next;      }      $params->{$key}= $request->uri->query_param($key);  }  $stdin =~ s/\x00//gi; # get rid of crap  my $self = bless      [ $request,	$response,	$session,	$method,	$path,	$stdin,	$params,	$sender->postback( 'send_response', $response),	], $type;  # this will need to be changed  if (not defined $event) {      $self->return ( );	        return;  }    $POE::Kernel::poe_kernel->post($session, $event, $self);  undef;}sub request {    my $self = shift;  return $self->[TR_REQUEST];}sub response {    my $self = shift;  return $self->[TR_RESPONSE];}sub params {  my $self = shift;  return $self->[TR_PARAMS];}sub stdin {  my $self = shift;  return $self->[TR_STDIN];}sub uri {  my $self = shift;  my $noq  = shift;  my $uri;  if (defined($noq)) {      my ($scheme, $auth, $path, $query, $frag) = uri_split($self->[TR_REQUEST]->uri);      $uri = uri_join($scheme, $auth, $path, undef, $frag);  } else {      $uri = $self->[TR_REQUEST]->uri->as_string;  }  return $uri;}sub method {  my $self = shift;  return $self->[TR_METHOD];}sub return {    my $self = shift;    my $output = shift;    #my ($response, $path,$sender) = @_;    # check for method?    my $response = $self->response();    my $path     = $self->[TR_PATH];    my $params   = $self->params();    my @tmp_p;        my ($file_to_read,$template);    if (defined $path) {	$file_to_read = $html_config->{'html'} ."/".$path;    } else {	$file_to_read = $html_config->{'html'} ."/".$html_config->{'directory_index'};    }    my ($fname,$fdir,$fext) = File::Basename::fileparse($file_to_read,qr{\..*});    $file_to_read .= "/".$html_config->{'directory_index'} if not defined $fext or $fext eq "";    my $code = 200;    # need a logging mechanism?    &debug("LOG : ".$file_to_read);     eval {	$template = HTML::Template->new(filename => $file_to_read,					die_on_bad_params => 0);	if (defined $output) {	    $template->param('output' => $output);	}	push(@tmp_p,$params);	    	$template->param('params' => \@tmp_p);    };    if ($@) {	&debug($@);	$code = 404;	$file_to_read = $html_config->{'html'} ."/".$html_config->{'not_found'};	$template = HTML::Template->new(filename => $file_to_read,					die_on_bad_params => 0);    }    my $ft = File::Type->new();    my $file_type = $ft->mime_type($file_to_read);        #my $file_type = mimetype($file_to_read);     my @types = split(/\//,$file_type);        $file_type = join('/',@types);    $file_type = "text/css" if ($file_to_read =~ /\.css$/);    $file_type = "application/vnd.mozilla.xul+xml" if ($file_to_read =~ /\.xul$/);    $file_type = "text/html" if ($file_to_read =~ /\.html$/);        my $response_content = $template->output;            if (!$params->{'stream'}) {	 	# check file type and put the correct type	$response->code($code);	$response->header("Date", scalar localtime());	$response->header("Content-Type", $file_type);		$response->header("Content-Length", length($response_content));	$response->push_header("Pragma", "no-cache");		$response->push_header("Expires", "-1");		$response->content($response_content);    } else {	$response->header("Date", scalar localtime());	$response->push_header("Content-Type", $file_type);	$response->push_header("Cache-Control", "private");	$response->push_header("Pragma", "no-cache");		$response->push_header("Expires", "-1");	    }    $self->[TR_CLIENT]->($response,$params->{'stream'},$response_content);    return;}sub auth {    my $self = shift;    my $output;    my ($content) = shift;    my $response = $self->[TR_RESPONSE];    my $code = 401;    if ($self->method() eq "GET") {	$response->header("status", "401 Unauthorized");	$response->www_authenticate();	$response->header("WWW-authenticate", "basic realm=\"PunJab\"");    } else {	$code = 500 if not defined $code;    }    $response->code($code);    $response->header("Content-Type", "text/html");    $response->header("Content-Length", length($content));    $response->content($content);    $self->[TR_CLIENT]->($response);    return;}sub error {    my $self     = shift;    my $error    = shift;    my $code     = shift;    my $response = $self->[TR_RESPONSE];    my $template = HTML::Template->new(filename => $html_config->{'html'} ."/error.html");        $template->param('error' => $error);    my $content  = $template->output;    $code = 500 if not defined $code;    $response->code($code);    $response->header("Content-Type", "text/html");    $response->header("Content-Length", length($content));    $response->content($content);    $self->[TR_CLIENT]->($response);    return;  }1;__END__

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色女孩综合影院| 成人国产精品免费观看视频| 日本一道高清亚洲日美韩| 国产精品一色哟哟哟| 91福利小视频| 久久久精品tv| 美女免费视频一区二区| 在线日韩一区二区| 国产视频在线观看一区二区三区| 亚洲综合色区另类av| 不卡电影一区二区三区| 日韩视频中午一区| 午夜精品一区二区三区电影天堂| kk眼镜猥琐国模调教系列一区二区| 91精品国产欧美一区二区| 一区二区高清免费观看影视大全| 久久久国产精华| ...xxx性欧美| 国产精品一区二区在线播放| 这里只有精品99re| 一区二区在线看| 99国产欧美久久久精品| 欧美国产日韩精品免费观看| 美女一区二区久久| 7777精品伊人久久久大香线蕉的| 亚洲精品久久嫩草网站秘色| 成年人国产精品| 国产精品每日更新| 国产**成人网毛片九色| 久久久一区二区三区捆绑**| 理论片日本一区| 欧美一区中文字幕| 免费久久99精品国产| 欧美老年两性高潮| 日韩精品一二三四| 欧美一级高清片| 日本麻豆一区二区三区视频| 欧美日韩午夜精品| 欧美一区二区三区公司| 亚洲精品国产精华液| 色av一区二区| 亚洲一级不卡视频| 91精品国产综合久久精品图片 | 色欧美片视频在线观看| 亚洲欧美一区二区视频| www.性欧美| 一区二区三区精品在线| 欧美三区免费完整视频在线观看| 一区二区三区免费看视频| 欧美日韩在线观看一区二区| 亚洲国产精品精华液网站| 欧美日韩mp4| 久久国产精品区| 久久综合色综合88| 91色视频在线| 亚洲第一电影网| 精品入口麻豆88视频| 国产精品996| 亚洲三级久久久| 欧美老肥妇做.爰bbww视频| 国产**成人网毛片九色 | 韩国精品免费视频| 亚洲国产经典视频| 欧美亚洲国产bt| 精品一区二区三区久久| 国产精品三级av在线播放| 91国在线观看| 国模大尺度一区二区三区| 国产精品狼人久久影院观看方式| 欧美在线影院一区二区| 久久99久久久欧美国产| 中文字幕制服丝袜成人av| 884aa四虎影成人精品一区| 国产美女在线精品| 亚洲一二三专区| 国产亚洲精品久| 欧美调教femdomvk| 国产91精品免费| 视频一区二区欧美| 99国产精品国产精品毛片| 国产在线观看免费一区| 国产精品视频一二三区| 欧美理论片在线| k8久久久一区二区三区| 另类成人小视频在线| 一区二区三区在线观看动漫| 久久婷婷成人综合色| 欧美日韩卡一卡二| 99久久综合精品| 国产一区二区美女诱惑| 亚洲午夜免费视频| 最新国产精品久久精品| 久久久777精品电影网影网| 欧美日韩三级视频| 色呦呦网站一区| 懂色中文一区二区在线播放| 蜜臀av国产精品久久久久| 亚洲精品国产一区二区精华液| 2023国产精品视频| 欧美激情一区二区三区四区| 欧美妇女性影城| 色94色欧美sute亚洲线路一ni| 国内成人免费视频| 蜜桃久久久久久| 日韩av不卡在线观看| 亚洲一二三专区| 亚洲精品欧美专区| 亚洲免费电影在线| 亚洲精品视频免费观看| 1区2区3区精品视频| 国产精品护士白丝一区av| 日本一区二区三区视频视频| 欧美精品一区二区高清在线观看| 91精品国产综合久久久蜜臀粉嫩| 欧美私人免费视频| 欧美网站一区二区| 欧美日韩国产一区二区三区地区| 欧美亚洲禁片免费| 欧美色手机在线观看| 欧美日韩精品综合在线| 8v天堂国产在线一区二区| 制服丝袜在线91| 精品欧美久久久| 国产欧美综合在线观看第十页 | 欧美在线一区二区| 国产69精品久久久久毛片| 国内精品久久久久影院薰衣草 | 精品国产乱码久久久久久1区2区| 91.com视频| 欧美不卡一区二区三区四区| 日韩三级电影网址| 国产午夜亚洲精品不卡| 久久九九国产精品| 中文字幕日本乱码精品影院| 亚洲美女视频一区| 五月综合激情网| 麻豆一区二区99久久久久| 国产成人一区二区精品非洲| 成人性生交大片免费看在线播放| av不卡免费电影| 欧美日韩黄视频| 精品久久五月天| 精品日韩av一区二区| 天堂va蜜桃一区二区三区 | 欧美精品日韩精品| 日韩欧美区一区二| 中文字幕欧美激情| 一区二区三区视频在线观看| 日韩电影在线看| 高清成人免费视频| 欧美亚洲高清一区二区三区不卡| 欧美精品vⅰdeose4hd| 久久精品视频网| 亚洲一区二区三区四区在线| 美女免费视频一区二区| www.欧美亚洲| 欧美大胆一级视频| 亚洲欧美日韩国产中文在线| 日本欧美一区二区| 99久久精品情趣| 日韩欧美在线123| 综合av第一页| 国产一区二区三区日韩| 色综合久久天天综合网| 日韩欧美一区二区免费| 亚洲欧美偷拍另类a∨色屁股| 色综合久久综合网欧美综合网| 不卡视频在线观看| 在线日韩国产精品| 国产视频一区二区三区在线观看| 亚洲精品乱码久久久久久黑人| 久久精品99国产精品| 欧洲精品在线观看| 国产日本欧美一区二区| 日韩精品免费视频人成| 99久久婷婷国产综合精品电影| 欧美成人女星排行榜| 一区二区高清视频在线观看| 懂色av一区二区三区免费看| 欧美一卡2卡三卡4卡5免费| 亚洲精品综合在线| 国产精品影音先锋| 精品福利二区三区| 天堂影院一区二区| 91成人国产精品| 日韩理论片在线| 国产91精品在线观看| 久久九九99视频| 经典三级在线一区| 日韩美女视频一区二区在线观看| 亚洲午夜在线观看视频在线| av福利精品导航| 1000部国产精品成人观看| 国产精品综合一区二区三区| 欧美一区二区国产| 日本亚洲电影天堂| 欧美日韩国产大片| 夜色激情一区二区| 91福利视频在线| 亚洲成人av在线电影|