Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * RHQ Management Platform
   * Copyright (C) 2005-2008 Red Hat, Inc.
   * All rights reserved.
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published by
   * the Free Software Foundation version 2 of the License.
   *
  * This program is distributed in the hope that it will be useful,
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  */
 package org.rhq.plugins.iis.util;
 
 import java.util.Map;
 
 import  org.hyperic.sigar.win32.MetaBase;
 import  org.hyperic.sigar.win32.Win32Exception;
 
 public class IISMetaBase {
     private static final String IIS_MKEY = "/LM/W3SVC";
     private static final int MD_SSL_ACCESS_PERM = 6030;
     private static final int MD_ACCESS_SSL = 0x00000008;
 
     String id;
     String ip;
     String hostname;
     String port;
     String path;
     boolean requireSSL = false;
 
     public String getId() {
         return ;
     }
 
     public String getIp() {
         return ;
     }
 
     public String getHostname() {
         return ;
     }
 
     public String getPort() {
         return ;
     }
 
     public String getPath() {
         return ;
     }
 
     public boolean isRequireSSL() {
         return ;
     }
 
     public String toString() {
         String s = "id: " +  + " " +  + ":" + ;
         if ( != null) {
             s += ", Host: " + ;
         }
         return s;
     }
 
     public static Map<StringIISMetaBasegetWebSites() throws Win32Exception {
 
         String keys[];
         Map<StringIISMetaBasewebsites = new HashMap<StringIISMetaBase>();
         MetaBase mb = new MetaBase();
 
         try {
             mb.OpenSubKey();
             keys = mb.getSubKeyNames();
         } finally {
             mb.close();
         }
 
         for (String key : keys) {
             int id;
             if (!Character.isDigit(key.charAt(0))) {
                 continue;
             }
 
             try {
                 id = Integer.parseInt(key);
             } catch (NumberFormatException e) {
                 continue;
             }
 
             String subkey =  + "/" + id;
             MetaBase srv = null;
             try {
                 srv = new MetaBase();
                srv.OpenSubKey(subkey);
                String[] bindings = null;
                IISMetaBase info = new IISMetaBase();
                //IIS 6.0+Windows 2003 has Administration website
                //that requires SSL by default.
                //Any Web Site can be configured to required ssl.
                try {
                    int flags = srv.getIntValue();
                    info.requireSSL = (flags & ) != 0;
                    if (info.requireSSL) {
                        bindings = srv.getMultiStringValue(MetaBase.MD_SECURE_BINDINGS);
                    }
                } catch (Win32Exception e) {
                }
                if (bindings == null) {
                    bindings = srv.getMultiStringValue(MetaBase.MD_SERVER_BINDINGS);
                }
                if (bindings.length == 0) {
                    continue;
                }
                String entry = bindings[0];
                int ix = entry.indexOf(":");
                if (ix == -1) {
                    continue;
                }
                info.id = key;
                //binding format:
                //"listen ip:port:host header"
                info.ip = entry.substring(0, ix);
                entry = entry.substring(ix + 1);
                ix = entry.indexOf(":");
                info.port = entry.substring(0, ix);
                //if host header is defined, URLMetric
                //will add Host: header with this value.
                info.hostname = entry.substring(ix + 1);
                if ((info.hostname != null) && (info.hostname.length() == 0)) {
                    info.hostname = null;
                }
                if ((info.ip == null) || (info.ip.length() == 0)) {
                    //not bound to a specific ip
                    info.ip = "localhost";
                }
                String name = srv.getStringValue(MetaBase.MD_SERVER_COMMENT);
                websites.put(nameinfo);
                //XXX this is bogus, else locks the metabase
                //because OpenSubKey does not close the key
                //thats already open.
                srv.close();
                srv = null;
                srv = new MetaBase();
                srv.OpenSubKey(subkey + "/ROOT");
                String docroot = srv.getStringValue(3001);
                info.path = docroot;
            } catch (Win32Exception e) {
            } finally {
                if (srv != null) {
                    srv.close();
                }
            }
        }
        return websites;
    }
    public static void main(String[] argsthrows Exception {
        Map websites = IISMetaBase.getWebSites();
        ..println(websites);
    }
New to GrepCode? Check out our FAQ X