Changeset 332

Show
Ignore:
Timestamp:
06/15/09 20:28:07 (3 years ago)
Author:
ocjhb
Message:

added password, but disable - password should not be required for receiving coins

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/sandbox/jhb/webwallet/cgi/wallet.cgi

    r331 r332  
    22 
    33libdir = '/home/joerg/opencoin' 
    4 datadir = '/home/joerg/opencoin/webwallet' 
     4datadir = '/home/joerg/opencoin/webwallet/data' 
    55 
    66################################## 
     
    1414from oc2 import wallet, transports 
    1515 
    16  
     16#for key,value in os.environ.items(): 
     17#    print '%s: %s<br>\n' % (key,value) 
     18#print str(username)     
    1719 
    1820class CGIWallet: 
     
    3335        print "\r" 
    3436        if self.mimetype == 'text/html': 
    35             print '<html><body><small>%s</small>' % (baseserver+baseurl) 
     37            print '<html><body>' 
     38            #print '<small><a href="%s?action=logout">Logout</a></small>' % (baseurl) 
    3639            print '<br/>\n'.join(self.output) 
    3740            print '</body></html>' 
     
    4750    def dispatchRequest(self): 
    4851        self.env = os.environ 
    49         self.form = cgi.FieldStorage(keep_blank_values=1) 
    5052        self.action = action = self.form.getfirst('action','') 
    5153        self.method = method = self.env['REQUEST_METHOD'].lower() 
     
    5557                           redeem = self.redeemCoins, 
    5658                           delcurrency = self.delCurrency, 
    57                            spend = self.spendCoins) 
     59                           spend = self.spendCoins, 
     60                           login = self.displayMain) 
    5861 
    5962        getmapping = dict(addcurrency = self.displayAddCurrency, 
     
    276279        self.out(answer.toString(True)) 
    277280 
     281form = cgi.FieldStorage(keep_blank_values=1) 
     282 
    278283baseserver = "http://%s:%s" % (os.environ['SERVER_NAME'],os.environ['SERVER_PORT']) 
    279 baseurl = os.environ['SCRIPT_NAME'] 
    280  
     284username = os.environ.get('PATH_INFO','') 
     285baseurl = os.environ['SCRIPT_NAME']+username 
     286 
     287def die(string): 
     288    print 'Content-type:text/plain\r\n' 
     289    print string 
     290    sys.exit(0) 
     291 
     292if  username == '/' or not username: 
     293    die('username required, no direct access allowed. Try %s%s/YOURNAME' % (baseserver,baseurl)) 
     294username = username[1:]     
     295if username.startswith('.') or '/' in username: 
     296    die('hacking in, ey') 
     297 
     298if 0: 
     299    password = None 
     300 
     301    if form.has_key('password'):     
     302        password = form.getfirst('password') 
     303        print "Set-Cookie:%s=%s" % (username,password) 
     304    elif form.getfirst('action','') == 'logout': 
     305        print "Set-Cookie:%s=%s" % (username,'') 
     306    elif os.environ.has_key('HTTP_COOKIE'): 
     307        for cookie in [c.strip() for c in os.environ['HTTP_COOKIE'].split(';')]: 
     308            if not cookie: 
     309                continue 
     310            (key, value ) = cookie.split('='); 
     311            if key == username: 
     312                password = value 
     313 
     314 
     315    filepath = datadir+'/%s.bin' % username 
     316    storage = oc2storage.CryptedStorage() 
     317    storage.setPassword(password) 
     318    storage.setFilename(filepath) 
     319    message = '' 
     320    if password and not os.path.exists(filepath): 
     321        storage.save() 
     322    elif form.getfirst('action','') not in ['logout','']: 
     323        try: 
     324            storage.restore() 
     325            storage.save() 
     326        except:    
     327            print "Set-Cookie:%s=%s" % (username,'') 
     328            password = None 
     329            message = 'Wrong password<br>' 
     330 
     331    if not password: 
     332        print """Content-type:text/html 
     333 
     334        <html><body> 
     335        <form action='%s' method='post'> 
     336        %s 
     337        Enter your password: <input type='password' name='password'> <input type='submit'> 
     338        <input type='hidden' name='action' value='login' /> 
     339        </form> 
     340        </body></html> 
     341        """ % (baseurl,message) 
     342        sys.exit(0) 
     343filepath = datadir+'/%s.bin' % username 
    281344storage = oc2storage.Storage() 
    282 storage.setFilename(datadir+'/wallet.bin') 
     345storage.setFilename(filepath) 
    283346storage.restore() 
    284347w = CGIWallet(storage) 
     348w.form = form 
    285349w.dispatchRequest() 
    286350w.printout() 
     351 
     352 
     353 
     354#for key,value in os.environ.items(): 
     355#    print '%s: %s<br>\n' % (key,value) 
     356#print str(username)