Esempio n. 1
0
    def post(self):
        logging.debug("In CreateUserHandler")
        self.response.headers['Content-Type'] = 'application/json'

        # Verify the gameid is valid:
        gameid = self.request.get('gameid')
        if gameid not in GAMES:
            write_response(self.response, "4", None,
                           "gameid is invalid: %s" % gameid)
            return

        # Verify that this user name is unique
        name = self.request.get('name')
        game = GAMES[gameid]['name']
        logging.debug("Email is: " + self.request.get('email'))
        if not GameUser.name_is_available(name, game):
            write_response(self.response, "2", None,
                           "User name %s already exists for this game." % name)
            return

        # Verify that this email is unique
        if GAMES[gameid]['emailVerification']:
            email = self.request.get('email')
            if email == None or email == '':
                write_response(self.response, "1", None,
                               "Required fields are missing: %s." % email)

            game = GAMES[gameid]['name']
            email = encrypt(email.lower())
            if not GameUser.email_is_available(email, game):
                write_response(
                    self.response, "13", None,
                    "Email address %s already exists for this game." % email)
                return
        else:
            email = encrypt(self.request.get('email').lower())

        user = GameUser()
        user.password, user.salt = saltedhash_hex(self.request.get('password'))
        user.name = name.lower()
        user.game = game
        logging.debug("Email NOW is: " + email)
        user.email = email
        user.phone = encrypt(self.request.get('phone'))
        user.blob = self.request.get('blob')

        # Perform email verification for those games that require it.
        # Otherwise, just mark the user as verified.

        if GAMES[gameid]['emailVerification']:
            user.status = USER_UNVERIFIED
            send_email(user, GAMES[gameid]['name'])
        else:
            user.status = USER_VERIFIED

        user.put()
        write_response(self.response, "0", {})
Esempio n. 2
0
    def post(self):
        logging.debug("In CreateUserHandler")
        self.response.headers['Content-Type'] = 'application/json'

        # Verify the gameid is valid:
        gameid = self.request.get('gameid')
        if gameid not in GAMES:
            write_response(self.response, "4", None, "gameid is invalid: %s" % gameid)
            return

        # Verify that this user name is unique
        name = self.request.get('name')
        game = GAMES[gameid]['name']
        logging.debug("Email is: " + self.request.get('email'))
        if not GameUser.name_is_available(name, game):
            write_response(self.response, "2", None, 
                           "User name %s already exists for this game." % name)
            return
           
        # Verify that this email is unique
        if GAMES[gameid]['emailVerification']:
            email = self.request.get('email')
            if email == None or email == '':
                write_response(self.response, "1", None, 
                               "Required fields are missing: %s." % email)

            game = GAMES[gameid]['name']
            email = encrypt(email.lower())
            if not GameUser.email_is_available(email, game):
                write_response(self.response, "13", None, 
                               "Email address %s already exists for this game." % email)
                return
        else:
            email = encrypt(self.request.get('email').lower())
            
        user = GameUser()
        user.password, user.salt = saltedhash_hex(self.request.get('password'))
        user.name = name.lower()
        user.game = game
        logging.debug("Email NOW is: " + email)
        user.email = email
        user.phone = encrypt(self.request.get('phone'))
        user.blob = self.request.get('blob')

        # Perform email verification for those games that require it.
        # Otherwise, just mark the user as verified.

        if GAMES[gameid]['emailVerification']:
            user.status = USER_UNVERIFIED
            send_email(user, GAMES[gameid]['name'])
        else:
            user.status = USER_VERIFIED

        user.put()
        write_response(self.response, "0", {})
Esempio n. 3
0
    def post(self):
        logging.debug("In UpdateUserHandler")
        self.response.headers['Content-Type'] = 'application/json'

        # Do basic update validation
        user = get_user_for_update(self.request, self.response)
        if user == None:
            return

        request_args = set(self.request.arguments())

        # Update encrypted fields
        for property in ('email', 'phone'):
            if property in request_args:
                user.set_value(property, encrypt(self.request.get(property)))

        # Update rest of fields
        for property in ('wins', 'losses', 'credits', 'level', 'experience',
                         'blob'):

            if property in request_args:
                user.set_value(property, self.request.get(property))

        user.modify_date = datetime.now()
        user.put()

        write_response(self.response, "0", {})
Esempio n. 4
0
    def post(self):
        logging.debug("In UpdateUserHandler")
        self.response.headers['Content-Type'] = 'application/json'

        # Do basic update validation
        user = get_user_for_update(self.request, self.response)
        if user == None:
            return

        request_args = set(self.request.arguments())

        # Update encrypted fields
        for property in ('email', 'phone'):
            if property in request_args:
                user.set_value(property, encrypt(self.request.get(property)))

        # Update rest of fields
        for property in ('wins', 'losses', 'credits', 
                         'level', 'experience', 'blob'):

            if property in request_args:
                user.set_value(property, self.request.get(property))

        user.modify_date = datetime.now()
        user.put()

        write_response(self.response, "0", {})
