Develop and Download Open Source Software

Browse Subversion Repository

Contents of /trunk/install.php

Parent Directory Parent Directory | Revision Log Revision Log


Revision 82 - (show annotations) (download) (as text)
Mon Jul 22 05:06:23 2013 UTC (10 years, 10 months ago) by isao-hara
File MIME type: application/x-httpd-php
File size: 10213 byte(s)
Bugfixed 2013/07
1 <?php
2 /*
3
4
5 */
6 include("siwiki.header.php");
7
8 // $root = $_SIWIKI['siwiki_dir']."/site/".$site;
9 $root = dirname(__FILE__)."/site/".$site;
10
11
12 ChkVal($site_root, 'site_root', $root);
13 ChkVal($install_step, 'install_step', 1);
14 ChkVal($install_dir, 'install_dir', '');
15 ChkVal($install_url, 'install_url', dirname($_SERVER['PHP_SELF']));
16 ChkVal($admin_id, 'admin_id', "admin");
17 ChkVal($admin_passwd, 'admin_passwd', "admin");
18 ChkVal($crypt_type, 'crypt_type', "DES");
19 ChkVal($sub, 'sub', "");
20
21 $dbname = $_SIWIKI['dbname'];
22 $ERROR = "";
23 $content = "";
24
25 if(!$dbname) $dbname="siwiki.db";
26
27 if(!$install_dir){
28 $install_dir = realpath($_SIWIKI['siwiki_dir']);
29 //$install_dir = dirname($_SERVER['DOCUMENT_ROOT'].$_SERVER['PHP_SELF']);
30 }
31
32 if($sub == "Init"){
33 $install_step = 1;
34 unlink($site_root."/".$dbname);
35 }else if($sub == "Init and Clear"){
36 $install_step = 1;
37 if($site == "default"){
38 unlink($install_dir."/.htaccess");
39 unlink($install_dir."/.htpasswd");
40 }
41 if(isset($_SESSION['wiki_dir'])){
42 remove_dir_all($_SESSION['wiki_dir']);
43 }
44 }
45
46 $htaccess =<<<_TXT
47 #
48 # mod_rewrite definitions for Siwiki2.
49 #
50 RewriteEngine on
51 RewriteBase $install_url
52
53 RewriteRule ^attachments/_([0-9A-Za-z\_\-]*)/(.*)/([0-9A-Za-z\_\-]*)/(.*)/download$ index.php?site=$1&file2=$4&category=$2&file=$3&sub=download
54 RewriteRule ^attachments/_([0-9A-Za-z\_\-]*)/(.*)/([0-9A-Za-z\_\-]*)/(.*)/delete_file$ admin.php?site=$1&file2=$4&category=$2&file=$3&sub=delete_file
55
56 RewriteRule ^(images|videos)/_([0-9A-Za-z\_\-]*)/(.*)/(.*)/(.*)$ index.php?site=$2&sub=$1&file=$5&category=$3&page=$4
57 RewriteRule ^(images|videos)/_([0-9A-Za-z\_\-]*)/(.*)/(.*)$ index.php?site=$2&sub=$1&file=$4&category=$3
58 RewriteRule ^(images|videos)/_([0-9A-Za-z\_\-]*)/(.*)$ index.php?site=$2&sub=$1&file=$3
59
60 RewriteRule ^_([0-9A-Za-z\_\-]*)/wp-content/themes/(.*)$ themes/$2
61 RewriteRule ^_([0-9A-Za-z\_\-]*)/$ index.php?site=$1
62 RewriteRule ^_([0-9A-Za-z\_\-]*)$ index.php?site=$1
63 RewriteRule ^_([0-9A-Za-z\_\-]*)/([A-Za-z_]+).php$ $2.php?site=$1
64
65 RewriteRule ^_([0-9A-Za-z\_\-]*)/([a-z]*)/([0-9A-Za-z\_\-]*)/(.*).html&(.*)$ index.php?site=$1&file=$4&category=$3&lang=$2&$5
66
67 RewriteRule ^_([0-9A-Za-z\_\-]*)/([a-z]*)/([0-9A-Za-z\_\-]*)/(.*).html/([A-Za-z]*)&(.*)$ admin.php?site=$1&file=$4&category=$3&lang=$2&sub=$5&$6
68 RewriteRule ^_([0-9A-Za-z\_\-]*)/([a-z]*)/([0-9A-Za-z\_\-]*)/(.*).html/(.*)$ admin.php?site=$1&file=$4&category=$3&lang=$2&sub=$5
69 RewriteRule ^_([0-9A-Za-z\_\-]*)/([a-z]*)/([0-9A-Za-z\_\-]*)/(.*).html$ index.php?site=$1&file=$4&category=$3&lang=$2
70 RewriteRule ^_([0-9A-Za-z\_\-]*)/([a-z]*)/([0-9A-Za-z\_\-]*)/(.*).html#(.*)$ index.php?site=$1&file=$4#$4&category=$3&lang=$2
71
72 #
73 # Access control.
74 #
75 <Files ~ "^.(htpasswd|htaccess)$">
76 deny from all
77 Satisfy all
78 </Files>
79
80 <Files ~ "^(admin.php|install.php)$">
81 AuthType Basic
82 AuthName "Siwiki: Member only"
83 AuthUserFile $install_dir/.htpasswd
84 Require valid-user
85
86 Satisfy any
87
88 order deny,allow
89 deny from all
90
91 allow from 127.0
92 </Files>
93
94 order allow,deny
95 allow from all
96 _TXT;
97
98 $admin_passwd = trim($admin_passwd);
99 if($crypt_type == "MD5"){
100 $crypt_passwd = crypt_apr1_md5($admin_passwd);
101 }else{
102 $crypt_passwd = crypt($admin_passwd, substr($admin_passwd,0,2));
103 }
104
105 $htpasswd =<<<_TXT
106 $admin_id:$crypt_passwd
107
108 _TXT;
109
110 if(!file_exists($install_dir."/.htaccess") || !file_exists($install_dir."/.htpasswd")){
111 if($install_step == 2){
112 save_content($install_dir."/.htaccess", $htaccess);
113 save_content($install_dir."/.htpasswd", $htpasswd);
114 }else{
115 $install_step = 1;
116 }
117 }else if(!file_exists($site_root."/".$dbname)){
118 if($install_step == 3){
119 $site_root_top = $site_root."/documents/Home/index/";
120
121 if(mkdir2($site_root_top, true) === false){
122 $info = "<font color=\"red\">Fail to mkdir: $site_root </font><br>";
123 $install_step = 2;
124 }
125 if(! init_siwiki_table($site_root) ){
126 $info = "<font color=\"red\">Fail to init database </font><br>";
127 $install_step = 2;
128 }
129 }else{
130 $install_step = 2;
131 }
132 }else if(!file_exists($site_root."/documents/Home/index/content.".$_SESSION['lang'].".txt")){
133 if($install_step == 4){
134 $_SIWIKI['wiki_dir'] = $site_root;
135 $stat = registerUser($admin_id, $admin_passwd, SYSTEM_ADMIN);
136 if($stat){
137 $stat = activateUser($admin_id);
138 if($stat){
139 $info = "Fail to register administrator";
140 $install_step = 3;
141 }else{
142 $info.= "OK";
143 }
144 }else{
145 $info = "Fail to register administrator";
146 $install_step = 3;
147 }
148 }else{
149 $install_step = 3;
150 }
151 }else{
152 if($install_step == 4){
153 $_SIWIKI['wiki_dir'] = $site_root;
154 $stat = registerUser($admin_id, $admin_passwd, SYSTEM_ADMIN);
155 if($stat){
156 $stat = activateUser($admin_id);
157 if($stat){
158 $info = "Fail to register administrator";
159 $install_step = 3;
160 }else{
161 $info= "OK";
162 }
163 }else{
164 $info = "Fail to register administrator";
165 $install_step = 3;
166 }
167 }
168 $install_step = 5;
169 }
170
171 $content .= "<h2>Siwiki Install: Step ".$install_step."</h2>";
172 if(isset($info)){
173 $content .= $info;
174 }
175
176 $content .=<<<_HTML
177 <form action="$thisFile" method="POST">
178 <input type="hidden" name="site" value="$site">
179 _HTML;
180
181 switch( $install_step ){
182 case 1:
183 $content .=<<<_HTML
184 Welcome to Siwiki Installer<hr>
185 Please comfirm install dirctory.<br>
186 <table>
187 <tr><td> Install Directory </td><td> <input type="text" name="install_dir" value="$install_dir" size="80"> </td><tr>
188 <tr><td> URL </td><td> <input type="text" name="install_url" value="$install_url" size="80"> </td><tr>
189 <tr><td> Admin ID </td><td> <input type="text" name="admin_id" value="$admin_id" size="50"> </td><tr>
190 <tr><td> Admin Password </td><td> <input type="text" name="admin_passwd" value="$admin_passwd" size="50"> </td><tr>
191 <tr><td> Crypt Type</td><td>
192 <input type="radio" name="crypt_type" value="DES"> DES
193 <input type="radio" name="crypt_type" value="MD5"> MD5
194 </td><tr>
195 </table>
196
197 OK? <br>
198 <input type="hidden" name="install_step" value="2">
199 _HTML;
200 break;
201 case 2:
202 $content .= init_step1($site, $site_root, $ERROR);
203 $content .= " <input type=\"hidden\" name=\"install_step\" value=\"3\">";
204 break;
205 case 3:
206 $_SESSION['wiki_dir'] = $site_root;
207 $content .= init_step2($site, $site_root, $ERROR);
208 $content .= " <input type=\"hidden\" name=\"install_step\" value=\"4\">";
209 break;
210 case 4:
211 $lang = $_SESSION['lang'];
212 $_Config['topLogo'] = $_SIWIKI['topLogo'];
213 $_Config['template'] = $_SIWIKI['template'];
214 $_Config['wiki_dir'] = $_SIWIKI['wiki_dir'];
215 $_Config['dbname'] = $_SIWIKI['dbname'];
216 save_config($_Config);
217
218 copy($_SIWIKI['wiki_dir']."/".$_SIWIKI['dbname'], $install_dir."/site/siwiki.db");
219 $wiki = "TITLE:TopPage\n";
220 $wiki .= "LANG:$lang\n";
221 $wiki .= "*Welcome to Siwiki\nPlease login and edit this file.";
222
223 $filename = $site_root."/documents/Home/index/content.".$lang.".txt";
224 if(! file_exists($filename)) save_content($filename, $wiki);
225 $content .= jumpUrl("index.php");
226
227 break;
228 default:
229 break;
230 }
231
232 if ($install_step < 5){
233 $content .=<<<_HTML
234 <input type="submit" name="sub" value="Next">
235 </form>
236 _HTML;
237 }else{
238 $__dir = $_SESSION['wiki_dir'];
239 $content .=<<<_HTML
240 Confuraturation!! Now, you finish initializing Siwiki.<br>
241 If you initialize the all configuration.<br>
242 Go to <a href="index.php"> TopPage </a>. <br>
243 <br>
244 OR
245 <br>
246 Click:
247 <input type="submit" name="sub" value="Init and Clear"> or
248 <input type="submit" name="sub" value="Init"> to initialize the siwiki.
249 <hr> Install dir : $__dir
250 </form>
251 _HTML;
252
253 }
254
255 $content .="<br>";
256
257 include($_SIWIKI['template']);
258
259
260 function init_step1($site, $root, $ERROR=""){
261 $content =<<<_HTML
262 Swiki Site root:<br>
263 $ERROR
264 <table style="border:1px solid black;">
265 <tr><th>Site Name:</th><td> $site</td></tr>
266 <tr><th>Document Root:</th><td><input type="text" name="site_root" value="$root" size="50"></td></tr>
267 </table>
268 _HTML;
269 return $content;
270 }
271
272 function init_step2($site, $root, $ERROR=""){
273 $content =<<<_HTML
274 Register Administrator for this site:<br>
275 $ERROR
276 <table style="border:1px solid black;">
277 <tr><th>Site Name:</th><td> $site</td></tr>
278 <tr><th>Document Root:</th><td>$root</td></tr>
279 <tr><th>Admin UID:</th><td><input type="text" name="admin_id" value="admin" size="50"></td></tr>
280 <tr><th>Admin Passwd:</th><td><input type="password" name="admin_passwd" size="50" value="admin"></td></tr>
281 </table>
282 _HTML;
283 return $content;
284 }
285
286 function init_siwiki_table($site_root){
287 global $init_tables, $_SIWIKI;
288
289 $db = OpenDB($_SIWIKI['dbname'], $site_root);
290 if(! $db) return false;
291 $key = array_keys($init_tables);
292 foreach($key as $k){
293 $res = $db->createTable($k, $init_tables[$k]);
294 if(! $res) return false;
295 }
296 $db->close();
297 return true;
298 }
299
300 function crypt_apr1_md5($plainpasswd) {
301 $tmp="";
302 $salt = substr(str_shuffle("abcdefghijklmnopqrstuvwxyz0123456789"), 0, 8);
303 $len = strlen($plainpasswd);
304 $text = $plainpasswd.'$apr1$'.$salt;
305 $bin = pack("H32", md5($plainpasswd.$salt.$plainpasswd));
306 for($i = $len; $i > 0; $i -= 16) { $text .= substr($bin, 0, min(16, $i)); }
307 for($i = $len; $i > 0; $i >>= 1) { $text .= ($i & 1) ? chr(0) : $plainpasswd{0}; }
308 $bin = pack("H32", md5($text));
309 for($i = 0; $i < 1000; $i++) {
310 $new = ($i & 1) ? $plainpasswd : $bin;
311 if ($i % 3) $new .= $salt;
312 if ($i % 7) $new .= $plainpasswd;
313 $new .= ($i & 1) ? $bin : $plainpasswd;
314 $bin = pack("H32", md5($new));
315 }
316 for ($i = 0; $i < 5; $i++) {
317 $k = $i + 6;
318 $j = $i + 12;
319 if ($j == 16) $j = 5;
320 $tmp = $bin[$i].$bin[$k].$bin[$j].$tmp;
321 }
322 $tmp = chr(0).chr(0).$bin[11].$tmp;
323 $tmp = strtr(strrev(substr(base64_encode($tmp), 2)),
324 "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
325 "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
326 return "$"."apr1"."$".$salt."$".$tmp;
327 }
328
329 ?>
330
331

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26