source: trunk/admin/common.php @ 783

Last change on this file since 783 was 783, checked in by moo, 3 years ago

avoid possible filename injection in admin page

  • Property svn:eol-style set to native
File size: 2.8 KB
Line 
1<?php
2
3function xcache_validateFileName($name)
4{
5    return preg_match('!^[a-zA-Z0-9._-]+$!', $name);
6}
7
8function get_language_file_ex($name, $l, $s)
9{
10    static $lmap = array(
11            'zh'    => 'zh-simplified',
12            'zh-hk' => 'zh-traditional',
13            'zh-tw' => 'zh-traditional',
14            );
15    static $smap = array(
16            'gbk'     => 'gb2312',
17            'gb18030' => 'gb2312',
18            );
19
20    if (isset($lmap[$l])) {
21        $l = $lmap[$l];
22    }
23    $file = "$name-$l-$s.lang.php";
24    if (xcache_validateFileName($file) && file_exists($file)) {
25        return $file;
26    }
27    if (isset($smap[$s])) {
28        $s = $smap[$s];
29        $file = "$name-$l-$s.lang.php";
30        if (xcache_validateFileName($file) && file_exists($file)) {
31            return $file;
32        }
33    }
34    $file = "$name-$l.lang.php";
35    if (xcache_validateFileName($file) && file_exists($file)) {
36        return $file;
37    }
38    return null;
39}
40
41function get_language_file($name)
42{
43    global $charset, $lang;
44    $s = strtolower($charset);
45    if (isset($lang)) {
46        $l = strtolower($lang);
47        $file = get_language_file_ex($name, $l, $s);
48        if (!isset($file)) {
49            $l = strtok($l, ':-');
50            $file = get_language_file_ex($name, $l, $s);
51        }
52    }
53    else if (!empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
54        foreach (explode(',', str_replace(' ', '', $_SERVER['HTTP_ACCEPT_LANGUAGE'])) as $l) {
55            $l = strtok($l, ':;');
56            $file = get_language_file_ex($name, $l, $s);
57            if (isset($file)) {
58                $lang = $l;
59                break;
60            }
61            if (strpos($l, '-') !== false) {
62                $ll = strtok($l, ':-');
63                $file = get_language_file_ex($name, $ll, $s);
64                if (isset($file)) {
65                    $lang = $l;
66                    break;
67                }
68            }
69        }
70    }
71    return isset($file) ? $file : "$name-en.lang.php";
72}
73
74function _T($str)
75{
76    if (isset($GLOBALS['strings'][$str])) {
77        return $GLOBALS['strings'][$str];
78    }
79    if (!empty($GLOBALS['show_todo_strings'])) {
80        return '<span style="color:red">' . htmlspecialchars($str) . '</span>';
81    }
82    return $str;
83}
84
85function stripaddslashes_array($value, $mqs = false)
86{
87    if (is_array($value)) {
88        foreach($value as $k => $v) {
89            $value[$k] = stripaddslashes_array($v, $mqs);
90        }
91    }
92    else if(is_string($value)) {
93        $value = $mqs ? str_replace('\'\'', '\'', $value) : stripslashes($value);
94    }
95    return $value;
96}
97
98error_reporting(E_ALL);
99ini_set('display_errors', 'On');
100define('REQUEST_TIME', time());
101
102if (function_exists('get_magic_quotes_gpc') && @get_magic_quotes_gpc()) {
103    $mqs = (bool) ini_get('magic_quotes_sybase');
104    $_GET = stripaddslashes_array($_GET, $mqs);
105    $_POST = stripaddslashes_array($_POST, $mqs);
106    $_REQUEST = stripaddslashes_array($_REQUEST, $mqs);
107}
108ini_set('magic_quotes_runtime', '0');
109
110$charset = "UTF-8";
111if (file_exists("./config.php")) {
112    include("./config.php");
113}
114
115include(get_language_file("common"));
116if (!isset($lang)) {
117    $lang = 'en-us';
118}
119if (!isset($usage_graph_width) && !isset($free_graph_width)) {
120    $usage_graph_width = 120;
121}
122$graph_width = isset($free_graph_width) ? $free_graph_width : $usage_graph_width;
123
124?>
Note: See TracBrowser for help on using the repository browser.