root/tags/omega-1.0.0-rc2/engine/backup/ispcp-bk-task

Revision 481, 7.8 KB (checked in by malte, 21 months ago)
Line 
1#!/usr/bin/perl
2
3# ISPCP(tm) - Virtual Hosting Control System
4# Copyright (c) 2001-2004 by moleSoftware GmbH
5# http://www.molesoftware.com
6#
7#
8# License:
9#    This program is free software; you can redistribute it and/or
10#    modify it under the terms of the MPL Mozilla Public License
11#    as published by the Free Software Foundation; either version 1.1
12#    of the License, or (at your option) any later version.
13#
14#    This program is distributed in the hope that it will be useful,
15#    but WITHOUT ANY WARRANTY; without even the implied warranty of
16#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17#    MPL Mozilla Public License for more details.
18#
19#    You may have received a copy of the MPL Mozilla Public License
20#    along with this program.
21#
22#    An on-line copy of the MPL Mozilla Public License can be found
23#    http://www.mozilla.org/MPL/MPL-1.1.html
24#
25#
26# The ISPCP Home Page is at:
27#
28#    http://www.isp-control.net
29
30
31use FindBin;
32use lib "$FindBin::Bin/..";
33require 'ispcp_common_code.pl';
34
35use strict;
36
37use warnings;
38
39# sub lock_bk_system {
40#
41#     my ($lock_file) = @_;
42#
43#     push_el(\@main::el, 'lock_bk_system()', 'Starting...');
44#
45#     if (-e $lock_file) {
46#
47#         push_el(\@main::el, 'lock_bk_system()', 'ERROR: backup request engine already locked !');
48#
49#         return 1;
50#
51#     }
52#
53#     my $touch_cmd = "/bin/touch $lock_file";
54#
55#     my $rs = sys_command($touch_cmd);
56#
57#     return 1 if ($rs != 0);
58#
59#     push_el(\@main::el, 'lock_bk_system()', 'Ending...');
60#
61#     return 0;
62# }
63#
64#
65# sub unlock_bk_system {
66#
67#     my ($lock_file) = @_;
68#
69#     push_el(\@main::el, 'unlock_bk_system()', 'Starting...');
70#
71#     my $rm_cmd = "/bin/rm -rf $lock_file";
72#
73#     my $rs = sys_command($rm_cmd);
74#
75#     return 1 if ($rs != 0);
76#
77#     push_el(\@main::el, 'unlock_bk_system()', 'Ending...');
78#
79#     return 0;
80#
81# }
82#
83# sub bk_task_start_up {
84#
85#     my ($lock_file) = @_;
86#
87#     my ($rs, $rdata) = (undef, undef);
88#
89#     push_el(\@main::el, 'bk_task_start_up()', 'Starting...');
90#
91#     $rs = lock_bk_system($lock_file);
92#
93#     return $rs if ($rs != 0);
94#
95#     # config check;
96#
97#     $rs = get_conf();
98#
99#     return $rs if ($rs != 0);
100#
101#     #
102#     # getting initial data also must be done here;
103#     #
104#
105#     my $sql = "select * from domain;";
106#
107#     ($rs, $rdata) = doSQL($sql);
108#
109#     return $rs if ($rs != 0);
110#
111#     push_el(\@main::el, 'bk_task_start_up()', 'Ending...');
112#
113#     return 0;
114#
115# }
116#
117#
118# sub bk_task_shut_down {
119#
120#     my ($lock_file) = @_;
121#
122#     my $rs = undef;
123#
124#     push_el(\@main::el, 'bk_task_shut_down()', 'Starting...');
125#
126#     $rs = unlock_bk_system($lock_file);
127#
128#     return $rs if ($rs != 0);
129#
130#     push_el(\@main::el, 'bk_task_shut_down()', 'Ending...');
131#
132#     return 0;
133#
134# }
135#
136# sub bk_task_engine {
137#
138#     my ($dmn_name, $dmn_id) = @_;
139#
140#     my $rs = undef;
141#
142#     push_el(\@main::el, 'bk_task_engine()', 'Starting...');
143#
144#
145#     if (!defined($dmn_name)) {
146#
147#         push_el(\@main::el, 'bk_task_engine()', 'ERROR: Undefined input data! You must specify domain name!');
148#
149#         return -1;
150#
151#     }
152#
153#
154#     my $date = get_human_date();
155#
156#     my $dmn_dir = $main::cfg{'APACHE_WWW_DIR'}."/$dmn_name";
157#
158#     my $dmn_backup_dir = $main::cfg{'APACHE_WWW_DIR'}."/$dmn_name/backups";
159#
160#     my $cmd_tar = $main::cfg{'CMD_TAR'};
161#
162#     my $cmd_rm = $main::cfg{'CMD_RM'};
163#
164#     my $cmd_mv = $main::cfg{'CMD_MV'};
165#
166#     my $httpd_uid = $main::cfg{'APACHE_USER'};
167#
168#     my $httpd_gid = $main::cfg{'APACHE_GROUP'};
169#
170#     my $backup_filename = "$dmn_name-backup-$date.tar.gz";
171#
172#     my $backup_cmd = "$cmd_tar --create --directory=$dmn_dir --bzip2 --file=$dmn_dir/$backup_filename --exclude=logs --exclude=phptmp --exclude=backups --exclude=$backup_filename .";
173#
174#
175#     $rs = sys_command($backup_cmd);
176#
177#     return $rs if ($rs != 0);
178#
179#     $rs = sys_command("$cmd_rm -rf $dmn_backup_dir/$dmn_name-*");
180#
181#     return $rs if ($rs != 0);
182#
183#     $rs = sys_command("$cmd_mv -f $dmn_dir/$backup_filename $dmn_backup_dir");
184#
185#     return $rs if ($rs != 0);
186#
187#     my ($sys_uid, $sys_gid) = get_dmn_suexec_user($dmn_id);
188#
189#     my $suexec_user_pref = $main::cfg{'APACHE_SUEXEC_USER_PREF'};
190#
191#     my $sys_user = "$suexec_user_pref$sys_uid";
192#
193#     my $sys_group = "$suexec_user_pref$sys_gid";
194#
195#     $rs = setfmode("$dmn_backup_dir/$backup_filename", $sys_user, $sys_group, 0660);
196#
197#     return $rs if ($rs != 0);
198#
199#     push_el(\@main::el, 'bk_task_engine()', 'Ending...');
200#
201#     return 0;
202#
203# }
204#
205# sub bk_mail_task {
206#
207#     my ($dmn_name) = @_;
208#
209#     my ($rs, $rdata, $sql) = (undef, undef, undef);
210#
211#     push_el(\@main::el, 'bk_mail_task()', 'Starting...');
212#
213#
214#     if (!defined($dmn_name)) {
215#
216#         push_el(\@main::el, 'bk_mail_task()', 'ERROR: Undefined input data! You must specify domain name!');
217#
218#         return 1;
219#
220#     }
221#
222#     my $date = get_human_date();
223#
224#     my $dmn_dir = $main::cfg{'APACHE_WWW_DIR'}."/$dmn_name";
225#
226#     my $dmn_backup_dir = $main::cfg{'APACHE_WWW_DIR'}."/$dmn_name/backups";
227#
228#     my $cmd_tar = $main::cfg{'CMD_TAR'};
229#
230#     my $cmd_rm = $main::cfg{'CMD_RM'};
231#
232#     my $cmd_mv = $main::cfg{'CMD_MV'};
233#
234#     my $httpd_uid = $main::cfg{'APACHE_USER'};
235#
236#     my $httpd_gid = $main::cfg{'APACHE_GROUP'};
237#
238#     my $backup_filename = "$dmn_name-backup-$date.tar.gz";
239#
240#     my $backup_cmd = "$cmd_tar --create --directory $dmn_dir --gzip --file $dmn_dir/$backup_filename --exclude=logs --exclude=backups --exclude=$backup_filename .";
241#
242#     $sql = "select domain_admin_id from domain where domain_name = '$dmn_name';";
243#
244#     ($rs, $rdata) = doSQL($sql);
245#
246#     return $rs if ($rs != 0);
247#
248#     $rdata = @$rdata[0];
249#
250#     my $domain_admin_id = @$rdata[0];
251#
252#
253#     $sql = "select created_by, email from admin where admin_id = $domain_admin_id;";
254#
255#     ($rs, $rdata) = doSQL($sql);
256#
257#     return $rs if ($rs != 0);
258#
259#     $rdata = @$rdata[0];
260#
261#     my $domain_admin_email = @$rdata[1];
262#
263#     my $domain_admin_crby_id = @$rdata[0];
264#
265#     my $msg_data = <<MESSAGE_TEXT;
266# Hello,
267#
268# Backup request for '$dmn_name' was completed successfully!
269#
270# File Location: backups/
271#
272# File Name: $backup_filename
273# MESSAGE_TEXT
274#
275#     $sql = "select email from admin where admin_id = $domain_admin_crby_id;";
276#
277#     ($rs, $rdata) = doSQL($sql);
278#
279#     return $rs if ($rs != 0);
280#
281#     $rdata = @$rdata[0];
282#
283#     my $domain_admin_crby_email = @$rdata[0];
284#
285#     my $out = new MIME::Entity;
286#
287#     $out -> build(
288#                   From => "Backup Manager <".$domain_admin_crby_email.">",
289#                   To => $domain_admin_email,
290#                   Subject => "Backup report about '".$dmn_name."' domain.",
291#                   Data => $msg_data,
292#                   'X-Mailer' => "$main::cfg{'VersionH'} Automatic Backup Messager"
293#                  );
294#
295# # let's stop smap users every day. thay do not need to know, that backup engine works
296# #    open MAIL, "| /usr/sbin/sendmail -t -oi";
297# #
298# #    $out -> print(\*MAIL);
299# #
300# #    close MAIL;
301#
302#     push_el(\@main::el, 'bk_mail_task()', 'Ending...');
303#
304#     return 0;
305#
306# }
307#
308# sub err_exit {
309#
310#     my $el_data = pop_el(\@main::el);
311#
312#     my ($sub_name, $msg) = split(/$main::el_sep/, $el_data);
313#
314#     print STDERR "$msg\n";
315#
316#     exit 1;
317#
318# }
319#
320#
321# my $rs = undef;
322#
323# my $dmn_name = $ARGV[0];
324#
325# my $dmn_id = $ARGV[1];
326#
327#
328# if (!defined($dmn_name) || $dmn_name eq '') {
329#
330#     push_el(\@main::el, 'main()', "ERROR: Domain name not specified !");
331#
332#     err_exit();
333#
334# }
335#
336#
337# my $dmn_lock_file = "/tmp/$dmn_name-backup.lock";
338#
339#
340# $rs = bk_task_start_up($dmn_lock_file);
341#
342# err_exit() if ($rs != 0);
343#
344# $rs = bk_task_engine($dmn_name, $dmn_id);
345#
346# err_exit() if ($rs != 0);
347#
348# $rs = bk_mail_task($dmn_name);
349#
350# err_exit() if ($rs != 0);
351#
352# $rs = bk_task_shut_down($dmn_lock_file);
353#
354# err_exit() if ($rs != 0);
355#
356# exit 0;
357#
358
359print STDOUT "Backup Task Completed!\n";
360
361exit 0;
362
Note: See TracBrowser for help on using the browser.