|
|
| |||||||
| |||||||||
巻き戻し中。
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2012-10-13(土) 改造 [長年日記]
_
mod_limitipcpnn
はいはい、こっちもエラーの画面を書き換えましたよっと。
こっちの場合は、元々戻り値に「HTTP_SERVICE_UNAVAILABLE」って503の値を返してapacheにエラー表示させてたので、
mod_bwshareと同じように、それを乗っ取るコードを突っ込む。
あい、コレでイラッとする画面返りますよーw
【mod_limitipconn-0.24用のパッチはこんな感じ。】
*** mod_limitipconn.c.org Thu Apr 26 07:19:48 2012
--- mod_limitipconn.c Sun Oct 14 02:31:34 2012
*************** static void *limitipconn_create_dir_conf
*** 72,77 ****
--- 72,78 ----
/* Generic function to check a request against a config. */
static int check_limit(request_rec *r, limitipconn_config *cfg)
{
+
/* convert Apache arrays to normal C arrays */
char **nolim = (char **) cfg->no_limit->elts;
char **exlim = (char **) cfg->excl_limit->elts;
*************** static int check_limit(request_rec *r, l
*** 205,211 ****
/* set an environment variable */
apr_table_setn(r->subprocess_env, "LIMITIP", "1");
/* return 503 */
! return HTTP_SERVICE_UNAVAILABLE;
} else {
ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
"mod_limitipconn: OK: Passed all checks");
--- 206,281 ----
/* set an environment variable */
apr_table_setn(r->subprocess_env, "LIMITIP", "1");
/* return 503 */
!
! /* return HTTP_SERVICE_UNAVAILABLE; */
!
! /* add by Uekusa 20121013 to override system 503 message */
! r->status = 503;
! r->status_line = "503 Service Temporarily Unavailable - Too many connections";
! r->content_type = "text/html";
! ap_discard_request_body(r);
! /* ap_send_http_header(r); */
! /* Is this for the case that "HEAD" is the action requested? */
! if (! r->header_only) {
! /* Basic fixed header. */
! ap_rputs(
! "\n"
! "\n"
! "\n"
! "503 Service Temporarily Unavailable - Throttled \n"
! "\n\n"
! "\n"
! "\n"
! "\n"
! "\n"
! "\n"
! "\n"
! "\n"
! "
\n"
! "\n"
! "おまえ初めてかここは?力抜けよ。
"
! "やあ (´・ω・`)
ようこそ、バーボンハウスへ。 \n"
! "
\n"
! "
\n"
! "\n"
! " ∧_∧ やあ
\n"
! " (´・ω・`) / ようこそ、バーボンハウスへ。
\n"
! " /∇y:::::::\ [‾‾] このテキーラはサービスだから、まず飲んで落ち着いて欲しい。
\n"
! " |:::⊃:|:::::::::::::| |──|
\n"
! "‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾| うん、「また」なんだ。済まない。
\n"
! "‾‾‾‾‾‾‾‾‾‾‾‾‾‾‾|‾‾ 仏の顔もって言うしね、謝って許してもらおうとも思っていない。
\n"
! "‾‾‾‾‾‾‾‾‾‾‾‾‾‾/|
\n"
! " ∇ ∇ ∇ ∇ /./| でも、このスレタイを見たとき、君は、きっと言葉では言い表せない
\n"
! " ┴ ┴ ┴ ┴ / / .| 「ときめき」みたいなものを感じてくれたと思う。
\n"
! "‾‾‾‾‾‾‾‾‾‾‾‾|/ | 殺伐とした世の中で、そういう気持ちを忘れないで欲しい
\n"
! "‾‾‾‾‾‾‾‾‾‾‾‾ | そう思って、このスレを立てたんだ。
\n"
! " (⊆⊇) (⊆⊇) (⊆⊇) |
\n"
! " || || .|| | じゃあ、注文を聞こうか。
\n"
! " ./|\ /|\ /|\
\n"
! "
\n"
! "
\n", r);
!
! /* The real message for the user. */
! ap_rputs(
! "limitipconn モジュールがリクエストを拒否しました。
\n", r);
! ap_rputs(
! "同時セッション数が多すぎます。
\n", r);
! ap_rputs(
! "連打して無くても、「キレ」の悪いProxy配下でも起きるよ。
\n", r);
! ap_rputs(
! "Proxyのリソースももったいないんだから、用が済んだらさっさとセッション切ればいいのにね。
\n", r);
! ap_rputs(
! "「*timeout」系のパラメータでも眺めてみれば?\n", r);
!
! /* Basic trailer. */
! ap_rputs(ap_psignature("\n
\n", r), r);
! ap_rputs("
Not Acceptable 受理不可
\n", r);
! ap_rputs("HTTP 503 \n", r);
! ap_rputs("
\n", r);
! ap_rputs("\n", r);
! }
! return DONE;
!
} else {
ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r,
"mod_limitipconn: OK: Passed all checks");
| Tweets by RC31E | |||||||||
| |||||||||
| |||||||||


