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
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")
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")
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")
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
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")
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")
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")
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")
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")
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")
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")
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")
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"
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"
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")