/*****************************************************************************\ * Copyright (c) 2002 Pelle Johansson. * * All rights reserved. * * * * This file is part of the moftpd package. Use and distribution of * * this software is governed by the terms in the file LICENCE, which * * should have come with this package. * \*****************************************************************************/ /* $moftpd: server.h 1223 2004-10-28 16:14:40Z morth $ */ #ifndef _SERVER_H #define _SERVER_H typedef struct server server_t; #include "user.h" #include "utf8fs/file.h" #include "sql.h" #include "tls.h" struct sockaddr; struct server { char *name; int numBindings; char **bindings; int numPorts; int *ports; int minPasvPort, maxPasvPort; user_t *users; access_t *access; char *chroot; char *loginFailedMsg, *userInvalidMsg; int maxIdle; char *passRequestMsg, *anonPassMsg, *dirMsgFile, *welcomeMsg; int tlsOptions; #ifdef USE_TLS tlscert_t tlsCert; tlskey_t tlsKey; #endif int sleepOnFail, maxLoginAttempts; #ifdef HAVE_LIBPAM char *pam_service; #endif int maxConnects; #ifdef USE_SQL sql_t sql; char *sqlHost, *sqlUser, *sqlDB, *sqlPass, *sqlCert, *sqlKey; char *sqlUserQuery, *sqlDirQuery, *sqlConnectQuery; int sqlRefs; #endif unsigned int passIfInvalid:1, allowUnbound:1, allowForeign:1, allowLowPorts:1, allowLogin:1, passwordNeeded:1, loginTLS:1, tlsNoLogout:1, allowSecLogin:1, defHardLink:1, allowOutOfRange:1; struct { char *alias; char *user; } *aliases; int numAliases; struct { struct sockaddr_storage addr, mask; int maskSize; } *ranges; int numRanges; }; server_t *new_server(const char *name, server_t *parent); void quit_all_servers (void); void close_server_sockets (void); void add_server_port(server_t *serv, int port); void add_server_binding(server_t *serv, const char *mask); void add_server_range (server_t *serv, struct sockaddr *addr, struct sockaddr *mask); void server_add_alias(server_t *serv, const char *alias, const char *user); const char *server_expand_alias(const server_t *serv, const char *name); server_t *find_server (const struct sockaddr *addr, const struct sockaddr *raddr, const server_t *last); server_t *find_named_server (const char *host, int port, const struct sockaddr *raddr, const server_t *last); int create_server_sockets(void); int connection_accepter(int sock, void *user, int urgent); #endif /*_SERVER_H*/