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))