/*****************************************************************************\
* 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*/
syntax highlighted by Code2HTML, v. 0.9.1