def parse_site(self, result, app_pools, app_of_sites): root = ET.fromstring(result) site_elements = root.findall('SITE') sites = [] for element in site_elements: site_name = element.get('SITE.NAME') bindings_attr = element.get('bindings') state = iis.get_apppool_state(element.get('state')) bindings = self.getBindings(bindings_attr) apps = app_of_sites.get(site_name) site_path = None app_pool_of_site = None virtual_dirs_of_site = None web_applications = [] for app in apps: if app.path == '/': app_pool_of_site = app_pools.get(app.app_pool_name) site_path = app.physical_path if site_path and site_path.find("%") != -1: site_path = shell_interpreter.dereference_string( self.shell, site_path) virtual_dirs_of_site = app.virtual_dirs else: web_applications.append(app) config_files = self.get_web_configs(site_path, self.shell, []) site = Site(site_name, bindings, app_pool_of_site, state, site_path, config_files, web_applications, virtual_dirs_of_site, []) sites.append(site) return sites
def parse_app_pool(self, result): root = ET.fromstring(result) appPoolElements = root.findall("APPPOOL") appPools = {} for appPoolElement in appPoolElements: pool_name = appPoolElement.get("APPPOOL.NAME") state = appPoolElement.get("state") apppool_state = iis.get_apppool_state(state) app_pool = AppPool(pool_name, pool_name, apppool_state) appPools[pool_name] = app_pool return appPools
def parse_app_pool(self, result): root = ET.fromstring(result) appPoolElements = root.findall('APPPOOL') appPools = {} for appPoolElement in appPoolElements: pool_name = appPoolElement.get('APPPOOL.NAME') state = appPoolElement.get('state') apppool_state = iis.get_apppool_state(state) app_pool = AppPool(pool_name, pool_name, apppool_state) appPools[pool_name] = app_pool return appPools
def discover_apppools(self, executor): apppools_map = AppPoolsCmd(properties=['name', "state", "applicationPoolSid"]) | executor apppools_map_object = {} for apppool_attr in apppools_map: name = apppool_attr.get("name") state = apppool_attr.get("state") id = apppool_attr.get("applicationPoolSid") if state: state = iis.get_apppool_state(state) if name: apppools_map_object[name] = iis.AppPool(id, name, state) return apppools_map_object
def discover_apppools(self, executor): apppools_map = AppPoolsCmd(properties=["name", "state", "applicationPoolSid"]) | executor apppools_map_object = {} for apppool_attr in apppools_map: name = apppool_attr.get("name") state = apppool_attr.get("state") id = apppool_attr.get("applicationPoolSid") if state: state = iis.get_apppool_state(state) if name: apppools_map_object[name] = iis.AppPool(id, name, state) return apppools_map_object
def discover_websites(self, apppools_map_object, executor, shell, host_ips=None, webservice_ext_filter=[]): sites_info = WebSitesCmd() | executor sites = [] for site_info in sites_info: site_name = site_info.get("name") site_apppool = site_info.get("applicationPool") site_state = iis.get_apppool_state(site_info.get("state")) site_path = site_info.get("physicalPath") if site_name: try: bindings = WebSiteBindingCmd(site_name) | executor parse_func = partial(parse_bindings, host_ips=host_ips) bindings = map(parse_func, bindings) site_configs = [] try: site_configs = self.discover_webconfigs(site_name, executor, shell, webservice_ext_filter) except Exception, ex: logger.debug("cannot find config file for site: ", site_name) applications, app_web_services = self.discover_applications( site_name, executor, shell, webservice_ext_filter ) dirs, dir_web_services = self.discover_virtual_dirs( site_name, executor, shell, webservice_ext_filter ) web_services = [] if app_web_services: web_services.extend(app_web_services) if dir_web_services: web_services.extend(dir_web_services) if site_path and site_path.find("%") != -1: site_path = shell_interpreter.dereference_string(shell, site_path) sites.append( iis.Site( site_name, bindings, apppools_map_object[site_apppool], site_state, site_path, site_configs, applications, dirs, web_services, ) ) except Exception, ex: logger.debugException(str(ex)) logger.warnException(str(ex))
def parse_site(self, result, app_pools, app_of_sites): root = ET.fromstring(result) site_elements = root.findall("SITE") sites = [] for element in site_elements: site_name = element.get("SITE.NAME") bindings_attr = element.get("bindings") state = iis.get_apppool_state(element.get("state")) bindings = self.getBindings(bindings_attr) apps = app_of_sites.get(site_name) site_path = None app_pool_of_site = None virtual_dirs_of_site = None web_applications = [] for app in apps: if app.path == "/": app_pool_of_site = app_pools.get(app.app_pool_name) site_path = app.physical_path if site_path and site_path.find("%") != -1: site_path = shell_interpreter.dereference_string(self.shell, site_path) virtual_dirs_of_site = app.virtual_dirs else: web_applications.append(app) config_files = self.get_web_configs(site_path, self.shell, []) site = Site( site_name, bindings, app_pool_of_site, state, site_path, config_files, web_applications, virtual_dirs_of_site, [], ) sites.append(site) return sites
def discover_websites(self, apppools_map_object, executor, shell, host_ips=None, webservice_ext_filter=[]): sites_info = WebSitesCmd() | executor sites = [] for site_info in sites_info: site_name = site_info.get("name") site_apppool = site_info.get("applicationPool") site_state = iis.get_apppool_state(site_info.get("state")) site_path = site_info.get("physicalPath") if site_name: try: bindings = WebSiteBindingCmd(site_name) | executor parse_func = partial(parse_bindings, host_ips=host_ips) bindings = map(parse_func, bindings) site_configs =[] try: site_configs = self.discover_webconfigs(site_name, executor, shell, webservice_ext_filter) except Exception, ex: logger.debug("cannot find config file for site: ", site_name) applications, app_web_services = self.discover_applications(site_name, executor, shell, webservice_ext_filter) dirs, dir_web_services = self.discover_virtual_dirs(site_name, executor, shell, webservice_ext_filter) web_services = [] if app_web_services: web_services.extend(app_web_services) if dir_web_services: web_services.extend(dir_web_services) if site_path and site_path.find("%") != -1: site_path = shell_interpreter.dereference_string(shell, site_path) sites.append(iis.Site(site_name, bindings, apppools_map_object[site_apppool], site_state, site_path, site_configs, applications, dirs, web_services)) except Exception, ex: logger.debugException(str(ex)) logger.warnException(str(ex))