ソフト404等のレスポンスエラーコード対応
@@ -8,6 +8,7 @@ | ||
8 | 8 | use CGI2; |
9 | 9 | use File::Copy; |
10 | 10 | use File::Path; |
11 | +use HTTP::Status; | |
11 | 12 | use Wiki::DefaultStorage; |
12 | 13 | use Wiki::HTMLParser; |
13 | 14 | use vars qw($VERSION $DEBUG); |
@@ -548,7 +549,7 @@ | ||
548 | 549 | my $obj = $self->get_plugin_instance($self->{"handler"}->{$action}); |
549 | 550 | |
550 | 551 | unless(defined($obj)){ |
551 | - return $self->error("不正なアクションです。"); | |
552 | + return $self->error(RC_BAD_REQUEST, "不正なアクションです。"); | |
552 | 553 | } |
553 | 554 | |
554 | 555 | # 管理者用のアクション |
@@ -555,10 +556,10 @@ | ||
555 | 556 | if($self->{"handler_permission"}->{$action}==0){ |
556 | 557 | my $login = $self->get_login_info(); |
557 | 558 | if(!defined($login)){ |
558 | - return $self->error("ログインしていません。"); | |
559 | + return $self->error(RC_FORBIDDEN, "ログインしていません。"); | |
559 | 560 | |
560 | 561 | } elsif($login->{type}!=0){ |
561 | - return $self->error("管理者権限が必要です。"); | |
562 | + return $self->error(RC_FORBIDDEN, "管理者権限が必要です。"); | |
562 | 563 | } |
563 | 564 | return $obj->do_action($self). |
564 | 565 | "<div class=\"comment\"><a href=\"".$self->create_url({action=>"LOGIN"})."\">メニューに戻る</a></div>"; |
@@ -567,7 +568,7 @@ | ||
567 | 568 | } elsif($self->{"handler_permission"}->{$action}==2){ |
568 | 569 | my $login = $self->get_login_info(); |
569 | 570 | if(!defined($login)){ |
570 | - return $self->error("ログインしていません。"); | |
571 | + return $self->error(RC_FORBIDDEN, "ログインしていません。"); | |
571 | 572 | } |
572 | 573 | return $obj->do_action($self). |
573 | 574 | "<div class=\"comment\"><a href=\"".$self->create_url({action=>"LOGIN"})."\">メニューに戻る</a></div>"; |
@@ -678,13 +679,23 @@ | ||
678 | 679 | # my $wiki = shift; |
679 | 680 | # ... |
680 | 681 | # return $wiki->error(エラーメッセージ); |
682 | +# or | |
683 | +# return $wiki->error(エラーコード, エラーメッセージ); | |
681 | 684 | # } |
682 | 685 | # </pre> |
683 | 686 | #============================================================================== |
684 | 687 | sub error { |
685 | 688 | my $self = shift; |
689 | + my $status = shift; | |
686 | 690 | my $message = shift; |
687 | 691 | |
692 | + if(!defined($message)){ | |
693 | + $message = $status; | |
694 | + $status = undef; | |
695 | + } else { | |
696 | + printf "Status: %d\n", $status; | |
697 | + } | |
698 | + | |
688 | 699 | $self->set_title("エラー"); |
689 | 700 | $self->get_CGI->param("action","ERROR"); |
690 | 701 |
@@ -5,6 +5,7 @@ | ||
5 | 5 | ############################################################################### |
6 | 6 | package plugin::admin::AccountHandler; |
7 | 7 | use strict; |
8 | +use HTTP::Status; | |
8 | 9 | #============================================================================== |
9 | 10 | # コンストラクタ |
10 | 11 | #============================================================================== |
@@ -28,7 +29,7 @@ | ||
28 | 29 | return $self->change_pass($wiki); |
29 | 30 | } |
30 | 31 | if(!defined($wiki->get_login_info)) { |
31 | - return $wiki->error("ログインしていません。"); | |
32 | + return $wiki->error(RC_FORBIDDEN, "ログインしていません。"); | |
32 | 33 | } |
33 | 34 | my $id = $wiki->get_login_info()->{id}; |
34 | 35 |
@@ -97,11 +98,11 @@ | ||
97 | 98 | |
98 | 99 | # 新しいパスワードの正当性の確認 |
99 | 100 | if ( length( $pass ) < $min_length ) { |
100 | - return $wiki->error("新しいパスワードが入力されていません。". | |
101 | + return $wiki->error(RC_BAD_REQUEST, "新しいパスワードが入力されていません。". | |
101 | 102 | "少なくとも $min_length 文字以上入力してください。"); |
102 | 103 | } |
103 | 104 | elsif ( $pass ne $pass_confirm ) { |
104 | - return $wiki->error("入力された二つのパスワードが合致しません。"); | |
105 | + return $wiki->error(RC_BAD_REQUEST, "入力された二つのパスワードが合致しません。"); | |
105 | 106 | } |
106 | 107 | |
107 | 108 | my $session = $cgi->get_session($wiki); |
@@ -115,7 +116,7 @@ | ||
115 | 116 | $users->{$id} = &Util::md5($pass,$id)."\t$type"; |
116 | 117 | &Util::save_config_hash($wiki,$wiki->config('userdat_file'),$users); |
117 | 118 | } else { |
118 | - return $wiki->error("現在のパスワードが違います。"); | |
119 | + return $wiki->error(RC_UNAUTHORIZED, "現在のパスワードが違います。"); | |
119 | 120 | } |
120 | 121 | |
121 | 122 | $wiki->redirectURL( $wiki->create_url({ action=>"LOGIN" }) ); |
@@ -5,6 +5,7 @@ | ||
5 | 5 | ############################################################################### |
6 | 6 | package plugin::admin::AdminLogHandler; |
7 | 7 | use strict; |
8 | +use HTTP::Status; | |
8 | 9 | #============================================================================== |
9 | 10 | # コンストラクタ |
10 | 11 | #============================================================================== |
@@ -130,7 +131,7 @@ | ||
130 | 131 | my $file = $self->get_filename_from_target($wiki,$target); |
131 | 132 | |
132 | 133 | if($file eq ""){ |
133 | - return $wiki->error("パラメータが不正です。"); | |
134 | + return $wiki->error(RC_BAD_REQUEST, "パラメータが不正です。"); | |
134 | 135 | } |
135 | 136 | |
136 | 137 | unlink($wiki->config('log_dir')."/$file") or die $file."の削除に失敗しました。"; |
@@ -152,7 +153,7 @@ | ||
152 | 153 | my $file = $self->get_filename_from_target($wiki,$target); |
153 | 154 | |
154 | 155 | if($file eq ""){ |
155 | - return $wiki->error("パラメータが不正です。"); | |
156 | + return $wiki->error(RC_BAD_REQUEST, "パラメータが不正です。"); | |
156 | 157 | } |
157 | 158 | |
158 | 159 | print "Content-Type: text/plain\n"; |
@@ -5,6 +5,7 @@ | ||
5 | 5 | ############################################################################### |
6 | 6 | package plugin::admin::AdminUserHandler; |
7 | 7 | use strict; |
8 | +use HTTP::Status; | |
8 | 9 | #============================================================================== |
9 | 10 | # コンストラクタ |
10 | 11 | #============================================================================== |
@@ -156,15 +157,15 @@ | ||
156 | 157 | |
157 | 158 | if(!defined($users->{$id})){ |
158 | 159 | if($id eq "" || $pass eq "" || $type eq ""){ |
159 | - return $wiki->error("ID、パスワード、ユーザ種別を指定してください。"); | |
160 | + return $wiki->error(RC_BAD_REQUEST, "ID、パスワード、ユーザ種別を指定してください。"); | |
160 | 161 | } |
161 | 162 | } else { |
162 | 163 | if($id eq "" || $type eq ""){ |
163 | - return $wiki->error("ID、ユーザ種別を指定してください。"); | |
164 | + return $wiki->error(RC_BAD_REQUEST, "ID、ユーザ種別を指定してください。"); | |
164 | 165 | } |
165 | 166 | } |
166 | 167 | unless($id =~ /^[a-zA-Z0-9\-_]+$/ && (!defined($pass) || $pass =~ /^[a-zA-Z0-9\-_]+/)){ |
167 | - return $wiki->error("ID、パスワードには半角英数字しか使用できません。"); | |
168 | + return $wiki->error(RC_BAD_REQUEST, "ID、パスワードには半角英数字しか使用できません。"); | |
168 | 169 | } |
169 | 170 | |
170 | 171 | if(defined($users->{$id})){ |
@@ -5,6 +5,7 @@ | ||
5 | 5 | ############################################################################### |
6 | 6 | package plugin::admin::Login; |
7 | 7 | use strict; |
8 | +use HTTP::Status; | |
8 | 9 | #============================================================================== |
9 | 10 | # コンストラクタ |
10 | 11 | #============================================================================== |
@@ -50,7 +51,7 @@ | ||
50 | 51 | $wiki->redirectURL($wiki->create_url({action=>"LOGIN"})); |
51 | 52 | } |
52 | 53 | } else { |
53 | - return $wiki->error("IDもしくはパスワードが違います。"); | |
54 | + return $wiki->error(RC_UNAUTHORIZED, "IDもしくはパスワードが違います。"); | |
54 | 55 | } |
55 | 56 | } |
56 | 57 | } |
@@ -5,6 +5,7 @@ | ||
5 | 5 | ############################################################################### |
6 | 6 | package plugin::admin::UserRegisterHandler; |
7 | 7 | use strict; |
8 | +use HTTP::Status; | |
8 | 9 | #============================================================================== |
9 | 10 | # コンストラクタ |
10 | 11 | #============================================================================== |
@@ -68,10 +69,10 @@ | ||
68 | 69 | return $wiki->error("入力されたIDはすでに使用されています。"); |
69 | 70 | } |
70 | 71 | if($id eq "" || $pass eq ""){ |
71 | - return $wiki->error("ID、パスワードを指定してください。"); | |
72 | + return $wiki->error(RC_BAD_REQUEST, "ID、パスワードを指定してください。"); | |
72 | 73 | } |
73 | 74 | unless($id =~ /^[a-zA-Z0-9\-_]+$/ && $pass =~ /^[a-zA-Z0-9\-_]+/){ |
74 | - return $wiki->error("ID、パスワードには半角英数字しか使用できません。"); | |
75 | + return $wiki->error(RC_BAD_REQUEST, "ID、パスワードには半角英数字しか使用できません。"); | |
75 | 76 | } |
76 | 77 | |
77 | 78 | Util::sync_update_config($wiki,$wiki->config('userdat_file'),sub { |
@@ -5,6 +5,7 @@ | ||
5 | 5 | ############################################################################### |
6 | 6 | package plugin::attach::AdminMIMEHandler; |
7 | 7 | use strict; |
8 | +use HTTP::Status; | |
8 | 9 | #============================================================================== |
9 | 10 | # コンストラクタ |
10 | 11 | #============================================================================== |
@@ -89,7 +90,7 @@ | ||
89 | 90 | #return $self->form($wiki); |
90 | 91 | |
91 | 92 | } else { |
92 | - return $wiki->error("拡張子とMIMEタイプを入力してください。"); | |
93 | + return $wiki->error(RC_BAD_REQUEST, "拡張子とMIMEタイプを入力してください。"); | |
93 | 94 | } |
94 | 95 | } |
95 | 96 |
@@ -5,6 +5,7 @@ | ||
5 | 5 | ############################################################ |
6 | 6 | package plugin::attach::AttachHandler; |
7 | 7 | use strict; |
8 | +use HTTP::Status; | |
8 | 9 | use plugin::attach::Files; |
9 | 10 | #=========================================================== |
10 | 11 | # コンストラクタ |
@@ -32,13 +33,13 @@ | ||
32 | 33 | |
33 | 34 | if($cgi->param("UPLOAD") ne "" || $cgi->param("CONFIRM") ne "" || $cgi->param("DELETE") ne ""){ |
34 | 35 | unless($wiki->can_modify_page($pagename)){ |
35 | - return $wiki->error("編集は禁止されています。"); | |
36 | + return $wiki->error(RC_FORBIDDEN, "編集は禁止されています。"); | |
36 | 37 | } |
37 | 38 | } |
38 | 39 | |
39 | 40 | if($cgi->param("DELETE") ne ""){ |
40 | 41 | unless(&plugin::attach::Files::can_attach_delete($wiki, $pagename)){ |
41 | - return $wiki->error("ファイルの削除は許可されていません。"); | |
42 | + return $wiki->error(RC_FORBIDDEN, "ファイルの削除は許可されていません。"); | |
42 | 43 | } |
43 | 44 | } |
44 | 45 |
@@ -52,17 +53,17 @@ | ||
52 | 53 | &Jcode::convert(\$filename,'euc'); |
53 | 54 | |
54 | 55 | if($filename eq ""){ |
55 | - return $wiki->error("ファイルが指定されていません。"); | |
56 | + return $wiki->error(RC_BAD_REQUEST, "ファイルが指定されていません。"); | |
56 | 57 | } |
57 | 58 | |
58 | 59 | my $hundle = $cgi->upload("file"); |
59 | 60 | unless($hundle){ |
60 | - return $wiki->error("ファイルが読み込めませんでした。"); | |
61 | + return $wiki->error(RC_BAD_REQUEST, "ファイルが読み込めませんでした。"); | |
61 | 62 | } |
62 | 63 | |
63 | 64 | my $uploadfile = $wiki->config('attach_dir')."/".&Util::url_encode($pagename).".".&Util::url_encode($filename); |
64 | 65 | if(-e $uploadfile && !&plugin::attach::Files::can_attach_update($wiki, $pagename)){ |
65 | - return $wiki->error("ファイルの上書きは許可されていません。"); | |
66 | + return $wiki->error(RC_FORBIDDEN, "ファイルの上書きは許可されていません。"); | |
66 | 67 | } |
67 | 68 | |
68 | 69 | open(DATA,">$uploadfile") or die $!; |
@@ -107,7 +108,7 @@ | ||
107 | 108 | } elsif($cgi->param("CONFIRM") ne ""){ |
108 | 109 | my $file = $cgi->param("file"); |
109 | 110 | if($file eq ""){ |
110 | - return $wiki->error("ファイルが指定されていません。"); | |
111 | + return $wiki->error(RC_BAD_REQUEST, "ファイルが指定されていません。"); | |
111 | 112 | } |
112 | 113 | |
113 | 114 | my $buf = ""; |
@@ -127,7 +128,7 @@ | ||
127 | 128 | } elsif($cgi->param("DELETE") ne ""){ |
128 | 129 | my $file = $cgi->param("file"); |
129 | 130 | if($file eq ""){ |
130 | - return $wiki->error("ファイルが指定されていません。"); | |
131 | + return $wiki->error(RC_BAD_REQUEST, "ファイルが指定されていません。"); | |
131 | 132 | } |
132 | 133 | |
133 | 134 | # ログの記録 |
@@ -141,17 +142,17 @@ | ||
141 | 142 | } else { |
142 | 143 | my $file = $cgi->param("file"); |
143 | 144 | if($file eq ""){ |
144 | - return $wiki->error("ファイルが指定されていません。"); | |
145 | + return $wiki->error(RC_BAD_REQUEST, "ファイルが指定されていません。"); | |
145 | 146 | } |
146 | 147 | unless($wiki->page_exists($pagename)){ |
147 | - return $wiki->error("ページが存在しません。"); | |
148 | + return $wiki->error(RC_NOT_FOUND ,"ページが存在しません。"); | |
148 | 149 | } |
149 | 150 | unless($wiki->can_show($pagename)){ |
150 | - return $wiki->error("ページの参照権限がありません。"); | |
151 | + return $wiki->error(RC_FORBIDDEN, "ページの参照権限がありません。"); | |
151 | 152 | } |
152 | 153 | my $filepath = $wiki->config('attach_dir')."/".&Util::url_encode($pagename).".".&Util::url_encode($file); |
153 | 154 | unless(-e $filepath){ |
154 | - return $wiki->error("ファイルがみつかりません。"); | |
155 | + return $wiki->error(RC_NOT_FOUND, "ファイルがみつかりません。"); | |
155 | 156 | } |
156 | 157 | |
157 | 158 | my $contenttype = &get_mime_type($wiki,$file); |
@@ -5,6 +5,7 @@ | ||
5 | 5 | ############################################################ |
6 | 6 | package plugin::bbs::BBS2Handler; |
7 | 7 | use strict; |
8 | +use HTTP::Status; | |
8 | 9 | #=========================================================== |
9 | 10 | # コンストラクタ |
10 | 11 | #=========================================================== |
@@ -43,10 +44,10 @@ | ||
43 | 44 | } |
44 | 45 | |
45 | 46 | if($bbsname eq ""){ |
46 | - return $wiki->error("パラメータが不正です。"); | |
47 | + return $wiki->error(RC_BAD_REQUEST, "パラメータが不正です。"); | |
47 | 48 | } |
48 | 49 | if($message eq ""){ |
49 | - return $wiki->error("本文を入力してください。"); | |
50 | + return $wiki->error(RC_BAD_REQUEST, "本文を入力してください。"); | |
50 | 51 | } |
51 | 52 | |
52 | 53 | # フォーマットプラグインへの対応 |
@@ -5,6 +5,7 @@ | ||
5 | 5 | ############################################################ |
6 | 6 | package plugin::bbs::BBSHandler; |
7 | 7 | use strict; |
8 | +use HTTP::Status; | |
8 | 9 | #=========================================================== |
9 | 10 | # コンストラクタ |
10 | 11 | #=========================================================== |
@@ -43,9 +44,9 @@ | ||
43 | 44 | } |
44 | 45 | |
45 | 46 | if($page eq "" || $count eq ""){ |
46 | - return $wiki->error("パラメータが不正です"); | |
47 | + return $wiki->error(RC_BAD_REQUEST, "パラメータが不正です"); | |
47 | 48 | } elsif($message eq ""){ |
48 | - return $wiki->error("本文を入力してください。"); | |
49 | + return $wiki->error(RC_BAD_REQUEST, "本文を入力してください。"); | |
49 | 50 | } |
50 | 51 | |
51 | 52 | # フォーマットプラグインへの対応 |
@@ -5,6 +5,7 @@ | ||
5 | 5 | ###################################################### |
6 | 6 | package plugin::bugtrack::BugStateHandler; |
7 | 7 | use strict; |
8 | +use HTTP::Status; | |
8 | 9 | #===================================================== |
9 | 10 | # コンストラクタ |
10 | 11 | #===================================================== |
@@ -26,7 +27,7 @@ | ||
26 | 27 | |
27 | 28 | if($wiki->page_exists($source)){ |
28 | 29 | if(!$wiki->can_modify_page($source)){ |
29 | - return $wiki->error("ページの編集は許可されていません。"); | |
30 | + return $wiki->error(RC_FORBIDDEN, "ページの編集は許可されていません。"); | |
30 | 31 | } |
31 | 32 | my $content = $wiki->get_page($source); |
32 | 33 | $content =~ s/(\n\*状態:)\s+(.*)/$1 $state/; |
@@ -5,6 +5,7 @@ | ||
5 | 5 | ################################################################################ |
6 | 6 | package plugin::bugtrack::BugTrackHandler; |
7 | 7 | use strict; |
8 | +use HTTP::Status; | |
8 | 9 | #=============================================================================== |
9 | 10 | # コンストラクタ |
10 | 11 | #=============================================================================== |
@@ -32,11 +33,11 @@ | ||
32 | 33 | my $time = time(); |
33 | 34 | |
34 | 35 | if($name eq ""){ |
35 | - return $wiki->error("名前が入力されていません。"); | |
36 | + return $wiki->error(RC_BAD_REQUEST, "名前が入力されていません。"); | |
36 | 37 | } elsif($subject eq ""){ |
37 | - return $wiki->error("サマリが入力されていません。"); | |
38 | + return $wiki->error(RC_BAD_REQUEST, "サマリが入力されていません。"); | |
38 | 39 | } elsif($content eq ""){ |
39 | - return $wiki->error("バグ内容が入力されていません。"); | |
40 | + return $wiki->error(RC_BAD_REQUEST, "バグ内容が入力されていません。"); | |
40 | 41 | } |
41 | 42 | |
42 | 43 | # post_nameというキーでクッキーをセットする |
@@ -5,6 +5,7 @@ | ||
5 | 5 | ################################################################################ |
6 | 6 | package plugin::calendar::CalendarHandler; |
7 | 7 | use strict; |
8 | +use HTTP::Status; | |
8 | 9 | #=============================================================================== |
9 | 10 | # コンストラクタ |
10 | 11 | #=============================================================================== |
@@ -298,7 +299,7 @@ | ||
298 | 299 | } |
299 | 300 | |
300 | 301 | if ($name eq "" || !Util::check_numeric($year) || !Util::check_numeric($month)) { |
301 | - return $wiki->error("パラメータが不正です。"); | |
302 | + return $wiki->error(RC_BAD_REQUEST, "パラメータが不正です。"); | |
302 | 303 | |
303 | 304 | } else { |
304 | 305 | $wiki->set_title("$name/$year-$month"); |
@@ -5,6 +5,7 @@ | ||
5 | 5 | ############################################################ |
6 | 6 | package plugin::comment::CommentHandler; |
7 | 7 | use strict; |
8 | +use HTTP::Status; | |
8 | 9 | #=========================================================== |
9 | 10 | # コンストラクタ |
10 | 11 | #=========================================================== |
@@ -29,7 +30,7 @@ | ||
29 | 30 | my $option = $cgi->param("option"); |
30 | 31 | |
31 | 32 | if(!$wiki->can_show($page)){ |
32 | - return $wiki->error("ページの参照権限がありません。"); | |
33 | + return $wiki->error(RC_FORBIDDEN, "ページの参照権限がありません。"); | |
33 | 34 | } |
34 | 35 | if($name eq ""){ |
35 | 36 | $name = "名無しさん"; |
@@ -6,6 +6,7 @@ | ||
6 | 6 | ############################################################################### |
7 | 7 | package plugin::core::CreateWikiHandler; |
8 | 8 | use strict; |
9 | +use HTTP::Status; | |
9 | 10 | use plugin::core::WikiList; |
10 | 11 | #============================================================================== |
11 | 12 | # コンストラクタ |
@@ -34,12 +35,12 @@ | ||
34 | 35 | if($config->{create}==1){ |
35 | 36 | if(!defined($login)){ |
36 | 37 | $can_create = 0; |
37 | - #return $farm->error("Wikiの作成は許可されていません。"); | |
38 | + #return $farm->error(RC_FORBIDDEN, "Wikiの作成は許可されていません。"); | |
38 | 39 | } |
39 | 40 | } elsif($config->{create}==2){ |
40 | 41 | if(!defined($login) || $login->{type}!=0){ |
41 | 42 | $can_create = 0; |
42 | - #return $farm->error("Wikiの作成は許可されていません。"); | |
43 | + #return $farm->error(RC_FORBIDDEN, "Wikiの作成は許可されていません。"); | |
43 | 44 | } |
44 | 45 | } |
45 | 46 |
@@ -83,24 +84,24 @@ | ||
83 | 84 | |
84 | 85 | }else{ |
85 | 86 | if($can_create==0){ |
86 | - return $farm->error("Wikiの作成は許可されていません。"); | |
87 | + return $farm->error(RC_FORBIDDEN, "Wikiの作成は許可されていません。"); | |
87 | 88 | } |
88 | 89 | |
89 | 90 | # 入力チェック |
90 | 91 | if(!($child =~ /^[A-Za-z0-9]+$/)){ |
91 | - return $farm->error(&Util::escapeHTML($child)."は不正な名称です。"); | |
92 | + return $farm->error(RC_BAD_REQUEST, &Util::escapeHTML($child)."は不正な名称です。"); | |
92 | 93 | |
93 | 94 | } elsif($admin_id eq ""){ |
94 | - return $farm->error("管理者IDを入力してください。"); | |
95 | + return $farm->error(RC_BAD_REQUEST, "管理者IDを入力してください。"); | |
95 | 96 | |
96 | 97 | } elsif($admin_pass eq ""){ |
97 | - return $farm->error("管理者パスワードを入力してください。"); | |
98 | + return $farm->error(RC_BAD_REQUEST, "管理者パスワードを入力してください。"); | |
98 | 99 | |
99 | 100 | } elsif(!($admin_id =~ /^[A-Za-z0-9]+$/)){ |
100 | - return $farm->error("管理者IDが不正です。"); | |
101 | + return $farm->error(RC_BAD_REQUEST, "管理者IDが不正です。"); | |
101 | 102 | |
102 | 103 | } elsif(!($admin_pass =~ /^[A-Za-z0-9]+$/)){ |
103 | - return $farm->error("管理者パスワードが不正です。"); | |
104 | + return $farm->error(RC_BAD_REQUEST, "管理者パスワードが不正です。"); | |
104 | 105 | |
105 | 106 | # 子Wikiの重複をチェック |
106 | 107 | } elsif($farm->wiki_exists($child)){ |
@@ -6,7 +6,7 @@ | ||
6 | 6 | package plugin::core::Diff; |
7 | 7 | use Algorithm::Diff qw(traverse_sequences); |
8 | 8 | use strict; |
9 | - | |
9 | +use HTTP::Status; | |
10 | 10 | #============================================================================== |
11 | 11 | # コンストラクタ |
12 | 12 | #============================================================================== |
@@ -30,7 +30,7 @@ | ||
30 | 30 | $pagename = $wiki->config("frontpage"); |
31 | 31 | } |
32 | 32 | unless($wiki->can_show($pagename)){ |
33 | - return $wiki->error("参照権限がありません。"); | |
33 | + return $wiki->error(RC_FORBIDDEN, "参照権限がありません。"); | |
34 | 34 | } |
35 | 35 | if($cgi->param('rollback') ne ''){ |
36 | 36 | return $self->rollback($wiki, $pagename, $cgi->param('rollback')); |
@@ -79,7 +79,7 @@ | ||
79 | 79 | my $page = shift; |
80 | 80 | my $gen = shift; |
81 | 81 | unless($wiki->can_modify_page($page)){ |
82 | - return $wiki->error("更新権限がありません。"); | |
82 | + return $wiki->error(RC_FORBIDDEN, "更新権限がありません。"); | |
83 | 83 | } |
84 | 84 | my $source = $wiki->get_backup($page,$gen); |
85 | 85 | $wiki->save_page($page, $source); |
@@ -5,7 +5,9 @@ | ||
5 | 5 | ############################################################################### |
6 | 6 | package plugin::core::EditPage; |
7 | 7 | use strict; |
8 | +use HTTP::Status; | |
8 | 9 | use plugin::core::Diff; |
10 | + | |
9 | 11 | #============================================================================== |
10 | 12 | # コンストラクタ |
11 | 13 | #============================================================================== |
@@ -35,13 +37,13 @@ | ||
35 | 37 | my $login = $wiki->get_login_info(); |
36 | 38 | |
37 | 39 | if($pagename eq ""){ |
38 | - return $wiki->error("ページが指定されていません。"); | |
40 | + return $wiki->error(RC_BAD_REQUEST, "ページが指定されていません。"); | |
39 | 41 | } |
40 | 42 | if($pagename =~ /([\|\[\]])|^:|([^:]:[^:])/){ |
41 | - return $wiki->error("ページ名に使用できない文字が含まれています。"); | |
43 | + return $wiki->error(RC_BAD_REQUEST, "ページ名に使用できない文字が含まれています。"); | |
42 | 44 | } |
43 | 45 | if(!$wiki->can_modify_page($pagename)){ |
44 | - return $wiki->error("ページの編集は許可されていません。"); | |
46 | + return $wiki->error(RC_FORBIDDEN, "ページの編集は許可されていません。"); | |
45 | 47 | } |
46 | 48 | |
47 | 49 | #-------------------------------------------------------------------------- |
@@ -49,7 +51,7 @@ | ||
49 | 51 | if($cgi->param("save") ne ""){ |
50 | 52 | if($wiki->config('page_max') ne '' && $wiki->config('page_max') > 0){ |
51 | 53 | if(length($content) > $wiki->config('page_max')){ |
52 | - return $wiki->error('ページが保存可能な最大サイズを超えています。'); | |
54 | + return $wiki->error(RC_BAD_REQUEST, 'ページが保存可能な最大サイズを超えています。'); | |
53 | 55 | } |
54 | 56 | } |
55 | 57 | if($wiki->page_exists($pagename) && $cgi->param("lastmodified") != $time){ |
@@ -106,7 +108,7 @@ | ||
106 | 108 | } elsif($cgi->param("diff") ne ""){ |
107 | 109 | if($wiki->config('page_max') ne '' && $wiki->config('page_max') > 0){ |
108 | 110 | if(length($content) > $wiki->config('page_max')){ |
109 | - return $wiki->error('ページが保存可能な最大サイズを超えています。'); | |
111 | + return $wiki->error(RC_BAD_REQUEST, 'ページが保存可能な最大サイズを超えています。'); | |
110 | 112 | } |
111 | 113 | } |
112 | 114 | $time = $cgi->param("lastmodified"); |
@@ -134,7 +136,7 @@ | ||
134 | 136 | } elsif($cgi->param("preview") ne ""){ |
135 | 137 | if($wiki->config('page_max') ne '' && $wiki->config('page_max') > 0){ |
136 | 138 | if(length($content) > $wiki->config('page_max')){ |
137 | - return $wiki->error('ページが保存可能な最大サイズを超えています。'); | |
139 | + return $wiki->error(RC_BAD_REQUEST, 'ページが保存可能な最大サイズを超えています。'); | |
138 | 140 | } |
139 | 141 | } |
140 | 142 | $time = $cgi->param("lastmodified"); |
@@ -5,6 +5,7 @@ | ||
5 | 5 | ############################################################ |
6 | 6 | package plugin::core::NewPage; |
7 | 7 | #use strict; |
8 | +use HTTP::Status; | |
8 | 9 | #=========================================================== |
9 | 10 | # コンストラクタ |
10 | 11 | #=========================================================== |
@@ -23,7 +24,7 @@ | ||
23 | 24 | my $cgi = $wiki->get_CGI; |
24 | 25 | |
25 | 26 | if($wiki->config('accept_edit')==0 && !defined($wiki->get_login_info())){ |
26 | - return $wiki->error("ページの作成は許可されていません。"); | |
27 | + return $wiki->error(RC_FORBIDDEN, "ページの作成は許可されていません。"); | |
27 | 28 | } |
28 | 29 | |
29 | 30 | $wiki->set_title("新規作成",1); |
@@ -6,6 +6,7 @@ | ||
6 | 6 | ############################################################################### |
7 | 7 | package plugin::core::RemoveWikiHandler; |
8 | 8 | use strict; |
9 | +use HTTP::Status; | |
9 | 10 | #============================================================================== |
10 | 11 | # コンストラクタ |
11 | 12 | #============================================================================== |
@@ -27,11 +28,11 @@ | ||
27 | 28 | my $config = &Util::load_config_hash($farm,$farm->config('farmconf_file')); |
28 | 29 | if($config->{remove}==1){ |
29 | 30 | if(!defined($login)){ |
30 | - return $farm->error("Wikiの削除は許可されていません。"); | |
31 | + return $farm->error(RC_FORBIDDEN, "Wikiの削除は許可されていません。"); | |
31 | 32 | } |
32 | 33 | } elsif($config->{remove}==2){ |
33 | 34 | if(!defined($login) || $login->{type}!=0){ |
34 | - return $farm->error("Wikiの削除は許可されていません。"); | |
35 | + return $farm->error(RC_FORBIDDEN, "Wikiの削除は許可されていません。"); | |
35 | 36 | } |
36 | 37 | } |
37 | 38 |
@@ -38,7 +39,7 @@ | ||
38 | 39 | # Wikiの存在チェック |
39 | 40 | my $path = $farm->get_CGI()->param("path"); |
40 | 41 | unless($path =~ s|^/|| and $farm->wiki_exists($path)) { |
41 | - return $farm->error("Wikiが存在しません。"); | |
42 | + return $farm->error(RC_NOT_FOUND, "Wikiが存在しません。"); | |
42 | 43 | } |
43 | 44 | |
44 | 45 | if($farm->get_CGI()->param("exec_delete") ne ""){ |
@@ -5,6 +5,7 @@ | ||
5 | 5 | ############################################################################### |
6 | 6 | package plugin::core::ShowPage; |
7 | 7 | use strict; |
8 | +use HTTP::Status; | |
8 | 9 | #============================================================================== |
9 | 10 | # コンストラクタ |
10 | 11 | #============================================================================== |
@@ -37,7 +38,7 @@ | ||
37 | 38 | # 参照権限のチェック |
38 | 39 | if(!$wiki->can_show($pagename)){ |
39 | 40 | $wiki->set_title("参照権限がありません"); |
40 | - return $wiki->error("参照権限がありません。"); | |
41 | + return $wiki->error(RC_FORBIDDEN, "参照権限がありません。"); | |
41 | 42 | } |
42 | 43 | |
43 | 44 | $wiki->set_title($pagename); |
@@ -5,6 +5,7 @@ | ||
5 | 5 | ############################################################################### |
6 | 6 | package plugin::core::Source; |
7 | 7 | use strict; |
8 | +use HTTP::Status; | |
8 | 9 | #============================================================================== |
9 | 10 | # コンストラクタ |
10 | 11 | #============================================================================== |
@@ -27,7 +28,7 @@ | ||
27 | 28 | $pagename = $wiki->config("frontpage"); |
28 | 29 | } |
29 | 30 | unless($wiki->can_show($pagename)){ |
30 | - return $wiki->error("参照権限がありません。"); | |
31 | + return $wiki->error(RC_FORBIDDEN, "参照権限がありません。"); | |
31 | 32 | } |
32 | 33 | my $gen = $cgi->param("generation"); |
33 | 34 | my $source; |
@@ -8,6 +8,7 @@ | ||
8 | 8 | use lib '../../'; |
9 | 9 | use lib '../../lib'; |
10 | 10 | use plugin::pdf::PDFParser; |
11 | +use HTTP::Status; | |
11 | 12 | use URI::Escape; |
12 | 13 | #============================================================================== |
13 | 14 | # コンストラクタ |
@@ -34,11 +35,11 @@ | ||
34 | 35 | |
35 | 36 | # ページが存在するかチェック |
36 | 37 | unless($wiki->page_exists($pagename)){ |
37 | - return $wiki->error("ページがありません。"); | |
38 | + return $wiki->error(RC_NOT_FOUND, "ページがありません。"); | |
38 | 39 | } |
39 | 40 | # 参照権があるかどうかチェック |
40 | 41 | unless($wiki->can_show($pagename)){ |
41 | - return $wiki->error("ページの参照権限がありません。"); | |
42 | + return $wiki->error(RC_FORBIDDEN, "ページの参照権限がありません。"); | |
42 | 43 | } |
43 | 44 | |
44 | 45 | my $filename = $self->{dir}."/".&Util::url_encode($pagename).".pdf"; |
@@ -6,6 +6,7 @@ | ||
6 | 6 | ############################################################################### |
7 | 7 | package plugin::rename::RenameHandler; |
8 | 8 | use strict; |
9 | +use HTTP::Status; | |
9 | 10 | #============================================================================== |
10 | 11 | # コンストラクタ |
11 | 12 | #============================================================================== |
@@ -42,29 +43,29 @@ | ||
42 | 43 | |
43 | 44 | # エラーチェック |
44 | 45 | if($newpagename eq ""){ |
45 | - return $wiki->error("ページが指定されていません!!"); | |
46 | + return $wiki->error(RC_BAD_REQUEST, "ページが指定されていません!!"); | |
46 | 47 | } |
47 | 48 | if($newpagename =~ /[\|:\[\]]/){ |
48 | - return $wiki->error("ページ名に使用できない文字が含まれています。"); | |
49 | + return $wiki->error(RC_BAD_REQUEST, "ページ名に使用できない文字が含まれています。"); | |
49 | 50 | } |
50 | 51 | if($wiki->page_exists($newpagename)){ |
51 | - return $wiki->error("既にリネーム先のページが存在します!!"); | |
52 | + return $wiki->error(RC_BAD_REQUEST, "既にリネーム先のページが存在します!!"); | |
52 | 53 | } |
53 | 54 | if($newpagename eq $pagename){ |
54 | - return $wiki->error("同一のページが指定されています!!"); | |
55 | + return $wiki->error(RC_BAD_REQUEST, "同一のページが指定されています!!"); | |
55 | 56 | } |
56 | 57 | if(!$wiki->can_modify_page($pagename) || !$wiki->can_modify_page($newpagename)){ |
57 | - return $wiki->error("ページの編集は許可されていません。"); | |
58 | + return $wiki->error(RC_FORBIDDEN, "ページの編集は許可されていません。"); | |
58 | 59 | } |
59 | 60 | if($wiki->page_exists($pagename)){ |
60 | 61 | if($cgi->param("lastmodified") < $time){ |
61 | - return $wiki->error("ページは既に別のユーザによって更新されています。"); | |
62 | + return $wiki->error(RC_PRECONDITION_FAILED, "ページは既に別のユーザによって更新されています。"); | |
62 | 63 | } |
63 | 64 | } |
64 | 65 | |
65 | 66 | # FrontPageを移動しようとした場合にはエラー |
66 | 67 | if($pagename eq $wiki->config("frontpage") && $do ne "copy"){ |
67 | - return $wiki->error($wiki->config("frontpage")."を移動することはできません。"); | |
68 | + return $wiki->error(RC_FORBIDDEN, $wiki->config("frontpage")."を移動することはできません。"); | |
68 | 69 | } |
69 | 70 | |
70 | 71 | # コピー処理 |