Beispiel #1
0
def getAppFromToken(apiKey, secretKey):
    "获取应用信息"
    sql = "select aid from paas_app_token where apiKey = '%s' AND secretKey = '%s'" % (
        sqlDeal(apiKey), sqlDeal(secretKey))
    dao = db.execute(sql)
    r = objToDict(dao.first())
    dao.close()
    return r
Beispiel #2
0
def addApp():
    "添加应用"
    if request.method == "GET":
        g.add=True
        g.obj={}
        
        sql="select * from paas_account where status != 3"
        dao=db.execute(sql)
        g.users=map(objToDict,dao.fetchall())
        dao.close()
        
        return render_template("admin/addApp.html")
    else:
        uid=request.form.get("uid",None)
        title=request.form.get("title",None)
        description=request.form.get("description",None)
        language=request.form.get("language",None)
        host=request.form.get("host",None)
        gitUrl=request.form.get("gitUrl",None)
        #处理git地址,防止注入恶意代码
        gitUrl=gitUrl.replace(" ","")
        
        #添加应用信息
        session=Session()
        obj=AppModel(title,description,uid,language,host,gitUrl,-1)
        session.add(obj)
        session.commit()
        
        #记录应用路径,用户,用户组
        appUser,appGroup,appPath=client.getAppMessage(obj.id,sqlDeal(language))
        sql="update paas_app set appAccount = '%s' , appGroup = '%s',appPath = '%s' where id = %d"%(appUser,appGroup,appPath,obj.id)
        dao=db.execute(sql)
        dao.close()
        
        #为应用创建一个数据库,但是静态环境不需要数据库
        if language != "static":
            dbName=hashlib.md5(str(time.time())).hexdigest()
            username=hashlib.md5(uid+str(time.time())).hexdigest()[8:-8]
            password=hashlib.md5(title.encode("UTF-8")+str(time.time())).hexdigest()
            #建立数据库
            buildDb(dbName,username,password)
        
            sql="insert into paas_db(uid,aid,dbName,username,password,host,port) values('%s','%s','%s','%s','%s','%s','%s')"%(sqlDeal(uid),str(obj.id),dbName,username,password,config.MYSQL_HOST,config.MYSQL_PORT)
            dao=db.execute(sql)
            dao.close()
        
        #初始化应用
        client.buildApp(obj.id,sqlDeal(host),sqlDeal(language))
        
        #生成apiKey和secretKey
        apiKey=hashlib.md5("apiKey_"+str(time.time())).hexdigest()
        secretKey=hashlib.md5("secretKey_"+str(time.time())).hexdigest()
        sql="insert into paas_app_token(aid,apiKey,secretKey) values('%s','%s','%s')"%(str(obj.id),apiKey,secretKey)
        dao=db.execute(sql)
        dao.close()
        
        return redirect("/admin/appManager")   
Beispiel #3
0
def deleteUser():
    "删除用户"
    uid = request.args.get("id", None)
    sql = "update paas_account set status = 3 where id = " + sqlDeal(uid)
    dao = db.execute(sql)
    dao.close()
    return redirect("/admin/userManager")
Beispiel #4
0
def editApp():
    "编辑应用"
    aid=request.args.get("id",None)
    if request.method == "GET":
        g.add=False
        
        sql="select * from paas_app where id = %s limit 1"%(sqlDeal(aid))
        dao=db.execute(sql)
        g.obj=objToDict(dao.first())
        dao.close()
        
        sql="select * from paas_account where status != 3"
        dao=db.execute(sql)
        g.users=map(objToDict,dao.fetchall())
        dao.close()
        
        return render_template("admin/addApp.html")
    else:
        
        uid=request.form.get("uid",None)
        title=request.form.get("title",None)
        description=request.form.get("description",None)
        language=request.form.get("language",None)
        host=request.form.get("host",None)
        gitUrl=request.form.get("gitUrl",None)
        #处理git地址,防止注入恶意代码
        gitUrl=gitUrl.replace(" ","")
        
        args=map(sqlDeal,[uid,title,description,language,host,gitUrl,aid])
        
        sql="update paas_app set uid = '%s',title='%s',description='%s',language='%s',host='%s',gitUrl='%s' where id = %s"%tuple(args)
        dao=db.execute(sql)
        dao.close()
        return redirect("/admin/appManager")
