def hits_record(self, sourceip): d = db.get_db() ip = ipaddr.IPAddress(sourceip) hittoday = db.query_db("select * from hits where short=? and hitdate=date('now')", [self.short]) hitfield = "hits%s" % (ip.version) # update hit counters if len(hittoday) == 0: d.execute("insert into hits (short,hitdate,%s) values (?,date('now'),1)" % (hitfield), [self.short]) else: d.execute("update hits set %s=%s+1 where short=? and hitdate=date('now')" % (hitfield, hitfield), [self.short]) d.commit() return
def create(username, password): username = username.lower().strip() if User.exists(username) is True: raise Exception("user '%s' already exists" % (username)) hash = pbkdf2_sha256.encrypt(password, rounds=200000, salt_size=16) d = db.get_db() d.execute('insert into users (username,password) values (?,?)', [username, hash]) d.commit() if User.exists(username) is False: raise Exception("created user '%s' does not exist" % (username)) u = User(username) if u is None: raise Exception("created user '%s' is None" % (username)) return u
def authenticate(username, password): username = username.lower().strip() if len(username) == 0 or len(password) == 0: return None userdb = db.query_db("select * from users where username = ?", [username]) if len(userdb) == 1: # user exists, check the hash hash = userdb[0]["password"] if pbkdf2_sha256.verify(password, hash): d = db.get_db() d.execute("update users set logins = logins + 1, last_login = date('now') where username = ?", [username]) d.commit() return User(username) return None
def delete(self): d = db.get_db() d.execute('delete from users where username = ?', [self.username]) d.commit() return None
def create(short, dest, createdby, custom='', notes=''): d = db.get_db() d.execute("insert into urls (short,dest,createdon,createdby,custom,notes) values (?,?,date('now'),?,?,?)", [short, dest, createdby, custom, notes]) d.commit() newurl = Url(short) return newurl
def delete(self): d = db.get_db() d.execute("delete from urls where short = ?", [self.short]) d.execute("delete from hits where short = ?", [self.short]) d.commit() return