Ejemplo n.º 1
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()
Ejemplo n.º 2
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)
Ejemplo n.º 3
0
    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))
Ejemplo n.º 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))
Ejemplo n.º 5
0
    def _authenticate3(self, response):
        trace('{}'.format(response.code))
        for cookie in self.cookiejar:
            trace('{}'.format(cookie))

        urlParams = {'json' : json.dumps(self.HANDSHAKE_PARAMS)}
        d = self.agent.request('GET',
                               self.URLS.GAME_API + self.PATHS.API.HANDSHAKE + '?' + urllib.urlencode({'json': json.dumps(self.HANDSHAKE_PARAMS)}),
                               Headers({'User-Agent' : ['Nemesis (gzip)'],
                                        'Accept-Charset': ['utf-8'],
                                        'Cache-Control': ['max-age=0']}),
                               None)
        d.addCallback(self._authenticate4)
        d.addErrback(self.err)
Ejemplo n.º 6
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)
Ejemplo n.º 7
0
    def _authenticate3(self, response):
        trace('_authenticate3 {}'.format(response.code))
        for cookie in self.cookiejar:
            trace('_authenticate3 {}'.format(cookie))

        urlParams = {'json': json.dumps(self.HANDSHAKE_PARAMS)}
        d = self.agent.request(
            'GET', self.URLS.GAME_API + self.PATHS.API.HANDSHAKE + '?' +
            urllib.urlencode({'json': json.dumps(self.HANDSHAKE_PARAMS)}),
            Headers({
                'User-Agent': ['Nemesis (gzip)'],
                'Accept-Charset': ['utf-8'],
                'Cache-Control': ['max-age=0']
            }), None)
        d.addCallback(self._authenticate4)
        d.addErrback(self.err)
Ejemplo n.º 8
0
    def _authenticate0(self):
        auth_params = {'Email': self.email,
                       'Passwd': self.password,
                       'service': 'ah',
                       'source': 'IngressBot',
                       'accountType': 'HOSTED_OR_GOOGLE'}

        body = b07.utils.StringProducer(urllib.urlencode(auth_params))
        trace('_authenticate0 {}'.format(urllib.urlencode(auth_params)))
        d = self.agent.request('POST',
                               self.URLS.CLIENT_LOGIN,
                               Headers({'User-Agent' : ['Nemesis (gzip)'],
                                        'Content-Type': ['application/x-www-form-urlencoded'],
                                        'Accept-Charset': ['utf-8']}),
                               body)
        d.addCallback(self._authenticate1)
        d.addErrback(self.err)
Ejemplo n.º 9
0
    def _authenticate0(self):
        auth_params = {
            'Email': self.email,
            'Passwd': self.password,
            'service': 'ah',
            'source': 'IngressBot',
            'accountType': 'HOSTED_OR_GOOGLE'
        }

        body = b07.utils.StringProducer(urllib.urlencode(auth_params))
        trace('_authenticate0 {}'.format(urllib.urlencode(auth_params)))
        d = self.agent.request(
            'POST', self.URLS.CLIENT_LOGIN,
            Headers({
                'User-Agent': ['Nemesis (gzip)'],
                'Content-Type': ['application/x-www-form-urlencoded'],
                'Accept-Charset': ['utf-8']
            }), body)
        d.addCallback(self._authenticate1)
        d.addErrback(self.err)
Ejemplo n.º 10
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()
Ejemplo n.º 11
0
 def __init__(self, body):
     self.body = body
     self.length = len(body)
     trace('length: {}'.format(self.length))
Ejemplo n.º 12
0
 def startProducing(self, consumer):
     consumer.write(self.body)
     trace('wrote body')
     return defer.succeed(None)
Ejemplo n.º 13
0
 def connectionLost(self, reason):
     trace('Finished receiving body: {}'.format(reason.getErrorMessage()))
     self.finished.callback(
         dict(x.split("=") for x in self.buffer.split("\n") if x))
Ejemplo n.º 14
0
 def connectionLost(self, reason):
     trace('Finished receiving body: {}'.format(reason.getErrorMessage()))
     self.finished.callback(json.loads(self.buffer.replace('while(1);',
                                                           '')))
Ejemplo n.º 15
0
 def dataReceived(self, data):
     trace('{}'.format(data))
     request = json.loads(data)
     if request['action'] == 'list':
         if request['what'] == 'portals':
             self.sendPortalList()
Ejemplo n.º 16
0
 def connectionLost(self, reason):
     trace('Finished receiving body: {}'.format(reason.getErrorMessage()))
     self.finished.callback(dict(x.split("=") for x in self.buffer.split("\n") if x))
Ejemplo n.º 17
0
 def startProducing(self, consumer):
     consumer.write(self.body)
     trace('wrote body')
     return defer.succeed(None)
Ejemplo n.º 18
0
 def connectionLost(self, reason):
     trace('Finished receiving body: {}'.format(reason.getErrorMessage()))
     self.finished.callback(json.loads(self.buffer.replace('while(1);', '')))
Ejemplo n.º 19
0
 def __init__(self, body):
     self.body = body
     self.length = len(body)
     trace('length: {}'.format(self.length))