コード例 #1
0
def add_user():
    name = request.form.get('name', default=None)
    password = request.form.get('password', default=None)
    email = request.form.get('email', default=None)
    sex = request.form.get('sex', default=None)
    db = DBSession()
    u = db.query(User).filter(User.name == name).first()
    if u is not None:
        db.close()
        error_message = '用户名' + name + '已存在,请重新输入'
        res = {
            'code': 100,
            'message': error_message,
            'data': {
                'email': email,
                'name': name
            }
        }
        return render_template('user/register.html', result=res)
    else:
        user = User(id=get_uuid(),
                    name=name,
                    password=password,
                    email=email,
                    sex=sex,
                    create_time=datetime.now())
        db.add(user)
        db.commit()
        db.close()
        res = {'code': 200, 'message': 'success'}
        return render_template('login.html', result=res)
コード例 #2
0
ファイル: restserver.py プロジェクト: czx0619/LABOSS
def cancel_guacamole_client(client_id, image, protocol=None):
    session = DBSession()
    guacamole_client_host = None
    guacamole_client_vm = None
    try:
        query = session.query(GuacamoleClientInfo)
        result = query.filter(
            GuacamoleClientInfo.user_info == client_id).filter(
                GuacamoleClientInfo.image == image).filter(
                    GuacamoleClientInfo.protocol == protocol).with_lockmode(
                        'update').first()
        if result != None:
            result.user_info = ''
            result.image = ''
            result.status = 0
            guacamole_server = result.guacamole_server
            guacamole_client_host = result.guacamole_client_host
            guacamole_client_vm = result.guacamole_client_vm

            query = session.query(GuacamoleServerLoad)
            result = query.filter(
                GuacamoleServerLoad.guacamole_server ==
                guacamole_server).with_lockmode('update').first()
            if result == None:
                pass

            result = server_protocol_update(protocol, -1, result)
            session.commit()
    except:
        print 'cancel a guacamole client failed...'
        session.rollback()
    finally:
        session.close()
        return guacamole_client_host, guacamole_client_vm
コード例 #3
0
ファイル: restserver.py プロジェクト: czx0619/LABOSS
def cancel_guacamole_client(client_id,image,protocol=None):
    session = DBSession()
    guacamole_client_host = None
    guacamole_client_vm = None
    try:
        query = session.query(GuacamoleClientInfo)
        result = query.filter(GuacamoleClientInfo.user_info == client_id).filter(GuacamoleClientInfo.image == image).filter(GuacamoleClientInfo.protocol == protocol).with_lockmode('update').first()
        if result != None:               
            result.user_info = ''
            result.image = ''
            result.status = 0
            guacamole_server = result.guacamole_server
            guacamole_client_host = result.guacamole_client_host
            guacamole_client_vm = result.guacamole_client_vm
            
            query = session.query(GuacamoleServerLoad)
            result = query.filter(GuacamoleServerLoad.guacamole_server==guacamole_server).with_lockmode('update').first()
            if result==None:
                pass
            
            result = server_protocol_update(protocol, -1 , result)
            session.commit()
    except:
        print 'cancel a guacamole client failed...'
        session.rollback()
    finally:
        session.close()
        return guacamole_client_host,guacamole_client_vm
コード例 #4
0
ファイル: houseclean.py プロジェクト: Wiki616/LABOSS
def reset_guacamole_client():
    session = DBSession()
    query = session.query(GuacamoleClientInfo)
    #If I can add another condition for query to lock with update, for example, query.filter(GuacamoleClientInfo.guacamole_client_host=='').filter.......
    #Then this process can be more fine-grained
    result = query.filter(GuacamoleClientInfo.status==1).filter(GuacamoleClientInfo.user_info!='').with_lockmode('update').all()
    if result==None:
        return
    cur_time = datetime.now()
    for res in result:
        seconds = __time_diff(cur_time,res.latest_active_timestamp)
        if seconds>=client_time_limit:
            guacamole_client_vm = res.guacamole_client_vm
            guacamole_client_host = res.guacamole_client_host
            image = res.image
            
            res.user_info = ''
            res.status = 0
            res.image = ''
            protocol = res.protocol
            guacamole_server = res.guacamole_server
            query = session.query(GuacamoleServerLoad)
            result = query.filter(GuacamoleServerLoad.guacamole_server == guacamole_server).with_lockmode('update').first()
            result = __server_protocol_update(protocol,-1,result)
            
            signal = containerservice.shutdown_container(guacamole_client_vm,int(guacamole_client_host[guacamole_client_host.index(':')+1:]),image)
            if signal==False:
                #Record this error
                pass
    session.commit()
    session.close()
コード例 #5
0
def login():
    name = request.form.get('name', default=None)
    password = request.form.get('password', default=None)
    db = DBSession()
    user = db.query(User).filter(User.name == name,
                                 User.password == password).first()
    if user:
        db.close()
        session['name'] = name
        session['user_id'] = user.id
        # message = '用户名' + name + '登录成功'
        return redirect(url_for('blog.index'))
    else:
        message = '用户名或密码错误'
        res = {'name': name, 'age': 12, 'sex': '男', 'message': message}

        return render_template('login.html', result=res)
コード例 #6
0
ファイル: restserver.py プロジェクト: czx0619/LABOSS
def heart_beat(client_id, image):
    """Receive heart beat signal
    
    When a heart beat signal is received, the latest_active_timestamp of the record in database is updated
    """
    session = DBSession()
    try:
        query = session.query(GuacamoleClientInfo) 
        result = query.filter(GuacamoleClientInfo.user_info == client_id).filter(GuacamoleClientInfo.image == image).with_lockmode('update').first()
        if result != None:
            result.status = 1
            result.latest_active_timestamp = str(datetime.now())
        session.commit()
    except Exception:
        session.rollback()
    finally:
        session.close()
