-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinstall.php
executable file
·326 lines (284 loc) · 9.35 KB
/
install.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
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
<style>
.destaque {
border: 2px solid #c6f;
background-color: #9f6;
}
#basico {
border: 2px solid #fcc;
background-color: #cff;
display:block;
text-align:left;
}
#avancado {
border: 2px solid #fc9;
background-color: #9cf;
display:none;
text-align:left;
}
#passo1data {
color:blue;
}
.bigbox {
background-color:#bbb;
border:1px solid black;
text-align:center;
width:705px;
}
.bigbox h1 {
background-color:#ffe;
border-bottom:1px solid black;
font-size:11pt;
padding-top:3px;
padding-bottom:5px;
}
.bigbox h2 {
background-color:#ddd;
font-size:10pt;
padding-top:3px;
padding-bottom:5px;
}
.bigbox h3 {
background-color:#ccc;
font-size:10pt;
padding-top:3px;
padding-bottom:5px;
}
.box {
width:350px;
height:150px;
float:left;
}
.fail {
color:red;
}
.ok {
color:green;
}
</style>
<script>
function trocaTipo() {
if( tipoS == 'basico' ) {
tipoS = 'avancado';
tipoA.style.display = 'block';
tipoB.style.display = 'none';
} else {
tipoS = 'basico';
tipoB.style.display = 'block';
tipoA.style.display = 'none';
}
}
function trocaNovoBanco() {
if( nbanco.checked == true ) {
passo1data.style.display = 'block';
} else {
passo1data.style.display = 'none';
}
}
</script>
<center>
<div class=bigbox>
<h1>REDECA</h1>
<p>
Bem-vindo ao Instalador do Redeca. Este pequeno programa visa simplificar o processo de instalação deste software.</p><p> Note que depois que o processo de instalação for executado com sucesso, não será possível acessar esta página novamente.
</p>
<?php
if( !isset($_REQUEST['submit']) )
{
?>
<h2>Verificações Básicas</h2>
<div style='text-align:left;'>
<?php
/*
* 1. Verifica algumas permissões e requisitos
*/
// funcao para acertar permissão de leitura
function permissao($filename)
{
// comeca do mais especifico para o + generico
// owner.
if( !@chmod($filename, 0755) ) return false;
if( is_writable($filename) ) return true;
if( !@chmod($filename, 0775) ) return false;
if( is_writable($filename) ) return true;
// others
if( !@chmod($filename, 0777) ) return false;
if( is_writable($filename) ) return true;
return false;
}
//
// Testa as permissões
//
// array com callback.
$arrFileChecks = array(
'./application/dbconfig.ini' => 'permissao'
,'./logs' => 'permissao'
,'./.htaccess' => 'permissao'
);
$checkfail= false;
foreach( $arrFileChecks as $k => $v )
{
if( is_writable($k) )
echo "<p class=ok>[v] Permissão ok ao '$k'</p>";
else {
echo "<p class=fail>[ ] Erro de permissão com '$k': não é possível escrever</p>";
if( !$v($k) ) {
echo '<p class=fail>-- X Tentei arrumar mas não consegui.</p>';
$checkfail=true;
} else
echo '<p class=ok>-- OK Consegui arrumar.</p>';
}
}
// modulo rewrite
if( function_exists('apache_get_modules') )
if( FALSE === array_search('mod_rewrite', apache_get_modules()) ) {
echo "<p class=fail>[X] Módulo Rewrite do Apache NÃO está instalado</p>";
$checkfail = true;
} else
echo "<p class=ok>[v] Módulo Rewrite do Apache Ok</p>";
?>
</div>
<?php
// ---------
// Para o processo se houve erros irrecuperaveis
//
if( $checkfail == true ) {
echo '<p>Por favor, corrija os erros apresentados acima antes de tentar proceder com instalação</p></div>';
return;
}
/* * * * * * * * * * * * * * * *
* 2. Processo de Instalação
*/
?>
<h2>Instalação</h2>
<form name=install method=post>
<div class=box>
<h3>Qual o tipo de sistema a ser instalado?</h3>
<p class=destaque><input type=radio name=modo value=producao checked=true >Produção <input type=radio name=modo value=demo>Demo</p>
</div>
<div class=box>
<h3>Forma de instalação</h3>
<p class=destaque><input type=radio name=tipo value=basico checked=true onclick="javascript:trocaTipo();">Básico <input type=radio name=tipo value=avancado onclick="javascript:trocaTipo();">Avançado
</div>
<div id=basico>
<p>No método básico, você terá uma instalação simples, ideal para quem quer testar apenas o sistema, sem se preocupar muito com outras configurações ou segurança</p>
<p>Usuário administrador do MySQL: <input size=10 type=input name=b.admin value=root> Senha: <input size=10 type=input name=b.adminpass value=></p>
</div>
<div id=avancado>
<p>No método avançado, você terá um maior controle sobre o que será criado, ideal para quem fará a instalação em ambientes mais restritos ou hospedados em terceiros </p>
<ol>
<li> Nome do banco de dados <br><input type=input name=a.dbname value=db_network> <input type=checkbox id=passo1 name=passo1 checked onclick="javascript:trocaNovoBanco();"> Criar novo</li>
<p id=passo1data>Admin do MySQL: <input size=10 type=input name=a.admin value=root> Senha: <input size=10 type=input name=a.adminpass value=></p>
<li>
<table>
<tr><td>Usuário do MySQL: </td><td> <input size=10 type=input name=a.user value=root> </td></tr>
<tr><td>Senha: </td><td><input size=10 type=input name=a.password value=></td></tr>
<tr><td>Host: </td><td><input size=18 type=input name=a.host value=localhost></td></tr>
</table>
</li>
<li><input type=checkbox name=passo3 checked> Popular com dados pré-configurados (Essencial: não desmarque a menos que saiba o que faz)</li>
<li><input type=checkbox name=passo4 checked> Criar CSS padrão. Você pode rapidamente customizar as cores do layout com as opções abaixo, arrastando as cores da "Paleta" para os campos abaixo.
<p>
<!-- incluindo a Paleta -->
<?php include('./install/paleta.html'); ?>
</p>
</li>
</ol>
</div>
<div>
<p><b>Informações do rodapé:</b></p>
<p>Instituição: <input name=footer_name value="Fundacao"></p>
<p>Sítio da internet: <input name=footer_url value="http://www.ft.com.br"></p>
<p>Texto básico: <input name=footer_tel_text value="Telefone para contato"></p>
<p>Telefone para contato: <input name=footer_tel_number value="(11) 1111-0000"></p>
</div>
<input type=submit name=submit value="Instalar o software">
</form>
<script>
tipoS = 'basico';
tipoB = document.getElementById('basico');
tipoA = document.getElementById('avancado');
passo1data = document.getElementById('passo1data');
nbanco = document.getElementById('passo1');
</script>
<?php
} else {
echo '<h2>Instalando</h2><pre align=left>';
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* 3. Processamento do formulário e a instalação de fato.
*/
// pre-definidos
$admin='';
$_REQUEST['host'] = 'localhost';
$_REQUEST['user'] = 'root';
$_REQUEST['password'] = '';
$_REQUEST['dbname'] = 'db_network';
$_REQUEST['adminuser'] = 'root';
$_REQUEST['adminpass'] = '';
define('DATABASE_NEW',1);
define('DATABASE_PREPARE',2);
define('DATABASE_FAKEDATA',4);
define('CSS_NEW',8);
//
// acerta as variaveis necessárias
//
if( $_REQUEST['tipo'] == 'avancado' ) {
$_REQUEST['host'] = $_REQUEST['a_host'];
$_REQUEST['user'] = $_REQUEST['a_user'];
$_REQUEST['password'] = $_REQUEST['a_password'];
$_REQUEST['dbname'] = $_REQUEST['a_dbname'];
$_REQUEST['adminuser'] = $_REQUEST['a_admin'];
$_REQUEST['adminpass'] = $_REQUEST['a_adminpass'];
$_REQUEST['action']=0;
if( $_REQUEST['passo1']=='on' )
$_REQUEST['action'] |= DATABASE_NEW;
if( $_REQUEST['passo3']=='on' )
$_REQUEST['action'] |= DATABASE_NEW;
if( $_REQUEST['modo'] == 'producao' )
$_REQUEST['action'] |= DATABASE_PREPARE;
else
$_REQUEST['action'] |= DATABASE_FAKEDATA;
if( $_REQUEST['passo4']=='on' )
$_REQUEST['action'] |= CSS_NEW;
} else {
$_REQUEST['adminuser'] = $_REQUEST['user'] = $_REQUEST['b_admin'];
$_REQUEST['adminpass'] = $_REQUEST['password'] = $_REQUEST['b_adminpass'];
$_REQUEST['action'] = (DATABASE_NEW|CSS_NEW)|($_REQUEST['modo']=='producao'?DATABASE_PREPARE:DATABASE_FAKEDATA);
}
/*
* chama o script de instalação propriamente dito
*/
include('install/installer.php');
/*
* Acerta o .htaccess para evitar novo acesso ao instalador
*/
$fd = @fopen('./.htaccess', 'w');
if( $fd ) {
fwrite($fd,'RewriteEngine on
RewriteRule .* index.php
');
// Modo CGI pode dar problema com essas linhas
if( function_exists('apache_get_modules') )
if( FALSE !== array_search('mod_php5',apache_get_modules()) )
fwrite($fd,'
php_flag magic_quotes_gpc off
php_flag register_globals off
');
fclose($fd);
echo "\n.htaccess modificado. OK";
} else
echo "\nERRO tentando modificar o .htaccess";
echo '</pre><a href=/>Clique aqui para acessar o sistema</a>';
}
$fd = @fopen('./application/config.ini', 'a');
if( $fd ) {
fwrite($fd,"
; ###FOOTER
name.text = \"{$_REQUEST['footer_name']}\"
link.text = \"{$_REQUEST['footer_url']}\"
phone.text = \"{$_REQUEST['footer_tel_text']}\"
phone.number = \"{$_REQUEST['footer_tel_number']}\"
");
}
?>
</div>
</center>