/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ package org.apache.sshd.server; import java.util.List; import java.util.concurrent.TimeUnit; import org.apache.sshd.common.Factory; import org.apache.sshd.common.FactoryManager; import org.apache.sshd.common.NamedFactory; import org.apache.sshd.server.session.ServerProxyAcceptorHolder; /** * The <code>ServerFactoryManager</code> enable the retrieval of additional * configuration needed specifically for the server side. * * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a> */ public interface ServerFactoryManager extends FactoryManager, ServerProxyAcceptorHolder, ServerAuthenticationManager { /** * Key used to retrieve the value of the maximum concurrent open session count per username. * If not set, then unlimited */ String MAX_CONCURRENT_SESSIONS = "max-concurrent-sessions"; /** * Key used to retrieve any extra lines to be sent during * initial protocol handshake <U>before</U> the identification. * The configured string value should use {@value #SERVER_EXTRA_IDENT_LINES_SEPARATOR} * character to denote line breaks */ String SERVER_EXTRA_IDENTIFICATION_LINES = "server-extra-identification-lines"; /** * Separator used in the {@value #SERVER_EXTRA_IDENTIFICATION_LINES} configuration * string to indicate new line break */ char SERVER_EXTRA_IDENT_LINES_SEPARATOR = '|'; /** * Key used to retrieve the value of the server identification string. * If set, then it is <U>appended</U> to the (standard) "SSH-2.0-" * prefix. Otherwise a default is sent that consists of "SSH-2.0-" * plus the current SSHD core artifact name and version in uppercase - e.g., * "SSH-2.0-SSHD-CORE-1.0.0" */ String SERVER_IDENTIFICATION = "server-identification"; /** * Key used to configure the timeout used when receiving a close request * on a channel to wait until the command cleanly exits after setting * an EOF on the input stream. In milliseconds. * @see #DEFAULT_COMMAND_EXIT_TIMEOUT */ String COMMAND_EXIT_TIMEOUT = "command-exit-timeout"; /** * Default {@value #COMMAND_EXIT_TIMEOUT} if not set */ long DEFAULT_COMMAND_EXIT_TIMEOUT = TimeUnit.SECONDS.toMillis(5L); /** * A URL pointing to the moduli file. * If not specified, the default internal file will be used. */ String MODULI_URL = "moduli-url"; /** * Retrieve the <code>ShellFactory</code> object to be used to create shells. * * @return a valid <code>ShellFactory</code> object or {@code null} if shells * are not supported on this server */ Factory<Command> getShellFactory(); /** * Retrieve the <code>CommandFactory</code> to be used to process commands requests. * * @return A valid {@link CommandFactory} object or {@code null} if commands * are not supported on this server */ CommandFactory getCommandFactory(); /** * Retrieve the list of named factories for <code>CommandFactory.Command</code> to * be used to create subsystems. * * @return a list of named <code>CommandFactory.Command</code> factories * or {@code null} if subsystems are not supported on this server */ List<NamedFactory<Command>> getSubsystemFactories(); }