3,699
edits
(v1.01 fixing problems with \ at the end of the scanpath) |
(v1.02 added nagscreens to prevent the worst bugs + catching a couple more exceptions) |
||
Line 1: | Line 1: | ||
<pre> | <pre> | ||
import wx,os,subprocess | import wx,os,subprocess | ||
class mainFrame(wx.Frame): | class mainFrame(wx.Frame): | ||
Line 20: | Line 6: | ||
__options = {'avdump':'avdump.exe','user':'','pass':'','ext':'','misc':'','bsize':'2048','port':'','tout':'30','retries':'6','exp':'export.txt','log':'log.txt','done':'done.txt'} | __options = {'avdump':'avdump.exe','user':'','pass':'','ext':'','misc':'','bsize':'2048','port':'','tout':'30','retries':'6','exp':'export.txt','log':'log.txt','done':'done.txt'} | ||
__configfile='config.ini' | __configfile='config.ini' | ||
def read_config(self): | def read_config(self,newconfig=''): | ||
'''read the config file and return the content''' | '''read the config file and return the content''' | ||
if not os.path.exists(self.__configfile): | if not os.path.exists(self.__configfile): | ||
self. | for elem in self.__options: | ||
for line in | newconfig += ('%s=%s\n') %(elem,self.__options[elem]) | ||
open(self.__configfile,"w").write(newconfig) | |||
for line in open(self.__configfile,"r").readlines(): | |||
if not line.endswith('='): | if not line.endswith('='): | ||
temp,val = line.rstrip('\n').split('=',1) | temp,val = line.rstrip('\n').split('=',1) | ||
Line 33: | Line 21: | ||
if temp == elem: | if temp == elem: | ||
self.__options[temp] = val | self.__options[temp] = val | ||
def __init__(self, parent, title): | def __init__(self, parent, title): | ||
wx.Frame.__init__(self, parent, -1, u'Avdump GUI', wx.DefaultPosition, (350, 140), style=wx.CLOSE_BOX | wx.SYSTEM_MENU | wx.CAPTION | 0 | 0 | wx.MINIMIZE_BOX) | wx.Frame.__init__(self, parent, -1, u'Avdump GUI', wx.DefaultPosition, (350, 140), style=wx.CLOSE_BOX | wx.SYSTEM_MENU | wx.CAPTION | 0 | 0 | wx.MINIMIZE_BOX) | ||
self.panel = wx.Panel(self, -1) | self.panel = wx.Panel(self, -1) | ||
self.filepath = wx.TextCtrl(self.panel, -1, '', (95, 25), size=(190, 24)) | self.filepath = wx.TextCtrl(self.panel, -1, '', (95, 25), size=(190, 24)) | ||
self.start = wx.Button(self.panel, -1, 'Start', (90,75), (-1, -1)) | self.start = wx.Button(self.panel, -1, 'Start', (90,75), (-1, -1)) | ||
Line 48: | Line 30: | ||
self.select = wx.Button(self.panel, -1, '...', (295, 25), (25, -1)) | self.select = wx.Button(self.panel, -1, '...', (295, 25), (25, -1)) | ||
self.scantype = wx.RadioBox(self.panel,-1,pos=(5,5),size=(-1, 59),style=wx.RA_VERTICAL,label='scantype',choices = ['Files','Folder']) | self.scantype = wx.RadioBox(self.panel,-1,pos=(5,5),size=(-1, 59),style=wx.RA_VERTICAL,label='scantype',choices = ['Files','Folder']) | ||
self.Bind(wx.EVT_BUTTON, self.selectClick, self.select) | self.Bind(wx.EVT_BUTTON, self.selectClick, self.select) | ||
self.Bind(wx.EVT_BUTTON, self.optionsClick, self.options) | self.Bind(wx.EVT_BUTTON, self.optionsClick, self.options) | ||
self.Bind(wx.EVT_BUTTON, self.startClick, self.start) | self.Bind(wx.EVT_BUTTON, self.startClick, self.start) | ||
self.child = OptionsFrame(self, 'App') | self.child = OptionsFrame(self, 'App') | ||
self.child.read_config() | |||
def selectClick(self, event,path=''): | def selectClick(self, event,path=''): | ||
Line 70: | Line 50: | ||
if dialog.ShowModal() == wx.ID_OK: | if dialog.ShowModal() == wx.ID_OK: | ||
path = '"' + dialog.GetPath().rstrip("\\") + '"' | path = '"' + dialog.GetPath().rstrip("\\") + '"' | ||
self.filepath.Clear() | self.filepath.Clear() | ||
dialog.Destroy() | dialog.Destroy() | ||
Line 77: | Line 56: | ||
def startClick(self, event): | def startClick(self, event): | ||
self.read_config() | |||
self.__options['param'] = '' | self.__options['param'] = '' | ||
if self.filepath.GetValue() != '': | if self.filepath.GetValue() == '': | ||
self. | self.child.error('You have to select some files or folder to scan!') | ||
elif (self.__options['user'] == '' or self.__options['pass'] == ''): | |||
self.child.error("You didn't enter your username and/or password in the options menu.") | |||
elif self.__options['avdump'] == '': | |||
self.child.error('You must specify the path to avdump.exe!') | |||
elif self.__options['avdump'] == 'avdump.exe': | |||
self.child.info('You should set the _absolute_ path to avdump.exe.\nOtherwise complications might arise.') | |||
else: | |||
if self.__options['misc'].lstrip(',') > 0: | if self.__options['misc'].lstrip(',') > 0: | ||
for elem in self.__options['misc'].split(','): | for elem in self.__options['misc'].split(','): | ||
Line 89: | Line 76: | ||
else: | else: | ||
self.__options['param'] += ' -' + elem + ':' + self.__options[elem] | self.__options['param'] += ' -' + elem + ':' + self.__options[elem] | ||
subprocess.call((' | subprocess.call(('%s -ac:%s:%s%s %s') %(self.__options['avdump'], self.__options['user'], self.__options['pass'], self.__options['param'], self.__options['scanpath'])) | ||
def optionsClick(self, event): | def optionsClick(self, event): | ||
self.child.refresh() | |||
self.child.Show(True) | self.child.Show(True) | ||
Line 103: | Line 91: | ||
if not os.path.exists(self.__configfile): | if not os.path.exists(self.__configfile): | ||
self.write_config() | self.write_config() | ||
for line in | for line in open(self.__configfile,"r").readlines(): | ||
if not line.endswith('='): | if not line.endswith('='): | ||
temp,val = line.rstrip('\n').split('=',1) | temp,val = line.rstrip('\n').split('=',1) | ||
Line 115: | Line 103: | ||
for elem in self.__options: | for elem in self.__options: | ||
newconfig += ('%s=%s\n') %(elem,self.__options[elem]) | newconfig += ('%s=%s\n') %(elem,self.__options[elem]) | ||
open(self.__configfile,"w").write(newconfig) | |||
def set_misc(self,misc=''): | def set_misc(self,misc=''): | ||
Line 132: | Line 120: | ||
self.__box[misc] = True | self.__box[misc] = True | ||
def __init__(self, parent, title): | def __init__(self, parent, title): | ||
wx.Frame.__init__(self, parent, -1, 'options', wx.DefaultPosition, (301, 691), style=wx.CLOSE_BOX | wx.SYSTEM_MENU | wx.CAPTION | 0 | 0 | wx.MINIMIZE_BOX) | wx.Frame.__init__(self, parent, -1, 'options', wx.DefaultPosition, (301, 691), style=wx.CLOSE_BOX | wx.SYSTEM_MENU | wx.CAPTION | 0 | 0 | wx.MINIMIZE_BOX) | ||
Line 193: | Line 180: | ||
if dialog.ShowModal() == wx.ID_OK: | if dialog.ShowModal() == wx.ID_OK: | ||
self.filepath.Clear() | self.filepath.Clear() | ||
self.filepath.write(dialog.GetPath()) | self.filepath.write('"' + dialog.GetPath().rstrip("\\") + '"') | ||
def selectlogClick(self, event): | def selectlogClick(self, event): | ||
Line 199: | Line 186: | ||
if dialog.ShowModal() == wx.ID_OK: | if dialog.ShowModal() == wx.ID_OK: | ||
self.logpath.Clear() | self.logpath.Clear() | ||
self.logpath.write(dialog.GetPath()) | self.logpath.write('"' + dialog.GetPath().rstrip("\\") + '"') | ||
def selectexpClick(self, event): | def selectexpClick(self, event): | ||
Line 205: | Line 192: | ||
if dialog.ShowModal() == wx.ID_OK: | if dialog.ShowModal() == wx.ID_OK: | ||
self.exppath.Clear() | self.exppath.Clear() | ||
self.exppath.write(dialog.GetPath()) | self.exppath.write('"' + dialog.GetPath().rstrip("\\") + '"') | ||
def selectdoneClick(self, event): | def selectdoneClick(self, event): | ||
Line 211: | Line 198: | ||
if dialog.ShowModal() == wx.ID_OK: | if dialog.ShowModal() == wx.ID_OK: | ||
self.donepath.Clear() | self.donepath.Clear() | ||
self.donepath.write(dialog.GetPath()) | self.donepath.write('"' + dialog.GetPath().rstrip("\\") + '"') | ||
def saveClick(self,event): | def saveClick(self,event): | ||
self.update() | self.update() | ||
self.Show(False) | if self.__options['avdump'] == '': | ||
self.error('You must specify the path to avdump.exe!') | |||
elif self.__options['avdump'] == 'avdump.exe': | |||
self.info('You should set the _absolute_ path to avdump.exe.\nOtherwise complications might arise.') | |||
else: | |||
self.Show(False) | |||
def cancelClick(self,event): | def cancelClick(self,event): | ||
Line 228: | Line 220: | ||
self.get_checkboxes(self.__options['misc']) | self.get_checkboxes(self.__options['misc']) | ||
self.filepath.Clear() | self.filepath.Clear() | ||
self.filepath.write(self.__options['avdump']) | self.filepath.write(self.__options['avdump'].rstrip('"').lstrip('"')) | ||
self.username.Clear() | self.username.Clear() | ||
self.username.write(self.__options['user']) | self.username.write(self.__options['user']) | ||
Line 244: | Line 236: | ||
self.retries.write(self.__options['retries']) | self.retries.write(self.__options['retries']) | ||
self.exppath.Clear() | self.exppath.Clear() | ||
self.exppath.write(self.__options['exp']) | self.exppath.write(self.__options['exp'].rstrip('"').lstrip('"')) | ||
self.logpath.Clear() | self.logpath.Clear() | ||
self.logpath.write(self.__options['log']) | self.logpath.write(self.__options['log'].rstrip('"').lstrip('"')) | ||
self.donepath.Clear() | self.donepath.Clear() | ||
self.donepath.write(self.__options['done']) | self.donepath.write(self.__options['done'].rstrip('"').lstrip('"')) | ||
self.ext.SetValue(self.__box['ext']) | self.ext.SetValue(self.__box['ext']) | ||
self.log.SetValue(self.__box['log']) | self.log.SetValue(self.__box['log']) | ||
Line 268: | Line 260: | ||
self.__options['pass'] = self.password.GetValue() | self.__options['pass'] = self.password.GetValue() | ||
self.__options['ext'] = self.extention.GetValue() | self.__options['ext'] = self.extention.GetValue() | ||
'''make sure it's mod 8 and at least 256kb''' | '''make sure it's mod 8 and at least 256kb''' | ||
if int(temp) < 256: | try: | ||
temp = int(self.buffersize.GetValue()) | |||
if int(temp) < 256: | |||
temp = 256 | |||
if not temp % 8: | |||
temp = temp - (temp%8) | |||
except: | |||
temp = 2048 | |||
self.__options['bsize'] = unicode(temp) | self.__options['bsize'] = unicode(temp) | ||
self.__options['port'] = self.portnumber.GetValue() | try: | ||
int(self.portnumber.GetValue()) | |||
self.__options['port'] = self.portnumber.GetValue() | |||
except: | |||
self.__options['port'] = '' | |||
self.__options['tout'] = self.timeout.GetValue() | self.__options['tout'] = self.timeout.GetValue() | ||
temp = int(self.timeout.GetValue()) | temp = int(self.timeout.GetValue()) | ||
'''make sure it's at least 20''' | '''make sure it's at least 20''' | ||
if int(temp) < 20: | try: | ||
temp = | if int(temp) < 20: | ||
temp = 20 | |||
except: | |||
temp = 30 | |||
self.__options['tout'] = unicode(temp) | self.__options['tout'] = unicode(temp) | ||
self.__options['retries'] = self.retries.GetValue() | try: | ||
int(self.retries.GetValue()) | |||
self.__options['retries'] = self.retries.GetValue() | |||
except: | |||
self.__options['retries'] = 6 | |||
self.__options['exp'] = self.exppath.GetValue() | self.__options['exp'] = self.exppath.GetValue() | ||
self.__options['log'] = self.logpath.GetValue() | self.__options['log'] = self.logpath.GetValue() | ||
Line 302: | Line 308: | ||
self.write_config() | self.write_config() | ||
def error(self,text): | |||
message = wx.MessageDialog(self,text,style=wx.ICON_ERROR | wx.OK) | |||
message.ShowModal() | |||
def info(self,text): | |||
message = wx.MessageDialog(self,text,style=wx.ICON_INFORMATION | wx.OK) | |||
message.ShowModal() | |||
class App(wx.App): | class App(wx.App): | ||
def OnInit(self): | def OnInit(self): | ||
Line 310: | Line 324: | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
app = App(True) | app = App(True) | ||
app.MainLoop() | app.MainLoop() | ||
</pre> | </pre> |