X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=userv.git;a=blobdiff_plain;f=daemon.h;h=235271eca43675cf62454a506e8c3d4813471673;hp=7b06bf7b77a6e6f3cc1c8a609059c7c433352623;hb=a271d7dfc7a7ab9509daf656f0a92a55c7fe7257;hpb=464d71c37246e556de9ec05f7b97af834a5224ee diff --git a/daemon.h b/daemon.h index 7b06bf7..235271e 100644 --- a/daemon.h +++ b/daemon.h @@ -2,7 +2,7 @@ * userv - daemon.h * definitions used in the daemon's source code * - * Copyright (C)1996-1997 Ian Jackson + * Copyright (C)1996-1997,1999 Ian Jackson * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by @@ -65,8 +65,8 @@ #define EMPTYINCLUDELOOKUP ":empty" #define USERCONFIGDIRBASE SYSTEMUSERVCONFIGDIR -#define USERCONFIGDIR HIDDENPREFIX USERCONFIGDIRBASE -#define USERUSERVCONFIGPATH USERDIR "/" USERCONFIGDIR +#define USERCONFIGDIR "." USERCONFIGDIRBASE +#define USERUSERVCONFIGPATH "~/" USERCONFIGDIR #define USERRCFILEPATH USERUSERVCONFIGPATH "/" USERRCFILE #define SYSTEMUSERVCONFIGPATH SYSTEMCONFIGDIR "/" SYSTEMUSERVCONFIGDIR #define SYSTEMRCFILEDEFAULTPATH SYSTEMUSERVCONFIGPATH "/" SYSTEMRCFILEDEFAULT @@ -74,12 +74,10 @@ #define SHELLLISTPATH SYSTEMCONFIGDIR "/" SHELLLIST #define SETENVIRONMENTPATH SYSTEMCONFIGDIR "/" SETENVIRONMENT -#define USERDIR "~" -#define HIDDENPREFIX "." - #define USERVD_LOGIDENT "uservd" +#define USERVDCHECK_LOGIDENT "uservd/check" #define USERVD_LOGFACILITY LOG_DAEMON -#define DEFUSERLOGFACILITY LOG_DAEMON +#define DEFUSERLOGFACILITY LOG_USER #define DEFUSERLOGLEVEL LOG_ERR #define TOPLEVEL_CONFIGURATION " \n\ @@ -105,12 +103,15 @@ quit \n\ " +#define USERVD_MYSELF_CHECK 3600 +#define USERVD_MYSELF_TIMEOUT 60 +#define USERVD_CHECKFORK_RETRY 60 #define MAX_INCLUDE_NEST 40 -#define MAX_ERRMSG_LEN 2048 +#define MAX_ERRMSG_LEN (MAX_ERRMSG_STRING-1024) #define ERRMSG_RESERVE_ERRNO 128 int parse_string(const char *string, const char *descrip, int isinternal); -void parseerrprint(const char *fmt, ...) PRINTFFORMAT(1,2); +int parseerrprint(const char *fmt, ...) PRINTFFORMAT(1,2); void ensurelogopen(int wantfacility); void ensurefdarray(int fd); const char *printtoken(int token); @@ -128,9 +129,10 @@ const char *nondebug_serviceuserdir(const char *ifnondebug); typedef void builtinserviceexec_fnt(const char *const *args); builtinserviceexec_fnt NONRETURNING bisexec_environment, bisexec_parameter; -builtinserviceexec_fnt NONRETURNING bisexec_version; +builtinserviceexec_fnt NONRETURNING bisexec_version, bisexec_help; builtinserviceexec_fnt NONRETURNING bisexec_toplevel, bisexec_override, bisexec_reset; -builtinserviceexec_fnt NONRETURNING bisexec_execute; +builtinserviceexec_fnt NONRETURNING bisexec_execute, bisexec_shutdown; +extern const char *const builtinservicehelpstrings[]; void execservice(const int synchsocket[], int clientfd) NONRETURNING; void servicerequest(int sfd) NONRETURNING; @@ -138,16 +140,17 @@ int synchread(int fd, int ch); const char *defaultpath(void); struct fdstate { - int iswrite, realfd, holdfd; + int iswrite; /* 0 or 1; -1 if not open */ + int realfd, holdfd; /* -1 if not open */ int wantstate; /* tokv_word_requirefd, tokv_word_allowfd, tokv_nullfd, tokv_word_rejectfd * (all of which have tokt_wantfdstate set) */ - int wantrw; - /* tokv_word_read, tokv_word_write */ + int wantrw; /* tokv_word_read, tokv_word_write, 0 for either/both */ }; struct keyvaluepair { char *key, *value; }; +extern pid_t overlordpid; extern struct request_msg request_mbuf; extern struct keyvaluepair *defvararray; extern struct fdstate *fdarray; /* indexed by nominal fd */ @@ -155,7 +158,7 @@ extern int fdarraysize, fdarrayused; extern int restfdwantstate, restfdwantrw; extern int service_ngids; extern char **argarray; -extern char *serviceuser, *service, *logname, *cwd; +extern char *serviceuser, *service, *loginname, *cwd; extern char *overridedata, *userrcfile; extern char *serviceuser_dir, *serviceuser_shell, *callinguser_shell; extern gid_t *calling_gids, *service_gids;