⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 apache2::hookrun.3

📁 视频监控网络部分的协议ddns,的模块的实现代码,请大家大胆指正.
💻 3
📖 第 1 页 / 共 2 页
字号:
.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05).\".\" Standard preamble:.\" ========================================================================.de Sh \" Subsection heading.br.if t .Sp.ne 5.PP\fB\\$1\fR.PP...de Sp \" Vertical space (when we can't use .PP).if t .sp .5v.if n .sp...de Vb \" Begin verbatim text.ft CW.nf.ne \\$1...de Ve \" End verbatim text.ft R.fi...\" Set up some character translations and predefined strings.  \*(-- will.\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left.\" double quote, and \*(R" will give a right double quote.  \*(C+ will.\" give a nicer C++.  Capital omega is used to do unbreakable dashes and.\" therefore won't be available.  \*(C` and \*(C' expand to `' in nroff,.\" nothing in troff, for use with C<>..tr \(*W-.ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p'.ie n \{\.    ds -- \(*W-.    ds PI pi.    if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch.    if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\"  diablo 12 pitch.    ds L" "".    ds R" "".    ds C` "".    ds C' ""'br\}.el\{\.    ds -- \|\(em\|.    ds PI \(*p.    ds L" ``.    ds R" '''br\}.\".\" Escape single quotes in literal strings from groff's Unicode transform..ie \n(.g .ds Aq \(aq.el       .ds Aq '.\".\" If the F register is turned on, we'll generate index entries on stderr for.\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index.\" entries marked with X<> in POD.  Of course, you'll have to process the.\" output yourself in some meaningful fashion..ie \nF \{\.    de IX.    tm Index:\\$1\t\\n%\t"\\$2"...    nr % 0.    rr F.\}.el \{\.    de IX...\}.\".\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2)..\" Fear.  Run.  Save yourself.  No user-serviceable parts..    \" fudge factors for nroff and troff.if n \{\.    ds #H 0.    ds #V .8m.    ds #F .3m.    ds #[ \f1.    ds #] \fP.\}.if t \{\.    ds #H ((1u-(\\\\n(.fu%2u))*.13m).    ds #V .6m.    ds #F 0.    ds #[ \&.    ds #] \&.\}.    \" simple accents for nroff and troff.if n \{\.    ds ' \&.    ds ` \&.    ds ^ \&.    ds , \&.    ds ~ ~.    ds /.\}.if t \{\.    ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u".    ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u'.    ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u'.    ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u'.    ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u'.    ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u'.\}.    \" troff and (daisy-wheel) nroff accents.ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V'.ds 8 \h'\*(#H'\(*b\h'-\*(#H'.ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#].ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H'.ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u'.ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#].ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#].ds ae a\h'-(\w'a'u*4/10)'e.ds Ae A\h'-(\w'A'u*4/10)'E.    \" corrections for vroff.if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u'.if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u'.    \" for low resolution devices (crt and lpr).if \n(.H>23 .if \n(.V>19 \\{\.    ds : e.    ds 8 ss.    ds o a.    ds d- d\h'-1'\(ga.    ds D- D\h'-1'\(hy.    ds th \o'bp'.    ds Th \o'LP'.    ds ae ae.    ds Ae AE.\}.rm #[ #] #H #V #F C.\" ========================================================================.\".IX Title "mod_perl-2.0.2::docs::api::Apache2::HookRun 3".TH mod_perl-2.0.2::docs::api::Apache2::HookRun 3 "2005-10-21" "perl v5.10.0" "User Contributed Perl Documentation".\" For nroff, turn off justification.  Always turn off hyphenation; it makes.\" way too many mistakes in technical documents..if n .ad l.nh.SH "NAME"Apache2::HookRun \- Perl API for Invoking Apache HTTP phases.SH "Synopsis".IX Header "Synopsis".Vb 2\&  # httpd.conf\&  PerlProcessConnectionHandler MyApache2::PseudoHTTP::handler\&\&  #file:MyApache2/PseudoHTTP.pm\&  #\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\-\&  package MyApache2::PseudoHTTP;\&  \&  use Apache2::HookRun ();\&  use Apache2::RequestUtil ();\&  use Apache2::RequestRec ();\&  \&  use Apache2::Const \-compile => qw(OK DECLINED DONE SERVER_ERROR);\&  \&  # implement the HTTP protocol cycle in protocol handler\&  sub handler {\&      my $c = shift;\&      my $r = Apache2::RequestRec\->new($c);\&  \&      # register any custom callbacks here, e.g.:\&      # $r\->push_handlers(PerlAccessHandler => \e&my_access);\&  \&      $rc = $r\->run_post_read_request();\&      return $rc unless $rc == Apache2::Const::OK or $rc == Apache2::Const::DECLINED;\&  \&      $rc = $r\->run_translate_name;\&      return $rc unless $rc == Apache2::Const::OK or $rc == Apache2::Const::DECLINED;\&  \&      $rc = $r\->run_map_to_storage;\&      return $rc unless $rc == Apache2::Const::OK or $rc == Apache2::Const::DECLINED;\&  \&      # this must be run all a big havoc will happen in the following\&      # phases\&      $r\->location_merge($path);\&  \&      $rc = $r\->run_header_parser;\&      return $rc unless $rc == Apache2::Const::OK or $rc == Apache2::Const::DECLINED;\&  \&      my $args = $r\->args || \*(Aq\*(Aq;\&      if ($args eq \*(Aqdie\*(Aq) {\&          $r\->die(Apache2::Const::SERVER_ERROR);\&          return Apache2::Const::DONE;\&      }\&  \&      $rc = $r\->run_access_checker;\&      return $rc unless $rc == Apache2::Const::OK or $rc == Apache2::Const::DECLINED;\&  \&      $rc = $r\->run_auth_checker;\&      return $rc unless $rc == Apache2::Const::OK or $rc == Apache2::Const::DECLINED;\&  \&      $rc = $r\->run_check_user_id;\&      return $rc unless $rc == Apache2::Const::OK or $rc == Apache2::Const::DECLINED;\&  \&      $rc = $r\->run_type_checker;\&      return $rc unless $rc == Apache2::Const::OK or $rc == Apache2::Const::DECLINED;\&  \&      $rc = $r\->run_fixups;\&      return $rc unless $rc == Apache2::Const::OK or $rc == Apache2::Const::DECLINED;\&  \&      # $r\->run_handler is called internally by $r\->invoke_handler,\&      # invoke_handler sets all kind of filters, and does a few other\&      # things but it\*(Aqs possible to call $r\->run_handler, bypassing\&      # invoke_handler\&      $rc = $r\->invoke_handler;\&      return $rc unless $rc == Apache2::Const::OK or $rc == Apache2::Const::DECLINED;\&  \&      $rc = $r\->run_log_transaction;\&      return $rc unless $rc == Apache2::Const::OK or $rc == Apache2::Const::DECLINED;\&  \&      return Apache2::Const::OK;\&  }.Ve.SH "Description".IX Header "Description"\&\f(CW\*(C`Apache2::HookRun\*(C'\fR exposes parts of the Apache \s-1HTTP\s0 protocolimplementation, responsible for invoking callbacks for each \s-1HTTP\s0Request cyclephase..PPArmed with that \s-1API\s0, you could run some of the http protocol frameworkparts when implementing your own protocols. For example see how \s-1HTTP\s0\&\s-1AAA\s0 (access, auth and authz) hooks are called from a protocol handler,implementing a commandserver, which hasnothing to do with \s-1HTTP\s0. Also you can see in Synopsis howto re-implement Apache \s-1HTTP\s0 cycle in the protocol handler..PPUsing this \s-1API\s0 you could probably also change the normal Apachebehavior (e.g. invoking some hooks earlier than normal, or later), butbefore doing that you will probably need to spend some time readingthrough the Apache C code. That's why some of the methods in thisdocument, point you to the specific functions in the Apache sourcecode. If you just try to use the methods from this module, withoutunderstanding them well, don't be surprised if you will get some nastycrashes, from which mod_perl can't protect you..SH "API".IX Header "API"\&\f(CW\*(C`Apache2::HookRun\*(C'\fR provides the following functions and/or methods:.ie n .Sh """die""".el .Sh "\f(CWdie\fP".IX Subsection "die"Kill the current request.PP.Vb 1\&  $r\->die($type);.Ve.ie n .IP "obj: $r\fR ( \f(CW""Apache2::RequestRec object"" )" 4.el .IP "obj: \f(CW$r\fR ( \f(CWApache2::RequestRec object\fR )" 4.IX Item "obj: $r ( Apache2::RequestRec object )"The current request.ie n .IP "arg1: $type ( integer )" 4.el .IP "arg1: \f(CW$type\fR ( integer )" 4.IX Item "arg1: $type ( integer )"Why the request is dieing. Expects an Apache status constant..IP "ret: no return value" 4.IX Item "ret: no return value".PD 0.IP "since: 2.0.00" 4.IX Item "since: 2.0.00".PD.PPThis method doesn't really abort the request, it just handles thesending of the error response, logging the error and such.  You wantto take a look at the internals of \f(CW\*(C`ap_die()\*(C'\fR in\&\fIhttpd\-2.0/modules/http/http_request.c\fR for more details..ie n .Sh """invoke_handler""".el .Sh "\f(CWinvoke_handler\fP".IX Subsection "invoke_handler"Run theresponse phase..PP.Vb 1\&  $rc = $r\->invoke_handler();.Ve.ie n .IP "obj: $r\fR ( \f(CW""Apache2::RequestRec object"" )" 4.el .IP "obj: \f(CW$r\fR ( \f(CWApache2::RequestRec object\fR )" 4.IX Item "obj: $r ( Apache2::RequestRec object )"The current request.ie n .IP "ret: $rc ( integer )" 4.el .IP "ret: \f(CW$rc\fR ( integer )" 4.IX Item "ret: $rc ( integer )"The status of the current phase run: \f(CW\*(C`Apache2::Const::OK\*(C'\fR,\&\f(CW\*(C`Apache2::HTTP_...\*(C'\fR.IP "since: 2.0.00" 4.IX Item "since: 2.0.00".PP\&\f(CW\*(C`invoke_handler()\*(C'\fR allows modules to insert filters, sets a defaulthandler if none is set, runs \f(CW\*(C`run_handler()\*(C'\fR andhandles some errors..PPFor more details see \f(CW\*(C`ap_invoke_handler()\*(C'\fR in\&\fIhttpd\-2.0/server/config.c\fR.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -