|
| ||||||||
|
巻き戻し中。
|
|
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("\n", r); ! } ! return DONE; ! } else { ap_log_rerror(APLOG_MARK, APLOG_DEBUG, 0, r, "mod_limitipconn: OK: Passed all checks");
\n", r); ! ap_rputs("HTTP 503 \n", r); ! ap_rputs("
Tweets by RC31E | |||||||||
| |||||||||
| |||||||||
|