Search in sources :

Example 1 with ProtocolChain

use of org.glassfish.grizzly.config.dom.ProtocolChain in project Payara by payara.

the class ListProtocolFilters method execute.

public void execute(AdminCommandContext context) {
    Target targetUtil = services.getService(Target.class);
    Config newConfig = targetUtil.getConfig(target);
    if (newConfig != null) {
        config = newConfig;
    }
    final ActionReport report = context.getActionReport();
    Protocol protocol = config.getNetworkConfig().getProtocols().findProtocol(protocolName);
    if (protocol != null) {
        final ProtocolChain chain = protocol.getProtocolChainInstanceHandler().getProtocolChain();
        if (chain != null) {
            for (ProtocolFilter filter : chain.getProtocolFilter()) {
                report.getTopMessagePart().addChild().setMessage(filter.getName());
            }
        }
    }
    report.setActionExitCode(ActionReport.ExitCode.SUCCESS);
}
Also used : Target(org.glassfish.internal.api.Target) CommandTarget(org.glassfish.config.support.CommandTarget) Config(com.sun.enterprise.config.serverbeans.Config) ProtocolChain(org.glassfish.grizzly.config.dom.ProtocolChain) ActionReport(org.glassfish.api.ActionReport) Protocol(org.glassfish.grizzly.config.dom.Protocol) ProtocolFilter(org.glassfish.grizzly.config.dom.ProtocolFilter)

Example 2 with ProtocolChain

use of org.glassfish.grizzly.config.dom.ProtocolChain in project Payara by payara.

the class DeleteProtocolFilter method execute.

@Override
public void execute(AdminCommandContext context) {
    Target targetUtil = services.getService(Target.class);
    Config newConfig = targetUtil.getConfig(target);
    if (newConfig != null) {
        config = newConfig;
    }
    report = context.getActionReport();
    try {
        final Protocols protocols = config.getNetworkConfig().getProtocols();
        final Protocol protocol = protocols.findProtocol(protocolName);
        validate(protocol, LogFacade.CREATE_HTTP_FAIL_PROTOCOL_NOT_FOUND, protocolName);
        ProtocolChainInstanceHandler handler = getHandler(protocol);
        ProtocolChain chain = getChain(handler);
        ConfigSupport.apply(new SingleConfigCode<ProtocolChain>() {

            @Override
            public Object run(ProtocolChain param) throws PropertyVetoException, TransactionFailure {
                final List<ProtocolFilter> list = param.getProtocolFilter();
                List<ProtocolFilter> newList = new ArrayList<ProtocolFilter>();
                for (final ProtocolFilter filter : list) {
                    if (!name.equals(filter.getName())) {
                        newList.add(filter);
                    }
                }
                if (list.size() == newList.size()) {
                    throw new RuntimeException(String.format("No filter named %s found for protocol %s", name, protocolName));
                }
                param.setProtocolFilter(newList);
                return null;
            }
        }, chain);
        cleanChain(chain);
        cleanHandler(handler);
    } catch (ValidationFailureException e) {
        return;
    } catch (Exception e) {
        e.printStackTrace();
        report.setMessage(MessageFormat.format(rb.getString(LogFacade.DELETE_FAIL), name, e.getMessage() == null ? "No reason given" : e.getMessage()));
        report.setActionExitCode(ActionReport.ExitCode.FAILURE);
        report.setFailureCause(e);
        return;
    }
}
Also used : TransactionFailure(org.jvnet.hk2.config.TransactionFailure) Protocols(org.glassfish.grizzly.config.dom.Protocols) Config(com.sun.enterprise.config.serverbeans.Config) PropertyVetoException(java.beans.PropertyVetoException) PropertyVetoException(java.beans.PropertyVetoException) Target(org.glassfish.internal.api.Target) CommandTarget(org.glassfish.config.support.CommandTarget) ProtocolChainInstanceHandler(org.glassfish.grizzly.config.dom.ProtocolChainInstanceHandler) ProtocolChain(org.glassfish.grizzly.config.dom.ProtocolChain) ArrayList(java.util.ArrayList) List(java.util.List) Protocol(org.glassfish.grizzly.config.dom.Protocol) ProtocolFilter(org.glassfish.grizzly.config.dom.ProtocolFilter)

