diff --git a/mysecrets.py b/mysecrets.py index 9b6ead7..9cc4805 100755 --- a/mysecrets.py +++ b/mysecrets.py @@ -1,103 +1,153 @@ -import web -from web import form - -db = web.database(dbn='mysql', user='mysecrets', pw='horsebatteries', - db='mysecrets') - -urls = ( - '/secret/api/(.*)', 'api', - '/secret/(.*)', 'index' -) - -app = web.application(urls, globals()) - -render = web.template.render('templates/') - -create = form.Form( - form.Textbox('base_url', description="domain"), - form.Textbox('username'), - form.Password('password'), -) - - -class index: - def GET(self, method): - if method == 'get': - if web.input(): - i = web.input() - selected = db.select('passwords', where='`base_url`="'+i.base_url+'"') - - if len(selected) > 0: - pairs = '' - - else: - pairs = "

Sorry buddy, you're outta luck

" - - body = '

'+i.base_url+'

\n'+pairs - - return render.page(i.base_url, body) - - else: - return render.page('get','

need input.

') - - if method == 'new': - f = create() - - body = '

Create

\n
\n'+\ - f.render()+ '\n
' - - return render.page('create',body) - - - if method == 'create': - i = web.input() - n = db.insert('passwords', username=i.username, password=i.password, \ - base_url=i.base_url) - - body = '

'+i.base_url+'

'+i.username+', '+i.password+'

' - - return render.page('Created', body) - - - else: - return render.page('mySecrets', '

These are mySecrets. There is nothing for you here.

') - -class api: - def GET(self, method): - if method == "list": - tmp = '' - for pair in db.select('passwords'): - tmp += pair['base_url']+','+pair['username']+','+pair['password']+'\n' - - return tmp - - if method == "get": - i = web.input() - base_url = i.base_url - pairs = db.select('passwords', where='`base_url`="'+base_url+'"') - - tmp = '' - for pair in pairs: - tmp += pair.username+','+pair.password+'\n' - - return tmp - - else: - return 'mySecrets API ' + method - - def POST(self, method): - i = web.input() - n = db.insert('passwords', username=i.username, password=i.password, \ - base_url=i.base_url) - - body = '

'+i.base_url+'

'+i.username+', '+i.password+'

' - - return render.page('Created', body) - - -if __name__ == "__main__": - app.run() +#!/usr/bin/env python + +import string +import random +import web +from web import form + +db = web.database(dbn='mysql', user='mysecrets', pw='horsebatteries', + db='mysecrets') + +urls = ( + '/secret/api/(.*)', 'api', + '/secret/(.*)', 'index' +) + +app = web.application(urls, globals()) + +render = web.template.render('templates/') + +create = form.Form( + form.Textbox('base_url', description="domain"), + form.Textbox('username'), + form.Password('password'), +) + +def mkpass(size=10): + validChars = string.ascii_letters + string.digits + validChars = validChars.strip("oO0") + + return string.join([random.choice(validChars) for x in range(size)],"") + +def get_pair_from_url(base_url): + return db.select('passwords', where='base_url LIKE "%'+base_url+'%"') + +def get_generated_from_url(base_url): + gen = db.select('generated', where='base_url LIKE "%'+base_url+'%"') + + while not len(gen) > 0: + db.insert('generated', base_url = base_url, password = mkpass()) + gen = db.select('generated', where='base_url LIKE "%'+base_url+'%"') + + return gen + + +class index: + def GET(self, method): + if method == 'get': + if web.input(): + i = web.input() + selected = get_pair_from_url(i.base_url) + + if len(selected) > 0: + pairs = '' + + else: + pairs = "

Sorry buddy, you're outta luck

" + + body = '

'+i.base_url+'

\n'+pairs + + return render.page(i.base_url, body) + + else: + return render.page('get','

need input.

') + + if method == 'new': + + i = web.input() + + f = create() + + body = [] + + body.append('

'+i.base_url+'

\n') + + selected = get_pair_from_url(i.base_url) + generated = get_generated_from_url(i.base_url) + + if selected: + body.append('

Existing: \n') + for pair in selected: + body.append('('+pair.username+', '+pair.password+')\n') + body.append('

') + + body.append('

Generated: ' + generated[0].password + '

') + + body.append('
\n'+ \ + f.render()+ '\n
') + + return render.page('create',''.join(body)) + + + if method == 'create': + i = web.input() + n = db.insert('passwords', username=i.username, password=i.password, \ + base_url=i.base_url) + + selected = get_pair_from_url(i.base_url) + + body = '

'+i.base_url+'

'+selected[0].username+', '+selected[0].password+'

' + + return render.page('Created', body) + + + if method == 'generate': + i = web.input() + + body = '

'+i.base_url+'

\n

'+get_generated_from_url(i.base_url)[0].password+'

' + + return render.page('Generated', body) + + + else: + return render.page('mySecrets', '

These are mySecrets. There is nothing for you here.

') + +class api: + def GET(self, method): + if method == "list": + tmp = '' + for pair in db.select('passwords'): + tmp += pair['base_url']+','+pair['username']+','+pair['password']+'\n' + + return tmp + + if method == "get": + i = web.input() + base_url = i.base_url + pairs = db.select('passwords', where='`base_url`="'+base_url+'"') + + tmp = '' + for pair in pairs: + tmp += pair.username+','+pair.password+'\n' + + return tmp + + else: + return 'mySecrets API ' + method + + def POST(self, method): + i = web.input() + n = db.insert('passwords', username=i.username, password=i.password, \ + base_url=i.base_url) + + body = '

'+i.base_url+'

'+i.username+', '+i.password+'

' + + return render.page('Created', body) + + +if __name__ == "__main__": + web.wsgi.runwsgi = lambda func, addr=None: web.wsgi.runfcgi(func, addr) + app.run()