コード例 #7
0
ファイル: guacamoleserver.py プロジェクト: czx0619/LABOSS
def read_config(config_file):
    session = DBSession()
    tree = ElementTree()
    tree.parse(config_file)
    root = tree.getroot()
    server = root.attrib['name']
    server_vm = root.attrib['virtual_machine']
    protocals = root.getchildren()
    acnt = [0, 0, 0, 0]
    cur_datetime = datetime.now()
    t = []
    for protocal in protocals:
        pro_name = protocal.attrib['name']
        clients = protocal.getchildren()
        cnt = 0
        for client in clients:
            cnt += 1
            client_name = client.attrib['name']
            client_host = client[0].text
            client_vm = client[1].text
            guacamoleClientInfo = GuacamoleClientInfo('', '', server,
                                                      client_name, pro_name,
                                                      client_host, client_vm,
                                                      0, cur_datetime)
            #t.append(guacamoleClientInfo)
            session.add(guacamoleClientInfo)
        #session.commit()
        if pro_name == 'vnc':
            acnt[0] = cnt
        elif pro_name == 'vnc-read-only':
            acnt[1] = cnt
        elif pro_name == 'ssh':
            acnt[2] = cnt
        else:
            acnt[3] = cnt

    guacamoleServerLoad = GuacamoleServerLoad(server, server_vm, acnt[0],
                                              acnt[1], acnt[2], acnt[3],
                                              sum(acnt), cur_datetime, 0)
    #guacamoleServerLoad.guacamole_client_info = t
    session.add(guacamoleServerLoad)
    session.commit()
    session.close()
コード例 #8
0
ファイル: guacamoleserver.py プロジェクト: pombredanne/LABOSS
def read_config(config_file):
    session = DBSession()
    tree = ElementTree()
    tree.parse(config_file)
    root = tree.getroot()
    server = root.attrib["name"]
    server_vm = root.attrib["virtual_machine"]
    protocals = root.getchildren()
    acnt = [0, 0, 0, 0]
    cur_datetime = datetime.now()
    t = []
    for protocal in protocals:
        pro_name = protocal.attrib["name"]
        clients = protocal.getchildren()
        cnt = 0
        for client in clients:
            cnt += 1
            client_name = client.attrib["name"]
            client_host = client[0].text
            client_vm = client[1].text
            guacamoleClientInfo = GuacamoleClientInfo(
                "", "", server, client_name, pro_name, client_host, client_vm, 0, cur_datetime
            )
            # t.append(guacamoleClientInfo)
            session.add(guacamoleClientInfo)
        # session.commit()
        if pro_name == "vnc":
            acnt[0] = cnt
        elif pro_name == "vnc-read-only":
            acnt[1] = cnt
        elif pro_name == "ssh":
            acnt[2] = cnt
        else:
            acnt[3] = cnt

    guacamoleServerLoad = GuacamoleServerLoad(
        server, server_vm, acnt[0], acnt[1], acnt[2], acnt[3], sum(acnt), cur_datetime, 0
    )
    # guacamoleServerLoad.guacamole_client_info = t
    session.add(guacamoleServerLoad)
    session.commit()
    session.close()
コード例 #9
0
ファイル: restserver.py プロジェクト: czx0619/LABOSS
def heart_beat(client_id, image):
    """Receive heart beat signal
    
    When a heart beat signal is received, the latest_active_timestamp of the record in database is updated
    """
    session = DBSession()
    try:
        query = session.query(GuacamoleClientInfo)
        result = query.filter(
            GuacamoleClientInfo.user_info == client_id).filter(
                GuacamoleClientInfo.image == image).with_lockmode(
                    'update').first()
        if result != None:
            result.status = 1
            result.latest_active_timestamp = str(datetime.now())
        session.commit()
    except Exception:
        session.rollback()
    finally:
        session.close()
コード例 #10
0
def reset_guacamole_client():
    session = DBSession()
    query = session.query(GuacamoleClientInfo)
    #If I can add another condition for query to lock with update, for example, query.filter(GuacamoleClientInfo.guacamole_client_host=='').filter.......
    #Then this process can be more fine-grained
    result = query.filter(GuacamoleClientInfo.status == 1).filter(
        GuacamoleClientInfo.user_info != '').with_lockmode('update').all()
    if result == None:
        return
    cur_time = datetime.now()
    for res in result:
        seconds = __time_diff(cur_time, res.latest_active_timestamp)
        if seconds >= client_time_limit:
            guacamole_client_vm = res.guacamole_client_vm
            guacamole_client_host = res.guacamole_client_host
            image = res.image

            res.user_info = ''
            res.status = 0
            res.image = ''
            protocol = res.protocol
            guacamole_server = res.guacamole_server
            query = session.query(GuacamoleServerLoad)
            result = query.filter(
                GuacamoleServerLoad.guacamole_server ==
                guacamole_server).with_lockmode('update').first()
            result = __server_protocol_update(protocol, -1, result)

            signal = containerservice.shutdown_container(
                guacamole_client_vm,
                int(guacamole_client_host[guacamole_client_host.index(':') +
                                          1:]), image)
            if signal == False:
                #Record this error
                pass
    session.commit()
    session.close()