org.h2.dev.ftp.server
Class FtpServer

java.lang.Object
  extended by org.h2.util.Tool
      extended by org.h2.dev.ftp.server.FtpServer
All Implemented Interfaces:
Service

public class FtpServer
extends Tool
implements Service

Small FTP Server. Intended for ad-hoc networks in a secure environment. Remote connections are possible. See also http://cr.yp.to/ftp.html http://www.ftpguide.com/


Field Summary
static int DEFAULT_PORT
          The default port to use for the FTP server.
static java.lang.String DEFAULT_READ
          The default user name that is allowed to read data.
static java.lang.String DEFAULT_ROOT
          The default root directory name used by the FTP server.
static java.lang.String DEFAULT_WRITE
          The default user name that is allowed to read and write data.
static java.lang.String DEFAULT_WRITE_PASSWORD
          The default password of the user that is allowed to read and write data.
 
Fields inherited from class org.h2.util.Tool
out
 
Constructor Summary
FtpServer()
           
 
Method Summary
static Server createFtpServer(java.lang.String... args)
          Create a new FTP server, but does not start it yet.
 boolean getAllowOthers()
          Check if remote connections are allowed.
 java.lang.String getName()
          Get the human readable name of the service.
 int getPort()
          Gets the port this service is listening on.
 java.lang.String getType()
          Get the human readable short name of the service.
 java.lang.String getURL()
          Get the URL of this service in a human readable form
 void init(java.lang.String... args)
          Initialize the service from command line options.
 boolean isDaemon()
          Check if a daemon thread should be used.
 boolean isRunning(boolean traceError)
          Check if the service is running.
 void listen()
          Listen for incoming connections.
static void main(java.lang.String... args)
          When running without options, -tcp, -web, -browser and -pg are started.
 void runTool(java.lang.String... args)
          Run the tool with the given output stream and arguments.
 void setEventListener(FtpEventListener eventListener)
          Set the event listener.
 void start()
          Start the service.
 void stop()
          Stop the service.
 
Methods inherited from class org.h2.util.Tool
isOption, printNoDatabaseFilesFound, setOut, showUsage, showUsageAndThrowUnsupportedOption, throwUnsupportedOption
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_PORT

public static final int DEFAULT_PORT
The default port to use for the FTP server. This value is also in the documentation and in the Server javadoc.

See Also:
Constant Field Values

DEFAULT_ROOT

public static final java.lang.String DEFAULT_ROOT
The default root directory name used by the FTP server. This value is also in the documentation and in the Server javadoc.

See Also:
Constant Field Values

DEFAULT_READ

public static final java.lang.String DEFAULT_READ
The default user name that is allowed to read data. This value is also in the documentation and in the Server javadoc.

See Also:
Constant Field Values

DEFAULT_WRITE

public static final java.lang.String DEFAULT_WRITE
The default user name that is allowed to read and write data. This value is also in the documentation and in the Server javadoc.

See Also:
Constant Field Values

DEFAULT_WRITE_PASSWORD

public static final java.lang.String DEFAULT_WRITE_PASSWORD
The default password of the user that is allowed to read and write data. This value is also in the documentation and in the Server javadoc.

See Also:
Constant Field Values
Constructor Detail

FtpServer

public FtpServer()
Method Detail

main

public static void main(java.lang.String... args)
                 throws java.sql.SQLException
When running without options, -tcp, -web, -browser and -pg are started.
Options are case sensitive. Supported options are:
[-help] or [-?] Print the list of options
[-web] Start the web server with the H2 Console
[-webAllowOthers] Allow other computers to connect
[-webPort <port>] The port (default: 8082)
[-webSSL] Use encrypted (HTTPS) connections
[-browser] Start a browser and open a page to connect to the web server
[-tcp] Start the TCP server
[-tcpAllowOthers] Allow other computers to connect
[-tcpPort <port>] The port (default: 9092)
[-tcpSSL] Use encrypted (SSL) connections
[-tcpPassword <pwd>] The password for shutting down a TCP server
[-tcpShutdown "<url>"] Stop the TCP server; example: tcp://localhost:9094
[-tcpShutdownForce] Do not wait until all connections are closed
[-pg] Start the PG server
[-pgAllowOthers] Allow other computers to connect
[-pgPort <port>] The port (default: 5435)
[-ftp] Start the FTP server
[-ftpPort <port>] The port (default: 8021)
[-ftpDir <dir>] The base directory (default: ftp)
[-ftpRead <user>] The user name for reading (default: guest)
[-ftpWrite <user>] The user name for writing (default: sa)
[-ftpWritePassword <p>] The write password (default: sa)
[-baseDir <dir>] The base directory for H2 databases; for all servers
[-ifExists] Only existing databases may be opened; for all servers
[-trace] Print additional trace information; for all servers

Parameters:
args - the command line arguments
Throws:
java.sql.SQLException
H2.resource:

runTool

public void runTool(java.lang.String... args)
             throws java.sql.SQLException
Description copied from class: Tool
Run the tool with the given output stream and arguments.

Specified by:
runTool in class Tool
Parameters:
args - the argument list
Throws:
java.sql.SQLException

listen

public void listen()
Description copied from interface: Service
Listen for incoming connections. This method blocks.

Specified by:
listen in interface Service

init

public void init(java.lang.String... args)
Description copied from interface: Service
Initialize the service from command line options.

Specified by:
init in interface Service
Parameters:
args - the command line options

getURL

public java.lang.String getURL()
Description copied from interface: Service
Get the URL of this service in a human readable form

Specified by:
getURL in interface Service
Returns:
the url

getPort

public int getPort()
Description copied from interface: Service
Gets the port this service is listening on.

Specified by:
getPort in interface Service
Returns:
the port

start

public void start()
Description copied from interface: Service
Start the service. This usually means create the server socket. This method must not block.

Specified by:
start in interface Service

stop

public void stop()
Description copied from interface: Service
Stop the service.

Specified by:
stop in interface Service

isRunning

public boolean isRunning(boolean traceError)
Description copied from interface: Service
Check if the service is running.

Specified by:
isRunning in interface Service
Parameters:
traceError - if errors should be written
Returns:
if the server is running

getAllowOthers

public boolean getAllowOthers()
Description copied from interface: Service
Check if remote connections are allowed.

Specified by:
getAllowOthers in interface Service
Returns:
true if remote connections are allowed

getType

public java.lang.String getType()
Description copied from interface: Service
Get the human readable short name of the service.

Specified by:
getType in interface Service
Returns:
the type

getName

public java.lang.String getName()
Description copied from interface: Service
Get the human readable name of the service.

Specified by:
getName in interface Service
Returns:
the name

setEventListener

public void setEventListener(FtpEventListener eventListener)
Set the event listener. Only one listener can be registered.

Parameters:
eventListener - the new listener, or null to de-register

createFtpServer

public static Server createFtpServer(java.lang.String... args)
                              throws java.sql.SQLException
Create a new FTP server, but does not start it yet. Example:
 Server server = FtpServer.createFtpServer(null).start();
 

Parameters:
args - the argument list
Returns:
the server
Throws:
java.sql.SQLException

isDaemon

public boolean isDaemon()
Description copied from interface: Service
Check if a daemon thread should be used.

Specified by:
isDaemon in interface Service
Returns:
true if a daemon thread should be used