Example 3 with ProtocolChain

use of org.glassfish.grizzly.config.dom.ProtocolChain in project Payara by payara.

the class DeleteProtocolFilter method getChain.

private ProtocolChain getChain(ProtocolChainInstanceHandler handler) throws TransactionFailure {
    ProtocolChain chain = handler.getProtocolChain();
    if ((chain == null) && (report != null)) {
        report.setMessage(MessageFormat.format(rb.getString(LogFacade.NOT_FOUND), "protocol-chain", handler.getParent(Protocol.class).getName()));
        report.setActionExitCode(ActionReport.ExitCode.FAILURE);
    }
    return chain;
}
Also used : ProtocolChain(org.glassfish.grizzly.config.dom.ProtocolChain) Protocol(org.glassfish.grizzly.config.dom.Protocol)

Example 4 with ProtocolChain

use of org.glassfish.grizzly.config.dom.ProtocolChain in project Payara by payara.

the class CreateProtocolFilter method execute.

@Override
public void execute(AdminCommandContext context) {
    Target targetUtil = services.getService(Target.class);
    Config newConfig = targetUtil.getConfig(target);
    if (newConfig != null) {
        config = newConfig;
    }
    report = context.getActionReport();
    try {
        final Protocols protocols = config.getNetworkConfig().getProtocols();
        final Protocol protocol = protocols.findProtocol(protocolName);
        validate(protocol, LogFacade.CREATE_HTTP_FAIL_PROTOCOL_NOT_FOUND, protocolName);
        final Class<?> filterClass = Thread.currentThread().getContextClassLoader().loadClass(classname);
        if (!org.glassfish.grizzly.filterchain.Filter.class.isAssignableFrom(filterClass)) {
            report.setMessage(MessageFormat.format(rb.getString(LogFacade.CREATE_PORTUNIF_FAIL_NOTFILTER), name, classname));
            report.setActionExitCode(ActionReport.ExitCode.FAILURE);
            return;
        }
        ProtocolChainInstanceHandler handler = getHandler(protocol);
        ProtocolChain chain = getChain(handler);
        ConfigSupport.apply(new SingleConfigCode<ProtocolChain>() {

            @Override
            public Object run(ProtocolChain param) throws PropertyVetoException, TransactionFailure {
                final List<ProtocolFilter> list = param.getProtocolFilter();
                for (ProtocolFilter filter : list) {
                    if (name.equals(filter.getName())) {
                        throw new TransactionFailure(String.format("A protocol filter named %s already exists.", name));
                    }
                }
                final ProtocolFilter filter = param.createChild(ProtocolFilter.class);
                filter.setName(name);
                filter.setClassname(classname);
                list.add(filter);
                return null;
            }
        }, chain);
    } catch (ValidationFailureException e) {
        return;
    } catch (Exception e) {
        e.printStackTrace();
        report.setMessage(MessageFormat.format(rb.getString(LogFacade.CREATE_PORTUNIF_FAIL), name, e.getMessage() == null ? "No reason given" : e.getMessage()));
        report.setActionExitCode(ActionReport.ExitCode.FAILURE);
        report.setFailureCause(e);
        return;
    }
}
Also used : TransactionFailure(org.jvnet.hk2.config.TransactionFailure) Protocols(org.glassfish.grizzly.config.dom.Protocols) Config(com.sun.enterprise.config.serverbeans.Config) PropertyVetoException(java.beans.PropertyVetoException) PropertyVetoException(java.beans.PropertyVetoException) Target(org.glassfish.internal.api.Target) CommandTarget(org.glassfish.config.support.CommandTarget) ProtocolFilter(org.glassfish.grizzly.config.dom.ProtocolFilter) ProtocolChainInstanceHandler(org.glassfish.grizzly.config.dom.ProtocolChainInstanceHandler) ProtocolChain(org.glassfish.grizzly.config.dom.ProtocolChain) List(java.util.List) Protocol(org.glassfish.grizzly.config.dom.Protocol) ProtocolFilter(org.glassfish.grizzly.config.dom.ProtocolFilter)

Example 5 with ProtocolChain

use of org.glassfish.grizzly.config.dom.ProtocolChain in project Payara by payara.

the class GenericGrizzlyListener method configureSubProtocol.

