⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 httpconfig.java

📁 OSGI这是一个中间件,与UPNP齐名,是用于移植到嵌入式平台之上
💻 JAVA
字号:
/* * Copyright (c) 2003, KNOPFLERFISH project * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following * conditions are met: * * - Redistributions of source code must retain the above copyright *   notice, this list of conditions and the following disclaimer. * * - Redistributions in binary form must reproduce the above *   copyright notice, this list of conditions and the following *   disclaimer in the documentation and/or other materials *   provided with the distribution. * * - Neither the name of the KNOPFLERFISH project nor the names of its *   contributors may be used to endorse or promote products derived *   from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED * OF THE POSSIBILITY OF SUCH DAMAGE. */package org.knopflerfish.bundle.http;import java.io.IOException;import java.net.MalformedURLException;import java.net.URL;import java.util.Dictionary;import java.util.Enumeration;import java.util.Hashtable;import java.util.Properties;import java.util.Vector;import org.osgi.service.cm.ConfigurationException;public class HttpConfig {    // public constants    public final static String HTTP_PORT_KEY = "port.http";    public final static String HTTPS_PORT_KEY = "port.https";    public final static String HOST_KEY = "host";    public final static String MIME_PROPS_KEY = "mime.map";    public final static String SESSION_TIMEOUT_KEY = "session.timeout.default";    public final static String CONNECTION_TIMEOUT_KEY = "connection.timeout";    public final static String CONNECTION_MAX_KEY = "connection.max";    public final static String DNS_LOOKUP_KEY = "dns.lookup";    public final static String RESPONSE_BUFFER_SIZE_DEFAULT_KEY = "response.buffer.size.default";    public final static String SERVICE_RANKING_KEY = "service.ranking";    public final static String HTTP_ENABLED_KEY = "http.enabled";    public final static String HTTPS_ENABLED_KEY = "https.enabled";    public final static String REQ_CLIENT_AUTH_KEY = "req.client.auth";    private static final int HTTP_PORT_DEFAULT = 80;    private static final int HTTPS_PORT_DEFAULT = 443;    public final static String DEFAULT_CHAR_ENCODING_KEY = "org.knopflerfish.http.encoding.default";    //    public HttpConfigWrapper HTTP = new HttpConfigWrapper(false, this);    public HttpConfigWrapper HTTPS = new HttpConfigWrapper(true, this);    // private fields    private Dictionary configuration;    private int httpPort = HTTP_PORT_DEFAULT;    private int httpsPort = HTTPS_PORT_DEFAULT;    private String host = "";    private final Hashtable mimeMap = new Hashtable();    private int defaultSessionTimeout = 1200;    private int connectionTimeout = 30;    private int connectionMax = 50;    private boolean dnsLookup = true;    private int defaultResponseBufferSize = 16384;    // private int serviceRanking = 1000; // NYI    private boolean httpsEnabled = true;    private boolean httpEnabled = true;    private String defaultCharEncoding = "ISO-8859-1";    private boolean requireClientAuth = false;    // constructors    public HttpConfig() throws ConfigurationException {        this(null);    }    public HttpConfig(Dictionary configuration) throws ConfigurationException {        this.configuration = HttpConfig.getDefaultConfig();        updated(configuration);    }    // public methods    public static Dictionary getDefaultConfig() {        final Dictionary config = new Hashtable();        config.put(HttpConfig.HTTP_ENABLED_KEY, Boolean.valueOf(System                .getProperty("org.knopflerfish.http.enabled", "true")));        config.put(HttpConfig.HTTPS_ENABLED_KEY, Boolean.valueOf(System                .getProperty("org.knopflerfish.http.secure.enabled", "true")));        config.put(HttpConfig.HTTP_PORT_KEY, Integer.getInteger(                "org.osgi.service.http.port", HTTP_PORT_DEFAULT));        config.put(HttpConfig.HTTPS_PORT_KEY, Integer.getInteger(                "org.osgi.service.http.secure.port", HTTPS_PORT_DEFAULT));        config.put(HttpConfig.HOST_KEY, System.getProperty(                "org.osgi.service.http.hostname", ""));        Properties mimeProps = new Properties();        try {            mimeProps.load(HttpConfig.class                    .getResourceAsStream("/mime.default"));            String propurl = System.getProperty(                    "org.knopflerfish.http.mime.props", "");            if (propurl.length() > 0) {                URL url = new URL(propurl);                Properties userMimeProps = new Properties();                userMimeProps.load(url.openStream());                Enumeration e = userMimeProps.keys();                while (e.hasMoreElements()) {                    String key = (String) e.nextElement();                    mimeProps.put(key, userMimeProps.getProperty(key));                }            }        } catch (MalformedURLException ignore) {        } catch (IOException ignore) {        }        Vector mimeVector = new Vector(mimeProps.size());        Enumeration e = mimeProps.keys();        while (e.hasMoreElements()) {            String key = (String) e.nextElement();            mimeVector.addElement(new String[] { key,                    mimeProps.getProperty(key) });        }        config.put(HttpConfig.MIME_PROPS_KEY, mimeVector);        config.put(HttpConfig.SESSION_TIMEOUT_KEY, Integer.getInteger(                "org.knopflerfish.http.session.timeout.default", 1200));        config.put(HttpConfig.CONNECTION_TIMEOUT_KEY, Integer.getInteger(                "org.knopflerfish.http.connection.timeout", 30));        config.put(HttpConfig.CONNECTION_MAX_KEY, Integer.getInteger(                "org.knopflerfish.http.connection.max", 50));        config.put(HttpConfig.DNS_LOOKUP_KEY, Boolean.valueOf(System                .getProperty("org.knopflerfish.http.dnslookup", "false")));        config.put(HttpConfig.RESPONSE_BUFFER_SIZE_DEFAULT_KEY, Integer                .getInteger(                        "org.knopflerfish.http.response.buffer.size.default",                        16384));        config.put(HttpConfig.DEFAULT_CHAR_ENCODING_KEY, System.getProperty(                HttpConfig.DEFAULT_CHAR_ENCODING_KEY, "ISO-8859-1"));        config                .put(HttpConfig.REQ_CLIENT_AUTH_KEY, Boolean.valueOf(System                        .getProperty("org.knopflerfish.http.req.client.auth",                                "false")));        return config;    }    public void mergeConfiguration(Dictionary configuration)            throws ConfigurationException {        if (configuration == null)            return;        Enumeration e = configuration.keys();        while (e.hasMoreElements()) {            String key = (String) e.nextElement();            Object value = configuration.get(key);            try {                if (key.equals(HTTP_PORT_KEY)) {                    httpPort = ((Integer) value).intValue();                    this.configuration.put(key, value);                } else if (key.equals(HTTPS_PORT_KEY)) {                    httpsPort = ((Integer) value).intValue();                    this.configuration.put(key, value);                } else if (key.equals(HOST_KEY)) {                    host = (String) value;                    this.configuration.put(key, value);                } else if (key.equals(MIME_PROPS_KEY)) {                    Enumeration pairs = ((Vector) value).elements();                    while (pairs.hasMoreElements()) {                        Object o = pairs.nextElement();                        if (o instanceof Object[]) {                            Object[] pair = (Object[]) o;                            mimeMap.put(pair[0], pair[1]);                        } else if (o instanceof Vector) {                            Vector pair = (Vector) o;                            mimeMap.put(pair.elementAt(0), pair.elementAt(1));                        }                    }                    this.configuration.put(key, value);                } else if (key.equals(SESSION_TIMEOUT_KEY)) {                    defaultSessionTimeout = ((Integer) value).intValue();                    this.configuration.put(key, value);                } else if (key.equals(CONNECTION_TIMEOUT_KEY)) {                    connectionTimeout = ((Integer) value).intValue();                    this.configuration.put(key, value);                } else if (key.equals(CONNECTION_MAX_KEY)) {                    connectionMax = ((Integer) value).intValue();                    this.configuration.put(key, value);                } else if (key.equals(DNS_LOOKUP_KEY)) {                    dnsLookup = ((Boolean) value).booleanValue();                    this.configuration.put(key, value);                } else if (key.equals(RESPONSE_BUFFER_SIZE_DEFAULT_KEY)) {                    defaultResponseBufferSize = ((Integer) value).intValue();                    this.configuration.put(key, value);                } else if (key.equals(SERVICE_RANKING_KEY)) {                    // serviceRanking = ((Integer) value).intValue();                    this.configuration.put(key, value);                } else if (key.equals(HTTP_ENABLED_KEY)) {                    this.httpEnabled = ((Boolean) value).booleanValue();                    this.configuration.put(key, value);                } else if (key.equals(HTTPS_ENABLED_KEY)) {                    this.httpsEnabled = ((Boolean) value).booleanValue();                    this.configuration.put(key, value);                } else if (key.equals(DEFAULT_CHAR_ENCODING_KEY)) {                    this.defaultCharEncoding = (String) value;                    this.configuration.put(key, value);                } else if (key.equals(REQ_CLIENT_AUTH_KEY)) {                    this.requireClientAuth = ((Boolean) value).booleanValue();                    this.configuration.put(key, value);                } else                    this.configuration.put(key, value);            } catch (IndexOutOfBoundsException ioobe) {                throw new ConfigurationException(key, "Wrong type");            } catch (ClassCastException cce) {                throw new ConfigurationException(key, "Wrong type: "                        + value.getClass().getName());            }        }    }    public Dictionary getConfiguration() {        return configuration;    }    public int getMaxConnections() {        return connectionMax;    }    public String getServerInfo() {        return "The Knopflerfish HTTP Server"; // NYI    }    public String getMimeType(String file) {        String mimeType = null;        int index = file.lastIndexOf('.');        if (index != -1)            mimeType = (String) mimeMap.get(file.substring(index + 1));        return mimeType;    }    public int getDefaultSessionTimeout() {        return defaultSessionTimeout; // NYI    }    public int getDefaultBufferSize() {        return defaultResponseBufferSize; // NYI    }    public int getConnectionTimeout() {        return connectionTimeout;    }    public boolean isHttpEnabled() {        return httpEnabled;    }    public boolean isHttpsEnabled() {        return httpsEnabled;    }    public String getHost() {        return host;    }    public int getHttpPort() {        return httpPort;    }    public int getHttpsPort() {        return httpsPort;    }    public void setHttpPort(int port) {        this.httpPort = port;        configuration.put(HTTP_PORT_KEY, new Integer(port));    }    public void setHttpsPort(int port) {        this.httpsPort = port;        configuration.put(HTTPS_PORT_KEY, new Integer(port));    }    public boolean getDNSLookup() {        return dnsLookup;    }    public boolean requireClientAuth() {        return requireClientAuth;    }    public String getDefaultCharacterEncoding() {        return defaultCharEncoding;    }    public void updated(Dictionary configuration) throws ConfigurationException {        mergeConfiguration(configuration); // NYI    }} // HttpConfig

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -