-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.php
233 lines (209 loc) · 5.34 KB
/
index.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
<?php
/*
____ _____
/ __ \ / ____|
___ _ _ ___| | | | (___
/ _ \ | | |/ _ \ | | |\___ \
| __/ |_| | __/ |__| |____) |
\___|\__, |\___|\____/|_____/
__/ |
|___/ 1.8
Web Operating System
eyeOS.org
eyeOS Engineering Team - www.eyeos.org/team
eyeOS is released under the GNU Affero General Public License Version 3 (AGPL3)
provided with this release in license.txt
or via web at gnu.org/licenses/agpl-3.0.txt
Copyright 2005-2009 eyeOS Team (team@eyeos.org)
*/
/*
*This define is so useful to check if the client has accesed
*eyeOS from the right way (this file).
*/
define('EYE_INDEX',1);
/*
*Includes needed before do anything, in theory only settings.php
*should be here
*/
require_once('settings.php');
/*
*Chaning the current work directory to EYE_ROOT
*/
changeCWD();
/*
*Loading utf8 support for php, this library must be
*Loaded manually because kernel also needs utf8
*/
loadStringLibrary();
//Including kernel file, this file also "execs" some initialitation stuff
include_once(EYE_ROOT.'/'.SYSTEM_DIR.'/'.KERNEL_DIR.'/kernel'.EYE_CODE_EXTENSION);
/*
*Setting the php debug (error_reporting) depending the eyeOS config
*stored in system/conf/system.xml
*/
setPhpInitDebug();
/*
*Changing some php init parameters, the chagnes are not always
*the same, may change depending of eyeOS configuration.
*/
setPhpInitValues();
//Calling to some libraries functiosn needed by index.php
libraryLoading();
//Calling some service functions needed by index.php
serviceLoading();
/*
*Checking what kind of client is accesing to choose
*the right kernel
*/
$index = indexRequested();
if($index !== false){
loadIndex($index);
}elseif(clientMobile()){
if (mobileWithWebkit()) {
loadIndex('iphone');
} else {
loadIndex('mobile');
}
}else{
loadIndex('browser');
}
function loadIndex($index){
//If some index has been loaded, return false because indexes can't be mixed
if(defined('INDEX_TYPE')){
define('INDEX_BASE','./../');
return false;
}
define('INDEX_BASE','./');
//Include the file with the __FILE__ secure
$myPath = dirname(realpath(__FILE__)).'/';
$rPath = realpath($myPath.'/'.$index.'/index.php');
if(is_readable($rPath)){
require_once($rPath);
return true;
}
return false;
}
function indexRequested(){
if(isset($_REQUEST['index']) && !empty($_REQUEST['index'])){
return utf8_basename($_REQUEST['index']);
}
return false;
}
/*
*Check if the client is a cell phone without special support (like iphone).
*/
function clientMobile(){
if(CHECK_MOBILE == 1) {
$mobileClients = array(
"midp",
"240x320",
"blackberry",
"netfront",
"nokia",
"panasonic",
"portalmmm",
"sharp",
"sie-",
"sonyericsson",
"symbian",
"windows ce",
"benq",
"mda",
"mot-",
"opera mini",
"philips",
"pocket pc",
"sagem",
"samsung",
"sda",
"sgh-",
"vodafone",
"xda",
"iphone"
);
$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
foreach($mobileClients as $mobileClient) {
if (strstr($userAgent, $mobileClient)) {
return $mobileClient;
}
}
return false;
}
}
function mobileWithWebkit() {
$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
if (strstr($userAgent, 'webkit')) {
return true;
} else {
return false;
}
}
/*
*Load the utf8 support loading eyeString and making a fake
*load because kernel needs it (utf8 support).
*/
function loadStringLibrary(){
include_once(EYE_ROOT.'/'.SYSTEM_DIR.'/'.LIB_DIR.'/eyeString/main'.EYE_CODE_EXTENSION);
call_user_func('lib_eyeString_start');
//setting library loaded
define('LIB_EYESTRING_LOADED',1);
}
/*
*Set the eyeOS debuggin, at the moment only changes
*the error_reporting, but may change more things in the future.
*/
function setPhpInitDebug(){
//Hiding warnings and notices if Debug Mode is Off
if(EYEOS_DEBUG_MODE == 0) {
error_reporting(0);
} elseif(EYEOS_DEBUG_MODE == 2) {
error_reporting(E_ALL);
} elseif(EYEOS_DEBUG_MODE == 3) {
error_reporting(E_ALL ^ E_NOTICE);
}else {
error_reporting(E_ERROR); //TODO: SUPPORT E_ALL
}
}
/*
*Load the basics libraries needed by the kernel/core
*/
function libraryLoading(){
//Loading the Error Codes
reqLib('errorCodes','loadCodes');
//load pear library class
reqLib('eyePear','loadPear');
}
/*
*Load the basic services needed by the kernel/core
*/
function serviceLoading(){
//Loading the Security Service (sec) if eyeOS Security is turned on (by default is On)
if(EYEOS_SECURITY == 1) {
service('sec','start');
}
//Setting the Running Log check var to 0
global $LOG_RUNNING;
$LOG_RUNNING = 0;
}
/*
*Set some php init values depending of eyeOS configs
*/
function setPhpInitValues(){
//if allow_big_streams php will not have max_execution_time
if(ALLOW_BIG_STREAMS == 1) {
@set_time_limit(0);
}
//set the default charset
ini_set('default_charset', DEFAULT_CHARSET);
}
/*
*Changes the current work directory to EYE_ROOT
*/
function changeCWD(){
//since index.php is always below eyeROOT, we can do this instead to be inclusable from third party code
$basedir = dirname(__FILE__).'/';
//change directory to EYE_ROOT
chdir($basedir.REAL_EYE_ROOT);
//Loaded before kernel for kernel utf8 compatibility
}
?>