| | |
| | | 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'); |
| | |
| | | file.write('password: "' + password + '"\n'); |
| | | file.write('}});\n'); |
| | | } |
| | | crontabdump(pacname, unixusers[idx]['name']); |
| | | } |
| | | // Domain |
| | | var domains = domain.search(); |
| | |
| | | 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(); |
| | |
| | | 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'); |
| | | } |