protected void configureSubProtocol(final ServiceLocator habitat, final NetworkListener networkListener, final Protocol protocol, final FilterChainBuilder filterChainBuilder) {
    if (protocol.getHttp() != null) {
        final Http http = protocol.getHttp();
        configureHttpProtocol(habitat, networkListener, http, filterChainBuilder, Boolean.valueOf(protocol.getSecurityEnabled()));
    } else if (protocol.getPortUnification() != null) {
        // Port unification
        final PortUnification pu = protocol.getPortUnification();
        final String puFilterClassname = pu.getClassname();
        PUFilter puFilter = null;
        if (puFilterClassname != null) {
            try {
                puFilter = Utils.newInstance(habitat, PUFilter.class, puFilterClassname, puFilterClassname);
                configureElement(habitat, networkListener, pu, puFilter);
            } catch (Exception e) {
                LOGGER.log(Level.WARNING, "Can not initialize port unification filter: " + puFilterClassname + " default filter will be used instead", e);
            }
        }
        if (puFilter == null) {
            puFilter = new PUFilter();
        }
        List<org.glassfish.grizzly.config.dom.ProtocolFinder> findersConfig = pu.getProtocolFinder();
        for (org.glassfish.grizzly.config.dom.ProtocolFinder finderConfig : findersConfig) {
            final String finderClassname = finderConfig.getClassname();
            try {
                final ProtocolFinder protocolFinder = Utils.newInstance(habitat, ProtocolFinder.class, finderClassname, finderClassname);
                configureElement(habitat, networkListener, finderConfig, protocolFinder);
                final Protocol subProtocol = finderConfig.findProtocol();
                if (subProtocol.getHttp() != null) {
                    if (LOGGER.isLoggable(WARNING)) {
                        LOGGER.log(WARNING, "HTTP/2 (enabled by default) is unsupported with port " + "unification and will be disabled for network listener {0}.", networkListener.getName());
                    }
                    skipHttp2 = true;
                }
                final FilterChainBuilder subProtocolFilterChainBuilder = puFilter.getPUFilterChainBuilder();
                // If subprotocol is secured - we need to wrap it under SSLProtocolFinder
                if (Boolean.valueOf(subProtocol.getSecurityEnabled())) {
                    final PUFilter extraSslPUFilter = new PUFilter();
                    final Filter addedSSLFilter = configureSsl(habitat, getSsl(subProtocol), subProtocolFilterChainBuilder);
                    subProtocolFilterChainBuilder.add(extraSslPUFilter);
                    final FilterChainBuilder extraSslPUFilterChainBuilder = extraSslPUFilter.getPUFilterChainBuilder();
                    try {
                        // temporary add SSL Filter, so subprotocol
                        // will see it
                        extraSslPUFilterChainBuilder.add(addedSSLFilter);
                        configureSubProtocol(habitat, networkListener, subProtocol, extraSslPUFilterChainBuilder);
                    } finally {
                        // remove SSL Filter
                        extraSslPUFilterChainBuilder.remove(addedSSLFilter);
                    }
                    extraSslPUFilter.register(protocolFinder, extraSslPUFilterChainBuilder.build());
                    puFilter.register(new SSLProtocolFinder(new SSLConfigurator(habitat, subProtocol.getSsl())), subProtocolFilterChainBuilder.build());
                } else {
                    configureSubProtocol(habitat, networkListener, subProtocol, subProtocolFilterChainBuilder);
                    puFilter.register(protocolFinder, subProtocolFilterChainBuilder.build());
                }
            } catch (Exception e) {
                LOGGER.log(Level.WARNING, "Can not initialize sub protocol. Finder: " + finderClassname, e);
            }
        }
        filterChainBuilder.add(puFilter);
    } else if (protocol.getHttpRedirect() != null) {
        filterChainBuilder.add(createHttpServerCodecFilter());
        final HttpRedirectFilter filter = new HttpRedirectFilter();
        filter.configure(habitat, networkListener, protocol.getHttpRedirect());
        filterChainBuilder.add(filter);
    } else {
        ProtocolChainInstanceHandler pcihConfig = protocol.getProtocolChainInstanceHandler();
        if (pcihConfig == null) {
            LOGGER.log(Level.WARNING, "Empty protocol declaration");
            return;
        }
        ProtocolChain filterChainConfig = pcihConfig.getProtocolChain();
        for (ProtocolFilter filterConfig : filterChainConfig.getProtocolFilter()) {
            final String filterClassname = filterConfig.getClassname();
            try {
                final Filter filter = loadFilter(habitat, filterConfig.getName(), filterClassname);
                configureElement(habitat, networkListener, filterConfig, filter);
                filterChainBuilder.add(filter);
            } catch (Exception e) {
                LOGGER.log(Level.WARNING, "Can not initialize protocol filter: " + filterClassname, e);
                throw new IllegalStateException("Can not initialize protocol filter: " + filterClassname);
            }
        }
    }
}
Also used : PUFilter(org.glassfish.grizzly.portunif.PUFilter) PortUnification(org.glassfish.grizzly.config.dom.PortUnification) Http(org.glassfish.grizzly.config.dom.Http) IOException(java.io.IOException) SSLProtocolFinder(org.glassfish.grizzly.portunif.finders.SSLProtocolFinder) ProtocolFinder(org.glassfish.grizzly.portunif.ProtocolFinder) HttpRedirectFilter(org.glassfish.grizzly.config.portunif.HttpRedirectFilter) PUFilter(org.glassfish.grizzly.portunif.PUFilter) Filter(org.glassfish.grizzly.filterchain.Filter) TransportFilter(org.glassfish.grizzly.filterchain.TransportFilter) IdleTimeoutFilter(org.glassfish.grizzly.utils.IdleTimeoutFilter) HttpServerFilter(org.glassfish.grizzly.http.server.HttpServerFilter) CompressionEncodingFilter(org.glassfish.grizzly.http.server.CompressionEncodingFilter) HttpRedirectFilter(org.glassfish.grizzly.config.portunif.HttpRedirectFilter) FileCacheFilter(org.glassfish.grizzly.http.server.FileCacheFilter) SSLBaseFilter(org.glassfish.grizzly.ssl.SSLBaseFilter) ProtocolFilter(org.glassfish.grizzly.config.dom.ProtocolFilter) ProtocolChainInstanceHandler(org.glassfish.grizzly.config.dom.ProtocolChainInstanceHandler) ProtocolChain(org.glassfish.grizzly.config.dom.ProtocolChain) List(java.util.List) ArrayList(java.util.ArrayList) FilterChainBuilder(org.glassfish.grizzly.filterchain.FilterChainBuilder) SSLProtocolFinder(org.glassfish.grizzly.portunif.finders.SSLProtocolFinder) Protocol(org.glassfish.grizzly.config.dom.Protocol) PUProtocol(org.glassfish.grizzly.portunif.PUProtocol) ProtocolFilter(org.glassfish.grizzly.config.dom.ProtocolFilter)

