SourceFiles.org - Use the Source, Luke
Home | Register | News | Forums | Guide | MyLinks | Bookmark

Related Sites

Latest News
  General News
  Reviews
  Press Releases
  Software
  Hardware
  Security
  Tutorials
  Off Topic


Back to files
QuickStart

Once installed (./configure && make && make install) use the Python script

teepeedee-share
to share the current directory automatically with FTP and HTTP

Description

teepeedee is a small, hopefully scalable, single-threaded file server. It can serve or receive multiple files over http, https and ftp simultaneously, listening on any number of ports and providing entirely different views of the filesystem to different users. It uses sendfile and is written in C++.

The license is laid out in the file COPYING.teepeedee.

teepeedee certainly used to run on FreeBSD i586 4.7-STABLE, Linux i686 2.4.20 with glibc 2.3, Debian i686 Woody (20021220), Debian PPC Unstable (20021220).

You may like to increase the rlimit'd number of open file descriptors to allow teepeedee to have more connnections (in the Bourne shell, ulimit -n).

It is a very untested at the moment. Please report problems to the author, John Fremlin <john@fremlin.de>!

Teepeedee can be found at http://john.fremlin.de/programs/teepeedee

WARNING

Do not run with elevated privileges! While hypothetically there should be no problems with running teepeedee as root, you would have to be more nuts than raisins to do it.

teepeedee does not check for symlinks. It is important that directories under users' home directories not be writable by untrusted agents as otherwise users could symlinkrace teepeedee and e.g. get it to overwrite any file owned by the teepeedee running user.

Security

UPLOADED FILES ARE CREATED GROUP WRITABLE!

teepeedee will only allow files or directories to be read that are world readable, and will only allow files or directories to be modified if they are owned by the teepeedee process's user and group, and are user and group writable. A file or directory's parents ARE NOT CHECKED FOR ACCESS PERMISSIONS.

Signals

SIGTERM, SIGINT - cleanly shut teepeedee down

SIGUSR1 - write out pending configuration information, and clear configuration cache

Configuration

By default teepeedee takes /etc/teepeedee as its configuration root. You can change this with ./configure --enable-configdir=dir. If present the first command line argument given to teepeedee overrides the configuration root.

Under the configuration root, there should be a number of lowercase directories named after protocols, e.g. "ftp" or "http". Inside them should be directories defining servers.

For an example use the teepeedee-share program to create a base configuration.

Root configuration structure

Under the main configuration directory each configurable item is stored in a single file so it is more a config tree than a config file. In the main configuration directory (by default compile time configured to /etc/teepeedee or first command line argument) there are directories defining server classes. These are the recognised server classes: http, https, ftp. Inside each server class directory there can be an unlimited number of server configuration directories.

For example you could have a layout like this

        /etc/teepeedee/https/secret-server/
        /etc/teepeedee/https/intranet-server/
        /etc/teepeedee/ftp/downloads/
        /etc/teepeedee/http/important-website/

Generic server configuration

All server configuration directories can contain the following files and directories. All files are optional unless marked (required). Some files are written to, these are marked (written).

bind_port - (required) contains port number to listen on as an ASCII

decimal (e.g. 8080)

bind_addr - IP address to listen on, in dotted quad format (e.g. 127.0.0.1)

timeout_prelogin - number of seconds of inactivity before closing the connection before the user is authenticated (logging in anonymously counts as authenticating)

timeout_postlogin - number of seconds of inactivity before closing the connection after the user is authenticated

timeout_xfer - number of seconds of inactivity before closing a file transfer or directory listing

unauthenticated_connections - (written) the number of unauthenticated connections active

unauthenticated_connections_max - maximum number of connections in a pre-authentication state

users/ - Users directory (described below)

SSL server configuration

To function an SSL server needs the following files

public_cert - public certificate in PEM format

private_key - private key in PEM format

HTTP(S) server configuration

HTTP and HTTPS server directories can contain the following additional configuration items. See the information for generic SSL servers to set the keys for HTTPS.

canonical_server_name - the official name of the server that will be used in HTTP redirections. For example, it could contain the line www.example.com

realm - HTTP authentication realm. If the realm is "Private members area". Browsers will say, Enter username and password for "Private members area".

default-user/ - User directory if the user supplies incorrect or no authentication (described below)

FTP server configuration

If you specify keys (as described in the information for generic SSL servers) the FTP server will do AUTH TLS control connection encryption. If you want to allow anonymous logins, create users "ftp" and "anonymous" with any_password_ok.

passive_port_min - lowest port that the server will listen on for passive connections

passive_port_max - highest port that the server will listen on for passive connections

greeting - multiline welcome banner

no_passive_mode - if this file exists the server will refuse a request to enter passive mode (where the client connects to another port on the server for the data transfer)

no_port_mode - if this file exists the server will refuse to enter active mode (where the server connects to a port on the client for the data transfer)

Users directory

The users/ directory in each server's configuration contains a directory per user. The name of the directory is the username.

User directories

Each user directory can contain the following files and directories

homedir/ - root of the filesystem as visible to the user though symlinks will be followed

password_plain - the user's password in plain text format

password - the user's crypt(3)ed password

any_password_ok - if this file exists the user may login without a password (HTTP) or with any password (FTP)

logins - (written) contains the number of times the user is currently logged in, e.g. 10

logins_max - maximum number of times the user can be logged in, e.g. 5

upload_ratio - floating point number as an ASCII string, e.g. 5.00. For every byte uploaded, allows user to exceed the maximum downloaded bytes by this number of bytes.

download_bytes - (written) number of bytes downloaded, e.g. 1023423

download_bytes_max - approximate maximum number of bytes a user may download (may be extended with if upload_ratio is set). 0 means unlimited

upload_bytes - (written) number of bytes uploaded

upload_bytes_max - approximate number of bytes a user may upload

msg_welcome - this message will be displayed to the user after login


Other Sites

Discussion Groups
  Beginners
  Distributions
  Networking / Security
  Software
  PDAs

About | FAQ | Privacy | Awards | Contact
Comments to the webmaster are welcome.
Copyright 2006 Sourcefiles.org All rights reserved.