Esempio n. 5
0
 def handler(self):
     info = get_server_info(self)
     print(info["mem"])
     if not os.path.exists(settings.CERT_FILE_PATH):
         info['type'] = 'create'
     else:
         with open(settings.CERT_FILE_PATH, 'r') as f:
             cert = f.read()
             if cert == info['basic']['data']['hostname']:
                 info['type'] = 'update'
             else:
                 info['cert'] = cert
                 info['type'] = 'host_update'
     ctime = int(time.time() * 1000)
     r1 = requests.post(url=self.asset_api,
                        params={
                            "sign": gen_sign(ctime),
                            "ctime": ctime
                        },
                        data=encrypt(json.dumps(info).encode("utf-8")),
                        headers={'Content-Type': 'application/json'})
     response = r1.json()
     print("text", response['data'])
     if response['status']:
         with open(settings.CERT_FILE_PATH, 'w') as f:
             f.write(response['data'])
Esempio n. 6
0
    def handler(self):
        # agent 下采集信息
        info = get_server_info(handler=self)
        # 根据主机名  判断 具体的操作
        if not os.path.exists(settings.CERT_PATH):
            # 文件不存在 新增
            info['type'] = 'create'
        else:
            # 更新
            with open(settings.CERT_PATH, 'r', encoding='utf-8') as f:
                old_hostname = f.read()
            hostname = info['basic']['data']['hostname']  # 最新主机名
            if old_hostname == hostname:
                # 更新资产
                info['type'] = 'update'
            else:
                info['type'] = 'update_hostname'
                info['old_hostname'] = old_hostname

        # 汇报 api
        now = time.time()
        response = requests.post(
            url=self.url,
            params={
                'key': gen_key(now),
                'ctime': now
            },
            data=encrypt(json.dumps(info)),
            headers={'content-type': 'application/json'},
        )
        ret = response.json()

        if ret['status'] is True:
            with open(settings.CERT_PATH, 'w', encoding='utf-8') as f1:
                f1.write(ret['hostname'])
Esempio n. 7
0
    def handler(self):
        '''
        处理 Agent 模式下资产采集: 网卡 内存 硬盘 ...
        :return:
        '''

        # 调度 plugins.disk / plugins.network
        # 1. 通过调用 get_server_info 网卡 内存 硬盘 ...

        info = get_server_info(self)

        # 2. 获取本地文件唯一标示

        if not Path(settings.CERT_FILE_PATH).exists():
            # 新服务器 应该在数据库增加数据。
            info["type"] = "create"
        else:
            with open(settings.CERT_FILE_PATH, "r", encoding='utf-8') as f:
                cert = f.read()

            if cert == info["basic"]['data']['hostname']:
                # 主机名未更新,汇报给 API ,API 做更新。
                info["type"] = "update"
            else:
                info["cert"] = cert
                info["type"] = "host_update"

        # 3. 发送到 API

        ctime = int(time.time() * 1000)

        r1 = requests.post(
            url=self.asset_api,
            params={
                'sign': gen_sign(ctime),
                'ctime': ctime
            },
            # 可以加头,类型
            data=encrypt(json.dumps(info).encode('utf-8')),
            headers={'Content-Type': 'application/json'})
        print(info)

        print(r1)
Esempio n. 8
0
    def handler(self):
        """
        处理Agent模式下的资产采集:网卡、内存、硬盘
        :return:
        """
        # 1. 通过调用get_server_info获取所有的资产信息:网卡、内存、硬盘
        info = get_server_info(self)
        print('采集到服务器资产信息:', info)

        # 2 获取本地文件中的唯一标识
        if not os.path.exists(settings.CERT_FILE_PATH):
            # 新服务器,给API之后,应该在数据库中增加数据
            info['type'] = 'create'
        else:
            with open(settings.CERT_FILE_PATH, 'r', encoding='utf-8') as f:
                cert = f.read()
            if cert == info['basic']['data']['hostname']:
                # 主机名未做变更 汇报给API,API做更新
                info['type'] = 'update'
            else:
                info['cert'] = cert
                info['type'] = 'host_update'

        # 3. 发送到api
        ctime = int(time.time() * 1000)
        r1 = requests.post(url=self.asset_api,
                           params={
                               'sign': gen_sign(ctime),
                               'ctime': ctime
                           },
                           data=encrypt(json.dumps(info).encode('utf-8')),
                           headers={'Content-Type': 'application/json'})
        response = r1.json()
        if response['status']:
            with open(settings.CERT_FILE_PATH, 'w', encoding='utf-8') as f:
                f.write(response['data'])