root/tags/omega-1.0.0-rc3/engine/ispcp-rqst-mngr

Revision 970, 13.7 kB (checked in by rats, 10 months ago)

update script ready for testing ... please do NOT use it on productive systems without backups; it's UNTESTED and may cause HEAVY DAMAGE!

Added: AWStats link in client's webtools
Fixed #958: Some Errors in Updatescript

Line 
1 #!/usr/bin/perl
2
3 # ispCP ω (OMEGA) a Virtual Hosting Control Panel
4 # Copyright (c) 2001-2006 by moleSoftware GmbH
5 # http://www.molesoftware.com
6 # Copyright (c) 2006-2007 by isp Control Panel
7 # http://isp-control.net
8 #
9 #
10 # License:
11 #    This program is free software; you can redistribute it and/or
12 #    modify it under the terms of the MPL Mozilla Public License
13 #    as published by the Free Software Foundation; either version 1.1
14 #    of the License, or (at your option) any later version.
15 #
16 #    This program is distributed in the hope that it will be useful,
17 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
18 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 #    MPL Mozilla Public License for more details.
20 #
21 #    You may have received a copy of the MPL Mozilla Public License
22 #    along with this program.
23 #
24 #    An on-line copy of the MPL Mozilla Public License can be found
25 #    http://www.mozilla.org/MPL/MPL-1.1.html
26 #
27 #
28 # The ISPCP ω Home Page is at:
29 #
30 #    http://isp-control.net
31 #
32
33 use FindBin;
34 use lib "$FindBin::Bin/";
35 require 'ispcp_common_code.pl';
36
37 use strict;
38
39 use warnings;
40
41 sub mngr_start_up {
42
43     my ($rs, $rdata) = (undef, undef);
44
45     push_el(\@main::el, 'mngr_start_up()', 'Starting...');
46
47     # lock check;
48
49     $rs = lock_system();
50
51     return $rs if ($rs != 0);
52
53     # Let's clear Execution Logs, if any.
54
55     if (-e $main::ispcp_rqst_mngr_el) {
56
57         $rs = del_file($main::ispcp_rqst_mngr_el);
58
59         return $rs if ($rs != 0);
60
61     }
62
63     # config check;
64
65     $rs = get_conf();
66
67     return $rs if ($rs != 0);
68
69     # sql check;
70
71     my $sql = "select admin_id from admin where admin_id = 1;";
72
73     ($rs, $rdata) = doSQL($sql);
74
75     return $rs if ($rs != 0);
76
77     push_el(\@main::el, 'mngr_start_up()', 'Ending...');
78
79     return 0;
80
81 }
82
83 sub mngr_shut_down {
84
85     my $rs = undef;
86
87     push_el(\@main::el, 'mngr_shut_down()', 'Starting...');
88
89     $rs = unlock_system();
90
91     return $rs if ($rs != 0);
92
93     push_el(\@main::el, 'mngr_shut_down()', 'Ending...');
94
95     return 0;
96
97 }
98
99 sub mngr_engine {
100
101     my ($rs, $rdata) = (undef, undef);
102
103     push_el(\@main::el, 'mngr_engine()', 'Starting...');
104
105     my $sql;
106
107     #
108     # Proceed tasks, if any.
109     #
110
111     $sql = "select domain_id, domain_name, domain_status from domain where domain_status != 'ok' order by domain_id";
112
113     ($rs, $rdata) = doSQL($sql);
114
115     my $dmn_count = @$rdata;
116
117     if ($dmn_count > 0) {
118
119         foreach (@$rdata) {
120
121             my $row = $_;
122
123             my ($dmn_id, $dmn_name, $dmn_status) = (@$row[0], @$row[1], @$row[2]);
124
125             if (
126                 $dmn_status eq "toadd" ||
127                 $dmn_status eq "change" ||
128                 $dmn_status eq "restore" ||
129                 $dmn_status eq "toenable" ||
130                 $dmn_status eq "todisable"
131                ) {
132
133                 if ($dmn_status eq "restore") {
134
135                     $dmn_count--;
136
137                 }
138
139                 if (defined($main::engine_debug)) {
140
141                     push_el(\@main::el, 'mngr_engine()', "processing $dmn_id, $dmn_name, $dmn_status.");
142
143                 }
144
145                 $rs = sys_command("$main::ispcp_dmn_mngr $dmn_id 1>$main::ispcp_dmn_mngr_stdout 2>$main::ispcp_dmn_mngr_stderr");
146
147                 if ($rs != 0) {
148
149                     if (-e $main::ispcp_dmn_mngr_el) {
150
151                         my $rs1 = undef;
152
153                         pop_el(\@main::el); # removing 'sys_command()' error message;
154
155                         ($rs1, $rdata) = get_el_error($main::ispcp_dmn_mngr_el);
156
157                         return $rs1 if ($rs1 != 0);
158
159                         push_el(\@main::el, $main::ispcp_dmn_mngr, $rdata);
160
161                     }
162
163                     if (!defined($main::engine_debug)) {
164
165                         del_file($main::ispcp_dmn_mngr_stdout); del_file($main::ispcp_dmn_mngr_stderr);
166
167                     }
168
169                     return $rs;
170
171                 }
172
173                 if (!defined($main::engine_debug)) {
174
175                     del_file($main::ispcp_dmn_mngr_stdout); del_file($main::ispcp_dmn_mngr_stderr);
176
177                 }
178
179
180             }
181
182         }
183
184     }
185
186     $sql = "select subdomain_id, subdomain_name, subdomain_status from subdomain where subdomain_status != 'ok' order by subdomain_id";
187
188     ($rs, $rdata) = doSQL($sql);
189
190     my $sub_count = @$rdata;
191
192     if ($sub_count > 0) {
193
194         foreach (@$rdata) {
195
196             my $row = $_;
197
198             my ($sub_id, $sub_name, $sub_status) = (@$row[0], @$row[1], @$row[2]);
199
200             if ($sub_status eq "toadd" || $sub_status eq "change" || $sub_status eq "delete") {
201
202                 if (defined($main::engine_debug)) {
203
204                     push_el(\@main::el, 'mngr_engine()', "processing $sub_id, $sub_name, $sub_status.");
205
206                 }
207
208                 $rs = sys_command("$main::ispcp_sub_mngr $sub_id 1>$main::ispcp_sub_mngr_stdout 2>$main::ispcp_sub_mngr_stderr");
209
210                 if ($rs != 0) {
211
212                     if (-e $main::ispcp_sub_mngr_el) {
213
214                         my $rs1 = undef;
215
216                         pop_el(\@main::el); # removing 'sys_command()' error message;
217
218                         ($rs1, $rdata) = get_el_error($main::ispcp_sub_mngr_el);
219
220                         return $rs1 if ($rs1 != 0);
221
222                         push_el(\@main::el, $main::ispcp_sub_mngr, $rdata);
223
224                     }
225
226                     if (!defined($main::engine_debug)) {
227
228                         del_file($main::ispcp_sub_mngr_stdout); del_file($main::ispcp_sub_mngr_stderr);
229
230                     }
231
232                     return $rs;
233
234                 }
235
236                 if (!defined($main::engine_debug)) {
237
238                     del_file($main::ispcp_sub_mngr_stdout); del_file($main::ispcp_sub_mngr_stderr);
239
240                 }
241
242             }
243
244         }
245
246     }
247
248     $sql = "select alias_id, alias_name, alias_status from domain_aliasses where alias_status != 'ok' and alias_status != 'ordered' order by alias_id";
249
250     ($rs, $rdata) = doSQL($sql);
251
252     my $als_count = @$rdata;
253
254     if ($als_count > 0) {
255
256         foreach (@$rdata) {
257
258             my $row = $_;
259
260             my ($als_id, $als_name, $als_status) = (@$row[0], @$row[1], @$row[2]);
261
262             if ($als_status eq "toadd" || $als_status eq "change" || $als_status eq "delete") {
263
264                 if (defined($main::engine_debug)) {
265
266                     push_el(\@main::el, 'mngr_engine()', "processing $als_id, $als_name, $als_status.");
267
268                 }
269
270                 $rs = sys_command("$main::ispcp_als_mngr $als_id 1>$main::ispcp_als_mngr_stdout 2>$main::ispcp_als_mngr_stderr");
271
272                 if ($rs != 0) {
273
274                     if (-e $main::ispcp_als_mngr_el) {
275
276                         my $rs1 = undef;
277
278                         pop_el(\@main::el); # removing 'sys_command()' error message;
279
280                         ($rs1, $rdata) = get_el_error($main::ispcp_als_mngr_el);
281
282                         return $rs1 if ($rs1 != 0);
283
284                         push_el(\@main::el, $main::ispcp_als_mngr, $rdata);
285
286                     }
287
288                     if (!defined($main::engine_debug)) {
289
290                         del_file($main::ispcp_als_mngr_stdout); del_file($main::ispcp_als_mngr_stderr);
291
292                     }
293
294                     return $rs;
295
296                 }
297
298                 if (!defined($main::engine_debug)) {
299
300                     del_file($main::ispcp_als_mngr_stdout); del_file($main::ispcp_als_mngr_stderr);
301
302                 }
303
304
305             }
306
307         }
308
309     }
310
311     $sql = "select mail_id, mail_acc, status from mail_users where status != 'ok' and status != 'ordered' order by mail_id";
312
313     ($rs, $rdata) = doSQL($sql);
314
315     my $mail_count = @$rdata;
316
317     if ($mail_count > 0) {
318
319         foreach (@$rdata) {
320
321             my $row = $_;
322
323             my ($mail_id, $mail_acc, $mail_status) = (@$row[0], @$row[1], @$row[2]);
324
325             if ($mail_status eq "toadd" || $mail_status eq "change" || $mail_status eq "delete") {
326
327                 if (defined($main::engine_debug)) {
328
329                     push_el(\@main::el, 'mngr_engine()', "processing $mail_id, $mail_acc, $mail_status.");
330
331                 }
332
333             }
334
335             $rs = sys_command("$main::ispcp_mbox_mngr $mail_id 1>$main::ispcp_mbox_mngr_stdout 2>$main::ispcp_mbox_mngr_stderr");
336
337             if ($rs != 0) {
338
339                 if (-e $main::ispcp_mbox_mngr_el) {
340
341                     my $rs1 = undef;
342
343                     pop_el(\@main::el); # removing 'sys_command()' error message;
344
345                     ($rs1, $rdata) = get_el_error($main::ispcp_mbox_mngr_el);
346
347                     return $rs1 if ($rs1 != 0);
348
349                     push_el(\@main::el, $main::ispcp_mbox_mngr, $rdata);
350
351                 }
352
353                 if (!defined($main::engine_debug)) {
354
355                     del_file($main::ispcp_mbox_mngr_stdout); del_file($main::ispcp_mbox_mngr_stderr);
356
357                 }
358
359                 return $rs;
360
361             }
362
363             if (!defined($main::engine_debug)) {
364
365                 del_file($main::ispcp_mbox_mngr_stdout); del_file($main::ispcp_mbox_mngr_stderr);
366
367             }
368
369         }
370
371     }
372
373     if ($dmn_count > 0 || $sub_count > 0 || $als_count > 0 || $mail_count > 0) {
374
375         $rs = sys_command("$main::ispcp_serv_mngr $dmn_count $sub_count $als_count $mail_count 1>$main::ispcp_serv_mngr_stdout 2>$main::ispcp_serv_mngr_stderr");
376
377         if ($rs != 0) {
378
379             if (-e $main::ispcp_serv_mngr_el) {
380
381                 my $rs1 = undef;
382
383                 pop_el(\@main::el); # removing 'sys_command()' error message;
384
385                 ($rs1, $rdata) = get_el_error($main::ispcp_serv_mngr_el);
386
387                 return $rs1 if ($rs1 != 0);
388
389                 push_el(\@main::el, $main::ispcp_serv_mngr, $rdata);
390
391             }
392
393             if (!defined($main::engine_debug)) {
394
395                 del_file($main::ispcp_serv_mngr_stdout); del_file($main::ispcp_serv_mngr_stderr);
396
397             }
398
399             return $rs;
400
401         }
402
403         if (!defined($main::engine_debug)) {
404
405             del_file($main::ispcp_serv_mngr_stdout); del_file($main::ispcp_serv_mngr_stderr);
406
407         }
408
409
410     }
411
412     $sql = "select domain_id, domain_name, domain_status from domain where domain_status != 'ok' order by domain_id";
413
414     ($rs, $rdata) = doSQL($sql);
415
416     $dmn_count = @$rdata;
417
418     if ($dmn_count > 0) {
419
420         foreach (@$rdata) {
421
422             my $row = $_;
423
424             my ($dmn_id, $dmn_name, $dmn_status) = (@$row[0], @$row[1], @$row[2]);
425
426             if ($dmn_status eq "delete") {
427
428                 if (defined($main::engine_debug)) {
429
430                     push_el(\@main::el, 'mngr_engine()', "processing $dmn_id, $dmn_name, $dmn_status.");
431
432                 }
433
434                 $rs = sys_command("$main::ispcp_dmn_mngr $dmn_id 1>$main::ispcp_dmn_mngr_stdout 2>$main::ispcp_dmn_mngr_stderr");
435
436                 if ($rs != 0) {
437
438                     if (-e $main::ispcp_dmn_mngr_el) {
439
440                         my $rs1 = undef;
441
442                         pop_el(\@main::el); # removing 'sys_command()' error message;
443
444                         ($rs1, $rdata) = get_el_error($main::ispcp_dmn_mngr_el);
445
446                         return $rs1 if ($rs1 != 0);
447
448                         push_el(\@main::el, $main::ispcp_dmn_mngr, $rdata);
449
450                     }
451
452                     if (!defined($main::engine_debug)) {
453
454                         del_file($main::ispcp_dmn_mngr_stdout); del_file($main::ispcp_dmn_mngr_stderr);
455
456                     }
457
458                     return $rs;
459
460                 }
461
462                 if (!defined($main::engine_debug)) {
463
464                     del_file($main::ispcp_dmn_mngr_stdout); del_file($main::ispcp_dmn_mngr_stderr);
465
466                 }
467
468
469             }
470
471         }
472
473     }
474
475         #
476         # .htaccess management BEGIN.
477         #
478
479         $sql = "select id, status from htaccess where status != 'ok' order by id";
480
481         ($rs, $rdata) = doSQL($sql);
482
483         my $htuser_count = @$rdata;
484
485         if ($htuser_count > 0) {
486
487                 foreach (@$rdata) {
488
489                         my $row = $_;
490
491                         my ($htuser_id, $htuser_status) = (@$row[0], @$row[1]);
492
493                         if ($htuser_status eq "toadd" || $htuser_status eq "change" || $htuser_status eq "delete") {
494
495                                 push_el(\@main::el, 'mngr_engine()', "processing $htuser_id, $htuser_status.")
496
497                                         if (defined($main::engine_debug));
498
499                                 $rs = sys_command("$main::ispcp_htuser_mngr $htuser_id 1>$main::ispcp_htuser_mngr_stdout 2>$main::ispcp_htuser_mngr_stderr");
500
501                                 if ($rs != 0) {
502
503                                         if (-e $main::ispcp_htuser_mngr_el) {
504
505                                                 my $rs1 = undef;
506
507                                                 pop_el(\@main::el); # removing 'sys_command()' error message;
508
509                                                 ($rs1, $rdata) = get_el_error($main::ispcp_htuser_mngr_el);
510
511                                                 return $rs1 if ($rs1 != 0);
512
513                                                 push_el(\@main::el, $main::ispcp_htuser_mngr, $rdata);
514
515                                         }
516
517                                         if (!defined($main::engine_debug)) {
518
519                                                 del_file($main::ispcp_htuser_mngr_stdout); del_file($main::ispcp_htuser_mngr_stderr);
520
521                                         }
522
523                                         return $rs;
524
525                                 }
526
527                                 if (!defined($main::engine_debug)) {
528
529                                         del_file($main::ispcp_htuser_mngr_stdout); del_file($main::ispcp_htuser_mngr_stderr);
530
531                                 }
532
533                                 sys_command_rs("rm -rf /tmp/htaccess-*");
534
535                         }
536
537                 }
538
539         } else {
540
541                 $sql = "delete from htaccess_users where status = 'delete'";
542                 ($rs, $rdata) = doSQL($sql);
543
544                 $sql = "delete from htaccess_groups where status = 'delete'";
545                 ($rs, $rdata) = doSQL($sql);
546
547                 $sql = "update htaccess_users set status = 'ok' where status = 'toadd' or status = 'change'";
548                 ($rs, $rdata) = doSQL($sql);
549
550                 $sql = "update htaccess_groups set status = 'ok' where status = 'toadd' or status = 'change'";
551                 ($rs, $rdata) = doSQL($sql);
552
553         }
554
555         #
556         # .htaccess management END.
557         #
558
559     push_el(\@main::el, 'mngr_engine()', 'Ending...');
560
561     return 0;
562
563 }
564
565 my $rs = undef;
566
567 $rs = mngr_start_up();
568
569 if ($rs != 0) {
570
571     dump_el(\@main::el, $main::ispcp_rqst_mngr_el);
572
573     mngr_shut_down();
574
575     exit 1;
576
577 }
578
579 $rs = mngr_engine();
580
581 if ($rs != 0) {
582
583     dump_el(\@main::el, $main::ispcp_rqst_mngr_el);
584
585     mngr_shut_down();
586
587     exit 1;
588
589 }
590
591 $rs = mngr_shut_down();
592
593 if ($rs != 0) {
594
595     dump_el(\@main::el, $main::ispcp_rqst_mngr_el);
596
597     exit 1;
598
599 }
Note: See TracBrowser for help on using the browser.