OSDN Git Service

BugTrack-plugin/424 : ページ名チェック処理の外部化対応(標準検証分のみ)
authorkgsoft <kgsoft@users.osdn.me>
Fri, 23 Mar 2018 08:50:56 +0000 (08:50 +0000)
committerkgsoft <kgsoft@users.osdn.me>
Fri, 23 Mar 2018 08:50:56 +0000 (08:50 +0000)
lib/Util.pm
lib/Wiki.pm
plugin/core/EditPage.pm
plugin/rename/RenameHandler.pm

index 598bdd9..e7f8f0f 100644 (file)
@@ -168,6 +168,35 @@ sub delete_tag {
 
 #===============================================================================
 # <p>
+# ¥Ú¡¼¥¸Ì¾¤¬»ÈÍѲÄǽ¤«¤É¤¦¤«¥Á¥§¥Ã¥¯¤·¤Þ¤¹¡£<br>
+# »ÈÍѲÄǽ¤Ê¾ì¹ç¤Ï¿¿¡¢¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ïµ¶¤òÊÖ¤·¤Þ¤¹¡£
+# </p>
+# <pre>
+# if(Util::check_pagename($pagename)){
+#   # »ÈÍѲÄǽ¤Ê¥Ú¡¼¥¸Ì¾¤Î¾ì¹ç
+# }else{
+#   # »ÈÍѤǤ­¤Ê¤¤¥Ú¡¼¥¸Ì¾¤Î¾ì¹ç
+# }
+# </pre>
+#===============================================================================
+sub check_pagename {
+       my $pagename = shift;
+
+       #¥Ú¡¼¥¸Ì¾¤ò¥Á¥§¥Ã¥¯
+       if( !defined($pagename)
+               || $pagename eq ""                     # ¶õ
+               || $pagename =~ /[\|\[\]]/             # |[]
+               || $pagename =~ /^:/                   # ¥³¥í¥ó¤Ç»Ï¤Þ¤ë
+               || $pagename =~ /[^:]:[^:]/            # ¥³¥í¥óñÂΤǤλÈÍÑ
+               || $pagename =~ /^\s+$/                # ¶õÇò¤Î¤ß
+       ){
+               return 0;
+       }
+       return 1;
+}
+
+#===============================================================================
+# <p>
 #   ¿ôÃͤ«¤É¤¦¤«¥Á¥§¥Ã¥¯¤·¤Þ¤¹¡£¿ôÃͤξì¹ç¤Ï¿¿¡¢¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ïµ¶¤òÊÖ¤·¤Þ¤¹¡£
 # </p>
 # <pre>
index 8b0fd7b..33862c9 100644 (file)
@@ -1417,7 +1417,7 @@ sub save_page {
        my $sage     = shift;
        
        # ¥Ú¡¼¥¸Ì¾¤ò¥Á¥§¥Ã¥¯
-       if($pagename =~ /([\|\[\]])|^:|([^:]:[^:])/){
+       if(!Util::check_pagename($pagename)){
                die "¥Ú¡¼¥¸Ì¾¤Ë»ÈÍѤǤ­¤Ê¤¤Ê¸»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£";
        }
        # ¤¤¤Ã¤¿¤ó¥Ñ¥é¥á¡¼¥¿¤ò¾å½ñ¤­
index 80e879e..078f633 100644 (file)
@@ -39,7 +39,7 @@ sub do_action {
        if($pagename eq ""){
                return $wiki->error(RC_BAD_REQUEST, "¥Ú¡¼¥¸¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó¡£");
        }
-       if($pagename =~ /([\|\[\]])|^:|([^:]:[^:])/){
+       if(!Util::check_pagename($pagename)){
                return $wiki->error(RC_BAD_REQUEST, "¥Ú¡¼¥¸Ì¾¤Ë»ÈÍѤǤ­¤Ê¤¤Ê¸»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£");
        }
        if(!$wiki->can_modify_page($pagename)){
index 41e7eb9..d514890 100644 (file)
@@ -45,7 +45,7 @@ sub do_rename {
        if($newpagename eq ""){
                return $wiki->error(RC_BAD_REQUEST, "¥Ú¡¼¥¸¤¬»ØÄꤵ¤ì¤Æ¤¤¤Þ¤»¤ó!!");
        }
-       if($newpagename =~ /[\|:\[\]]/){
+       if(!Util::check_pagename($newpagename)){
                return $wiki->error(RC_BAD_REQUEST, "¥Ú¡¼¥¸Ì¾¤Ë»ÈÍѤǤ­¤Ê¤¤Ê¸»ú¤¬´Þ¤Þ¤ì¤Æ¤¤¤Þ¤¹¡£");
        }
        if($wiki->page_exists($newpagename)){