Beispiel #5
0
def getAppFromToken(apiKey,secretKey):
    "获取应用信息"
    sql="select aid from paas_app_token where apiKey = '%s' AND secretKey = '%s'"%(sqlDeal(apiKey),sqlDeal(secretKey))
    dao=db.execute(sql)
    r=objToDict(dao.first())
    dao.close()
    return r
Beispiel #6
0
def deleteUser():
    "删除用户"
    uid=request.args.get("id",None)
    sql="update paas_account set status = 3 where id = "+sqlDeal(uid)
    dao=db.execute(sql)
    dao.close()
    return redirect("/admin/userManager")
Beispiel #7
0
def deleteApp():
    "删除应用"
    uid=request.args.get("id",None)
    sql="update paas_app set status = 4 where id = "+sqlDeal(uid)
    dao=db.execute(sql)
    dao.close()
    return redirect("/admin/appManager")
Beispiel #8
0
def userMessage():
    "修改用户信息"
    
    uid=request.args.get("id",None)
    
    if request.method == "GET":
        g.title=u"修改信息"
        g.add=False
        
        dao=db.execute("select * from paas_account where id = %s limit 1"%(sqlDeal(uid)))
        g.obj=objToDict(dao.fetchone())
        dao.close()
        return render_template("admin/userAdd.html")
    else:
        
        password=request.form.get("password",None)
        status=request.form.get("status",None)
        realname=request.form.get("realname",None)
        college=request.form.get("college",None)
        specialty=request.form.get("specialty",None)
        
        if password == "":
            args=map(sqlDeal,(status,realname,college,specialty,uid))
            sql="update paas_account set status = '%s',realname = '%s',college = '%s',specialty='%s' where id = %s"%tuple(args)
        else:
            #加密密码
            password=hashlib.md5(password).hexdigest()
            args=map(sqlDeal,(password,status,realname,college,specialty,uid))
            sql="update paas_account set password = '******',status = '%s',realname = '%s',college = '%s',specialty='%s' where id = %s"%tuple(args)
            
        #修改用户信息
        dao=db.execute(sql)
        dao.close()
        
        return redirect("/admin/userManager")
Beispiel #9
0
def deleteApp():
    "删除应用"
    aid = request.args.get("id", None)

    #删除应用前停止运行
    client.stopApp(int(aid.encode("UTF-8")))

    sql = "update paas_app set status = 4 where id = " + sqlDeal(aid)
    dao = db.execute(sql)
    dao.close()

    return redirect("/admin/appManager")
Beispiel #10
0
def deleteApp():
    "删除应用"
    aid=request.args.get("id",None)
    
    #删除应用前停止运行
    client.stopApp(int(aid.encode("UTF-8")))
    
    
    sql="update paas_app set status = 4 where id = "+sqlDeal(aid)
    dao=db.execute(sql)
    dao.close()
    
    return redirect("/admin/appManager")
Beispiel #11
0
def account():
    "用户请登录"
    if request.method == "GET":
        return render_template("user/account.html")
    else:
        username = request.form.get("username", None)
        password = hashlib.md5(request.form.get("password", None)).hexdigest()
        sql = "select * from paas_account where username = '******' AND password = '******' limit 1" % (
            sqlDeal(username), sqlDeal(password))
        dao = db.execute(sql)
        obj = dao.first()
        if obj != None:
            obj = objToDict(obj)
            session['user'] = obj['id']
            r = True
        else:
            r = False
        dao.close()

        if r:
            return redirect("/user/")
        else:
            return redirect("/user/account")
