def test(pea, proto): client123 = ACLClient(proto, pea.customHandle, 609) session = client123.login('aa', '1231') client = templClient(proto, pea.customHandle, 607) with open('tests/master-public.pem') as f: publicKey1 = f.read() with open('tests/master-private.pem') as f: privateKey1 = f.read() with open('tests/ghost-public.pem') as f: publicKey2 = f.read() with open('tests/ghost-private.pem') as f: privateKey2 = f.read() def success(msg): print "success" def failed(msg): print "failed" # client.upContent(session, 'OrderType::type','1.2',"enum OrderType::type\n\n{\nOTGFD = 0,\nSIMULATION = 1,\nIOC = 2,\nPOTF = 3\n};\n\n").then( # success).catch(failed) # client.jsonRelation(session, 'IStrategy', '1.3').then( # success).catch(failed) # client.baseCheck(session, 'Automaton', '1.0').then( # success).catch(failed) # client.downLoad(session, 'OrderType::type', '1.2').then( # success).catch(failed) # client.getJsonCon(session, 'OrderType::type', '1.2').then( # success).catch(failed) # client.grantAuthority(session, '12').then( # success).catch(failed) client.templMerge(session).then( success).catch(failed)
def test(pea, proto): client123 = ACLClient(proto, pea.customHandle, 609) session = client123.login('aa', '1231') client = templClient(proto, pea.customHandle, 607) with open('tests/master-public.pem') as f: publicKey1 = f.read() with open('tests/master-private.pem') as f: privateKey1 = f.read() with open('tests/ghost-public.pem') as f: publicKey2 = f.read() with open('tests/ghost-private.pem') as f: privateKey2 = f.read() def success(msg): print "success" def failed(msg): print "failed" # client.upContent(session, 'OrderType::type','1.2',"enum OrderType::type\n\n{\nOTGFD = 0,\nSIMULATION = 1,\nIOC = 2,\nPOTF = 3\n};\n\n").then( # success).catch(failed) # client.jsonRelation(session, 'IStrategy', '1.3').then( # success).catch(failed) # client.baseCheck(session, 'Automaton', '1.0').then( # success).catch(failed) # client.downLoad(session, 'OrderType::type', '1.2').then( # success).catch(failed) # client.getJsonCon(session, 'OrderType::type', '1.2').then( # success).catch(failed) # client.grantAuthority(session, '12').then( # success).catch(failed) client.templMerge(session).then(success).catch(failed)
def onConnectionOpened(self, proto): try: self.securityClient = SecClient(proto, self.mesgHandle, 609) print '----securityClient connected successfully' self.aclClient = ACLClient(proto, self.mesgHandle, 609) print '----ACLClient connected successfully' except Exception as e: print e
def onConnectionOpened(self, proto): print '----begin login-----' self.aclClient = ACLClient(proto, self.mesgHandle, 609) self.securityClient = SecClient(proto, self.mesgHandle, 609) self.session = self.aclClient.login('bb', '1232') if 0 == self.session.userId and 0 == self.session.seqId: print '----login failed-----' else: print '----login success----'
def user(nickname): if nickname != session["uname"]: flash("you should login with acount: {0} firstly".format(nickname)) return redirect(url_for("login")) user = dict() def myInformationSuccess(a): for k, v in a.items(): user[k] = v def myInformationFailed(errMesg): print 'b' global userClientBasket aclClient = userClientBasket.getClient(session, "aclClient") loginSession = userClientBasket.getClient(session, "session") aclClient.myInformation(loginSession, [1, 3, 2, 4, 8])\ .then(myInformationSuccess).catch(myInformationFailed).wait() form = EditForm() if form.validate_on_submit(): userUpdate = dict() userUpdate[1] = form.username.data userUpdate[3] = form.email.data userUpdate[2] = form.telephone.data userUpdate[4] = form.introduction.data userUpdate[4] = userUpdate[4].encode('utf-8') def changeMyInformationSuccess(a): print a def changeMyInformationFailed(errMesg): print errMesg aclClient = ACLClient(app.proto, app.pea.customHandle, 609) aclClient.changeMyInformation(loginSession, userUpdate)\ .then(changeMyInformationSuccess).catch(changeMyInformationFailed).wait() flash('Your changes have been saved.') return redirect(url_for('user', nickname=user['name'])) else: user['intro'] = user['intro'].decode('utf-8') return render_template('user.html', user=user, form=form)
def user(nickname): if nickname != session["uname"]: flash("you should login with acount: {0} firstly".format(nickname)) return redirect(url_for("login")) user = dict() def myInformationSuccess(a): for k,v in a.items(): user[k] = v def myInformationFailed(errMesg): print 'b' global userClientBasket aclClient = userClientBasket.getClient(session, "aclClient") loginSession = userClientBasket.getClient(session,"session") aclClient.myInformation(loginSession, [1, 3, 2, 4, 8])\ .then(myInformationSuccess).catch(myInformationFailed).wait() form = EditForm() if form.validate_on_submit(): userUpdate = dict() userUpdate[1] = form.username.data userUpdate[3] = form.email.data userUpdate[2] = form.telephone.data userUpdate[4] = form.introduction.data userUpdate[4] = userUpdate[4].encode('utf-8') def changeMyInformationSuccess(a): print a def changeMyInformationFailed(errMesg): print errMesg aclClient = ACLClient(app.proto, app.pea.customHandle, 609) aclClient.changeMyInformation(loginSession, userUpdate)\ .then(changeMyInformationSuccess).catch(changeMyInformationFailed).wait() flash('Your changes have been saved.') return redirect(url_for('user',nickname = user['name'])) else: user['intro'] = user['intro'].decode('utf-8') return render_template('user.html', user = user, form=form )
def login(): form = LoginForm() if form.validate_on_submit(): uname = form.username.data pwd = form.password.data aclClient = ACLClient(app.proto, app.pea.customHandle, 609) configClient = ConfigureObjectClient(app.proto, app.pea.customHandle, 612) loginResult = aclClient.login(uname, pwd) if loginResult is not None and loginResult.seqId > 0: session['uname'] = form.username.data session['seqId'] = loginResult.seqId session['userId'] = loginResult.userId global userClientBasket userClientBasket.registClient(session, aclClient, "aclClient") userClientBasket.registClient(session, loginResult, "session") userClientBasket.registClient(session, configClient, "configClient") return redirect(url_for("index")) flash('Invalid username or password!') return render_template('login.html', title='Sign In', form=form)
def test(pea, proto): client = ACLClient(proto, pea.customHandle, 609) session = client.login('bb', '1232') print 'login %s'% session # from twisted.internet import reactor, defer # def changeMyInformationSuccess(information): # print 'changeMyInformationSuccess : %s ' % information # def changeMyInformationFailed(errMesg): # print 'changeMyInformation failed:%s' % ( errMesg) # client.changeMyInformation(session,{6: 'fas123123',2:'12312312331'})\ # .then(changeMyInformationSuccess).catch(changeMyInformationFailed) # def myInformationSuccess(information): # for k,v in information.items(): # print 'myInformationSuccess : %s-%s' % (k,v) # def myInformationFailed(errMesg): # print 'myInformationFailed :%s' % ( errMesg) # client.myInformation(session,[1,2,3,4,5,6,7]).then(myInformationSuccess).catch(myInformationFailed) # def myInformationSuccess(information): # for k,v in information.items(): # print 'myInformationSuccess : %s-%s' % (k,v) # def myInformationFailed(errMesg): # print 'myInformationFailed :%s' % ( errMesg) # client.otherInformation(session,[1,2,3,4,5,6,7,8,9],1).then(myInformationSuccess).catch(myInformationFailed) # def myInformationSuccess(information): # for k in information: # print 'myInformationSuccess : %s' % (k) # def myInformationFailed(errMesg): # print 'myInformationFailed :%s' % ( errMesg) # client.allUserInformation(session,[1,2,3,4,5,6,7,8,9]).then(myInformationSuccess).catch(myInformationFailed) # def myInformationSuccess(information): # for k in information: # print 'myInformationSuccess : %s' % (k) # # def myInformationFailed(errMesg): # print 'myInformationFailed :%s' % (errMesg) # # client.allResourceInformation(session).then(myInformationSuccess).catch( # myInformationFailed) # def addResourceTypeSuccess( id): # print 'addResourceType success:%d' % ( id) # def addResourceTypeFailed( errMesg): # print 'addaddResourceType %s failed:%s' % ( errMesg) # client.addResourceType( session,'reqq','qq',(['q','qq'],))\ # .then(addResourceTypeSuccess).catch(addResourceTypeFailed) # # def addResourceSuccess( id): print 'addResource success: %d' % ( id) def addResourceFailed( errMesg): print 'addResource failed:%s' % ( errMesg) client.addResource( session,3,'zzz','zzzz')\ .then(addResourceSuccess).catch(addResourceFailed) # # # def addRoleSuccess( id): # print 'addRole %s success: %d' % ( id) # def addroleFailed( errMesg): # print 'addRole %s failed: %s' % (errMesg) # client.addRole( session,'trader',((5,(8,14)),))\ # .then(addRoleSuccess).catch(addroleFailed) # # def addUserSuccess( id): # print 'addUser success: %d' % ( id) # def addUserFailed( errMesg): # print 'addUser %s failed: %s' % ( errMesg) # client.addUser( session,'qq','12345678912','sdfs12','sdf12','sdf123')\ # .then(addUserSuccess).catch(addUserFailed) # # def grantRoleSuccess(a): # print 'grantRole to userId=%s success' # def grantRoleFailed(errMesg): # print 'grantRole to userId=%s failed: %s' % ( errMesg) # client.grantRole( session,4,1)\ # .then(grantRoleSuccess).catch(grantRoleFailed) # # def changePasswordSuccess(): # print 'changePassword success' # def changePasswordFailed( errMesg): # print 'changePassword %s failed: %s' % ( errMesg) # client.changePassword( session,'1232')\ # .then(changePasswordSuccess).catch(changePasswordFailed) # # def listResourceSuccess(resources): # print 'listResource success :' # for i in resources: # print i # def listResourceFailed(errMesg): # print 'listResource failed: %s' % ( errMesg) # client.listResource( session)\ # .then(listResourceSuccess).catch(listResourceFailed) # # # def listOtherResourceSuccess(resources): # print 'listotherResource success: ' # for i in resources: # print i # def listOtherResourceFailed( errMesg): # print 'listotherResource failed: %s' % ( errMesg) # client.listOtherResource( session,1)\ # .then(listOtherResourceSuccess).catch(listOtherResourceFailed) # # def grantPermissionSuccess(a): # print 'grantPermission to roleId success' # def grantPermissionFailed(errMesg): # print 'grantPermission to failed: %s' % ( errMesg) # client.grantPermission( session,2,1,2)\ # .then(grantPermissionSuccess).catch(grantPermissionFailed) # # # def listRoleSuccess(roles): # print 'listRole success :' # for i in roles: # print i # def listRoleFailed(errMesg): # print 'listRole failed: %s' % ( errMesg) # client.listRole( session)\ # .then(listRoleSuccess).catch(listRoleFailed) # # def listUserSuccess(users): # print 'listUser success :' # for i in users: # print i # def listUserFailed(errMesg): # print 'listUser failed: %s' % ( errMesg) # client.listUser( session)\ # .then(listUserSuccess).catch(listUserFailed) # # # def listPermissionSuccess(permissions): # print 'listPermission success :' # for i in permissions: # print i # def listPermissionFailed(errMesg): # print 'listPermission failed: %s' % ( errMesg) # client.listPermission( session)\ # .then(listPermissionSuccess).catch(listPermissionFailed) # # def listOtherPermissionSuccess(permissions): # print 'list roleId Permission success :' # for i in permissions: # print i # def listOtherPermissionFailed( errMesg): # print 'list roleId Permission failed: %s' % ( errMesg) # client.listOtherPermission( session,2)\ # .then(listOtherPermissionSuccess).catch(listOtherPermissionFailed) # # def changeUserNameSuccess(a): # print 'changeUserName success' # def changeUserNameFailed( errMesg): # print 'changeUserName failed: %s' % ( errMesg) # client.changeUserName(session,'bb')\ # .then(changeUserNameSuccess).catch(changeUserNameFailed) # # def changeRoleNameSuccess(a): # print 'changeRoleName success' # def changeRoleNameFailed( errMesg): # print 'changeRoleName failed: %s' % ( errMesg) # client.changeRoleName( session,3,'ad')\ # .then(changeRoleNameSuccess).catch(changeRoleNameFailed) # # # def changePublicKeySuccess(a): # print 'changePublicKey success' # def changePublicKeyFailed( errMesg): # print 'changePublicKey %s failed: %s' % ( errMesg) # client.changePublicKey( session,'adddddddddd234')\ # .then(changePublicKeySuccess).catch(changePublicKeyFailed) # # # # def changePrivateKeySuccess(a): # print 'changePrivateKey success' # def changePrivateKeyFailed( errMesg): # print 'changePrivateKey failed: %s' % errMesg # client.changePrivateKey( session,'adddddddddd234')\ # .then(changePrivateKeySuccess).catch(changePrivateKeyFailed) # # def deleteResourceSuccess(a): # print 'deleteResource success' # def deleteResourceFailed( errMesg): # print 'deleteResource failed: %s' % ( errMesg) # client.deleteResource( session,4)\ # .then(deleteResourceSuccess).catch(deleteResourceFailed) # # # def deleteUserSuccess(a): # print 'deleteUser success' # def deleteUserFailed( errMesg): # print 'deleteUser failed: %s' % ( errMesg) # client.deleteUser( session,5)\ # .then(deleteUserSuccess).catch(deleteUserFailed) # # # def deleteRoleSuccess(a): # print 'deleteRole success' # def deleteRoleFailed( errMesg): # print 'deleteRole failed: %s' % ( errMesg) # client.deleteRole( session,5)\ # .then(deleteRoleSuccess).catch(deleteRoleFailed) # # # def listLoginSuccess(Logins): # print 'listLogin success :' # for i in Logins: # print i # def listLoginFailed(errMesg): # print 'listLogin failed: %s' % ( errMesg) # client.listLogin( session)\ # .then(listLoginSuccess).catch(listLoginFailed) # # def inheritPermissionSuccess(): # print 'inheritPermission from roleId success :' # def inheritPermissionFailed( errMesg): # print 'inheritPermission from roleId failed: %s' % ( errMesg) # client.inheritPermission( session,2,3)\ # .then(inheritPermissionSuccess).catch(inheritPermissionFailed) # # # def releaseRoleSuccess(): # print 'releaseRole success ' # def releaseRoleFailed( errMesg): # print 'releaseRole failed: %s' % ( errMesg) # client.releaseRole(session,4)\ # .then(releaseRoleSuccess).catch(releaseRoleFailed) # # # def myRoleSuccess(roles): # print 'myRoleId-name is %s -%s '% (roles[0],roles[1]) # def myRoleFailed( errMesg): # print 'myRole failed: %s' % ( errMesg) # client.myRole( session)\ # .then(myRoleSuccess).catch(myRoleFailed) # # # def listResourceTypeSuccess(ResourceTypes): # print 'listResourceType success :' # for i in ResourceTypes: # print i.name # def listResourceTypeFailed(errMesg): # print 'listResourceType failed: %s' % ( errMesg) # client.listResourceType( session)\ # .then(listResourceTypeSuccess).catch(listResourceTypeFailed) # # # def hasPermissionSuccess( result): # print 'hasPermission id is %s '% (result) # def hasPermissionFailed( errMesg): # print 'hasPermission id failed: %s' % ( errMesg) # client.hasPermission( session, 1,1,1)\ # .then(hasPermissionSuccess).catch(hasPermissionFailed) # # def listTypeResourceSuccess(id,resources): # print 'list TypeId= %s success :' % id # for i in resources: # print i # def listTypeResourceFailed(id, errMesg): # print 'list TypeId= %s failed: %s' % (id, errMesg) # client.listTypeResource(session,4)\ # .then(listTypeResourceSuccess).catch(listTypeResourceFailed) print "begin logout" client.logout(session) print 'ACLClient test success!!! '
class ConfigureObjectServer(MessagePlugin): conn = psycopg2.connect(database="config3", user="******", password="******", host="127.0.0.1", port="5432") configsql3 = ConfigureObjectSql(conn) def __init__(self, messageHandle): super(ConfigureObjectServer, self).__init__(messageHandle) self.handle('createconfigure:configureobjectproto', True, self.onCreateConfigure) self.handle('deleteconfigure:configureobjectproto', True, self.onDeleteConfigure) self.handle('createcollection:configureobjectproto', True, self.onCreateCollection) self.handle('deletecollection:configureobjectproto', True, self.onDeleteCollection) self.handle('getconfigure:configureobjectproto', True, self.onGetConfigure) self.handle('getcollection:configureobjectproto', True, self.onGetCollection) self.handle('grantcollection:configureobjectproto', True, self.onGrantCollection) self.handle('revokecollection:configureobjectproto', True, self.onRevokeCollection) self.handle('granconfigure:configureobjectproto', True, self.onGrantConfigure) self.handle('revokeConfigure:configureobjectproto', True, self.onRevokeCollection) self.handle('listcollections:configureobjectproto', True, self.onListCollections) self.handle('listauthoritysharers:configureobjectproto', True, self.onListAuthoritySharers) def onConnectionOpened(self, proto): try: self.securityClient = SecClient(proto, self.mesgHandle, 609) print '----securityClient connected successfully' self.aclClient = ACLClient(proto, self.mesgHandle, 609) print '----ACLClient connected successfully' except Exception as e: print e #@staticmethod def checkPermission(resourceId, permission): def decorator(func): def wrapper(self, proto, spec, message, body): def successCheckPermission(hasP): if hasP: func(self, proto, spec, message, body) else: (responseSpec, failedResponse) = self.create(spec.messageName, False) failedResponse.status = 1 failedResponse.message = '<User: {0}> has no permission to {1}'.format( body.session.userId, func.__name__) self.write_log('error', body.session.userId, failedResponse.message) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def FailedCheckPermission(hasP): (responseSpec, failedResponse) = self.create(spec.messageName, False) failedResponse.status = 1 failedResponse.message = hasP self.write_log('error', body.session.userId, failedResponse.message) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) self.aclClient.hasPermission(body.session, resourceId, permission)\ .then(successCheckPermission)\ .catch(FailedCheckPermission) return wrapper return decorator def write_log(self, log_type, userId, message, operation): logger = '\n用户ID:%s\n错误信息:%s\n%s\n执行操作:%s\n' % (userId, message, operation, '-' * 50) if log_type == 'error': logging.error(logger) def onCreateConfigure(self, proto, spec, message, body): try: print '-------------begin Delete Configure In Grid---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Configure: {0}'.format(body.Configure) print 'Object: {0}'.format(body.CollectionList) secIdList = [ self.configsql3.getCollection(elem.Name, elem.Date, elem.Version, elem.TemplateName, elem.CollectionName)[1] for elem in body.CollectionList ] IsCreateConfigureInstance = self.configsql3.createConfigure( json.dumps(secIdList), body.Configure.Name, body.Configure.Version, body.Configure.Date) if IsCreateConfigureInstance[0]: (responseSpec, successResponse) = self.create( "createconfigure:configureobjectproto", False) successResponse.status = 0 successResponse.message = IsCreateConfigureInstance[1] self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) else: (responseSpec, failedResponse) = self.create( "createconfigure:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = IsCreateConfigureInstance[1] self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) print '---------------end Delete Configure In Grid---------------' except Exception as e: print e def onDeleteConfigure(self, proto, spec, message, body): try: print '-------------begin Delete Configure In Grid---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Configure: {0}'.format(body.Configure) IsDeleteConfigureInstanceMapping = self.configsql3.deleteConfigure( body.Configure.Name, body.Configure.Date, body.Configure.Version) if IsDeleteConfigureInstanceMapping[0]: (responseSpec, successResponse) = self.create( "deleteconfigure:configureobjectproto", False) successResponse.status = 0 successResponse.message = IsDeleteConfigureInstanceMapping[1] self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) else: (responseSpec, failedResponse) = self.create( "deleteconfigure:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = IsDeleteConfigureInstanceMapping[1] self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) print '---------------end Delete Configure In Grid---------------' except Exception as e: print e def onCreateCollection(self, proto, spec, message, body): try: print '-------------begin Create Object---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) def getkey(): passwd = string.join( random.sample(list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-+'), 16)) \ .replace(" ", "") return passwd secList = [[ "-".join([ body.Collection.Name, body.Collection.Date, body.Collection.Version, body.Collection.Category, body.Collection.TemplateName ]), body.Collection.Content, getkey() ]] def putContentSuccess(nameIdDict): self.registCollectionInT_Collection(message, proto, body, nameIdDict) def putContentFailed(errMesg): print 'putSeriesContent failed: %s' % errMesg self.securityClient.putSeriesContent(body.session, secList, body.publicKey)\ .then(putContentSuccess)\ .catch(putContentFailed) print '---------------end Create Configure Object---------------' except Exception as e: print 'error: {0}'.format(e) (responseSpec, failedResponse) = self.create( "createcollection:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = e self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def registCollectionInT_Collection(self, message, proto, body, nameIdDict): try: idName = self.configsql3.createCollection(nameIdDict) if idName[0]: resource = {} def addResourceSuccess(resourceId): resource["data"] = resourceId def addResourceFailed(ErrMsg): pass self.aclClient.addResource(body.session, idName[1], body.ResourceTypeId, idName[0],0)\ .then(addResourceSuccess).catch(addResourceFailed).wait() (responseSpec, successResponse) = self.create( "createcollection:configureobjectproto", False) successResponse.status = 0 successResponse.message = 'ok' successResponse.resourceId = resource["data"] self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) else: (responseSpec, failedResponse) = self.create( "createcollection:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = IsCreateObject[1] self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) except Exception as e: print e (responseSpec, failedResponse) = self.create( "createcollection:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = str(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onDeleteCollection(self, proto, spec, message, body): try: print '-------------begin Delete Configure Object---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Configure Object Name: {0}'.format(body.Collections) secIdList = [ self.configsql3.getCollection(elem.Name, elem.Date, elem.Version, elem.Category, elem.TemplateName)[1] for elem in body.Collections ] def deleteContentSuccess(successMsg): self.deleteCollectionInT_Collection(message, proto, secIdList) def deleteContentFailed(errMsg): print errMsg + 'delete Content is Faild!!!' self.securityClient.deleteContent(body.session, secIdList)\ .then(deleteContentSuccess).catch(deleteContentFailed) print '---------------end Create Configure Object---------------' except Exception as e: (responseSpec, failedResponse) = self.create( "deletecollection:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = 'error: {0}'.format(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def deleteCollectionInT_Collection(self, message, proto, secIdList): IsDeleteObject = self.configsql3.deleteCollection(secIdList) if IsDeleteObject[0]: (responseSpec, successResponse) = self.create( "deletecollection:configureobjectproto", False) successResponse.status = 0 successResponse.message = IsDeleteObject[1] self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) else: (responseSpec, failedResponse) = self.create( "deleteconfigureobject:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = IsDeleteObject[1] self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) # @checkPermission(38, 'GETOBJECTS') def onGetCollection(self, proto, spec, message, body): print '-------------Begin To Get Object---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Configure Object Id: {0}'.format(body.Collections) try: secIdList = [[ "-".join([ elem.Name, elem.Date, elem.Version, elem.Category, elem.TemplateName ]), self.configsql3.getCollection(elem.Name, elem.Date, elem.Version, elem.Category, elem.TemplateName)[1] ] for elem in body.Collections] if len(secIdList) == 0: raise Exception("Error: getting Object {0} is failed".format( body.ObjectName)) (responseSpec, successResponse) = self.create( "getcollection:configureobjectproto", False) def getContentSuccess(Content): successResponse.status = 0 successResponse.message = "get object successfully!!!" successResponse.Content = Content self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) def getContentFailed(errMsg): print 'put content of object is failed!!!' self.securityClient.getSeriesContent(body.session, secIdList, body.privateKey)\ .then(getContentSuccess)\ .catch(getContentFailed) print '---------------end Query Get Collection---------------' except Exception as e: print "Error: {0}".format(e) (responseSpec, failedResponse) = self.create( "getcollection:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = 'Error: get Collection, Detail: {0}'.format( e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onGetConfigure(self, proto, spec, message, body): print '-------------Begin Get Object---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Collection Name: {0}'.format(body.Configure) try: objectList = self.configsql3.getConfigure(body.Configure.Name, body.Configure.Date, body.Configure.Version) if not objectList[0]: raise Exception(objectList[1]) secList = [[ "-".join(self.configsql3.getObjectById(elem)[1][1:]), elem ] for elem in json.loads(objectList[0])] if len(secList) == 0: raise Exception( "Error: getting Configure " "<Name: {0}, Date: {1}, Version: {2}> is failed".format( body.Configure.Name, body.Configure.Date, body.Configure.Version)) (responseSpec, successResponse) = self.create( "getconfigure:configureobjectproto", False) def getContentSuccess(Content): successResponse.status = 0 successResponse.message = "get configure successfully!!!" successResponse.Content = Content self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) def getContentFailed(errMsg): print 'put content of configure is failed!!!' self.securityClient.getSeriesContent(body.session, secList, body.privateKey) \ .then(getContentSuccess) \ .catch(getContentFailed) print '---------------end Query Configure---------------' except Exception as e: print "Error: {0}".format(e) (responseSpec, failedResponse) = self.create("getconfigure:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = 'Error: getting Configure is failed!!!\n,Detail: {0}'.format( e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onGrantCollection(self, proto, spec, message, body): try: print '---------------Begin Grant Object To Others---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Object Name: {0}'.format(body.ResourceIds) print 'Object OthersId: {0}'.format(body.RoleId) print '---------------end Query Configure Object---------------' secIdDict = { "-".join([ elem.Name, elem.Date, elem.Version, elem.Category, elem.TemplateName ]): self.configsql3.getCollection(elem.Name, elem.Date, elem.Version, elem.Category, elem.TemplateName)[1] for elem in body.CollectionList } if len(secIdDict) == 0: raise Exception( "Objects <{0}> is not exist when query the database". format(body.Collection)) (responseSpec, successResponse) = self.create( "grantcollection:configureobjectproto", False) def grantOtherSuccess(Msg): successResponse.status = 0 successResponse.message = "Grant object to other is successfully!!!" self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) (responseSpec, failedResponse) = self.create( "grantcollection:configureobjectproto", False) def grantOtherFailed(errMsg): failedResponse.status = 1 failedResponse.message = 'Error: grant objects to others is failed!!!' self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) self.securityClient.grantSeriesToOther( body.session, secIdDict, body.OthersId, body.privateKey, body.othersPublicKey).then(grantOtherSuccess).catch( grantOtherFailed) except Exception as e: (responseSpec, failedResponse) = self.create( "grantcollection:configureobjectproto", False) print "Error: {0}".format(e) failedResponse.status = 1 failedResponse.message = str(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onRevokeCollection(self, proto, spec, message, body): try: print '---------------Begin Ungrant Object To Others---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Object Name: {0}'.format(body.CollectionList) print 'Object OthersId: {0}'.format(body.OthersId) print '---------------end Ungrant Configure Object---------------' secIdDict = { "-".join([ elem.Name, elem.Date, elem.Version, elem.Category, elem.TemplateName ]): self.configsql3.getCollection(elem.Name, elem.Date, elem.Version, elem.Category, elem.TemplateName)[1] for elem in body.CollectionList } if len(secIdDict) == 0: raise Exception( "Objects <{0}> is not exist when query the database". format(body.ObjectList)) (responseSpec, successResponse) = self.create( "revokecollection:configureobjectproto", False) def revokeSuccess(Msg): successResponse.status = 0 successResponse.message = "Ungrant object to other is successfully!!!" self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) (responseSpec, failedResponse) = self.create( "revokecollection:configureobjectproto", False) def revokeFailed(errMsg): failedResponse.status = 1 failedResponse.message = 'Error: Ungrant objects to others is failed!!!' self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) self.securityClient.revokeGrant( body.session, secIdDict, body.OthersId, ).then(revokeSuccess).catch(revokeFailed) except Exception as e: (responseSpec, failedResponse) = self.create( "revokecollection:configureobjectproto", False) print "Error: {0}".format(e) failedResponse.status = 1 failedResponse.message = str(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onGrantConfigure(self, proto, spec, message, body): try: print '---------------Begin Grant Object To Others---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Object OthersId: {0}'.format(body.OthersId) print 'Configure: {0}'.format(body.ConfigureList) print '---------------end Query Configure Object---------------' def getUnionList(lli, rli): return list(set(lli).union(set(rli))) temp = [ json.loads( self.configsql3.getConfigure(elem.Name, elem.Date, elem.Version)[0]) for elem in body.ConfigureList ] secIdDict = { "-".join(self.configsql3.getObjectById(elem)[1][1:]): elem for elem in reduce(getUnionList, temp) } if len(secIdDict) == 0: raise Exception( "The Configure <Name: {0}, Date: {1}, Version: {2}> " "which is going to be granted is not exist!!!".format( body.Configure.Name, body.Configure.Date, body.Configure.Version)) (responseSpec, successResponse) = self.create( "grantconfigure:configureobjectproto", False) def grantOtherSuccess(Msg): successResponse.status = 0 successResponse.message = "Grant configure to other is successfully!!!" self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) (responseSpec, failedResponse) = self.create( "granconfigure:configureobjectproto", False) def grantOtherFailed(Msg): failedResponse.status = 1 failedResponse.message = 'Error: grant configure object to others is failed!!!' self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) self.securityClient.grantSeriesToOther( body.session, secIdDict, body.OthersId, body.privateKey, body.othersPublicKey).then(grantOtherSuccess).catch( grantOtherFailed) except Exception as e: (responseSpec, failedResponse) = self.create( "granconfigure:configureobjectproto", False) print "Error: {0}".format(e) failedResponse.status = 1 failedResponse.message = str(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onUnGrantConfigure(self, proto, spec, message, body): try: print '---------------Begin Revoke Grant Object To Others---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Object OthersId: {0}'.format(body.OthersId) print 'Configure: {0}'.format(body.ConfigureList) print '---------------end Query Configure Object---------------' def getUnionList(lli, rli): return list(set(lli).union(set(rli))) temp = [ json.loads( self.configsql3.getConfigure(elem.Name, elem.Date, elem.Version)[0]) for elem in body.ConfigureList ] secIdDict = { "-".join(self.configsql3.getObjectById(elem)[1][1:]): elem for elem in reduce(getUnionList, temp) } if len(secIdDict) == 0: raise Exception( "The Configure <Name: {0}, Date: {1}, Version: {2}> " "which is going to be ungranted is not exist!!!".format( body.Configure.Name, body.Configure.Date, body.Configure.Version)) (responseSpec, successResponse) = self.create( "revokeConfigure:configureobjectproto", False) def grantOtherSuccess(Msg): successResponse.status = 0 successResponse.message = "Ungrant configure<{0}> to other is successfully!!!".format( body.ConfigureList) self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) (responseSpec, failedResponse) = self.create( "revokeConfigure:configureobjectproto", False) def grantOtherFailed(Msg): failedResponse.status = 1 failedResponse.message = 'Error: Ungrant configure<{0}> object to others is failed!!!'.format( body.ConfigureList) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) self.securityClient.revokeGrant( body.session, secIdDict, body.OthersId, ).then(grantOtherSuccess).catch(grantOtherFailed) except Exception as e: (responseSpec, failedResponse) = self.create( "revokeConfigure:configureobjectproto", False) print "Error: {0}".format(e) failedResponse.status = 1 failedResponse.message = str(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onListCollections(self, proto, spec, message, body): try: print '---------------Begin List Object To Others---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) def listCollectionsSuccess(contentIdList): self.__getListCollection(proto, message, contentIdList) (responseSpec, failedResponse) = self.create( "listcollections:configureobjectproto", False) def listCollectionsFailed(Msg): failedResponse.status = 1 failedResponse.message = 'Error: listting object is failed!!!' self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) self.securityClient.listContent(body.session).then( listCollectionsSuccess).catch(listCollectionsFailed) print '---------------end List Object---------------' except Exception as e: print "Error: {0}".format(e) (responseSpec, failedResponse) = self.create( "listcollections:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = str(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def __getListCollection(self, proto, message, contentIdList): contentIdList = [e.contentId for e in contentIdList] categoryDict = self.configsql3.getAll(contentIdList) if categoryDict[0]: (responseSpec, successResponse) = self.create( "listcollections:configureobjectproto", False) temp = {} for key, val in categoryDict[1].items(): temp[key] = [] for elem in val: col = self.createGeneric("collection:ConfigureObjectProto") col.Name = elem[0] col.Date = elem[1] col.Version = elem[2] col.Category = elem[3] col.TemplateName = elem[4] temp[key].append(col) successResponse.collections = temp successResponse.status = 0 successResponse.message = "list objects successfully!!!" self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) else: (responseSpec, failedResponse) = self.create( "listcollections:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = categoryDict[1] self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onListAuthoritySharers(self, proto, spec, message, body): try: print '---------------Begin List Authority Sharers---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Object: <{0}>'.format(body.Collection) print '--------------- End List Authority Sharers---------------' isGetObject = self.configsql3.getCollection( body.Collection.Name, body.Collection.Date, body.Collection.Version, body.Collection.Category, body.Collection.TemplateName)[1] if isGetObject: secId = isGetObject[0] def getSharersSuccess(sharersDict): (responseSpec, successResponse) = self.create( "getauthoritysharers:configureobjectproto", False) successResponse.SharerList = [elem for elem in sharersDict] successResponse.status = 0 successResponse.message = "Get sharer list {} successfully!!!".format( str(successResponse.SharerList)) self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) def getSharersFailed(Msg): (responseSpec, failedResponse) = self.create( "getauthoritysharers:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = "Error: Getting sharer list is failed!!!" self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) self.securityClient.checkSharer( body.session, secId).then(getSharersSuccess).catch(getSharersFailed) else: (responseSpec, failedResponse) = self.create( "getauthoritysharers:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = "Error: Getting sharer list is failed!!!" self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) except Exception as e: (responseSpec, failedResponse) = self.create( "getauthoritysharers:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = str(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId())
def test(pea, proto): client = ACLClient(proto, pea.customHandle, 609) session = client.login('bb', '1232') print 'login %s'% session # from twisted.internet import reactor, defer def changePasswordSuccess(): print 'changePassword success' def changePasswordFailed( errMesg): print 'changePassword %s failed: %s' % (errMesg) client.changePassword( session,'1232')\ .then(changePasswordSuccess).catch(changePasswordFailed) def changeUserNameSuccess(a): print 'changeUserName success' def changeUserNameFailed( errMesg): print 'changeUserName failed: %s' % (errMesg) client.changeUserName(session,'bb')\ .then(changeUserNameSuccess).catch(changeUserNameFailed) def changeRoleNameSuccess(a): print 'changeRoleName success' def changeRoleNameFailed(errMesg): print 'changeRoleName failed: %s' % (errMesg) client.changeRoleName(session,3,'ad')\ .then(changeRoleNameSuccess).catch(changeRoleNameFailed) def changePublicKeySuccess(a): print 'changePublicKey success' def changePublicKeyFailed( errMesg): print 'changePublicKey %s failed: %s' % (errMesg) client.changePublicKey( session,'adddddddddd234')\ .then(changePublicKeySuccess).catch(changePublicKeyFailed) def changePrivateKeySuccess(a): print 'changePrivateKey success' def changePrivateKeyFailed( errMesg): print 'changePrivateKey failed: %s' % errMesg client.changePrivateKey( session,'adddddddddd234')\ .then(changePrivateKeySuccess).catch(changePrivateKeyFailed) def myRoleSuccess(roles): print 'myRoleId-name is %s -%s '% (roles[0],roles[1]) def myRoleFailed( errMesg): print 'myRole failed: %s' % (errMesg) client.myRole(session)\ .then(myRoleSuccess).catch(myRoleFailed) print "begin logout" client.logout(session) print 'ACLClient test success!!! '
def test(pea, proto): client123 = ACLClient(proto, pea.customHandle, 609) session = client123.login('bb', '1232') client = SecClient(proto, pea.customHandle, 609) #两对密钥对 with open('tests/master-public.pem') as f: publicKey1 = f.read() with open('tests/master-private.pem') as f: privateKey1 = f.read() with open('tests/ghost-public.pem') as f: publicKey2 = f.read() with open('tests/ghost-private.pem') as f: privateKey2 = f.read() # t = "zhang hai xu 1234567890" # def putContentSeriesSuccess( result ): # for k in result: # print 'putSeriesContent success:name=%s : %s' % (k, result[k]) # def putSeriesContentFailed(errMesg): # print 'putSeriesContent %s failed: %s' % (t, errMesg) # client.putSeriesContent( session, [['one',t, '1234567812345678'],['two',t, '1234567812345678']],publicKey1)\ # .then(putContentSeriesSuccess).catch(putSeriesContentFailed) # def getSeriesContentSuccess( content ): # for k,v in content.items(): # print k,v # # def getSeriesContentFailed( errMesg): # print 'GetsssContent failed: %s' % ( errMesg) # id=[['a',24],['b',25]] # client.getSeriesContent( session, id, privateKey1 )\ # .then(getSeriesContentSuccess).catch(getSeriesContentFailed) # # # # # contentIds={'a':27,'b':28,} # def getkeysuccess(a): # print 'get key success' # def getKeyFailed(errMesg): # print 'get key failed %s' % errMesg # def grantSeriesToOtherSuccess( keyId ): # print 'grant contentId to other Success success ' # def grantSeriesToOtherFailed(errMesg): # print 'grant to other failed: %s' % (errMesg) # client.grantSeriesToOther( session, contentIds, 1, privateKey1, publicKey2)\ # .then(getkeysuccess).catch(getKeyFailed)\ # .then(grantSeriesToOtherSuccess).catch(grantSeriesToOtherFailed) # # def revokeGrantSuccess( nouse ): # print 'revokeGrant' # def revokeGrantFailed( errMesg): # print 'revokeGrant failed: %s' % ( errMesg) # id={'a':27,'b':28} # otherUserId=1 # client.revokeGrant( session, id, otherUserId )\ # .then(revokeGrantSuccess).catch(revokeGrantFailed) def revokeGrantSuccess(nouse): print 'revokeGrant' def revokeGrantFailed(errMesg): print 'revokeGrant failed: %s' % (errMesg) id = {'a': 27, 'b': 28} otherUserId = 1 client.checkSharer(session, 28) \ .then(revokeGrantSuccess).catch(revokeGrantFailed) # # # def listContentSuccess( contents ): # print 'ListContent success:' # for i in contents: # print i # def listContentFailed(errMesg): # print 'ListContent failed: %s' % (errMesg[0]) # client.listContent( session )\ # .then(listContentSuccess).catch(listContentFailed) # # contentId = [24,25] # def deleteContentSuccess(nouse ): # print 'deleteContent success ' # def deleteContentFailed(errMesg): # print 'deleteContent id= %s failed: %s' % (contentId, errMesg) # client.deleteContent(session, contentId )\ # .then(deleteContentSuccess).catch(deleteContentFailed) ######## 此线以上程序测试通过 ############################################################################## # t = "zhang hai xu 1234567890" # def putContentSuccess( result ): # print 'putContent %s success:contentId=%d,keyId=%s' % (t, result[0], result[1]) # return client.putContent( session, t, '1234567812345678',publicKey1) # def putContentFailed( errMesg): # print 'putContent %s failed: %s' % (t, errMesg) # def put1Success(x): # print 'haha:%d%d' % tuple(x) # client.putContent(session, t, '1234567812345678',publicKey1)\ # .then(putContentSuccess).catch(putContentFailed)\ # .then(put1Success) # # contentId = 20 # def deleteContentSuccess( ): # print 'deleteContent id= %s success ' % (contentId) # def deleteContentFailed(errMesg): # print 'deleteContent id= %s failed: %s' % (contentId, errMesg) # client.deleteContent(session, contentId )\ # .then(deleteContentSuccess).catch(deleteContentFailed) # # # id = 1 # def getContentSuccess( content ): # print 'GetContent %d success:content = %s' % (id, content) # def getContentFailed( errMesg): # print 'GetContent failed: %s' % ( errMesg) # client.getContent( session, id, privateKey1 )\ # .then(getContentSuccess).catch(getContentFailed) # # # # def listContentSuccess( contents ): # print 'ListContent success:' # for i in contents: # print i # def listContentFailed(errMesg): # print 'ListContent failed: %s' % (errMesg[0]) # client.listContent( session )\ # .then(listContentSuccess).catch(listContentFailed) # # # contentId = 1 # def getkeysuccess(a): # print 'get key success' # def getKeyFailed(errMesg): # print 'get key failed %s' % errMesg # # # def grantToOtherSuccess( keyId ): # print 'grant contentId =%s to other Success success: newKeyId= %s' % (contentId,keyId) # def grantToOtherFailed(errMesg): # print 'grant contentId = %s to other failed: %s' % (contentId, errMesg) # client.grantToOther( session, contentId, 1, privateKey1, publicKey2)\ # .then(getkeysuccess).catch(getKeyFailed)\ # .then(grantToOtherSuccess).catch(grantToOtherFailed) print 'SecClient test seccess!!!'
def test(pea, proto): client = ACLClient(proto, pea.customHandle, 609) session = client.login('bb', '1232') print 'login %s' % session # from twisted.internet import reactor, defer def changePasswordSuccess(): print 'changePassword success' def changePasswordFailed(errMesg): print 'changePassword %s failed: %s' % (errMesg) client.changePassword( session,'1232')\ .then(changePasswordSuccess).catch(changePasswordFailed) def changeUserNameSuccess(a): print 'changeUserName success' def changeUserNameFailed(errMesg): print 'changeUserName failed: %s' % (errMesg) client.changeUserName(session,'bb')\ .then(changeUserNameSuccess).catch(changeUserNameFailed) def changeRoleNameSuccess(a): print 'changeRoleName success' def changeRoleNameFailed(errMesg): print 'changeRoleName failed: %s' % (errMesg) client.changeRoleName(session,3,'ad')\ .then(changeRoleNameSuccess).catch(changeRoleNameFailed) def changePublicKeySuccess(a): print 'changePublicKey success' def changePublicKeyFailed(errMesg): print 'changePublicKey %s failed: %s' % (errMesg) client.changePublicKey( session,'adddddddddd234')\ .then(changePublicKeySuccess).catch(changePublicKeyFailed) def changePrivateKeySuccess(a): print 'changePrivateKey success' def changePrivateKeyFailed(errMesg): print 'changePrivateKey failed: %s' % errMesg client.changePrivateKey( session,'adddddddddd234')\ .then(changePrivateKeySuccess).catch(changePrivateKeyFailed) def myRoleSuccess(roles): print 'myRoleId-name is %s -%s ' % (roles[0], roles[1]) def myRoleFailed(errMesg): print 'myRole failed: %s' % (errMesg) client.myRole(session)\ .then(myRoleSuccess).catch(myRoleFailed) print "begin logout" client.logout(session) print 'ACLClient test success!!! '
class ConfigureObjectServer(MessagePlugin): conn = psycopg2.connect(database="config3", user="******", password="******", host="127.0.0.1", port="5432") configsql3 = ConfigureObjectSql(conn) def __init__(self, messageHandle): super(ConfigureObjectServer, self).__init__(messageHandle) self.handle('createconfigure:configureobjectproto', True, self.onCreateConfigure) self.handle('deleteconfigure:configureobjectproto', True, self.onDeleteConfigure) self.handle('createcollection:configureobjectproto', True, self.onCreateCollection) self.handle('deletecollection:configureobjectproto', True, self.onDeleteCollection) self.handle('getconfigure:configureobjectproto', True, self.onGetConfigure) self.handle('getcollection:configureobjectproto', True, self.onGetCollection) self.handle('grantcollection:configureobjectproto', True, self.onGrantCollection) self.handle('revokecollection:configureobjectproto', True, self.onRevokeCollection) self.handle('granconfigure:configureobjectproto', True, self.onGrantConfigure) self.handle('revokeConfigure:configureobjectproto', True, self.onRevokeCollection) self.handle('listcollections:configureobjectproto', True, self.onListCollections) self.handle('listauthoritysharers:configureobjectproto', True, self.onListAuthoritySharers) def onConnectionOpened(self, proto): try: self.securityClient = SecClient(proto, self.mesgHandle, 609) print '----securityClient connected successfully' self.aclClient = ACLClient(proto, self.mesgHandle, 609) print '----ACLClient connected successfully' except Exception as e: print e #@staticmethod def checkPermission(resourceId, permission): def decorator(func): def wrapper(self, proto, spec, message, body): def successCheckPermission(hasP): if hasP: func(self, proto, spec, message, body) else: (responseSpec, failedResponse) = self.create(spec.messageName, False) failedResponse.status = 1 failedResponse.message = '<User: {0}> has no permission to {1}'.format( body.session.userId, func.__name__) self.write_log('error', body.session.userId, failedResponse.message) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def FailedCheckPermission(hasP): (responseSpec, failedResponse) = self.create(spec.messageName, False) failedResponse.status = 1 failedResponse.message = hasP self.write_log('error', body.session.userId, failedResponse.message) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) self.aclClient.hasPermission(body.session, resourceId, permission)\ .then(successCheckPermission)\ .catch(FailedCheckPermission) return wrapper return decorator def write_log(self, log_type, userId, message, operation): logger = '\n用户ID:%s\n错误信息:%s\n%s\n执行操作:%s\n' % (userId, message, operation, '-' * 50) if log_type == 'error': logging.error(logger) def onCreateConfigure(self, proto, spec, message, body): try: print '-------------begin Delete Configure In Grid---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Configure: {0}'.format(body.Configure) print 'Object: {0}'.format(body.CollectionList) secIdList = [self.configsql3.getCollection(elem.Name, elem.Date, elem.Version, elem.TemplateName, elem.CollectionName)[1] for elem in body.CollectionList] IsCreateConfigureInstance = self.configsql3.createConfigure(json.dumps(secIdList), body.Configure.Name, body.Configure.Version, body.Configure.Date) if IsCreateConfigureInstance[0]: (responseSpec, successResponse) = self.create("createconfigure:configureobjectproto", False) successResponse.status = 0 successResponse.message = IsCreateConfigureInstance[1] self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) else: (responseSpec, failedResponse) = self.create("createconfigure:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = IsCreateConfigureInstance[1] self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) print '---------------end Delete Configure In Grid---------------' except Exception as e: print e def onDeleteConfigure(self, proto, spec, message, body): try: print '-------------begin Delete Configure In Grid---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Configure: {0}'.format(body.Configure) IsDeleteConfigureInstanceMapping = self.configsql3.deleteConfigure(body.Configure.Name, body.Configure.Date, body.Configure.Version) if IsDeleteConfigureInstanceMapping[0]: (responseSpec, successResponse) = self.create("deleteconfigure:configureobjectproto", False) successResponse.status = 0 successResponse.message = IsDeleteConfigureInstanceMapping[1] self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) else: (responseSpec, failedResponse) = self.create("deleteconfigure:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = IsDeleteConfigureInstanceMapping[1] self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) print '---------------end Delete Configure In Grid---------------' except Exception as e: print e def onCreateCollection(self, proto, spec, message, body): try: print '-------------begin Create Object---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) def getkey(): passwd = string.join( random.sample(list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-+'), 16)) \ .replace(" ", "") return passwd secList = [["-".join([body.Collection.Name, body.Collection.Date, body.Collection.Version, body.Collection.Category, body.Collection.TemplateName]), body.Collection.Content, getkey()]] def putContentSuccess(nameIdDict): self.registCollectionInT_Collection(message, proto, body,nameIdDict) def putContentFailed(errMesg): print 'putSeriesContent failed: %s' % errMesg self.securityClient.putSeriesContent(body.session, secList, body.publicKey)\ .then(putContentSuccess)\ .catch(putContentFailed) print '---------------end Create Configure Object---------------' except Exception as e: print 'error: {0}'.format(e) (responseSpec, failedResponse) = self.create("createcollection:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = e self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def registCollectionInT_Collection(self, message, proto, body, nameIdDict): try: idName = self.configsql3.createCollection(nameIdDict) if idName[0]: resource = {} def addResourceSuccess(resourceId): resource["data"] = resourceId def addResourceFailed(ErrMsg): pass self.aclClient.addResource(body.session, idName[1], body.ResourceTypeId, idName[0],0)\ .then(addResourceSuccess).catch(addResourceFailed).wait() (responseSpec, successResponse) = self.create("createcollection:configureobjectproto", False) successResponse.status = 0 successResponse.message = 'ok' successResponse.resourceId = resource["data"] self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) else: (responseSpec, failedResponse) = self.create("createcollection:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = IsCreateObject[1] self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) except Exception as e: print e (responseSpec, failedResponse) = self.create("createcollection:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = str(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onDeleteCollection(self, proto, spec, message, body): try: print '-------------begin Delete Configure Object---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Configure Object Name: {0}'.format(body.Collections) secIdList = [self.configsql3.getCollection(elem.Name, elem.Date, elem.Version, elem.Category, elem.TemplateName)[1] for elem in body.Collections] def deleteContentSuccess(successMsg): self.deleteCollectionInT_Collection(message, proto, secIdList) def deleteContentFailed(errMsg): print errMsg+'delete Content is Faild!!!' self.securityClient.deleteContent(body.session, secIdList)\ .then(deleteContentSuccess).catch(deleteContentFailed) print '---------------end Create Configure Object---------------' except Exception as e: (responseSpec, failedResponse) = self.create("deletecollection:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = 'error: {0}'.format(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def deleteCollectionInT_Collection(self, message, proto, secIdList): IsDeleteObject = self.configsql3.deleteCollection(secIdList) if IsDeleteObject[0]: (responseSpec, successResponse) = self.create("deletecollection:configureobjectproto", False) successResponse.status = 0 successResponse.message = IsDeleteObject[1] self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) else: (responseSpec, failedResponse) = self.create("deleteconfigureobject:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = IsDeleteObject[1] self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) # @checkPermission(38, 'GETOBJECTS') def onGetCollection(self, proto, spec, message, body): print '-------------Begin To Get Object---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Configure Object Id: {0}'.format(body.Collections) try: secIdList = [["-".join([elem.Name, elem.Date, elem.Version, elem.Category, elem.TemplateName]), self.configsql3.getCollection(elem.Name, elem.Date, elem.Version, elem.Category, elem.TemplateName)[1]] for elem in body.Collections] if len(secIdList) == 0: raise Exception("Error: getting Object {0} is failed".format(body.ObjectName)) (responseSpec, successResponse) = self.create("getcollection:configureobjectproto", False) def getContentSuccess(Content): successResponse.status = 0 successResponse.message = "get object successfully!!!" successResponse.Content = Content self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) def getContentFailed(errMsg): print 'put content of object is failed!!!' self.securityClient.getSeriesContent(body.session, secIdList, body.privateKey)\ .then(getContentSuccess)\ .catch(getContentFailed) print '---------------end Query Get Collection---------------' except Exception as e: print "Error: {0}".format(e) (responseSpec, failedResponse) = self.create("getcollection:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = 'Error: get Collection, Detail: {0}'.format(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onGetConfigure(self, proto, spec, message, body): print '-------------Begin Get Object---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Collection Name: {0}'.format(body.Configure) try: objectList = self.configsql3.getConfigure(body.Configure.Name, body.Configure.Date, body.Configure.Version) if not objectList[0]: raise Exception(objectList[1]) secList = [["-".join(self.configsql3.getObjectById(elem)[1][1:]), elem] for elem in json.loads(objectList[0])] if len(secList) == 0: raise Exception("Error: getting Configure " "<Name: {0}, Date: {1}, Version: {2}> is failed".format(body.Configure.Name, body.Configure.Date, body.Configure.Version)) (responseSpec, successResponse) = self.create("getconfigure:configureobjectproto", False) def getContentSuccess(Content): successResponse.status = 0 successResponse.message = "get configure successfully!!!" successResponse.Content = Content self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) def getContentFailed(errMsg): print 'put content of configure is failed!!!' self.securityClient.getSeriesContent(body.session, secList, body.privateKey) \ .then(getContentSuccess) \ .catch(getContentFailed) print '---------------end Query Configure---------------' except Exception as e: print "Error: {0}".format(e) (responseSpec, failedResponse) = self.create("getconfigure:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = 'Error: getting Configure is failed!!!\n,Detail: {0}'.format(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onGrantCollection(self, proto, spec, message, body): try: print '---------------Begin Grant Object To Others---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Object Name: {0}'.format(body.ResourceIds) print 'Object OthersId: {0}'.format(body.RoleId) print '---------------end Query Configure Object---------------' secIdDict = {"-".join([elem.Name, elem.Date, elem.Version, elem.Category, elem.TemplateName]): self.configsql3.getCollection(elem.Name, elem.Date, elem.Version, elem.Category, elem.TemplateName)[1] for elem in body.CollectionList} if len(secIdDict) == 0: raise Exception("Objects <{0}> is not exist when query the database".format(body.Collection)) (responseSpec, successResponse) = self.create("grantcollection:configureobjectproto", False) def grantOtherSuccess(Msg): successResponse.status = 0 successResponse.message = "Grant object to other is successfully!!!" self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) (responseSpec, failedResponse) = self.create("grantcollection:configureobjectproto", False) def grantOtherFailed(errMsg): failedResponse.status = 1 failedResponse.message = 'Error: grant objects to others is failed!!!' self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) self.securityClient.grantSeriesToOther(body.session, secIdDict, body.OthersId, body.privateKey, body.othersPublicKey).then(grantOtherSuccess).catch(grantOtherFailed) except Exception as e: (responseSpec, failedResponse) = self.create("grantcollection:configureobjectproto", False) print "Error: {0}".format(e) failedResponse.status = 1 failedResponse.message = str(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onRevokeCollection(self, proto, spec, message, body): try: print '---------------Begin Ungrant Object To Others---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Object Name: {0}'.format(body.CollectionList) print 'Object OthersId: {0}'.format(body.OthersId) print '---------------end Ungrant Configure Object---------------' secIdDict = {"-".join([elem.Name, elem.Date, elem.Version, elem.Category, elem.TemplateName]): self.configsql3.getCollection(elem.Name, elem.Date, elem.Version, elem.Category, elem.TemplateName)[1] for elem in body.CollectionList} if len(secIdDict) == 0: raise Exception("Objects <{0}> is not exist when query the database".format(body.ObjectList)) (responseSpec, successResponse) = self.create("revokecollection:configureobjectproto", False) def revokeSuccess(Msg): successResponse.status = 0 successResponse.message = "Ungrant object to other is successfully!!!" self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) (responseSpec, failedResponse) = self.create("revokecollection:configureobjectproto", False) def revokeFailed(errMsg): failedResponse.status = 1 failedResponse.message = 'Error: Ungrant objects to others is failed!!!' self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) self.securityClient.revokeGrant(body.session, secIdDict, body.OthersId, ).then(revokeSuccess).catch(revokeFailed) except Exception as e: (responseSpec, failedResponse) = self.create("revokecollection:configureobjectproto", False) print "Error: {0}".format(e) failedResponse.status = 1 failedResponse.message = str(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onGrantConfigure(self, proto, spec, message, body): try: print '---------------Begin Grant Object To Others---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Object OthersId: {0}'.format(body.OthersId) print 'Configure: {0}'.format(body.ConfigureList) print '---------------end Query Configure Object---------------' def getUnionList(lli, rli): return list(set(lli).union(set(rli))) temp = [json.loads(self.configsql3.getConfigure(elem.Name, elem.Date, elem.Version)[0]) for elem in body.ConfigureList] secIdDict = {"-".join(self.configsql3.getObjectById(elem)[1][1:]): elem for elem in reduce(getUnionList, temp)} if len(secIdDict) == 0: raise Exception("The Configure <Name: {0}, Date: {1}, Version: {2}> " "which is going to be granted is not exist!!!".format(body.Configure.Name, body.Configure.Date, body.Configure.Version)) (responseSpec, successResponse) = self.create("grantconfigure:configureobjectproto", False) def grantOtherSuccess(Msg): successResponse.status = 0 successResponse.message = "Grant configure to other is successfully!!!" self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) (responseSpec, failedResponse) = self.create("granconfigure:configureobjectproto", False) def grantOtherFailed(Msg): failedResponse.status = 1 failedResponse.message = 'Error: grant configure object to others is failed!!!' self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) self.securityClient.grantSeriesToOther(body.session, secIdDict, body.OthersId, body.privateKey, body.othersPublicKey).then(grantOtherSuccess).catch(grantOtherFailed) except Exception as e: (responseSpec, failedResponse) = self.create("granconfigure:configureobjectproto", False) print "Error: {0}".format(e) failedResponse.status = 1 failedResponse.message = str(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onUnGrantConfigure(self, proto, spec, message, body): try: print '---------------Begin Revoke Grant Object To Others---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Object OthersId: {0}'.format(body.OthersId) print 'Configure: {0}'.format(body.ConfigureList) print '---------------end Query Configure Object---------------' def getUnionList(lli, rli): return list(set(lli).union(set(rli))) temp = [json.loads(self.configsql3.getConfigure(elem.Name, elem.Date, elem.Version)[0]) for elem in body.ConfigureList] secIdDict = {"-".join(self.configsql3.getObjectById(elem)[1][1:]): elem for elem in reduce(getUnionList, temp)} if len(secIdDict) == 0: raise Exception("The Configure <Name: {0}, Date: {1}, Version: {2}> " "which is going to be ungranted is not exist!!!".format(body.Configure.Name, body.Configure.Date, body.Configure.Version)) (responseSpec, successResponse) = self.create("revokeConfigure:configureobjectproto", False) def grantOtherSuccess(Msg): successResponse.status = 0 successResponse.message = "Ungrant configure<{0}> to other is successfully!!!".format(body.ConfigureList) self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) (responseSpec, failedResponse) = self.create("revokeConfigure:configureobjectproto", False) def grantOtherFailed(Msg): failedResponse.status = 1 failedResponse.message = 'Error: Ungrant configure<{0}> object to others is failed!!!'.format(body.ConfigureList) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) self.securityClient.revokeGrant(body.session, secIdDict, body.OthersId, ).then(grantOtherSuccess).catch(grantOtherFailed) except Exception as e: (responseSpec, failedResponse) = self.create("revokeConfigure:configureobjectproto", False) print "Error: {0}".format(e) failedResponse.status = 1 failedResponse.message = str(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onListCollections(self, proto, spec, message, body): try: print '---------------Begin List Object To Others---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) def listCollectionsSuccess(contentIdList): self.__getListCollection(proto, message, contentIdList) (responseSpec, failedResponse) = self.create("listcollections:configureobjectproto", False) def listCollectionsFailed(Msg): failedResponse.status = 1 failedResponse.message = 'Error: listting object is failed!!!' self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) self.securityClient.listContent(body.session).then(listCollectionsSuccess).catch(listCollectionsFailed) print '---------------end List Object---------------' except Exception as e: print "Error: {0}".format(e) (responseSpec, failedResponse) = self.create("listcollections:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = str(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def __getListCollection(self, proto, message, contentIdList): contentIdList = [e.contentId for e in contentIdList] categoryDict = self.configsql3.getAll(contentIdList) if categoryDict[0]: (responseSpec, successResponse) = self.create("listcollections:configureobjectproto", False) temp = {} for key, val in categoryDict[1].items(): temp[key] = [] for elem in val: col = self.createGeneric("collection:ConfigureObjectProto") col.Name = elem[0] col.Date = elem[1] col.Version = elem[2] col.Category = elem[3] col.TemplateName = elem[4] temp[key].append(col) successResponse.collections = temp successResponse.status = 0 successResponse.message = "list objects successfully!!!" self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) else: (responseSpec, failedResponse) = self.create("listcollections:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = categoryDict[1] self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onListAuthoritySharers(self, proto, spec, message, body): try: print '---------------Begin List Authority Sharers---------------' print 'userId-seqId: {0}-{1}'.format(body.session.userId, body.session.seqId) print 'Object: <{0}>'.format(body.Collection) print '--------------- End List Authority Sharers---------------' isGetObject = self.configsql3.getCollection(body.Collection.Name, body.Collection.Date, body.Collection.Version, body.Collection.Category, body.Collection.TemplateName)[1] if isGetObject: secId = isGetObject[0] def getSharersSuccess(sharersDict): (responseSpec, successResponse) = self.create("getauthoritysharers:configureobjectproto", False) successResponse.SharerList = [elem for elem in sharersDict] successResponse.status = 0 successResponse.message = "Get sharer list {} successfully!!!".format(str(successResponse.SharerList)) self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) def getSharersFailed(Msg): (responseSpec, failedResponse) = self.create("getauthoritysharers:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = "Error: Getting sharer list is failed!!!" self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) self.securityClient.checkSharer(body.session, secId).then(getSharersSuccess).catch(getSharersFailed) else: (responseSpec, failedResponse) = self.create("getauthoritysharers:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = "Error: Getting sharer list is failed!!!" self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) except Exception as e: (responseSpec, failedResponse) = self.create("getauthoritysharers:configureobjectproto", False) failedResponse.status = 1 failedResponse.message = str(e) self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId())
class templServer(MessagePlugin): conn = psycopg2.connect(database="MyDb", user="******", password="******", host="127.0.0.1", port="5432") templdb = mydb(conn) def __init__(self, messageHandle): super(templServer, self).__init__(messageHandle) logging.basicConfig(filename=os.path.join( os.getcwd(), time.strftime('%Y-%m-%d-') + 'log.txt'), level=logging.ERROR, filemode='a', format='错误时间:%(asctime)s %(message)s', datefmt='%a, %d %b %Y %H:%M:%S') #按照下面的顺序将函数写入 self.handle('upcontent:templ_json', True, self.onUpContent) self.handle('jsonrelation:templ_json', True, self.onJsonRelation) self.handle('basecheck:templ_json', True, self.onBaseCheck) self.handle('download:templ_json', True, self.onDownLoad) self.handle('getjsoncon:templ_json', True, self.onGetJsonCon) self.handle('grantauthority:templ_json', True, self.onGrantAuthority) self.handle('templmerge:templ_json', True, self.onTemplMerge) self.handle('createversion:templ_json', True, self.onCreateVersion) def onConnectionOpened(self, proto): print '----begin login-----' self.aclClient = ACLClient(proto, self.mesgHandle, 609) self.securityClient = SecClient(proto, self.mesgHandle, 609) self.session = self.aclClient.login('bb', '1232') if 0 == self.session.userId and 0 == self.session.seqId: print '----login failed-----' else: print '----login success----' def onConnectionClosed(self, proto, reason): print '----begin logout-----' if self.session is not None: self.aclClient.logout(self.session) print '---logout success---' def write_log(self, log_type, userId, message, operation): logger = '\n用户ID:%s\n错误信息:%s\n%s\n执行操作:%s\n' % (userId, message, operation, '-' * 50) if log_type == 'error': logging.error(logger) #上传模板成功后(不管是更新,还是新建),该模板需要转换成json存储到t_jsonattr表中,还需要将该表的关系更新至t_baserelation中 def Templ2Field(self, templcontent): #将模板转为json字段存储 ################判断是否只有一个模板################## templcon = templcontent.split('};') c = None ob = [] for ii in range(len(templcon)): templob = [] templcon[ii] = templcon[ii].strip() templcon[ii] = templcon[ii].splitlines() #按行分割 for ii0 in range(len(templcon[ii])): #去除空行 if templcon[ii][ii0] != '': templob.append(templcon[ii][ii0]) if templob != []: templob = TemplToJson.TemplObject(templob) if templob.islegal == None: ob.append(templob) else: c = templob.islegal break if c == None: return ob else: return c # @checkLogin # @checkPermission def onUpContent(self, proto, spec, message, body): print '------Begin Upload Content------' print 'userId-seqId: %s-%s' % (body.session.userId, body.session.seqId) print 'template name:%s' % body.name print 'version:%s' % body.version print 'contents:%s' % body.contents print '------End Upload Content--------' with open('tests/master-public.pem') as f: publicKey1 = f.read() checkcontent = self.Templ2Field(body.contents) (responseSpec, failedResponse) = self.create("upcontent:templ_json", False) if checkcontent != [] and checkcontent != None and isinstance( checkcontent, str) == False: # 获取密钥 passcontent = [] passorigin = [] passwd = string.join( random.sample( list( 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-+' ), 16)).replace(" ", "") passorigin.append('origin' + body.name + body.version) passorigin.append(body.contents) passorigin.append(passwd) passcontent.append(passorigin) for ii in range(len(checkcontent)): jsoncontent = [] passwd = string.join( random.sample( list( 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-+' ), 16)).replace(" ", "") jsoncontent.append('json' + checkcontent[ii].TemplName + body.version) m = json.dumps(checkcontent[ii], cls=TemplToJson.MyEncoder, indent=4) jsoncontent.append(m) # putcontent->初始内容 jsoncontent.append(passwd) passcontent.append(jsoncontent) def putContentSuccess(originContentId): option = 'update' self.passcontent(message, proto, originContentId, checkcontent, publicKey1, body, option) def putContentFailed(errMesg): print 'putSeriesContent failed: %s' % errMesg failedResponse.status = 1 failedResponse.message = 'error:put content failed' failedResponse.name = body.name failedResponse.isLegal = True failedResponse.version = body.version failedResponse.isVersionIn = True self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) try: self.securityClient.putSeriesContent( self.session, passcontent, publicKey1).then(putContentSuccess).catch(putContentFailed) except Exception as e: print 'error:%s' % e else: failedResponse.status = 1 failedResponse.message = 'contents is not legal:%s' % checkcontent failedResponse.name = body.name failedResponse.isLegal = False failedResponse.version = body.version failedResponse.isVersionIn = False self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) print failedResponse def passcontent(self, message, proto, originContentId, checkcontent, publicKey1, body, option): security_cid = originContentId['origin' + body.name + body.version] ###################################### (responseSpec, Response) = self.create("upcontent:templ_json", False) for iii in range(len(checkcontent)): security_jid = originContentId['json' + checkcontent[iii].TemplName + body.version] checkv = templServer.templdb.CheckVersion(body.name, body.version) if checkv != False and checkv != None and option == 'update': # 该version在数据库内,执行update该version的函数 # try: update = templServer.templdb.UpDateJsonAttr( checkcontent[iii].TemplName, body.version, checkcontent[iii].BaseName, security_cid, security_jid, 'false', publicKey1, checkcontent[iii].TemplType) if update == True: # update成功 Response.status = 0 Response.message = 'update content successful' Response.name = checkcontent[iii].TemplName Response.isLegal = True Response.version = body.version Response.isVersionIn = True print Response if "::" not in checkcontent[iii].TemplName: upRela = templServer.templdb.UpdateRelation( checkcontent[iii].TemplName, body.version, checkcontent[iii].BaseName) if upRela == True: print 'base relation update success' else: print 'error:123456' else: Response.status = 1 Response.message = 'error: cannot update content' Response.name = checkcontent[iii].TemplName Response.isLegal = True Response.version = body.version Response.isVersionIn = False print Response self.write_log('error', body.session.userId, Response.message, '更新文件') elif checkv == None and option == 'create': # 该version不在数据库内,执行创建该version的函数 upversion = templServer.templdb.CreateJsonAttr( checkcontent[iii].TemplName, body.version, checkcontent[iii].BaseName, security_cid, security_jid, 'false', publicKey1, checkcontent[iii].TemplType) if upversion == True: Response.status = 0 Response.message = 'creat a new version of this name' Response.name = checkcontent[iii].TemplName Response.isLegal = True Response.version = body.version Response.isVersionIn = False print Response upRela = templServer.templdb.UpdateRelation( checkcontent[iii].TemplName, body.version, checkcontent[iii].BaseName) if upRela == True: print 'base relation update success' else: print 'error:12345678' else: Response.status = 2 Response.message = 'error:cannot create a new version' Response.name = checkcontent[iii].TemplName Response.isLegal = True Response.version = body.version Response.isVersionIn = False print Response else: # 否则返回错误信息 Response.status = 3 Response.message = 'cannot upload content' Response.name = checkcontent[iii].TemplName Response.isLegal = True Response.version = body.version Response.isVersionIn = False print Response self.write_log('error', body.session.userId, Response.message, '上传文件') self.send(message.getSource(), proto, responseSpec, Response, message.getRequestId()) def onJsonRelation(self, proto, spec, message, body): #请求Json relationship cur = self.conn.cursor() print '------Begin ask Json relationship------' print 'userId-seqId: %s-%s' % (body.session.userId, body.session.seqId) print 'JsonRelationName:%s' % body.JsonRelationName print 'version:%s' % body.version print '------End ask Json relationship--------' # try: RelCheck = templServer.templdb.CheckRelVersion(body.JsonRelationName, body.version) (responseSpec, successResponse) = self.create("jsonrelation:templ_json", False) (responseSpec, failedResponse) = self.create("jsonrelation:templ_json", False) if RelCheck != False and RelCheck != None: JsonRelation = templServer.templdb.JsonRelation( body.JsonRelationName, body.version) if JsonRelation != False and JsonRelation != None: successResponse.status = 0 successResponse.message = 'show json relationship successful' successResponse.JsonRelationName = body.JsonRelationName successResponse.version = body.version successResponse.JRelation = '%s' % JsonRelation print successResponse self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) elif JsonRelation == None: successResponse.status = 2 successResponse.message = ' json relationship is empty' successResponse.JsonRelationName = body.JsonRelationName successResponse.version = body.version successResponse.JRelation = 'None' print successResponse self.send(message.getSource(), proto, responseSpec, successResponse) else: failedResponse.status = 1 failedResponse.message = 'error:cannot show json relationship' print failedResponse self.write_log('error', body.session.userId, failedResponse.message, '返回Json relationship信息') self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) elif RelCheck == None: successResponse.status = 2 successResponse.message = 'the jsonrelationship of this name&version does not exist' successResponse.JsonRelationName = body.JsonRelationName successResponse.version = body.version successResponse.JRelation = 'None' print successResponse self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) else: failedResponse.status = 1 failedResponse.message = 'error:something is wrong!' print failedResponse self.write_log('error', body.session.userId, failedResponse.message, '请求Json relationship') def onBaseCheck(self, proto, spec, message, body): #基类查看 cur = self.conn.cursor() print '------Begin Base Check------' print 'userId-seqId: %s-%s' % (body.session.userId, body.session.seqId) print 'base name:%s' % body.BaseName print 'version:%s' % body.version print '------End Base Check--------' # try: base = templServer.templdb.CheckRelVersion(body.BaseName, body.version) (responseSpec, successResponse) = self.create("basecheck:templ_json", False) (responseSpec, failedResponse) = self.create("basecheck:templ_json", False) if base != False and base != None: baserel = templServer.templdb.BaseCheck(body.BaseName, body.version) if baserel != False and baserel != None: successResponse.status = 0 successResponse.BaseName = 'base check successful' successResponse.BaseName = body.BaseName successResponse.version = body.version successResponse.BRelation = '%s:%s' % (body.BaseName, baserel) print successResponse self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) elif baserel == None: successResponse.status = 2 successResponse.message = ' this base does not have base template' successResponse.BaseName = body.BaseName successResponse.version = body.version successResponse.BRelation = 'None' print successResponse self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) else: successResponse.status = 1 successResponse.message = 'error:cannot show json relationship' self.write_log('error', body.session.userId, successResponse.message, '返回Json relationship信息') print successResponse self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) elif base == None: failedResponse.status = 3 failedResponse.message = 'error:cannot find the base' failedResponse.BaseName = body.BaseName failedResponse.version = body.version failedResponse.BRelation = 'None' print failedResponse self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) else: failedResponse.status = 4 failedResponse.message = 'error:something is wrong!' print failedResponse self.write_log('error', body.session.userId, failedResponse, '基类查看') def onDownLoad(self, proto, spec, message, body): #下载 print '------Begin download------' print 'userId-seqId: %s-%s' % (body.session.userId, body.session.seqId) print 'template name:%s' % body.TemplName print 'version:%s' % body.version print '------End download--------' with open('tests/master-private.pem') as f: privateKey1 = f.read() # try: download = templServer.templdb.CheckVersion(body.TemplName, body.version) (responseSpec, successResponse) = self.create("download:templ_json", False) (responseSpec, failedResponse) = self.create("download:templ_json", False) if download != False and download != None: #添加下载模板函数,连接数据库 downT = templServer.templdb.download(body.TemplName, body.version) if downT != None and downT != False: def GetTContentSuccess(TContent): successResponse.status = 0 successResponse.message = 'template check successful' successResponse.TemplName = body.TemplName successResponse.version = body.version tcontent = TContent[body.TemplName].split('\n') successResponse.contents = 'contents:\n%s' % tcontent[0] print 'status:%s' % successResponse.status print 'message:%s' % successResponse.message print 'TemplName:%s' % successResponse.TemplName print 'version:%s' % successResponse.version print successResponse.contents for ii in range(1, len(tcontent)): print tcontent[ii] self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) def GetTContentFailed(errMesg): print 'getSeriesContent failed: %s' % errMesg failedResponse.status = 1 failedResponse.message = 'error:getcontent failed' failedResponse.TemplName = body.TemplName failedResponse.version = body.version failedResponse.contents = None self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) try: self.securityClient.getSeriesContent( self.session, [[body.TemplName, int(downT[0])]], privateKey1).then( GetTContentSuccess).catch(GetTContentFailed) except Exception as e: print 'error:%s' % e self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) ######################## else: return False elif download == None: successResponse.status = 2 successResponse.message = 'this template does not exist' successResponse.TemplName = body.TemplName successResponse.version = body.version successResponse.contents = None print successResponse self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) else: failedResponse.status = 1 failedResponse.message = 'error:cannot download the template' failedResponse.TemplName = body.TemplName failedResponse.version = body.version failedResponse.contents = None print failedResponse self.write_log('error', body.session.userId, failedResponse.message, '下载') self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onGetJsonCon(self, proto, spec, message, body): #请求json内容 cur = self.conn.cursor() print '------Begin ask json content------' print 'userId-seqId: %s-%s' % (body.session.userId, body.session.seqId) print 'json name:%s' % body.JsonAttrName print 'version:%s' % body.version print '-------End ask json content-------' with open('tests/master-private.pem') as f: privateKey1 = f.read() # try: checkrel = templServer.templdb.CheckVersion(body.JsonAttrName, body.version) (responseSpec, successResponse) = self.create("getjsoncon:templ_json", False) (responseSpec, failedResponse) = self.create("getjsoncon:templ_json", False) if checkrel != False and checkrel != None: #添加json属性字段查找函数,连接数据库 gattr = templServer.templdb.GetAttr(body.JsonAttrName, body.version) if gattr != False and gattr != None: def GetContentSuccess(JsonContent): successResponse.status = 0 successResponse.message = 'json check successful' successResponse.version = body.version Jcontent = JsonContent[body.JsonAttrName].split('\n') successResponse.JsonAttr = '%s:%s' % (body.JsonAttrName, Jcontent[0]) print 'status:%s' % successResponse.status print 'message:%s' % successResponse.message print 'JsonContent:%s' % successResponse.JsonAttr for ii in range(1, len(Jcontent)): print Jcontent[ii] self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) def GetContentFailed(errMesg): print 'getSeriesContent failed: %s' % errMesg failedResponse.status = 1 failedResponse.message = 'error:getJsonContent failed' failedResponse.version = body.version failedResponse.JsonAttr = None self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) try: self.securityClient.getSeriesContent( self.session, [[body.JsonAttrName, int(gattr[0])]], privateKey1).then(GetContentSuccess).catch( GetContentFailed) except Exception as e: print 'error:%s' % e failedResponse.message = 'error:%s' % e self.send(message.getSource(), proto, responseSpec, failedResponse) else: (responseSpec, failedResponse) = self.create("typeattr:templ_json", False) failedResponse.status = 1 failedResponse.message = 'error:cannot show json attribute' print failedResponse self.write_log('error', body.session.userId, failedResponse, '请求json内容') self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) def onGrantAuthority(self, proto, spec, message, body): #授权 print '------Begin Grant Authority------' print 'userId-seqId: %s-%s' % (body.session.userId, body.session.seqId) print 'userId:%s' % body.userId print '-------End Grant Authority-------' (responseSpec, successResponse) = self.create("grantauthority:templ_json", False) successResponse.status = 0 successResponse.message = "Grant Authority Success" self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) #######模板合并未编完###### def onTemplMerge(self, proto, spec, message, body): #请求模板合并 print '------Begin ask merge template------' print 'userId-seqId: %s-%s' % (body.session.userId, body.session.seqId) print '-------End ask merge template-------' ###################未编完,思路有待考证,版本是否需要check ### (responseSpec, successResponse) = self.create("templmerge:templ_json", False) successResponse.status = 0 successResponse.message = "Template Merge Success" self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) def onCreateVersion(self, proto, spec, message, body): print '------Begin Create Version------' print 'userId-seqId: %s-%s' % (body.session.userId, body.session.seqId) print 'templname:%s' % body.name print 'version:%s' % body.version print 'contents:%s' % body.contents print '------End Create Version--------' with open('tests/master-public.pem') as f: publicKey1 = f.read() checkcontent = self.Templ2Field(body.contents) (responseSpec, failedResponse) = self.create("creatversion:templ_json", False) if checkcontent != [] and checkcontent != None and isinstance( checkcontent, str) == False: # 获取密钥 passcontent = [] passorigin = [] passwd = string.join( random.sample( list( 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-+' ), 16)).replace(" ", "") passorigin.append('origin' + body.name + body.version) passorigin.append(body.contents) passorigin.append(passwd) passcontent.append(passorigin) for ii in range(len(checkcontent)): jsoncontent = [] passwd = string.join( random.sample( list( 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-+' ), 16)).replace(" ", "") jsoncontent.append('json' + checkcontent[ii].TemplName + body.version) jsoncontent.append( json.dumps(checkcontent[ii], cls=TemplToJson.MyEncoder, indent=4)) # putcontent->初始内容 jsoncontent.append(passwd) passcontent.append(jsoncontent) def putContentSuccess(originContentId): option = 'create' self.passcontent(message, proto, originContentId, checkcontent, publicKey1, body, option) def putContentFailed(errMesg): print 'putSeriesContent failed: %s' % errMesg failedResponse.status = 3 failedResponse.message = 'error:putContentFailed' failedResponse.name = body.name failedResponse.isLegal = True failedResponse.version = body.version failedResponse.isVersionIn = True self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) try: self.securityClient.putSeriesContent( self.session, passcontent, publicKey1).then(putContentSuccess).catch(putContentFailed) except Exception as e: print 'error:%s' % e failedResponse.message = 'error:%s' % e self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) else: failedResponse.status = 4 failedResponse.message = 'contents is not legal:%s' % checkcontent failedResponse.name = body.name failedResponse.isLegal = False failedResponse.version = body.version failedResponse.isVersionIn = False self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) print failedResponse
class templServer(MessagePlugin): conn = psycopg2.connect(database="MyDb", user="******", password="******", host="127.0.0.1", port="5432") templdb = mydb(conn) def __init__(self, messageHandle): super(templServer, self).__init__(messageHandle) logging.basicConfig(filename = os.path.join(os.getcwd(), time.strftime('%Y-%m-%d-') + 'log.txt'), level = logging.ERROR, filemode = 'a', format = '错误时间:%(asctime)s %(message)s',datefmt='%a, %d %b %Y %H:%M:%S') #按照下面的顺序将函数写入 self.handle('upcontent:templ_json', True, self.onUpContent) self.handle('jsonrelation:templ_json', True, self.onJsonRelation) self.handle('basecheck:templ_json', True, self.onBaseCheck) self.handle('download:templ_json', True, self.onDownLoad) self.handle('getjsoncon:templ_json', True, self.onGetJsonCon) self.handle('grantauthority:templ_json', True, self.onGrantAuthority) self.handle('templmerge:templ_json', True, self.onTemplMerge) self.handle('createversion:templ_json', True, self.onCreateVersion) def onConnectionOpened(self, proto): print '----begin login-----' self.aclClient = ACLClient(proto, self.mesgHandle, 609) self.securityClient = SecClient(proto, self.mesgHandle, 609) self.session = self.aclClient.login('bb', '1232') if 0 == self.session.userId and 0 == self.session.seqId: print '----login failed-----' else: print '----login success----' def onConnectionClosed(self, proto, reason): print '----begin logout-----' if self.session is not None: self.aclClient.logout(self.session) print '---logout success---' def write_log(self,log_type, userId, message, operation): logger = '\n用户ID:%s\n错误信息:%s\n%s\n执行操作:%s\n' % (userId, message, operation,'-'*50) if log_type == 'error': logging.error(logger) #上传模板成功后(不管是更新,还是新建),该模板需要转换成json存储到t_jsonattr表中,还需要将该表的关系更新至t_baserelation中 def Templ2Field(self,templcontent):#将模板转为json字段存储 ################判断是否只有一个模板################## templcon = templcontent.split('};') c = None ob = [] for ii in range(len(templcon)): templob = [] templcon[ii] = templcon[ii].strip() templcon[ii] = templcon[ii].splitlines() #按行分割 for ii0 in range(len(templcon[ii])):#去除空行 if templcon[ii][ii0] != '': templob.append(templcon[ii][ii0]) if templob != []: templob = TemplToJson.TemplObject(templob) if templob.islegal == None: ob.append(templob) else: c = templob.islegal break if c == None: return ob else: return c # @checkLogin # @checkPermission def onUpContent(self, proto, spec, message, body): print '------Begin Upload Content------' print 'userId-seqId: %s-%s' % (body.session.userId, body.session.seqId) print 'template name:%s' % body.name print 'version:%s' % body.version print 'contents:%s' % body.contents print '------End Upload Content--------' with open('tests/master-public.pem') as f: publicKey1 = f.read() checkcontent = self.Templ2Field(body.contents) (responseSpec, failedResponse) = self.create("upcontent:templ_json", False) if checkcontent != [] and checkcontent != None and isinstance(checkcontent,str) == False: # 获取密钥 passcontent = [] passorigin = [] passwd = string.join(random.sample(list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-+'), 16)).replace(" ","") passorigin.append('origin' + body.name + body.version) passorigin.append(body.contents) passorigin.append(passwd) passcontent.append(passorigin) for ii in range(len(checkcontent)): jsoncontent = [] passwd = string.join(random.sample(list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-+'), 16)).replace(" ","") jsoncontent.append('json' + checkcontent[ii].TemplName + body.version) m = json.dumps(checkcontent[ii], cls=TemplToJson.MyEncoder, indent=4) jsoncontent.append(m) # putcontent->初始内容 jsoncontent.append(passwd) passcontent.append(jsoncontent) def putContentSuccess(originContentId): option = 'update' self.passcontent(message,proto,originContentId,checkcontent,publicKey1,body,option) def putContentFailed(errMesg): print 'putSeriesContent failed: %s' % errMesg failedResponse.status = 1 failedResponse.message = 'error:put content failed' failedResponse.name = body.name failedResponse.isLegal = True failedResponse.version = body.version failedResponse.isVersionIn = True self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) try: self.securityClient.putSeriesContent(self.session, passcontent, publicKey1).then(putContentSuccess).catch(putContentFailed) except Exception as e: print 'error:%s' % e else: failedResponse.status = 1 failedResponse.message = 'contents is not legal:%s' % checkcontent failedResponse.name = body.name failedResponse.isLegal = False failedResponse.version = body.version failedResponse.isVersionIn = False self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) print failedResponse def passcontent(self,message, proto,originContentId,checkcontent,publicKey1,body,option): security_cid = originContentId['origin' + body.name + body.version] ###################################### (responseSpec, Response) = self.create("upcontent:templ_json", False) for iii in range(len(checkcontent)): security_jid = originContentId['json' + checkcontent[iii].TemplName + body.version] checkv = templServer.templdb.CheckVersion(body.name, body.version) if checkv != False and checkv != None and option == 'update': # 该version在数据库内,执行update该version的函数 # try: update = templServer.templdb.UpDateJsonAttr(checkcontent[iii].TemplName, body.version, checkcontent[iii].BaseName, security_cid, security_jid, 'false',publicKey1, checkcontent[iii].TemplType) if update == True: # update成功 Response.status = 0 Response.message = 'update content successful' Response.name = checkcontent[iii].TemplName Response.isLegal = True Response.version = body.version Response.isVersionIn = True print Response if "::" not in checkcontent[iii].TemplName: upRela = templServer.templdb.UpdateRelation(checkcontent[iii].TemplName, body.version,checkcontent[iii].BaseName) if upRela==True: print 'base relation update success' else: print 'error:123456' else: Response.status = 1 Response.message = 'error: cannot update content' Response.name = checkcontent[iii].TemplName Response.isLegal = True Response.version = body.version Response.isVersionIn = False print Response self.write_log('error', body.session.userId, Response.message, '更新文件') elif checkv == None and option == 'create': # 该version不在数据库内,执行创建该version的函数 upversion = templServer.templdb.CreateJsonAttr(checkcontent[iii].TemplName, body.version, checkcontent[iii].BaseName, security_cid, security_jid, 'false', publicKey1, checkcontent[iii].TemplType) if upversion == True: Response.status = 0 Response.message = 'creat a new version of this name' Response.name = checkcontent[iii].TemplName Response.isLegal = True Response.version = body.version Response.isVersionIn = False print Response upRela = templServer.templdb.UpdateRelation(checkcontent[iii].TemplName, body.version,checkcontent[iii].BaseName) if upRela==True: print 'base relation update success' else: print 'error:12345678' else: Response.status = 2 Response.message = 'error:cannot create a new version' Response.name = checkcontent[iii].TemplName Response.isLegal = True Response.version = body.version Response.isVersionIn = False print Response else: # 否则返回错误信息 Response.status = 3 Response.message = 'cannot upload content' Response.name = checkcontent[iii].TemplName Response.isLegal = True Response.version = body.version Response.isVersionIn = False print Response self.write_log('error', body.session.userId, Response.message, '上传文件') self.send(message.getSource(),proto, responseSpec, Response, message.getRequestId()) def onJsonRelation(self, proto, spec, message, body):#请求Json relationship cur = self.conn.cursor() print '------Begin ask Json relationship------' print 'userId-seqId: %s-%s' % (body.session.userId, body.session.seqId) print 'JsonRelationName:%s' % body.JsonRelationName print 'version:%s' % body.version print '------End ask Json relationship--------' # try: RelCheck=templServer.templdb.CheckRelVersion(body.JsonRelationName, body.version) (responseSpec, successResponse) = self.create("jsonrelation:templ_json", False) (responseSpec, failedResponse) = self.create("jsonrelation:templ_json", False) if RelCheck != False and RelCheck != None: JsonRelation = templServer.templdb.JsonRelation(body.JsonRelationName, body.version) if JsonRelation != False and JsonRelation != None: successResponse.status = 0 successResponse.message = 'show json relationship successful' successResponse.JsonRelationName = body.JsonRelationName successResponse.version = body.version successResponse.JRelation = '%s' % JsonRelation print successResponse self.send(message.getSource(),proto, responseSpec, successResponse, message.getRequestId()) elif JsonRelation == None: successResponse.status = 2 successResponse.message = ' json relationship is empty' successResponse.JsonRelationName = body.JsonRelationName successResponse.version = body.version successResponse.JRelation = 'None' print successResponse self.send(message.getSource(),proto, responseSpec, successResponse) else: failedResponse.status = 1 failedResponse.message = 'error:cannot show json relationship' print failedResponse self.write_log('error', body.session.userId, failedResponse.message, '返回Json relationship信息') self.send(message.getSource(),proto, responseSpec, failedResponse, message.getRequestId()) elif RelCheck == None: successResponse.status = 2 successResponse.message = 'the jsonrelationship of this name&version does not exist' successResponse.JsonRelationName = body.JsonRelationName successResponse.version = body.version successResponse.JRelation = 'None' print successResponse self.send(message.getSource(),proto, responseSpec, successResponse, message.getRequestId()) else: failedResponse.status = 1 failedResponse.message = 'error:something is wrong!' print failedResponse self.write_log('error', body.session.userId, failedResponse.message, '请求Json relationship') def onBaseCheck(self, proto, spec, message, body):#基类查看 cur = self.conn.cursor() print '------Begin Base Check------' print 'userId-seqId: %s-%s' % (body.session.userId, body.session.seqId) print 'base name:%s' % body.BaseName print 'version:%s' % body.version print '------End Base Check--------' # try: base=templServer.templdb.CheckRelVersion(body.BaseName, body.version) (responseSpec, successResponse) = self.create("basecheck:templ_json", False) (responseSpec, failedResponse) = self.create("basecheck:templ_json", False) if base != False and base != None: baserel = templServer.templdb.BaseCheck(body.BaseName, body.version) if baserel != False and baserel != None: successResponse.status = 0 successResponse.BaseName = 'base check successful' successResponse.BaseName = body.BaseName successResponse.version = body.version successResponse.BRelation = '%s:%s'% (body.BaseName,baserel) print successResponse self.send(message.getSource(),proto, responseSpec, successResponse, message.getRequestId()) elif baserel == None: successResponse.status = 2 successResponse.message = ' this base does not have base template' successResponse.BaseName = body.BaseName successResponse.version = body.version successResponse.BRelation = 'None' print successResponse self.send(message.getSource(),proto, responseSpec, successResponse, message.getRequestId()) else: successResponse.status = 1 successResponse.message = 'error:cannot show json relationship' self.write_log('error', body.session.userId, successResponse.message, '返回Json relationship信息') print successResponse self.send(message.getSource(),proto, responseSpec, successResponse, message.getRequestId()) elif base == None: failedResponse.status = 3 failedResponse.message = 'error:cannot find the base' failedResponse.BaseName = body.BaseName failedResponse.version = body.version failedResponse.BRelation = 'None' print failedResponse self.send(message.getSource(),proto, responseSpec, successResponse, message.getRequestId()) else: failedResponse.status = 4 failedResponse.message = 'error:something is wrong!' print failedResponse self.write_log('error', body.session.userId, failedResponse, '基类查看') def onDownLoad(self, proto, spec, message, body):#下载 print '------Begin download------' print 'userId-seqId: %s-%s' % (body.session.userId, body.session.seqId) print 'template name:%s' % body.TemplName print 'version:%s' % body.version print '------End download--------' with open('tests/master-private.pem') as f: privateKey1 = f.read() # try: download=templServer.templdb.CheckVersion(body.TemplName, body.version) (responseSpec, successResponse) = self.create("download:templ_json", False) (responseSpec, failedResponse) = self.create("download:templ_json", False) if download != False and download != None: #添加下载模板函数,连接数据库 downT=templServer.templdb.download(body.TemplName, body.version) if downT != None and downT != False: def GetTContentSuccess(TContent): successResponse.status = 0 successResponse.message = 'template check successful' successResponse.TemplName = body.TemplName successResponse.version = body.version tcontent = TContent[body.TemplName].split('\n') successResponse.contents = 'contents:\n%s'% tcontent[0] print 'status:%s'% successResponse.status print 'message:%s'% successResponse.message print 'TemplName:%s'% successResponse.TemplName print 'version:%s'% successResponse.version print successResponse.contents for ii in range(1,len(tcontent)): print tcontent[ii] self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) def GetTContentFailed(errMesg): print 'getSeriesContent failed: %s' % errMesg failedResponse.status = 1 failedResponse.message = 'error:getcontent failed' failedResponse.TemplName = body.TemplName failedResponse.version = body.version failedResponse.contents = None self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) try: self.securityClient.getSeriesContent(self.session,[[body.TemplName, int(downT[0])]], privateKey1).then(GetTContentSuccess).catch(GetTContentFailed) except Exception as e: print 'error:%s' % e self.send(message.getSource(),proto, responseSpec, successResponse, message.getRequestId()) ######################## else: return False elif download == None: successResponse.status = 2 successResponse.message = 'this template does not exist' successResponse.TemplName = body.TemplName successResponse.version = body.version successResponse.contents = None print successResponse self.send(message.getSource(),proto, responseSpec, successResponse, message.getRequestId()) else: failedResponse.status = 1 failedResponse.message = 'error:cannot download the template' failedResponse.TemplName = body.TemplName failedResponse.version = body.version failedResponse.contents = None print failedResponse self.write_log('error', body.session.userId, failedResponse.message, '下载') self.send(message.getSource(),proto, responseSpec, failedResponse, message.getRequestId()) def onGetJsonCon(self, proto, spec, message, body):#请求json内容 cur = self.conn.cursor() print '------Begin ask json content------' print 'userId-seqId: %s-%s' % (body.session.userId, body.session.seqId) print 'json name:%s' % body.JsonAttrName print 'version:%s' % body.version print '-------End ask json content-------' with open('tests/master-private.pem') as f: privateKey1 = f.read() # try: checkrel=templServer.templdb.CheckVersion(body.JsonAttrName, body.version) (responseSpec, successResponse) = self.create("getjsoncon:templ_json", False) (responseSpec, failedResponse) = self.create("getjsoncon:templ_json", False) if checkrel != False and checkrel != None: #添加json属性字段查找函数,连接数据库 gattr = templServer.templdb.GetAttr(body.JsonAttrName, body.version) if gattr != False and gattr != None: def GetContentSuccess(JsonContent): successResponse.status = 0 successResponse.message = 'json check successful' successResponse.version = body.version Jcontent = JsonContent[body.JsonAttrName].split('\n') successResponse.JsonAttr = '%s:%s'% (body.JsonAttrName,Jcontent[0]) print 'status:%s'% successResponse.status print 'message:%s'% successResponse.message print 'JsonContent:%s'% successResponse.JsonAttr for ii in range(1,len(Jcontent)): print Jcontent[ii] self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) def GetContentFailed(errMesg): print 'getSeriesContent failed: %s' % errMesg failedResponse.status = 1 failedResponse.message = 'error:getJsonContent failed' failedResponse.version = body.version failedResponse.JsonAttr = None self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) try: self.securityClient.getSeriesContent(self.session,[[body.JsonAttrName, int(gattr[0])]], privateKey1).then(GetContentSuccess).catch(GetContentFailed) except Exception as e: print 'error:%s' % e failedResponse.message = 'error:%s' % e self.send(message.getSource(),proto, responseSpec, failedResponse) else: (responseSpec, failedResponse) = self.create("typeattr:templ_json", False) failedResponse.status = 1 failedResponse.message = 'error:cannot show json attribute' print failedResponse self.write_log('error', body.session.userId, failedResponse, '请求json内容') self.send(message.getSource(),proto, responseSpec, failedResponse, message.getRequestId()) def onGrantAuthority(self, proto, spec, message, body):#授权 print '------Begin Grant Authority------' print 'userId-seqId: %s-%s' % (body.session.userId, body.session.seqId) print 'userId:%s' % body.userId print '-------End Grant Authority-------' (responseSpec, successResponse) = self.create("grantauthority:templ_json", False) successResponse.status = 0 successResponse.message = "Grant Authority Success" self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) #######模板合并未编完###### def onTemplMerge(self, proto, spec, message, body):#请求模板合并 print '------Begin ask merge template------' print 'userId-seqId: %s-%s' % (body.session.userId, body.session.seqId) print '-------End ask merge template-------' ###################未编完,思路有待考证,版本是否需要check ### (responseSpec, successResponse) = self.create("templmerge:templ_json", False) successResponse.status = 0 successResponse.message = "Template Merge Success" self.send(message.getSource(), proto, responseSpec, successResponse, message.getRequestId()) def onCreateVersion(self, proto, spec, message, body): print '------Begin Create Version------' print 'userId-seqId: %s-%s' % (body.session.userId, body.session.seqId) print 'templname:%s' % body.name print 'version:%s' % body.version print 'contents:%s' % body.contents print '------End Create Version--------' with open('tests/master-public.pem') as f: publicKey1 = f.read() checkcontent = self.Templ2Field(body.contents) (responseSpec, failedResponse) = self.create("creatversion:templ_json", False) if checkcontent != [] and checkcontent != None and isinstance(checkcontent,str) == False: # 获取密钥 passcontent = [] passorigin = [] passwd = string.join(random.sample(list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-+'), 16)).replace(" ","") passorigin.append('origin' + body.name + body.version) passorigin.append(body.contents) passorigin.append(passwd) passcontent.append(passorigin) for ii in range(len(checkcontent)): jsoncontent = [] passwd = string.join(random.sample(list('abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()-+'), 16)).replace(" ","") jsoncontent.append('json' + checkcontent[ii].TemplName + body.version) jsoncontent.append(json.dumps(checkcontent[ii], cls=TemplToJson.MyEncoder, indent=4)) # putcontent->初始内容 jsoncontent.append(passwd) passcontent.append(jsoncontent) def putContentSuccess(originContentId): option = 'create' self.passcontent(message,proto,originContentId,checkcontent,publicKey1,body,option) def putContentFailed(errMesg): print 'putSeriesContent failed: %s' % errMesg failedResponse.status = 3 failedResponse.message = 'error:putContentFailed' failedResponse.name = body.name failedResponse.isLegal = True failedResponse.version = body.version failedResponse.isVersionIn = True self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) try: self.securityClient.putSeriesContent(self.session, passcontent, publicKey1).then(putContentSuccess).catch(putContentFailed) except Exception as e: print 'error:%s' % e failedResponse.message = 'error:%s' % e self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) else: failedResponse.status = 4 failedResponse.message = 'contents is not legal:%s' % checkcontent failedResponse.name = body.name failedResponse.isLegal = False failedResponse.version = body.version failedResponse.isVersionIn = False self.send(message.getSource(), proto, responseSpec, failedResponse, message.getRequestId()) print failedResponse
def test(pea, proto): client123 = ACLClient(proto, pea.customHandle, 609) session = client123.login('aa', '1231') client = ConfigureObjectClient(proto, pea.customHandle, 612) with open('tests/master-public.pem') as f: publicKey1 = f.read() with open('tests/master-private.pem') as f: privateKey1 = f.read() with open('tests/ghost-public.pem') as f: publicKey2 = f.read() with open('tests/ghost-private.pem') as f: privateKey2 = f.read() def getObjectSuccess(content): print content def getObjectFailed(errMsg): print errMsg def success(msg): print msg def failed(msg): print msg #client.listCollections(session).then(getObjectSuccess).catch(getObjectFailed) # client.deleteObject(session, [['obj6', '20120812', 'v0.2'], ['obj7', '20120812', 'v0.2']]).then( # success).catch(failed) # client.getObjects(session, [['obj6', '20120812', 'v0.2'],['obj7', '20120812', 'v0.2']]).then( # success).catch(failed) objcontentlist = [ ['obj1', '20120813', 'v0.2', "signal", "tmpl1", "col1", 'ccc2'], ['obj2', '20120813', 'v0.2', "signal","tmpl1","col1",'ccc2'], ['obj3', '20120813', 'v0.2', "signal","tmpl1","col1",'ccc2'], ['obj4', '20120813', 'v0.2', "signal","tmpl1","col1",'ccc2'], ['obj5', '20120813', 'v0.2', "signal","tmpl1","col1",'ccc2'], ['obj6', '20120813', 'v0.2', "signal","tmpl1","col1",'ccc2'], ['obj7', '20120813', 'v0.2',"signal","tmpl1","col1", 'ccc2'], ['obj8', '20120813', 'v0.2', "signal","tmpl1","col1",'ccc2'], ['obj1', '20120813', 'v0.3', "signal","tmpl1","col2",'ccc3'], ['obj2', '20120813', 'v0.3', "signal","tmpl1","col2",'ccc3'], ['obj3', '20120813', 'v0.3', "signal","tmpl1","col2",'ccc3'], ['obj4', '20120813', 'v0.3', "signal","tmpl1","col2",'ccc3'], ['obj5', '20120813', 'v0.3', "signal","tmpl1","col2",'ccc3'], ['obj6', '20120813', 'v0.3', "signal","tmpl1","col2",'ccc3'], ['obj7', '20120813', 'v0.3', "signal","tmpl1","col2",'ccc3'], ['obj8', '20120813', 'v0.3', "signal","tmpl1","col2",'ccc3'], ['obj1', '20120814', 'v0.2', "strategy","tmpl1","col1",'ccc2'], ['obj2', '20120814', 'v0.2', "strategy","tmpl1","col1",'ccc2'], ['obj3', '20120814', 'v0.2', "strategy","tmpl1","col1",'ccc2'], ['obj4', '20120814', 'v0.2', "strategy","tmpl1","col1",'ccc2'], ['obj5', '20120814', 'v0.2', "strategy","tmpl1","col1",'ccc2'], ['obj6', '20120814', 'v0.2', "strategy","tmpl1","col1",'ccc2'], ['obj7', '20120814', 'v0.2', "strategy","tmpl1","col1",'ccc2'], ['obj8', '20120814', 'v0.2', "strategy","tmpl1","col1",'ccc2'], ['obj1', '20120814', 'v0.3', "strategy","tmpl1","col2",'ccc3'], ['obj2', '20120814', 'v0.3', "strategy","tmpl1","col2",'ccc3'], ['obj3', '20120814', 'v0.3', "strategy","tmpl1","col2",'ccc3'], ['obj4', '20120814', 'v0.3', "strategy","tmpl1","col",'ccc3'], ['obj5', '20120814', 'v0.3', "strategy","tmpl1","col1",'ccc3'], ] objlist = [ # ['obj1', '20120813', 'v0.2'], # ['obj2', '20120813', 'v0.2'], # ['obj3', '20120813', 'v0.2'], # ['obj4', '20120813', 'v0.2'], # ['obj5', '20120813', 'v0.2'], # ['obj6', '20120813', 'v0.2'], # ['obj7', '20120813', 'v0.2'], # ['obj8', '20120813', 'v0.2'], # ['obj1', '20120813', 'v0.3'], # ['obj2', '20120813', 'v0.3'], # ['obj3', '20120813', 'v0.3'], # ['obj4', '20120813', 'v0.3'], # ['obj5', '20120813', 'v0.3'], # ['obj6', '20120813', 'v0.3'], # ['obj7', '20120813', 'v0.3'], # ['obj8', '20120813', 'v0.3'] ['obj1', '20120814', 'v0.2'], ['obj2', '20120814', 'v0.2'], ['obj3', '20120814', 'v0.2'], ['obj4', '20120814', 'v0.2'], ['obj5', '20120814', 'v0.2'], ['obj6', '20120814', 'v0.2'], ['obj7', '20120814', 'v0.2'], ['obj8', '20120814', 'v0.2'], ['obj1', '20120814', 'v0.3'], ['obj2', '20120814', 'v0.3'], ['obj3', '20120814', 'v0.3'], ['obj4', '20120814', 'v0.3'], ['obj5', '20120814', 'v0.3'], ['obj6', '20120814', 'v0.3'], ['obj7', '20120814', 'v0.3'], ['obj8', '20120814', 'v0.3'] ] col = [] client.getCollection(session, '20120813', 'v0.2',"signal","tmpl1","col1").then(success).catch(failed)