PACFileIntranetInfo.java :  » Portal » Open-Portal » com » sun » portal » util » Java Open Source

Java Open Source » Portal » Open Portal 
Open Portal » com » sun » portal » util » PACFileIntranetInfo.java
/*
 * PACFileIntranetInfo.java
 *
 * Created on May 16, 2003, 1:57 PM
 */

package com.sun.portal.util;

import java.util.StringTokenizer;
import java.util.logging.Level;
import java.util.logging.Logger;

import com.sun.portal.log.common.PortalLogger;
import com.sun.portal.rproxy.server.GatewayContext;
import com.sun.portal.rproxy.server.GatewayContextFactory;

/**
 * 
 * @author mm132998
 * @version
 */
public class PACFileIntranetInfo implements IntranetInfo {

    private static final char PIPE = '|';

    private static final char SPACE = ' ';

    private static final char DOT = '.';

    private static final String STAR_DOT_STRING = "*.";

    private static final String STAR_STRING = "*";

    // static Logger logger = Logger.getLogger("com.sun.portal.sra.rproxy");
    private static Logger logger = PortalLogger.getLogger(PACFileIntranetInfo.class);

    private String defaultDomain;

    private String defaultSubDomainAndDomain;

    private void initDefaultDomainSubDomain() {

        GatewayContext gatewayContext = GatewayContextFactory.getGatewayContext();

        String defaultDomainSubDomain = gatewayContext.getDefaultDomainAndSubDomain(); // GatewayProfile.getString(DEFAULT_DOMAIN_AND_SUBDOMAINS,"").toLowerCase();

        String[] splitEntry = StringHelper.split(defaultDomainSubDomain, PIPE);

        if (splitEntry.length == 0) {
            defaultDomain = "";
            defaultSubDomainAndDomain = "";
            // logger.severe("The default sub-domain / domain not specified in
            // gateway profile!");
            logger.severe("PSSR_CSPU085");
        } else if (splitEntry.length == 1) {
            defaultDomain = DOT + splitEntry[0];
            defaultSubDomainAndDomain = defaultDomain;
        } else {
            defaultDomain = DOT + splitEntry[0];
            defaultSubDomainAndDomain = DOT + splitEntry[1] + defaultDomain;
        }
    }

    private String pacFileLocation = null;

    /** Creates new PACFileIntranetInfo */
    public PACFileIntranetInfo(String pacFileLocation) throws Exception {
        this.pacFileLocation = pacFileLocation;
        initDefaultDomainSubDomain();
        EvalPAC.initPACFile(pacFileLocation);
    }

    public String internGetWebProxy(String protocol, String host) {

        String proxy = EvalPAC.getProxy(protocol, host, "127.0.0.1");
        if (proxy == null || proxy.trim().length() == 0 || proxy.trim().equalsIgnoreCase("null")) {
            return null;
        }
        StringTokenizer st = new StringTokenizer(proxy);
        String type = st.nextToken();

        if (type.equalsIgnoreCase("SOCKS")) {
            // logger.severe("Gateway does not support SOCKS proxies !\n" +
            // "Socks proxy \"" + proxy+ "\" returned for host : " + host);
            Object[] params = { "\n", proxy, host };
            logger.log(Level.SEVERE, "PSSR_CSPU086", params);
            return null;
        } else if (type.equalsIgnoreCase("DIRECT")) {
            return null;
        }
        StringTokenizer st1 = new StringTokenizer(st.nextToken(), ";");
        String retval = st1.nextToken();
        return retval;
    }

    public String getWebProxy(String protocol, String host) {
        String proxy = internGetWebProxy(protocol, host);

        if (proxy == null && host.indexOf('.') == -1) {
            proxy = internGetWebProxy(protocol, host + defaultSubDomainAndDomain);
        }
        return proxy;
    }

    public boolean internContainHost(String host) {
        // It does not matter whether it is http or https to decide
        // whether this is part of the intranet.
        String proxy = EvalPAC.getProxy("http", host, "127.0.0.1");
        if (proxy == null || proxy.trim().length() == 0 || proxy.trim().equalsIgnoreCase("null")) {
            return false;
        }
        StringTokenizer st = new StringTokenizer(proxy);
        String type = st.nextToken();

        if (type.equalsIgnoreCase("STARPROXY")) {
            return false;
        }
        return true;
    }

    public boolean containHost(String host) {
        boolean retval = internContainHost(host);

        if (!retval && host.indexOf('.') == -1) {
            retval = internContainHost(host + defaultSubDomainAndDomain);
        }
        return retval;
    }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.