/**
 * リダイレクトプラグイン
 *
 * @copyright   Copyright &copy; 2006,2008, Katsumi Saito <*****@*****.**>
 * @version     $Id: redirect.inc.php,v 0.3 2008/01/06 05:35:00 upk Exp $
 * @license     http://opensource.org/licenses/gpl-license.php GNU Public License
 *
 */
function plugin_redirect_action()
{
    global $vars;
    if (empty($vars['u'])) {
        return '';
    }
    // 自サイトからのリダイレクトのみ飛ばす
    if (path_check($_SERVER['HTTP_REFERER'], get_script_absuri())) {
        // 以下の方法は、NG です。
        // <a href="javascript:location.replace('URL');">Caption</a>
        //header('Location: ' . $vars['u'] );
        //die();
        $time = 0;
        echo <<<EOD
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
  <head>
  <meta http-equiv="Refresh" content="{$time};URL={$vars['u']}" />
  <title>Auto Redirect</title>
  </head>
  <body>
  <div><a href="{$vars['u']}">Please click here.</a></div>
  </body>
</html>
EOD;
        die;
    }
    return '';
}
Example #2
0
function plugin_redirect_action()
{
    global $vars;
    if (empty($vars['u'])) {
        return '';
    }
    // 自サイトからのリダイレクトのみ飛ばす
    if (path_check($_SERVER['HTTP_REFERER'], get_script_absuri())) {
        Utility::redirect($vars['u']);
    }
    return '';
}
function tb_send($page, $links)
{
    global $trackback, $page_title;
    if (!$trackback) {
        return;
    }
    // No link, END
    if (!is_array($links) || empty($links)) {
        return;
    }
    $script = get_script_uri();
    // PROHIBITION OF INVALID TRANSMISSION
    $url = parse_url($script);
    $host = empty($url['host']) ? $script : $url['host'];
    if (is_ipaddr($host)) {
        if (is_localIP($host)) {
            return;
        }
    } else {
        if (is_ReservedTLD($host)) {
            return;
        }
    }
    if (is_ignore_page($page)) {
        return;
    }
    // Disable 'max execution time' (php.ini: max_execution_time)
    if (ini_get('safe_mode') == '0') {
        set_time_limit(0);
    }
    $r_page = rawurlencode($page);
    $excerpt = strip_htmltag(convert_html(get_source($page)));
    // Sender's information
    $putdata = array('title' => $page, 'url' => $script . '?' . $r_page, 'excerpt' => mb_strimwidth(preg_replace("/[\r\n]/", ' ', $excerpt), 0, 255, '...'), 'blog_name' => $page_title . ' (' . PLUGIN_TRACKBACK_VERSION . ')', 'charset' => SOURCE_ENCODING);
    foreach ($links as $link) {
        if (path_check($script, $link)) {
            continue;
        }
        // Same Site
        $tb_id = tb_get_url($link);
        // Get Trackback ID from the URL
        if (empty($tb_id)) {
            continue;
        }
        // Trackback is not supported
        $result = http_request($tb_id, 'POST', '', $putdata, 2, CONTENT_CHARSET);
        // FIXME: Create warning notification space at pukiwiki.skin!
    }
}
Example #4
0
function plugin_table_edit2_action()
{
    global $vars, $post, $auth_users, $_string;
    $table_num = $vars['table_num'];
    $page = isset($vars['refer']) ? $vars['refer'] : null;
    if (empty($page)) {
        Utility::dieMessage('Page name is null.');
    }
    $wiki = Factory::Wiki($page);
    if (is_freeze($page)) {
        check_editable($page, true, true);
    }
    if ($wiki->isFreezed()) {
        $wiki->checkEditable(true);
    }
    //	Cancel
    $anchr_jump = PLUGIN_TABLE_EDIT2_ANCHR_JUMP ? '#TableEdit2TableNumber' . $table_num : '';
    if (isset($vars['cancel'])) {
        Utility::redirect($wiki->uri() . $anchr_jump);
        exit;
    }
    $line_count = 1;
    $table_sub_num = 1;
    //td
    $table_sub_num_chk = 1;
    //td
    $setting = 0;
    $import = $export = $csv_cancel = 0;
    $edit_mod = isset($vars['edit_mod']) ? $vars['edit_mod'] : '';
    $td_edit = $edit_mod == 't_edit_td' || $edit_mod == 'td' ? 1 : 0;
    $tr_edit = $edit_mod == 't_edit' || $edit_mod == 'tr' ? 1 : 0;
    $t_edit = $edit_mod == 't_edit_td' || $edit_mod == 't_edit' ? 1 : 0;
    $edit_show = $edit_mod == 'tdshow' || $edit_mod == 'show' ? 1 : 0;
    // Petit SPAM Check (Client(Browser)-Server Ticket Check)
    $spam = FALSE;
    if (!function_exists('honeypot_write') && $t_edit) {
        $spam = plugin_table_edit2_spam($post['encode_hint']);
    }
    if ($spam) {
        return plugin_table_edit2_honeypot();
    }
    if (Auth::check_role('readonly')) {
        die_message('PKWK_READONLY prohibits editing');
    }
    if (PLUGIN_TABLE_EDIT2_HTTP_REFERER) {
        if (!function_exists('path_check')) {
            if (!preg_match('/^(' . $script_uri . ')/', $_SERVER['HTTP_REFERER'])) {
                return;
            }
        } else {
            if (!path_check($script_uri, $_SERVER['HTTP_REFERER'])) {
                return;
            }
        }
    }
    if ($edit_mod === 'setting') {
        $set = new TableEdit2SettingWrite($vars);
        if (!$set->sc) {
            return $set->error;
        }
        $setting = 1;
        unset($vars['table_mod']);
    }
    $notimestamp = FALSE;
    if (isset($vars['csv_mod']) || isset($vars['ex_cancel']) || isset($vars['im_cancel']) || isset($vars['set_csv']) || isset($vars['csv_back'])) {
        $csv = new TableEdit2CsvAction();
        if (isset($vars['csv_mod']) && $vars['csv_mod'] === 'import') {
            $csv->csv_import($vars);
            $import = 1;
        } else {
            if (isset($vars['csv_mod']) && $vars['csv_mod'] === 'export') {
                $export = 1;
                $csv_export_data = array();
            } else {
                if (isset($vars['ex_cancel']) || isset($vars['im_cancel'])) {
                    $csv_cancel = 1;
                    $notimestamp = TRUE;
                } else {
                    if (isset($vars['set_csv'])) {
                        $set_csv = 1;
                        $notimestamp = TRUE;
                    } else {
                        if (isset($vars['csv_back'])) {
                            if (PLUGIN_TABLE_EDIT2_CSV_UNLINK) {
                                $con = new TableEdit2CsvConversion($page, array('name' => $vars['file_name']));
                                unlink($con->filename);
                                unlink($con->logname);
                            }
                            Utility::redirect($wiki->uri());
                            exit;
                        } else {
                            return array('msg' => 'csv error', 'body' => 'csv option error');
                            // . join("\n", $csv_data)
                        }
                    }
                }
            }
        }
    }
    if (isset($vars['table_mod'])) {
        $chg = new TableEdit2TableMod($vars['table_mod']);
    }
    if ($td_edit || $tr_edit) {
        $edit = new TableEdit2Edit($vars);
    }
    if ($edit_show) {
        $show = new TableEdit2Show($vars, $page);
    }
    $args = get_source($page);
    static $count = 0;
    $source_s = '';
    $body = '';
    $row_title = 0;
    $td_title_count = 0;
    if ($td_edit || $tr_edit || $setting || $import) {
        $notimestamp = isset($vars['notimestamp']) ? TRUE : FALSE;
    }
    foreach ($wiki->get() as $args_key => $args_line) {
        if (preg_match('/^#([^\\(\\{]+)(?:\\(([^\\r]*)\\))?(\\{*)/', $args_line, $matches) !== FALSE) {
            if (isset($matches[1]) && ($matches[1] == 'table_edit2' || $matches[1] == "table_edit2\n")) {
                $table_find = 1;
                $count++;
                if ($line_count === 1 && $count == $table_num) {
                    if (preg_match('/auth_check[=_](on|off)/i', $matches[2], $auth_check)) {
                        if ($auth_check[1] == 'on') {
                            if (!auth::auth_pw($auth_users)) {
                                $user = TableEdit2Auth::basic_auth();
                                if (empty($user)) {
                                    return;
                                }
                            }
                        }
                    } else {
                        check_editable($page, true, true);
                    }
                    if ($setting) {
                        $args_line = $set->plugin_set_opt($matches[3]);
                    }
                    if ($import) {
                        $args_line = $csv->import_data_set($matches[2], $matches[3]);
                    }
                    if (isset($vars['ex_cancel'])) {
                        $args_line = $csv->cancel($matches[2], $matches[3], 'export');
                    }
                    if (isset($vars['im_cancel'])) {
                        $args_line = $csv->cancel($matches[2], $matches[3], 'import');
                    }
                    if (isset($set_csv)) {
                        $args_line = $csv->set_csv_opt($matches[2], $matches[3], $vars['set_csv']);
                    }
                    if ($edit_mod == 'tdshow') {
                        //tdshow - td_title - 06.11.11
                        if (preg_match('/title_c=(\\d+)/i', $matches[2], $match_title)) {
                            $td_title_count = $match_title[1] - 1;
                        }
                    }
                    if ($edit_mod == 'show') {
                        //show				header
                        if (preg_match('/title_r=(\\d+)/i', $matches[2], $m_row_title)) {
                            $row_title = $m_row_title[1];
                        }
                    }
                    if ($edit_show) {
                        $show->text_type($matches[2]);
                    }
                    if (isset($vars['table_mod'])) {
                        //table_mod
                        $notimestamp = TRUE;
                        $args_line = $chg->table_mod_chg($matches, $args_line);
                    }
                }
                $end_line = strlen($matches[3]);
            }
        }
        if (isset($end_line) && preg_match('/^\\}{' . $end_line . '}/', $args_line) || !isset($end_line)) {
            $table_find = 0;
        }
        if ($table_find && $table_num == $count && !isset($vars['table_mod']) && !$setting && !$import) {
            $table_sub_num_count_chk = 0;
            $table_f_chose = preg_match('/^\\|(.+)\\|([hHfFcC]?)$/', $args_line, $match_line) ? 1 : 0;
            if ($args_line[0] == ',' && $args_line != ',') {
                $table_f_chose = 2;
            }
            if ($td_edit || $tr_edit) {
                $edit->chose = $table_f_chose;
            }
            if ($table_f_chose) {
                if ($table_f_chose === 1) {
                    $match_t = explode("|", $match_line[1]);
                } elseif ($table_f_chose === 2) {
                    $match_t = csv_explode(',', substr(str_replace("\n", '', $args_line), 1));
                    $match_line = array(1 => join(',', $match_t), 2 => '');
                }
                if ($export) {
                    $csv_export_data[] = $match_line[1];
                }
                if (isset($vars['table_sub_num']) && $table_sub_num === $vars['table_sub_num'] && $table_sub_num_chk) {
                    //td 06.09.18
                    $show->chk_table_sub_first_line = $line_count;
                    $table_sub_num_chk = 0;
                }
                if (isset($vars['line_count']) && $vars['line_count'] === $line_count || strtolower($match_line[2]) === 'h' || $edit_mod == 'tdshow' || $td_edit || $row_title) {
                    //					$match_t = explode("|", $match_line[1]);
                    if ($edit_mod == 'tdshow') {
                        //tdshow - td_title - 06.11.11
                        $show->td_title[$line_count] = $match_t[$td_title_count];
                    }
                }
                if ($edit_mod == 'show') {
                    //show				header
                    if ($match_line[2] == 'h' && !$row_title) {
                        $show->table_header($match_t);
                    }
                    if ($line_count == $row_title) {
                        $show->table_header($match_t);
                    }
                }
                if ($vars['line_count'] == $line_count || $table_sub_num == $vars['table_sub_num']) {
                    // textarea 06.11.12
                    if ($edit_show) {
                        if ($show->t_type == 'textarea') {
                            $show->text_type_textarea(count($match_t));
                        }
                    }
                }
                if ($td_edit && $table_sub_num_chk == 0 && $table_sub_num == $vars['table_sub_num']) {
                    $source_s .= $edit->td_edit($match_t) . $match_line[2] . "\n";
                    $table_sub_num_count_chk = 1;
                } else {
                    if (isset($vars['line_count']) && $vars['line_count'] == $line_count && !$td_edit) {
                        if ($tr_edit) {
                            //t_edit tr_add
                            if (isset($vars['add_show']) && $vars['add_show'] === 1) {
                                $source_s .= $args_line;
                                if ($edit->chose !== 2) {
                                    $edit->chk_csv_source($args, $args_key);
                                }
                            }
                            $source_s .= $edit->tr_edit($args_line, $match_t, $match_line[2]);
                        } else {
                            if ($edit_show) {
                                //show or tdshow
                                $show->line_count = $line_count;
                                $body = $show->show_mod($match_t);
                            }
                        }
                    } else {
                        if ($edit_mod == 'tdshow') {
                            //tdshow and edit_td
                            $show->cells[$line_count] = $match_t;
                        }
                        $table_sub_num_count_chk = 1;
                        //td06.09.18
                        $source_s .= $args_line;
                    }
                }
                $line_count++;
            } else {
                if ($table_sub_num_count_chk == 1 && substr($args_line, 0, 2) != '//') {
                    //td
                    $table_sub_num++;
                    $table_sub_num_count_chk = 0;
                }
                $source_s .= $args_line;
            }
        } else {
            $source_s .= $args_line . "\n";
        }
    }
    if ($export) {
        return $csv->csv_export($vars, $csv_export_data);
    }
    $collision = 0;
    if ($tr_edit || $td_edit) {
        if (Factory::Wiki($vars['refer'])->digest() !== $vars['digest']) {
            global $_string, $_title;
            $title = $_title['collided'];
            $body = $_string['msg_collided_auto'] . make_pagelink($vars['refer']);
            $collision = 1;
        }
    }
    if ($tr_edit || $td_edit || isset($vars['table_mod']) || $setting || $import || $csv_cancel || isset($set_csv)) {
        $source = explode("\n", $source_s);
        array_pop($source);
        // 末尾に余計な改行が入るので削除
        //		var_dump($source);
        //		die;
        $wiki->set(explode("\n", $source_s), $notimestamp);
    }
    $get['page'] = $post['page'] = $vars['page'] = $page;
    if ($collision) {
        return array('msg' => $title, 'body' => $body);
    }
    if ($edit_show) {
        return array('msg' => $show->title, 'body' => $body);
    }
    //header('Location: ' . $script_uri . '?' . rawurlencode($page) . $anchr_jump);
    Utility::redirect($wiki->uri() . $anchr_jump);
    exit;
}
function exec_ogp_module()
{
    global $db, $view;
    $blacklist = array('/install.php', '/modules/gamemanager/rsync_sites_local.list');
    $curren_blacklist = array();
    $blacklisted_files = $db->resultQuery('SELECT file_path FROM `OGP_DB_PREFIXupdate_blacklist`;');
    if ($blacklisted_files !== FALSE) {
        $curren_blacklist = array();
        foreach ($blacklisted_files as $blacklisted_file) {
            $curren_blacklist[] = $blacklisted_file['file_path'];
        }
    }
    if (isset($_POST['save_to_blacklist'])) {
        foreach ($_POST['blacklist'] as $file) {
            $db->query("INSERT INTO `OGP_DB_PREFIXupdate_blacklist` SET file_path='{$file}';");
        }
        foreach ($_POST['folder_files'] as $file) {
            if (in_array($file, $curren_blacklist)) {
                if (!in_array($file, $_POST['blacklist'])) {
                    $db->query("DELETE FROM `OGP_DB_PREFIXupdate_blacklist` WHERE file_path='{$file}';");
                }
            }
        }
        $blacklisted_files = $db->resultQuery('SELECT file_path FROM `OGP_DB_PREFIXupdate_blacklist`;');
        if ($blacklisted_files !== FALSE) {
            $curren_blacklist = array();
            foreach ($blacklisted_files as $blacklisted_file) {
                $curren_blacklist[] = $blacklisted_file['file_path'];
            }
        }
    }
    $curren_blacklist = array_merge($curren_blacklist, $blacklist);
    path_check();
    echo "<h2>";
    echo get_lang('blacklist_files');
    echo "</h2>";
    $baseDir = str_replace("modules" . DIRECTORY_SEPARATOR . "update", "", dirname(__FILE__));
    $path = clean_path($baseDir . "/" . @$_SESSION['fm_cwd']);
    echo "<table class='center' style='width:100%;' ><tr>\n" . "<td colspan='3' ><h3>" . get_lang_f('currently_viewing', $path) . "</h3></td>" . "</tr></table>";
    if (!file_exists($path)) {
        $path = clean_path($baseDir);
        if (file_exists($path)) {
            print_failure(get_lang_f("dir_not_found", $path));
        } else {
            $_SESSION['fm_cwd'] = str_replace("\\", "", dirname($_SESSION['fm_cwd']));
            $view->refresh('?m=update&amp;p=blacklist', 0);
        }
    } else {
        $dirlist = scandir($path);
        if (!is_array($dirlist)) {
            if ($dirlist === -1) {
                if ($path != $baseDir . "/") {
                    $view->refresh('?m=update&amp;p=blacklist', 0);
                } else {
                    print_failure('The path is too long or there is a file with a very long name inside of your game server\'s home folder.');
                }
            } else {
                if (file_exists($path)) {
                    if (strpos($path, '/') !== FALSE) {
                        $ePath = explode('/', $path);
                        $filename = end($ePath);
                    } else {
                        if (strpos($path, '\\') !== FALSE) {
                            $ePath = explode('\\', $path);
                            $filename = end($ePath);
                        }
                    }
                    $_SESSION['fm_cwd'] = str_replace("\\", "", dirname($_SESSION['fm_cwd']));
                    $view->refresh('?m=update&amp;p=blacklist' . '&amp;path=' . $filename, 0);
                } else {
                    print_failure(get_lang("failed_list"));
                }
            }
            return;
        }
        if (empty($dirlist)) {
            print_lang('empty_directory');
        } else {
            echo "<form method=POST>" . "<table class='center' style='width:100%;' >\n" . show_back($home_id) . "<tr>\n" . "<td style='width:10px;' >\n" . "<input type='checkbox' onclick='toggleChecked(this.checked)'>\n" . "</td>\n" . "<td align=left>\n" . get_lang('filename') . "\n</td>\n" . "</tr>\n";
            $directorys = array();
            $files = array();
            $x = 0;
            $basedir_path = rtrim($_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['SCRIPT_NAME']), DIRECTORY_SEPARATOR);
            $preg_basedir_path = preg_quote($basedir_path, "/");
            foreach ($dirlist as $item) {
                # dirlist FM returns an array.  Each element has 5 fields separated by the | character
                if ($item == "." or $item == "..") {
                    continue;
                }
                $filename = $item;
                $filepath = clean_path($path . "/" . $filename);
                // Directory
                if (is_dir($filepath)) {
                    $directorys[$x]['filename'] = $filename;
                } else {
                    $files[$x]['filename'] = $filename;
                    $files[$x]['filepath'] = preg_replace("/^" . $preg_basedir_path . "/", "", $filepath);
                }
                $x++;
            }
            foreach ($directorys as $directory) {
                echo "<tr>\n" . "<td>" . "</td>" . "<td align=left>" . "<img class=\"viewitem\" src=\"images/folder.png\" alt=\"Directory\" /> " . "<a href=\"?m=update&amp;p=blacklist&amp;path=" . $directory['filename'] . "\">" . $directory['filename'] . "</a></td></tr>\n";
            }
            $i = 0;
            $unchecked = array();
            foreach ($files as $file) {
                $checked = in_array($file['filepath'], $curren_blacklist) ? "checked='checked'" : "";
                echo "<tr>\n" . "<td>" . "<input type=checkbox name='blacklist[{$i}]' value='" . $file['filepath'] . "' class='item' {$checked}/>\n" . "<input type=hidden name='folder_files[{$i}]' value='" . $file['filepath'] . "' />\n" . "</td>" . "<td align=left>";
                echo "<img class=\"viewitem\" src=\"images/txt.png\" alt=\"Text file\" /> " . $file['filename'] . "</td>\n" . "</tr>\n";
                $i++;
            }
            echo "</table>\n" . "<input type=submit name='save_to_blacklist' value='" . get_lang('save_to_blacklist') . "' />\n" . "</form>\n";
        }
    }
    echo create_back_button('update');
}