diff options
Diffstat (limited to 'abs/core/supplemental-web/contents/process.py')
-rw-r--r-- | abs/core/supplemental-web/contents/process.py | 124 |
1 files changed, 100 insertions, 24 deletions
diff --git a/abs/core/supplemental-web/contents/process.py b/abs/core/supplemental-web/contents/process.py index 22ffb0f..988ebfc 100644 --- a/abs/core/supplemental-web/contents/process.py +++ b/abs/core/supplemental-web/contents/process.py @@ -4,6 +4,8 @@ import cgi import os import socket import time +import StringIO + try: import cgitb cgitb.enable() @@ -45,10 +47,10 @@ def getform(theform, valuelist, notpresent='', nolist=False): data[field] = notpresent else: # the field is present - print type(theform[field]) + #print type(theform[field]) if type(theform[field]) != type([]): # is it a list or a single item - print type(theform[field]) + #print type(theform[field]) data[field] = theform[field].value else: if not nolist: @@ -100,18 +102,43 @@ def go_backup(myhost): myhostname = socket.gethostname() results="Nothing happened" command= "sudo /usr/LH/bin/lh_system_backup_job" - print command - command2="sleep 1; /home/xymon/server/ext/hbnotes.py" + #print command + + command2="sleep 1; sudo -u nobody /home/xymon/server/ext/hbnotes.py" results=os.popen(command,'r') os.popen(command2,'r') return results -def go_restore(restorefile,myhost): +def go_download_backup(dl_file): + # Actual File Content will go hear. + dlf = "/data/storage/disk0/backup/system_backups/%s" %dl_file + fo = open(dlf, "rb") + + str = fo.read() + fo.close() + + # HTTP Header + print "Content-Type:application/octet-stream; name=\"%s\"\r\n;" %(dl_file) + print "Content-Disposition: attachment; filename=\"%s\"\r\n;" %(dl_file) + print "Content-Length: %d" % len(str) + print "" + + print str + return results + + +def go_restore(restorefile,myhost,prestore): myhostname = socket.gethostname() + psc = '' + if prestore == "on": + psc = "partial" + + if myhostname.strip() == myhost.strip(): - localcommand="sudo /usr/LH/bin/lh_system_restore_job " - command= localcommand + restorefile + command="sudo /usr/LH/bin/lh_system_restore_job %s %s" %(restorefile , psc) + + else: #this should never execute @@ -119,15 +146,37 @@ def go_restore(restorefile,myhost): sshcmd+=myhost.strip() cmd=' "sudo /usr/bin/restore_job.sh " ' command=sshcmd + cmd + restorefile + " 2>&1 " - print command + #print command results=os.popen(command,'r') return results +def go_upload(up_file): + saveDir = "/data/storage/disk0/backup/system_backups/" + fPath = "%s/%s" % (saveDir, up_file.filename) + buf = up_file.file.read() + bytes = len(buf) + sFile = open(fPath, 'wb') + sFile.write(buf) + sFile.close() + results=["<b>%s</b> uploaded (%d bytes)." %(up_file.filename, bytes)] + line = '''The backup has been uploaded and is now available for restore. + To restore from the file, check "Restore database" then select the file from the drop down menu''' + + + results.append(line) + + command2="sleep 1; sudo -u nobody /home/xymon/server/ext/hbnotes.py" + os.popen(command2,'r') + + + return results + + def go_optimize(myhost): #myhostname = socket.gethostname() #if myhostname.strip() == myhost.strip(): command="/usr/LH/bin/optimize_mythdb.py" - print command + #print command results=os.popen(command,'r') #else: #results='This host does not run a database' @@ -137,17 +186,17 @@ def go_update(myhost,update_type): cmd=" call pacman update_system " cmd+=update_type command="/usr/bin/func \"" + myhost.strip() + "*\" " + cmd - print command + #print command results=os.popen(command,'r') return results def go_updateall(allupdate_type): - cmd=" sudo /usr/bin/update_system_all " - cmd+=allupdate_type - command= cmd + " 2>&1 " - results=os.popen(command,'r') - return results + cmd=" sudo /usr/bin/update_system_all " + cmd+=allupdate_type + command= cmd + " 2>&1 " + results=os.popen(command,'r') + return results def go_shutdown(myhost): @@ -209,6 +258,9 @@ def go_kill(myhost,kill_type): return results + + + mainpage = ''' <html><head> <style type="text/css">@import "/frame.css";</style> @@ -223,11 +275,12 @@ error = ''' result = ''' <h1>%s of %s</h1> ''' -possible_parameters = ['param1', 'param2', 'param3', 'param4','hiddenparam','param5','param6'] +possible_parameters = ['param1', 'param2', 'param3', 'param4','hiddenparam','param5','param6','param7','uFile','param8'] if __name__ == '__main__': - cgiprint(contentheader) # content header - cgiprint() # finish headers with blank line + + #cgiprint(contentheader) # content header + #cgiprint() # finish headers with blank line theform = cgi.FieldStorage() #print theform @@ -246,19 +299,31 @@ if __name__ == '__main__': hidden = formdict['hiddenparam'] all_update_type=formdict['param5'] kill_type = formdict['param6'] + dl_file = formdict['param7'] + try: + up_file = theform['uFile'] + except: + pass + try: + prestore = theform['param8'].value + except: + prestore = "off" body = result % (radio, hidden) - print mainpage % body + #print mainpage % body selection=radio myhost=hidden.lower() if selection == "Restore": - mylogfile=go_restore(name,myhost) + mylogfile=go_restore(name,myhost,prestore) elif selection == "Backup": mylogfile=go_backup(myhost) + elif selection == "Dbackup": + mylogfile=go_download_backup(dl_file) + elif selection == "Update": mylogfile=go_update(myhost,update_type) elif selection == "Shutdown": @@ -275,14 +340,25 @@ if __name__ == '__main__': mylogfile=go_shutdownall() elif selection == "Kill": mylogfile=go_kill(myhost,kill_type) + elif selection == "Upload": + mylogfile = go_upload(up_file) + + + cgiprint(contentheader) # content header + cgiprint() # finish headers with blank line + print mainpage % body + + #box=''' </br> </br> + #<div style="border: 1px solid #aaa; width:700px; height:700px; overflow:auto; color:#FFF;text-align:left;"> + #<code id="box" style="display: block; height: 700px; width: 700px; overflow: auto;"> + #''' + box='''</br> </br> + <div id="resultbox" > - box=''' </br> </br> - <div style="border: 1px solid #aaa; width:700px; height:700px; overflow:auto; color:#FFF;text-align:left;"> - <code id="box" style="display: block; height: 700px; width: 700px; overflow: auto;"> ''' endbox=''' - </code> + </div> ''' javascript=''' |