diff --git a/client/electrum b/client/electrum index 9731e130..7ed6dfcb 100755 --- a/client/electrum +++ b/client/electrum @@ -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),'')