def check(self, ip, port = None): """ Because the version strings are different across a couple different versions, we parse it a little bit different. Pre-5.x versions are simple, as we match a pattern, whereas post-5.x versions require us to parse an HTML table for our value. """ re_match = False rport = self.port if port is None else port url = "http://{0}:{1}{2}".format(ip, rport, self.uri) try: request = utility.requests_get(url) # go check auth if request.status_code == 401: utility.Msg("Host %s:%s requires auth for JMX, checking..." % (ip, rport), LOG.DEBUG) cookies = authenticate.checkAuth(ip, rport, self.title, self.version) if cookies: request = utility.requests_get(url, cookies=cookies[0], auth=cookies[1]) else: utility.Msg("Could not get auth for %s:%s" % (ip, rport), LOG.ERROR) return False if request.status_code != 200: return False if self.version in ["3.0", "3.2"]: match = search("{0}.(.*?)\(".format(self.version), request.content) if match and len(match.groups()) > 0: re_match = True elif self.version in ["4.0", "4.2"]: match = search("{0}.(.*?)GA".format(self.version), request.content) if match and len(match.groups()) > 0: re_match = True elif self.version in ["5.0", "5.1", "6.0", "6.1"]: parser = TableParser() parser.feed(request.content) if parser.data and self.version in parser.data: re_match = True return re_match except exceptions.Timeout: utility.Msg("{0} timeout to {1}:{2}".format(self.platform, ip, rport), LOG.DEBUG) except exceptions.ConnectionError: utility.Msg("{0} connection error to {1}:{2}".format(self.platform, ip, rport), LOG.DEBUG) return re_match
def check(self, ip, port = None): """ The version string for the web-console is pretty easy to parse out. """ try: rport = self.port if port is None else port url = "http://{0}:{1}{2}".format(ip, rport, self.uri) response = utility.requests_get(url) if response.status_code == 401: utility.Msg("Host %s:%s requires auth for /web-console, checking.." % (ip, rport), LOG.DEBUG) cookies = authenticate.checkAuth(ip, rport, self.title, self.version) if cookies: response = utility.requests_get(url, cookies=cookies[0], auth=cookies[1]) else: utility.Msg("Could not get auth for %s:%s" % (ip, rport), LOG.ERROR) return False if "Version: </b>{0}".format(self.version) in response.content: return True except exceptions.Timeout: utility.Msg("{0} timeout to {1}:{2}".format(self.platform, ip, rport), LOG.DEBUG) except exceptions.ConnectionError: utility.Msg("{0} connection error to {1}:{2}".format(self.platform, ip, rport), LOG.DEBUG) return False
def check(self, ip, port=None): """ """ try: rport = self.port if port is None else port url = "http://{0}:{1}{2}".format(ip, rport, self.uri) response = utility.requests_get(url) if response.status_code == 401: utility.Msg( "Host %s:%s requires auth for manager, checking.." % (ip, rport), LOG.DEBUG) cookies = authenticate.checkAuth(ip, rport, self.title, self.version) if cookies: response = utility.requests_get(url, cookies=cookies[0], auth=cookies[1]) else: utility.Msg("Could not get auth for %s:%s" % (ip, rport), LOG.ERROR) if response.status_code == 200: found = findall("Apache Tomcat/(.*)<", response.content) if len(found) > 0 and self.version in found[0]: return True except exceptions.Timeout: utility.Msg( "{0} timeout to {1}:{2}".format(self.platform, ip, rport), LOG.DEBUG) except exceptions.ConnectionError: utility.Msg( "{0} connection error to {1}:{2}".format( self.platform, ip, rport), LOG.DEBUG) return False