管理画面へログイン
EOD; return array('msg'=>$title, 'body'=>$html); } if ($vars['do'] == "logout"){ //管理画面からログアウト unset($_SESSION['manageform_password']); header("Location: ./?plugin=manageform"); } if ($vars['do'] == "upload_plugin"){ foreach ($_FILES['upload_file']['tmp_name'] as $no => $tmp_name) { $filename = './plugin/'.$_FILES['upload_file']['name'][$no]; if (strtolower(pathinfo($filename, PATHINFO_EXTENSION)) == "php"){ if (move_uploaded_file($tmp_name, $filename)) { exit; }else{ echo "アップロードに失敗しました。"; } } } } if ($vars['do'] == "design_setting_save"){ file_put_contents("./".SKIN_DIR.$vars['css_filename'],$vars['pukiwiki_css']); } if ($vars['do'] == "save_skin_settings"){ $filedata = file_get_contents("./".SKIN_DIR."pukiwiki.skin.php"); if (isset($filedata)){ if (isset($vars['skin_css_set'])){ $filedata = preg_replace('/^(?!.*\/\/).*/um', ' ', $filedata); } if (isset($vars['SKIN_DEFAULT_DISABLE_TOPICPATH'])){ $filedata = preg_replace('/define\(\s*?\'SKIN_DEFAULT_DISABLE_TOPICPATH\'\s*?,\s*?.*?\s*?\);/u', " define('SKIN_DEFAULT_DISABLE_TOPICPATH', ".$vars['SKIN_DEFAULT_DISABLE_TOPICPATH'].");", $filedata); } if (isset($vars['PKWK_SKIN_SHOW_TOOLBAR'])){ $filedata = preg_replace('/define\(\s*?\'PKWK_SKIN_SHOW_TOOLBAR\'\s*?,\s*?.*?\s*?\);/u', " define('PKWK_SKIN_SHOW_TOOLBAR', ".$vars['PKWK_SKIN_SHOW_TOOLBAR'].");", $filedata); } if (isset($vars['PKWK_SKIN_SHOW_NAVBAR'])){ $filedata = preg_replace('/define\(\s*?\'PKWK_SKIN_SHOW_NAVBAR\'\s*?,\s*?.*?\s*?\);/u', " define('PKWK_SKIN_SHOW_NAVBAR', ".$vars['PKWK_SKIN_SHOW_NAVBAR'].");", $filedata); } file_put_contents("./".SKIN_DIR."pukiwiki.skin.php",$filedata); } } if ($vars['do'] == "save_settings"){ $filedata = file_get_contents("./pukiwiki.ini.php"); if (isset($filedata)){ if (isset($vars['wiki_title'])){ $filedata = preg_replace('/^(?!.*\/\/).*\$page_title(\s*?)=(\s*?)\'(.*?)\';/um', preg_quote("$")."page_title = '".htmlsc($vars['wiki_title'])."';", $filedata); } if (isset($vars['LANG'])){ $filedata = preg_replace('/define\((\s*?)\'LANG\'(\s*?),(\s*?)\'(.*?)\'(\s*?)\);/u', "define('LANG', '".$vars['LANG']."');", $filedata); } if (isset($vars['PKWK_OPTIMISE'])){ $filedata = preg_replace('/define\((\s*?)\'PKWK_OPTIMISE\'(\s*?),(\s*?)(.*?)(\s*?)\);/u', "define('PKWK_OPTIMISE', ".$vars['PKWK_OPTIMISE'].");", $filedata); } if (isset($vars['PKWK_READONLY'])){ $filedata = preg_replace('/define\((\s*?)\'PKWK_READONLY\'(\s*?),(\s*?)(.*?)(\s*?)\);/u', "define('PKWK_READONLY', ".$vars['PKWK_READONLY'].");", $filedata); } if (isset($vars['PKWK_SAFE_MODE'])){ $filedata = preg_replace('/define\((\s*?)\'PKWK_SAFE_MODE\'(\s*?),(\s*?)(.*?)(\s*?)\);/u', "define('PKWK_SAFE_MODE', ".$vars['PKWK_SAFE_MODE'].");", $filedata); } if (isset($vars['PKWK_DISABLE_INLINE_IMAGE_FROM_URI'])){ $filedata = preg_replace('/define\((\s*?)\'PKWK_DISABLE_INLINE_IMAGE_FROM_URI\'(\s*?),(\s*?)(.*?)(\s*?)\);/u', "define('PKWK_DISABLE_INLINE_IMAGE_FROM_URI', ".$vars['PKWK_DISABLE_INLINE_IMAGE_FROM_URI'].");", $filedata); } if (isset($vars['PKWK_QUERY_STRING_MAX'])){ $filedata = preg_replace('/define\((\s*?)\'PKWK_QUERY_STRING_MAX\'(\s*?),(\s*?)(.*?)(\s*?)\);/u', "define('PKWK_QUERY_STRING_MAX', ".$vars['PKWK_QUERY_STRING_MAX'].");", $filedata); } if (isset($vars['PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK'])){ $filedata = preg_replace('/define\((\s*?)\'PKWK_QUERY_PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACKSTRING_MAX\'(\s*?),(\s*?)(.*?)(\s*?)\);/u', "define('PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK', ".$vars['PKWKEXP_DISABLE_MULTILINE_PLUGIN_HACK'].");", $filedata); } if (isset($vars['PKWK_ALLOW_JAVASCRIPT'])){ $filedata = preg_replace('/define\((\s*?)\'PKWK_ALLOW_JAVASCRIPT\'(\s*?),(\s*?)(.*?)(\s*?)\);/u', "define('PKWK_ALLOW_JAVASCRIPT', ".$vars['PKWK_ALLOW_JAVASCRIPT'].");", $filedata); } if (isset($vars['nofollow'])){ $filedata = preg_replace('/\$nofollow(\s*?)=(\s*?)(.*?);/u', preg_quote("$")."nofollow = ".htmlsc($vars['nofollow']).";", $filedata); } if (isset($vars['nowikiname'])){ $filedata = preg_replace('/\$nowikiname(\s*?)=(\s*?)(.*?);/u', preg_quote("$")."nowikiname = ".htmlsc($vars['nowikiname']).";", $filedata); } if (isset($vars['autolink'])){ $filedata = preg_replace('/\$autolink(\s*?)=(\s*?)(.*?);/u', preg_quote("$")."autolink = ".htmlsc($vars['autolink']).";", $filedata); } if (isset($vars['autoalias'])){ $filedata = preg_replace('/\$autoalias(\s*?)=(\s*?)(.*?);/u', preg_quote("$")."autoalias = ".htmlsc($vars['autoalias']).";", $filedata); } if (isset($vars['autoalias_max_words'])){ $filedata = preg_replace('/\$autoalias_max_words(\s*?)=(\s*?)(.*?);/u', preg_quote("$")."autoalias_max_words = ".htmlsc($vars['autoalias_max_words']).";", $filedata); } if (isset($vars['function_freeze'])){ $filedata = preg_replace('/\$function_freeze(\s*?)=(\s*?)(.*?);/u', preg_quote("$")."function_freeze = ".htmlsc($vars['function_freeze']).";", $filedata); } if (isset($vars['notimeupdate'])){ $filedata = preg_replace('/\$notimeupdate(\s*?)=(\s*?)(.*?);/u', preg_quote("$")."notimeupdate = ".htmlsc($vars['notimeupdate']).";", $filedata); } if (isset($vars['line_break'])){ $filedata = preg_replace('/\$line_break(\s*?)=(\s*?)(.*?);/u', preg_quote("$")."line_break = ".htmlsc($vars['line_break']).";", $filedata); } if (isset($vars['modifier'])){ $filedata = preg_replace('/\$modifier(\s*?)=(\s*?)\'(.*?)\';/u', preg_quote("$")."modifier = '".htmlsc($vars['modifier'])."';", $filedata); } if (isset($vars['modifierlink'])){ $filedata = preg_replace('/\$modifierlink(\s*?)=(\s*?)\'(.*?)\';/u', preg_quote("$")."modifierlink = '".htmlsc($vars['modifierlink'])."';", $filedata); } if (isset($vars['defaultpage'])){ $filedata = preg_replace('/\$defaultpage(\s*?)=(\s*?)\'(.*?)\';/u', preg_quote("$")."defaultpage = '".htmlsc($vars['defaultpage'])."';", $filedata); } if (isset($vars['whatsnew'])){ $filedata = preg_replace('/\$whatsnew(\s*?)=(\s*?)\'(.*?)\';/u', preg_quote("$")."whatsnew = '".htmlsc($vars['whatsnew'])."';", $filedata); } if (isset($vars['whatsdeleted'])){ $filedata = preg_replace('/\$whatsdeleted(\s*?)=(\s*?)\'(.*?)\';/u', preg_quote("$")."whatsdeleted = '".htmlsc($vars['whatsdeleted'])."';", $filedata); } if (isset($vars['interwiki'])){ $filedata = preg_replace('/\$interwiki(\s*?)=(\s*?)\'(.*?)\';/u', preg_quote("$")."interwiki = '".htmlsc($vars['interwiki'])."';", $filedata); } if (isset($vars['aliaspage'])){ $filedata = preg_replace('/\$aliaspage(\s*?)=(\s*?)\'(.*?)\';/u', preg_quote("$")."aliaspage = '".htmlsc($vars['aliaspage'])."';", $filedata); } if (isset($vars['menubar'])){ $filedata = preg_replace('/\$menubar(\s*?)=(\s*?)\'(.*?)\';/u', preg_quote("$")."menubar = '".htmlsc($vars['menubar'])."';", $filedata); } if (isset($vars['rightbar_name'])){ $filedata = preg_replace('/\$rightbar_name(\s*?)=(\s*?)\'(.*?)\';/um', preg_quote("$")."rightbar_name = '".htmlsc($vars['rightbar_name'])."';", $filedata); } if ((isset($vars['newadminpass'])) && (isset($vars['check_newadminpass'])) && (isset($vars['adminpass'])) && (isset($vars['adminpass_type']))){ if (($vars['newadminpass'] == $vars['check_newadminpass']) && (pkwk_login($vars["adminpass"]) == true)){ $newadminpass = $vars['newadminpass']; if($vars['adminpass_type'] == 'x-php-md5'){ $newadminpass = md5($newadminpass); }elseif($vars['adminpass_type'] == 'x-php-sha256'){ $newadminpass = hash('sha256', $newadminpass); }elseif($vars['adminpass_type'] == 'x-php-sha1'){ $newadminpass = sha1($newadminpass); }elseif($vars['adminpass_type'] == 'x-php-crypt'){ $newadminpass = crypt($newadminpass); }elseif($vars['adminpass_type'] == 'x-php-sha384'){ $newadminpass = hash('sha384', $newadminpass); }elseif($vars['adminpass_type'] == 'x-php-sha512'){ $newadminpass = hash('sha512', $newadminpass); }elseif($vars['adminpass_type'] == 'MD5'){ $newadminpass = base64_encode(pkwk_hex2bin(md5($newadminpass))); }elseif($vars['adminpass_type'] == 'SMD5'){ $newadminpass = base64_encode(pkwk_hex2bin(md5($newadminpass . substr(base64_decode($newadminpass), 16))) . substr(base64_decode($newadminpass), 16)); }elseif($vars['adminpass_type'] == 'SHA'){ $newadminpass = base64_encode(pkwk_hex2bin(sha1($newadminpass))); }elseif($vars['adminpass_type'] == 'SSHA'){ $newadminpass = base64_encode(pkwk_hex2bin(sha1($newadminpass . substr(base64_decode($newadminpass), 16))) . substr(base64_decode($newadminpass), 16)); }elseif($vars['adminpass_type'] == 'CRYPT'){ $newadminpass = crypt($newadminpass); }elseif($vars['adminpass_type'] == 'SSHA256'){ $newadminpass = base64_encode(hash('sha256', $newadminpass . substr(base64_decode($newadminpass), 32)) . substr(base64_decode($newadminpass), 32)); }elseif($vars['adminpass_type'] == 'SSHA384'){ $newadminpass = base64_encode(hash('sha384', $newadminpass . substr(base64_decode($newadminpass), 48)) . substr(base64_decode($newadminpass), 48)); }elseif($vars['adminpass_type'] == 'SHA256'){ $newadminpass = base64_encode(hash('sha256', $newadminpass)); }elseif($vars['adminpass_type'] == 'SHA384'){ $newadminpass = base64_encode(hash('sha384', $newadminpass)); }elseif($vars['adminpass_type'] == 'SHA512'){ $newadminpass = base64_encode(hash('sha512', $newadminpass)); }elseif($vars['adminpass_type'] == 'SSHA512'){ $newadminpass = base64_encode(hash('sha512', $newadminpass . substr(base64_decode($newadminpass), 64)) . substr(base64_decode($newadminpass), 64)); } $filedata = preg_replace('/^(?!.*\/\/).*\$adminpass(\s*?)=(\s*?)\'(.*?)\';/u', preg_quote("$")."adminpass = '"."{".htmlsc($vars['adminpass_type'])."}".htmlsc($newadminpass)."';", $filedata); } } if (isset($vars['user_auth_username'])){ preg_match('/\$auth_users\s*?=\s*?array\((.+?)\);/su',$filedata,$matches); $users = ""; $count = 0; foreach ($_POST['user_auth_username'] as $value1) { if ($value1 != ""){ $value2 = $_POST['user_auth_password'][$count]; if ($value2 != ""){ $value1 = htmlsc($value1); $value1 = plugin_manageform_phpsecialchars($value1); $value2 = htmlsc($value2); $value2 = plugin_manageform_phpsecialchars($value2); $users .= '\''.$value1.'\'=>\''.$value2.'\','."\n"; } } $count = $count + 1; } $filedata = str_replace($matches[0],'$auth_users = array('."\n".$users.');',$filedata); } if (isset($vars['read_auth'])){ $filedata = preg_replace('/\$read_auth\s*?=\s*?(.*?);/u', preg_quote("$")."read_auth = ".htmlsc($vars['read_auth']).";", $filedata); } if (isset($vars['edit_auth'])){ $filedata = preg_replace('/\$edit_auth\s*?=\s*?(.*?);/u', preg_quote("$")."edit_auth = ".htmlsc($vars['edit_auth']).";", $filedata); } if (isset($vars['search_auth'])){ $filedata = preg_replace('/\$search_auth\s*?=\s*?(.*?);/u', preg_quote("$")."search_auth = ".htmlsc($vars['search_auth']).";", $filedata); } if (isset($vars['read_auth_username'])){ preg_match('/\$read_auth_pages\s*?=\s*?array\((.+?)\);/su',$filedata,$matches); $pages = ""; $count = 0; foreach ($_POST['read_auth_username'] as $value1) { if ($value1 != ""){ $value2 = $_POST['read_auth_pages'][$count]; if ($value2 != ""){ $value1 = htmlsc($value1); $value1 = plugin_manageform_phpsecialchars($value1); $value2 = htmlsc($value2); $value2 = plugin_manageform_phpsecialchars($value2); $pages .= '\''.$value2.'\'=>\''.$value1.'\','."\n"; } } $count = $count + 1; } $filedata = str_replace($matches[0],'$read_auth_pages = array('."\n".$pages.');',$filedata); } if (isset($vars['edit_auth_username'])){ preg_match('/\$edit_auth_pages\s*?=\s*?array\((.+?)\);/su',$filedata,$matches); $pages = ""; $count = 0; foreach ($_POST['edit_auth_username'] as $value1) { if ($value1 != ""){ $value2 = $_POST['edit_auth_pages'][$count]; if ($value2 != ""){ $value1 = htmlsc($value1); $value1 = plugin_manageform_phpsecialchars($value1); $value2 = htmlsc($value2); $value2 = plugin_manageform_phpsecialchars($value2); $pages .= '\''.$value2.'\'=>\''.$value1.'\','."\n"; } } $count = $count + 1; } $filedata = str_replace($matches[0],'$edit_auth_pages = array('."\n".$pages.');',$filedata); } file_put_contents("./pukiwiki.ini.php",$filedata); } exit; } global $page_title,$defaultpage,$menubar,$rightbar_name,$whatsdeleted,$whatsnew,$interwiki,$aliaspage,$modifier,$modifierlink,$nofollow,$nowikiname,$autolink,$autoalias,$autoalias_max_words,$function_freeze,$notimeupdate,$line_break,$read_auth,$read_auth_pages,$edit_auth,$edit_auth_pages,$search_auth,$auth_users,$auth_groups; header("X-Frame-Options: SAMEORIGIN"); //言語ファイル取得 $LANG_SELECT = ""; foreach(glob('./{*.lng.php}',GLOB_BRACE) as $file){ if(is_file($file)){ preg_match('/(.*?).lng.php/u', basename($file), $matches); if (LANG == $matches[1]){ $LANG_SELECT .= ''; }else{ $LANG_SELECT .= ''; } } } $html_general_setting = <<