Aggregations

Protocol (org.glassfish.grizzly.config.dom.Protocol)5 ProtocolChain (org.glassfish.grizzly.config.dom.ProtocolChain)5 ProtocolFilter (org.glassfish.grizzly.config.dom.ProtocolFilter)4 Config (com.sun.enterprise.config.serverbeans.Config)3 List (java.util.List)3 CommandTarget (org.glassfish.config.support.CommandTarget)3 ProtocolChainInstanceHandler (org.glassfish.grizzly.config.dom.ProtocolChainInstanceHandler)3 Target (org.glassfish.internal.api.Target)3 PropertyVetoException (java.beans.PropertyVetoException)2 ArrayList (java.util.ArrayList)2 Protocols (org.glassfish.grizzly.config.dom.Protocols)2 TransactionFailure (org.jvnet.hk2.config.TransactionFailure)2 IOException (java.io.IOException)1 ActionReport (org.glassfish.api.ActionReport)1 Http (org.glassfish.grizzly.config.dom.Http)1 PortUnification (org.glassfish.grizzly.config.dom.PortUnification)1 HttpRedirectFilter (org.glassfish.grizzly.config.portunif.HttpRedirectFilter)1 Filter (org.glassfish.grizzly.filterchain.Filter)1 FilterChainBuilder (org.glassfish.grizzly.filterchain.FilterChainBuilder)1 TransportFilter (org.glassfish.grizzly.filterchain.TransportFilter)1