This commit is contained in:
ThomasV 2012-02-03 08:02:12 +01:00
parent d71d8d80ae
commit 382abc54a8
1 changed files with 31 additions and 18 deletions

View File

@ -19,7 +19,6 @@
import re, sys, getpass
from optparse import OptionParser
from wallet import Wallet
from interface import Interface
@ -29,6 +28,26 @@ _ud = re.compile('%([0-9a-hA-H]{2})', re.MULTILINE)
urldecode = lambda x: _ud.sub(lambda m: chr(int(m.group(1), 16)), x)
def alias(x):
import urllib
if wallet.is_valid(x):
xx = x
else:
m = re.match('([\w\-\.]+)@((\w[\w\-]+\.)+[\w\-]+)', x)
if m:
url = 'http://' + m.group(2) + '/bitcoin.id/' + m.group(1)
else:
url = 'http://' + x + '/bitcoin.id'
print url
try:
xx = urllib.urlopen(url).read().strip()
except:
xx = ''
if not wallet.is_valid(xx):
xx = ''
return xx
if __name__ == '__main__':
known_commands = ['help', 'validateaddress', 'balance', 'contacts', 'create', 'payto', 'sendtx', 'password', 'newaddress', 'addresses', 'history', 'label', 'gui', 'mktx','seed','import','signmessage','verifymessage']
@ -58,9 +77,11 @@ if __name__ == '__main__':
import gui
gui.init_wallet(wallet)
gui = gui.BitcoinGUI(wallet)
if re.match('^bitcoin:', cmd):
o = cmd[8:].split('?')
address = o[0]
address = alias(o[0])
if len(o)>1:
params = o[1].split('&')
else:
@ -70,23 +91,15 @@ if __name__ == '__main__':
for p in params:
k,v = p.split('=')
uv = urldecode(v)
if k=='amount': amount = uv
elif k=='label': label = uv
elif k =='signature': signature = uv
elif k =='identity':
if k == 'amount': amount = uv
elif k == 'label': label = uv
elif k == 'signature': signature = uv
elif k == 'identity':
identity = uv
if wallet.is_valid(identity):
signing_address = identity
else:
import urllib
url = 'http://'+identity+'/bitcoin.id'
try:
signing_address = urllib.urlopen(url).read().strip()
except:
# no need to display anything since verification will fail
signing_address = ''
else: print k,v
signing_address = alias(identity)
else:
print k,v
if k in ['identity','signature']:
cmd = cmd.replace('&%s=%s'%(k,v),'')