예제 #1
0
파일: api.py 프로젝트: ingresshacker/b07bot
    def _authenticate5(self, result):
        trace('_authenticate5 {}'.format(result))

        result = result['result']

        if 'xsrfToken' not in result:
            critical('Authentication with Ingress severs failed for unknown reason')

        self.xsrf_token = str(result['xsrfToken'])
        self.player_nickname = result['nickname']
        self.player_guid = result['playerEntity'][0]
        self.team = result['playerEntity'][2]['controllingTeam']['team']
        self.ap = result['playerEntity'][2]['playerPersonal']['ap']
        self.level = result['playerEntity'][2]['playerPersonal']['clientLevel']
        start_date = result['storage']['mission_complete_0']
        self.start_date = datetime.datetime.fromtimestamp(int(start_date.split(':delim:')[1])/1000)

        debug('XSRF Token:      {}'.format(self.xsrf_token))
        debug('Player GUID:     {}'.format(self.player_guid))
        info('Player nickname: {}'.format(self.player_nickname))
        info('Faction:         {}'.format(self.team))
        info('AP:              {}'.format(self.ap))
        info('Level:           {}'.format(self.level))
        info('Start Date:      {}'.format(self.start_date))
        debug('Player info:     {}'.format(result))
        
        with open(os.path.expanduser("~/{}_config.cfg".format(self.player_nickname)),"w") as file:
            json.dump(result, file, indent=1)
        self.new_version = versionCheck(result['serverVersion'], self.player_nickname)
        
        self._process_deferred_api_requests()
예제 #2
0
파일: api.py 프로젝트: drhinehart/b07bot
    def _authenticate5(self, result):
        result = result['result']

        if result['versionMatch'] != 'CURRENT':
            critical('Software version not up-to-date')

        if 'xsrfToken' not in result:
            critical('Authentication with Ingress severs failed for unknown reason')

        self.xsrf_token = str(result['xsrfToken'])
        self.player_nickname = result['nickname']
        self.player_guid = result['playerEntity'][0]
        self.team = result['playerEntity'][2]['controllingTeam']['team']
        self.ap = result['playerEntity'][2]['playerPersonal']['ap']
        self.level = result['playerEntity'][2]['playerPersonal']['clientLevel']

        debug('XSRF Token:      {}'.format(self.xsrf_token))
        debug('Player GUID:     {}'.format(self.player_guid))
        info('Player nickname: {}'.format(self.player_nickname))
        info('Faction: {}'.format(self.team))
        info('AP: {}'.format(self.ap))
        info('Level: {}'.format(self.level))
        debug('Player info: {}'.format(result))

        self._process_deferred_api_requests()
예제 #3
0
파일: api.py 프로젝트: drhinehart/b07bot
    def _authenticate4(self, response):
        trace('{}'.format(response.code))

        if response.code == 200:
            finished = defer.Deferred()
            finished.addCallback(self._authenticate5)
            finished.addErrback(self.err)
            jp = b07.utils.JsonProtocol(finished)
            response.deliverBody(jp)

        else:
            critical('Got response code {} after attempting handshake!'.format(response.code))
예제 #4
0
    def _authenticate4(self, response):
        trace('_authenticate4 {}'.format(response.code))

        if response.code == 200:
            finished = defer.Deferred()
            finished.addCallback(self._authenticate5)
            finished.addErrback(self.err)
            jp = b07.utils.JsonProtocol(finished)
            response.deliverBody(jp)

        else:
            critical('Got response code {} after attempting handshake!'.format(
                response.code))
