summaryrefslogtreecommitdiff
path: root/server/piztor
diff options
context:
space:
mode:
authorsjtufs <sjtu_fs@outlook.com>2013-08-25 15:45:55 +0800
committersjtufs <sjtu_fs@outlook.com>2013-08-25 15:45:55 +0800
commitac7633d8149a28af288ac0b850850cef9b13c151 (patch)
tree861fe3d57c114b5ec7f3141679428cc6302d21bc /server/piztor
parenta53f4d21238d2bccd58a22d7485e54f495dbd55d (diff)
This is alpha
Diffstat (limited to 'server/piztor')
-rw-r--r--server/piztor/exc.py17
-rw-r--r--server/piztor/import.py44
-rw-r--r--server/piztor/model.py79
3 files changed, 0 insertions, 140 deletions
diff --git a/server/piztor/exc.py b/server/piztor/exc.py
deleted file mode 100644
index 2c53dbf..0000000
--- a/server/piztor/exc.py
+++ /dev/null
@@ -1,17 +0,0 @@
-class PiztorError(Exception):
- pass
-
-class DBCurruptedError(PiztorError):
- pass
-
-class ConnectionError(PiztorError):
- pass
-
-class ReqReadError(ConnectionError):
- pass
-
-class BadReqError(ConnectionError):
- pass
-
-class BadTokenError(ConnectionError):
- pass
diff --git a/server/piztor/import.py b/server/piztor/import.py
deleted file mode 100644
index 1521849..0000000
--- a/server/piztor/import.py
+++ /dev/null
@@ -1,44 +0,0 @@
-from sqlalchemy import create_engine
-from sqlalchemy.orm import sessionmaker
-from model import *
-
-path = "piztor.sqlite"
-
-class UserData:
- def __init__(self, username, password, sex):
- self.username = username
- self.password = password
- self.sex = sex
-
-def create_database():
- engine = create_engine('sqlite:///' + path, echo = True)
- Base.metadata.drop_all(engine)
- Base.metadata.create_all(engine)
-
-def import_user_data(data):
- engine = create_engine('sqlite:///' + path, echo = True)
- Session = sessionmaker(bind = engine)
- session = Session()
- for user in data:
- um = UserModel(username = user.username, sex = user.sex)
- um.auth = UserAuth(user.password)
- um.location = LocationInfo(lat = 0, lng = 0)
- session.add(um)
- session.commit()
-
-if __name__ == '__main__':
-
- from sys import argv, exit
- if len(argv) != 2:
- print "Usage: " + argv[0] + " FILE"
- exit(0)
-
- data = list()
- with open(argv[1], 'r') as f:
- while True:
- line = f.readline().split()
- if len(line) == 0: break
- data.append(UserData(line[0], line[1], line[2]))
-
- create_database()
- import_user_data(data)
diff --git a/server/piztor/model.py b/server/piztor/model.py
deleted file mode 100644
index 70ca431..0000000
--- a/server/piztor/model.py
+++ /dev/null
@@ -1,79 +0,0 @@
-from sqlalchemy import Column, Integer, String, Float, ForeignKey, LargeBinary, Boolean
-from sqlalchemy.ext.declarative import declarative_base
-from sqlalchemy.orm import relationship, backref
-
-Base = declarative_base()
-
-_SALT_LEN = 16
-_TOKEN_LEN = 16
-
-class _TableName: # avoid typoes
- UserModel = 'users'
- LocationInfo = 'location_info'
- UserAuth = 'user_auth'
-
-class UserModel(Base):
- __tablename__ = _TableName.UserModel
-
- id = Column(Integer, primary_key = True)
- username = Column(String)
- sex = Column(Boolean)
- location = None
- auth = None
-
-class LocationInfo(Base):
- __tablename__ = _TableName.LocationInfo
-
- uid = Column(Integer, ForeignKey('users.id'), primary_key = True)
- lat = Column(Float(precesion = 64))
- lng = Column(Float(precesion = 64))
- user = relationship("UserModel", uselist = False,
- backref = backref("location", uselist = False,
- cascade = "all, delete-orphan"))
-
- # More: last_update
-
-from hashlib import sha256
-from os import urandom
-
-def _sprinkle_salt(uauth, passwd):
- data = sha256(uauth.salt)
- data.update(chr(0))
- data.update(passwd)
- return data.digest()
-
-def _random_binary_string(length):
- return urandom(length)
-
-class UserAuth(Base):
- __tablename__ = _TableName.UserAuth
-
- uid = Column(Integer, ForeignKey('users.id'), primary_key = True)
- password = Column(LargeBinary)
- salt = Column(LargeBinary)
- token = Column(LargeBinary)
-
- user = relationship("UserModel", uselist = False,
- backref = backref("auth", uselist = False,
- cascade = "all, delete-orphan"))
-
- def regen_token(self):
- self.token = sha256(_random_binary_string(_TOKEN_LEN)).digest()
-
- def __init__(self, passwd):
- self.set_password(passwd)
-
- def set_password(self, passwd):
- self.salt = _random_binary_string(_SALT_LEN)
- self.password = _sprinkle_salt(self, passwd)
- self.regen_token()
-
- def check_password(self, passwd):
- passwd = _sprinkle_salt(self, passwd)
- return passwd == self.password
-
- def check_token(self, tk):
- return self.token == tk
-
- def get_token(self):
- return self.token