package dmg.cells.services.login; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.net.Socket; import dmg.cells.nucleus.CellEndpoint; import dmg.protocols.telnet.TelnetServerAuthentication; import dmg.protocols.telnet.TelnetStreamEngine; import dmg.util.DummyStreamEngine; import dmg.util.StreamEngine; import org.dcache.util.Args; /** * StreamEngineFactory instantiates the appropriate Streamengine for the given * protocol/auth combination * @author jans */ public abstract class StreamEngineFactory { private static Logger _log = LoggerFactory.getLogger(StreamEngineFactory.class); public static StreamEngine newStreamEngine(Socket socket, String protocol, CellEndpoint endpoint, Args argsForAuth) throws Exception { StreamEngine engine = null; switch (protocol) { case "raw": _log.info("No authentication used"); engine = new DummyStreamEngine(socket); break; case "telnet": { TelnetServerAuthentication auth = new TelnetSAuth_A(endpoint, argsForAuth); _log.info("Using authentication Module : " + TelnetSAuth_A.class); engine = new TelnetStreamEngine(socket, auth); break; } default: _log.error("can't instantiate corresponding streamengine {}", protocol); break; } return engine; } public static StreamEngine newStreamEngineWithoutAuth(Socket socket, String protocol) throws Exception { StreamEngine engine = null; switch (protocol) { case "raw": _log.info("No authentication used"); engine = new DummyStreamEngine(socket); break; case "telnet": { TelnetServerAuthentication auth = null; _log.info("No authentication used"); engine = new TelnetStreamEngine(socket, auth); break; } default: _log.error("can't instantiate corresponding streamengine {}", protocol); break; } return engine; } }