예제 #5
0
    def _authenticate5(self, result):
        trace('_authenticate5 {}'.format(result))

        result = result['result']

        if 'xsrfToken' not in result:
            critical(
                'Authentication with Ingress severs failed for unknown reason')

        self.xsrf_token = str(result['xsrfToken'])
        self.player_nickname = result['nickname']
        self.player_guid = result['playerEntity'][0]
        self.team = result['playerEntity'][2]['controllingTeam']['team']
        self.ap = result['playerEntity'][2]['playerPersonal']['ap']
        self.level = result['playerEntity'][2]['playerPersonal']['clientLevel']
        start_date = result['storage']['mission_complete_0']
        self.start_date = datetime.datetime.fromtimestamp(
            int(start_date.split(':delim:')[1]) / 1000)

        debug('XSRF Token:      {}'.format(self.xsrf_token))
        debug('Player GUID:     {}'.format(self.player_guid))
        info('Player nickname: {}'.format(self.player_nickname))
        info('Faction:         {}'.format(self.team))
        info('AP:              {}'.format(self.ap))
        info('Level:           {}'.format(self.level))
        info('Start Date:      {}'.format(self.start_date))
        debug('Player info:     {}'.format(result))

        with open(
                os.path.expanduser("~/{}_config.cfg".format(
                    self.player_nickname)), "w") as file:
            json.dump(result, file, indent=1)
        self.new_version = versionCheck(result['serverVersion'],
                                        self.player_nickname)

        self._process_deferred_api_requests()
예제 #6
0
파일: api.py 프로젝트: drhinehart/b07bot
    def _authenticate2(self, result, code):
        if code == 200:
            try:
                self.auth_token = result['Auth']

            except KeyError:
                critical('Authentication failed: Bad Response')

        elif code == 403:
            error = result['Error']
        
            if error == 'BadAuthentication':
                critical('Authentication failed: Username or password wrong')

            elif error == 'NotVerified':
                critical('Authentication failed: Account email address has not been verified')

            elif error == 'TermsNotAgreed':
                critical('Authentication failed: User has not agreed to Googles terms of service')

            elif error == 'CaptchaRequired':
                critical('Authentication failed: CAPTCHA required')

            elif error == 'AccountDeleted':
                critical('Authentication failed: User account has been deleted')

            elif error == 'AccountDisabled':
                critical('Authentication failed: User account has been disabled')

            elif error == 'ServiceDisabled':
                critical('Authentication failed: Service disabled')

            elif error == 'ServiceUnavailable':
                critical('Authentication failed: Service unavailable')

            else:
                critical('Authentication failed: Unknown reason')

        else:
            critical('Authentication failed: Bad response')
    
        d = self.agent.request('GET',
                               self.URLS.GAME_API + self.PATHS.LOGIN + '?' + urllib.urlencode({'auth' : self.auth_token}),
                               Headers({'User-Agent' : ['Nemesis (gzip)'],
                                        'Accept-Charset': ['utf-8']}),
                               None)
        d.addCallback(self._authenticate3)
        d.addErrback(self.err)
예제 #7
0
    def _authenticate2(self, result, code):
        if code == 200:
            try:
                self.auth_token = result['Auth']

            except KeyError:
                critical('Authentication failed: Bad Response')

        elif code == 403:
            error = result['Error']

            if error == 'BadAuthentication':
                critical('Authentication failed: Username or password wrong')

            elif error == 'NotVerified':
                critical(
                    'Authentication failed: Account email address has not been verified'
                )

            elif error == 'TermsNotAgreed':
                critical(
                    'Authentication failed: User has not agreed to Googles terms of service'
                )

            elif error == 'CaptchaRequired':
                critical('Authentication failed: CAPTCHA required')

            elif error == 'AccountDeleted':
                critical(
                    'Authentication failed: User account has been deleted')

            elif error == 'AccountDisabled':
                critical(
                    'Authentication failed: User account has been disabled')

            elif error == 'ServiceDisabled':
                critical('Authentication failed: Service disabled')

            elif error == 'ServiceUnavailable':
                critical('Authentication failed: Service unavailable')

            else:
                critical('Authentication failed: Unknown reason')

        else:
            critical('Authentication failed: Bad response')

        trace('_authenticate2 {}'.format(self.auth_token))
        d = self.agent.request(
            'GET', self.URLS.GAME_API + self.PATHS.LOGIN + '?' +
            urllib.urlencode({'auth': self.auth_token}),
            Headers({
                'User-Agent': ['Nemesis (gzip)'],
                'Accept-Charset': ['utf-8']
            }), None)
        d.addCallback(self._authenticate3)
        d.addErrback(self.err)