dumps all package data

This commit is contained in:
Peter Hormanns 2013-01-23 17:07:31 +01:00
parent 10f567a9c3
commit e0f021cc1c

View File

@ -1,6 +1,48 @@
var pacs = pac.search();
var hive = 'h91';
var hive = 'h99';
var password = 'p!' + (new String(Math.random())).substring(2,16) + '!';
function runbash(cmd) {
var runtime = java.lang.Runtime.getRuntime();
runtime.exec(["bash", "-c", cmd]);
}
function mysqldump(pac, db) {
var dump = "/home/pacs/" + pac + "/.bak/mysql-" + db + ".dmp.gz";
var cmd = "mysqldump --create-options --flush-logs --force --quote-names --quick --single-transaction "
+ db + "|gzip --best|secat --user=" + pac + " --group=" + pac + " --umask=007 --output=" + dump;
runbash(cmd);
}
function pgsqldump(pac, db) {
var dump = "/home/pacs/" + pac + "/.bak/pgsql-" + db + ".dmp.gz";
var cmd = "export PGUSER=postgres; pg_dump --disable-triggers --oids --compress=0 --format=c "
+ db + "|gzip --best|secat --user=" + pac + " --group=" + pac + " --umask=007 --output=" + dump;
runbash(cmd);
}
function crontabdump(pac, user) {
var dump = "/home/pacs/" + pac + "/.bak/crontab-" + user + ".gz";
var cmd = "crontab -u " + user + " -l"
+ "|gzip --best|secat --user=" + pac + " --group=" + pac + " --umask=007 --output=" + dump;
runbash(cmd);
}
function shadowdump(pac) {
var dump = "/home/pacs/" + pac + "/.bak/shadow.gz";
var cmd = "grep -e '^" + pac + "' /etc/shadow|cut -f1-2 -d':' "
+ "|gzip --best|secat --user=" + pac + " --group=" + pac + " --umask=007 --output=" + dump;
runbash(cmd);
}
function mysqlpasswddump(pac) {
var dump = "/home/pacs/" + pac + "/.bak/mysql_passwd.gz";
var sql = "select concat('update user set Password=\\\'', Password, '\\\' where User=\\\'', User, '\\\';')"
+ " as update_passwd from user where user like '" + pac + "%';";
var cmd = "( ( echo \"" + sql + "\"|mysql mysql ) ; echo \"flush privileges;\" )"
+ "|sed '1d'|gzip --best|secat --user=" + pac + " --group=" + pac + " --umask=007 --output=" + dump;
runbash(cmd);
}
function pgsqlpasswddump(pac) {
var dump = "/home/pacs/" + pac + "/.bak/pgsql_passwd.gz";
var cmd = "export PGUSER=postgres; pg_dumpall -r | grep ^ALTER | grep " + pac
+ "|gzip --best|secat --user=" + pac + " --group=" + pac + " --umask=007 --output=" + dump;
runbash(cmd);
}
if (pacs.length == 1 && hive != 'undef') {
var pacname = pacs[0]['name'];
var file = new java.io.FileWriter(pacname + '_dump.js');
@ -36,6 +78,7 @@ if (pacs.length == 1 && hive != 'undef') {
file.write('password: "' + password + '"\n');
file.write('}});\n');
}
crontabdump(pacname, unixusers[idx]['name']);
}
// Domain
var domains = domain.search();
@ -151,6 +194,7 @@ if (pacs.length == 1 && hive != 'undef') {
file.write('owner: "' + pgdbold[idx]['owner'] + '",\n');
file.write('encoding: "' + pgdbold[idx]['encoding'] + '"\n');
file.write('}});\n');
pgsqldump(pacname, pgdbold[idx]['name']);
}
// MySQL
var myuserold = mysqluser.search();
@ -167,8 +211,12 @@ if (pacs.length == 1 && hive != 'undef') {
file.write('owner: "' + mydbold[idx]['owner'] + '",\n');
file.write('encoding: "' + mydbold[idx]['encoding'] + '"\n');
file.write('}});\n');
mysqldump(pacname, mydbold[idx]['name']);
}
file.close();
shadowdump(pacname);
mysqlpasswddump(pacname);
pgsqlpasswddump(pacname);
} else {
print('run as pac-owner!\n');
}