Beispiel #12
0
def account():
    "用户请登录"
    if request.method == "GET":
        return render_template("user/account.html")
    else:
        username = request.form.get("username", None)
        password = hashlib.md5(request.form.get("password", None)).hexdigest()
        sql = "select * from paas_account where username = '******' AND password = '******' limit 1" % (
            sqlDeal(username), sqlDeal(password))
        dao = db.execute(sql)
        obj = dao.first()
        if obj != None:
            obj = objToDict(obj)
            session['user'] = obj['id']
            r = True
        else:
            r = False
        dao.close()

        if r:
            return redirect("/user/")
        else:
            return redirect("/user/account")
Beispiel #13
0
def editApp():
    "编辑应用"
    aid = request.args.get("id", None)

    sql = "select * from paas_app where id = %s limit 1" % (sqlDeal(aid))
    dao = db.execute(sql)
    g.obj = objToDict(dao.first())
    dao.close()

    if request.method == "GET":
        g.add = False

        sql = "select * from paas_account where status != 3"
        dao = db.execute(sql)
        g.users = map(objToDict, dao.fetchall())
        dao.close()

        return render_template("admin/addApp.html")
    else:

        uid = request.form.get("uid", None)
        title = request.form.get("title", None)
        description = request.form.get("description", None)
        host = request.form.get("host", None)
        gitUrl = request.form.get("gitUrl", None)
        #处理git地址,防止注入恶意代码
        gitUrl = gitUrl.replace(" ", "")

        args = map(sqlDeal, [uid, title, description, host, gitUrl, aid])

        sql = "update paas_app set uid = '%s',title='%s',description='%s',host='%s',gitUrl='%s' where id = %s" % tuple(
            args)
        dao = db.execute(sql)
        dao.close()

        #修改配置文件,防止修改域名后nginx配置文件不一致
        obj = g.obj
        webApp.buildMainServerConfig(obj['id'], obj['host'],
                                     obj['remoteSocket'])

        return redirect("/admin/appManager")
Beispiel #14
0
def userMessage():
    "修改用户信息"

    uid = request.args.get("id", None)

    if request.method == "GET":
        g.title = u"修改信息"
        g.add = False

        dao = db.execute("select * from paas_account where id = %s limit 1" %
                         (sqlDeal(uid)))
        g.obj = objToDict(dao.fetchone())
        dao.close()
        return render_template("admin/userAdd.html")
    else:

        password = request.form.get("password", None)
        status = request.form.get("status", None)
        realname = request.form.get("realname", None)
        college = request.form.get("college", None)
        specialty = request.form.get("specialty", None)

        if password == "":
            args = map(sqlDeal, (status, realname, college, specialty, uid))
            sql = "update paas_account set status = '%s',realname = '%s',college = '%s',specialty='%s' where id = %s" % tuple(
                args)
        else:
            #加密密码
            password = hashlib.md5(password).hexdigest()
            args = map(sqlDeal,
                       (password, status, realname, college, specialty, uid))
            sql = "update paas_account set password = '******',status = '%s',realname = '%s',college = '%s',specialty='%s' where id = %s" % tuple(
                args)

        #修改用户信息
        dao = db.execute(sql)
        dao.close()

        return redirect("/admin/userManager")
Beispiel #15
0
def develop():
    "发布应用"

    #提取应用信息
    aid = int(request.form.get("aid", None))
    sql = "select * from paas_app where id = %d limit 1" % (aid)
    dao = db.execute(sql)
    appData = objToDict(dao.first())
    dao.close()

    #把任务交给后台队列
    option = request.form.get("option", None)
    if option == "reboot":
        gitUrl = ""
        command = "cp"
    elif option == "develop":
        gitUrl = appData['gitUrl']
        if git.checkLocationCode(aid):
            command = "pull"
        else:
            command = "clone"

    executeSql = "update paas_app set status = 1 where id = %d" % (aid)

    #为了防止恶意不断请求操作应用,因此一段时间只保存一个操作
    sql = "delete from paas_gitQueue where aid = %d" % (aid)
    dao = db.execute(sql)
    dao.close()

    sql = "insert into paas_gitQueue(aid,command,gitUrl,executeSql,appAccount,appGroup,appPath) values(%d,'%s','%s','%s','%s','%s','%s')" % (
        aid, command, gitUrl, sqlDeal(executeSql), appData['appAccount'],
        appData['appGroup'], appData['appPath'])
    dao = db.execute(sql)
    dao.close()

    return "ok"
