示例#1
0
class User(UserMixin, db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    email = db.Column(db.String(64), nullable=False, unique=True)
    username = db.Column(db.String(32), nullable=False, unique=True)
    password_hash = db.Column(db.String(128))
    register_time = db.Column(db.DateTime, default=datetime.now)
    # confirmed = db.Column(db.Boolean, default=False)
    deleted = db.Column(db.Boolean, default=False)
    icon = db.Column(db.LargeBinary(65536), default=False)
    # content = db.relationship('Content', backref='user')
    contents = db.relationship('Content', backref='user', secondary='ucpc')
    pictures = db.relationship('Picture', backref='user', secondary='ucpc')
    comments = db.relationship('Comment', backref='user', secondary='ucpc')

    # followed = db.relationship('Follow',
    #                            foreign_keys=[Follow.follower_id],
    #                            backref=db.backref('follower', lazy='joined'),
    #                            lazy='dynamic',
    #                            cascade='all, delete-orphan')
    # followers = db.relationship('Follow',
    #                             foreign_keys=[Follow.followed_id],
    #                             backref=db.backref('followed', lazy='joined'),
    #                             lazy='dynamic',
    #                             cascade='all, delete-orphan')
    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)
示例#2
0
class Picture(db.Model):
    __tablename__ = 'picture'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    picture_name = db.Column(db.String(128), unique=True, nullable=False)
    picture_datetime = db.Column(db.DateTime, default=datetime.now)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
    picture_binary = db.Column(db.LargeBinary(16777216))

    users = db.relationship('User', backref='picture', secondary='ucpc')
    contents = db.relationship('Content', backref='picture', secondary='ucpc')
    comments = db.relationship('Comment', backref='picture', secondary='ucpc')
示例#3
0
class PcapUDPStream(db.Model):
    __tablename__ = 'pcap_udpstream'
    sid = db.Column(db.Integer,
                    primary_key=True,
                    autoincrement=True,
                    index=True)
    pid = db.Column(db.Integer)
    sindex = db.Column(db.Integer)
    raw = db.Column(db.LargeBinary(1500))

    def __init__(self, raw):
        self.raw = raw
示例#4
0
class User(UserMixin, mysql_db.Model):
    __tablename__ = 'users'
    id = mysql_db.Column(mysql_db.Integer, primary_key=True)
    username = mysql_db.Column(mysql_db.String(64), unique=True, index=True)
    password = mysql_db.Column(mysql_db.String(256))
    login_count = mysql_db.Column(mysql_db.Integer, default=0)
    last_login_ip = mysql_db.Column(mysql_db.String(32), default='unknown')
    pic = mysql_db.Column(mysql_db.LargeBinary())
    nickname = mysql_db.Column(mysql_db.String(64))

    # 不能读取
    @property
    def pwd(self):
        raise Exception("you cant read it")

    @pwd.setter
    def pwd(self, password):
        self.password = generate_password_hash(password)

    def check_password_hash(self, password):
        return check_password_hash(self.password, password)

    def is_authenticated(self):
        return True

    def is_anonymous(self):
        return False

    def is_active(self):
        return True

    def get_id(self):
        return str(self.id)

    def is_admin(self):
        return self.username == 'admin'
示例#5
0
class PcapRes(db.Model):
    __tablename__ = 'pcap_result'
    rid = db.Column(db.Integer,
                    primary_key=True,
                    autoincrement=True,
                    index=True)
    pid = db.Column(db.Integer)
    raw = db.Column(db.LargeBinary(1500))

    def __init__(self, pid, raw):
        self.pid = pid
        self.raw = raw

    def __repr__(self):
        return '[{}]-{} {}'.format(self.rid, self.pid, loads(self.raw))

    def __str__(self):
        return '[{}]-{} {}'.format(self.rid, self.pid,
                                   self._layer2str(loads(self.raw)))

    def _layer2str(self, layer=None):
        layer_str = ''
        if hasattr(layer, 'fields'):
            layer_str += '<br/>&lt;' + layer.name + ' '
            for i in layer.fields:
                layer_str += i + '="' + escape(str(layer.fields[i])) + '" '
            layer_str += '&gt;'
            if hasattr(layer, 'payload'):
                if layer.payload.name == 'NoPayload':
                    return layer_str
                layer_str += self._layer2str(layer=layer.payload)
        return layer_str

    def _layer2dict(self, layer=None, filter=None):
        layer_dict = {}
        if hasattr(layer, 'fields'):

            for i in layer.fields:
                layer_dict[layer.name + '.' + i] = escape(str(layer.fields[i]))
            if hasattr(layer, 'payload'):
                if layer.payload.name == 'NoPayload':
                    return layer_dict
                layer_dict = dict(layer_dict,
                                  **self._layer2dict(layer=layer.payload))
        return layer_dict

    def add(self):
        db.session.add(self)
        db.session.commit()

    def tableformat(self, layer=None, filter=None):
        thead = '<tr>'
        tbody = '<tr>'
        layer_dict = self._layer2dict(layer=layer, filter=filter)
        for k in layer_dict:
            thead += '<th title="' + k.split('.')[0] + '">' + k.split(
                '.')[1] + '</th>'
            tbody += '<td>' + layer_dict[k] + '</td>'
        thead += '</tr>'
        tbody += '</tr>'
        return (thead, tbody)