Beispiel #16
0
def develop():
    "发布应用"
    
    #提取应用信息
    aid=int(request.form.get("aid",None))
    sql="select * from paas_app where id = %d limit 1"%(aid)
    dao=db.execute(sql)
    appData=objToDict(dao.first())
    dao.close()
    
    #把任务交给后台队列
    option=request.form.get("option",None)
    if option == "reboot":
        gitUrl=""
        command="cp"
    elif option == "develop":
        gitUrl=appData['gitUrl']
        if git.checkLocationCode(aid):
            command="pull"
        else:
            command="clone"
            
    executeSql="update paas_app set status = 1 where id = %d"%(aid)
    
    #为了防止恶意不断请求操作应用,因此一段时间只保存一个操作
    sql="delete from paas_gitQueue where aid = %d"%(aid)
    dao=db.execute(sql)
    dao.close()
    
    sql="insert into paas_gitQueue(aid,command,gitUrl,executeSql,appAccount,appGroup,appPath) values(%d,'%s','%s','%s','%s','%s','%s')"%(aid,command,gitUrl,sqlDeal(executeSql),appData['appAccount'],appData['appGroup'],appData['appPath'])
    dao=db.execute(sql)
    dao.close()
    
    return "ok"
Beispiel #17
0
def addApp():
    "添加应用"
    if request.method == "GET":
        g.add = True
        g.obj = {}

        sql = "select * from paas_account where status != 3"
        dao = db.execute(sql)
        g.users = map(objToDict, dao.fetchall())
        dao.close()

        return render_template("admin/addApp.html")
    else:
        uid = request.form.get("uid", None)
        title = request.form.get("title", None)
        description = request.form.get("description", None)
        language = request.form.get("language", None)
        host = request.form.get("host", None)
        gitUrl = request.form.get("gitUrl", None)
        #处理git地址,防止注入恶意代码
        gitUrl = gitUrl.replace(" ", "")

        #添加应用信息
        session = Session()
        obj = AppModel(title, description, uid, language, host, gitUrl, -1)
        session.add(obj)
        session.commit()

        #记录应用路径,用户,用户组
        appUser, appGroup, appPath = client.getAppMessage(
            obj.id, sqlDeal(language))
        sql = "update paas_app set appAccount = '%s' , appGroup = '%s',appPath = '%s' where id = %d" % (
            appUser, appGroup, appPath, obj.id)
        dao = db.execute(sql)
        dao.close()

        #为应用创建一个数据库,但是静态环境不需要数据库
        if language != "static":
            dbName = hashlib.md5(str(time.time())).hexdigest()
            username = hashlib.md5(uid + str(time.time())).hexdigest()[8:-8]
            password = hashlib.md5(title.encode("UTF-8") +
                                   str(time.time())).hexdigest()
            #建立数据库
            buildDb(dbName, username, password)

            sql = "insert into paas_db(uid,aid,dbName,username,password,host,port) values('%s','%s','%s','%s','%s','%s','%s')" % (
                sqlDeal(uid), str(obj.id), dbName, username, password,
                config.MYSQL_HOST, config.MYSQL_PORT)
            dao = db.execute(sql)
            dao.close()

        #初始化应用
        client.buildApp(obj.id, sqlDeal(host), sqlDeal(language))

        #生成apiKey和secretKey
        apiKey = hashlib.md5("apiKey_" + str(time.time())).hexdigest()
        secretKey = hashlib.md5("secretKey_" + str(time.time())).hexdigest()
        sql = "insert into paas_app_token(aid,apiKey,secretKey) values('%s','%s','%s')" % (
            str(obj.id), apiKey, secretKey)
        dao = db.execute(sql)
        dao.close()

        return redirect("/admin/appManager")