X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=daemon.h;h=25b6f71173357855a506f469aa8c8e16a03a131a;hb=9f56f874416db295bdb50d448bd99cdd34db969d;hp=45bb10244c5602540d4d0f12d5b9f095aa42fd1f;hpb=703b99b834625829d6b285e5bca619475ef54511;p=userv.git diff --git a/daemon.h b/daemon.h index 45bb102..25b6f71 100644 --- a/daemon.h +++ b/daemon.h @@ -43,6 +43,18 @@ # endif #endif +#ifndef DEFAULTPATH_USER +# define DEFAULTPATH_USER "/usr/local/bin:/bin:/usr/bin" +#endif + +#ifndef DEFAULTPATH_ROOT +# define DEFAULTPATH_ROOT "/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin" +#endif + +#ifndef SETENVIRONMENT +# define SETENVIRONMENT "environment" +#endif + #define USERRCFILE "rc" #define SYSTEMUSERVCONFIGDIR "userv" #define SHELLLIST "shells" @@ -52,15 +64,16 @@ #define DEFAULTINCLUDELOOKUP ":default" #define EMPTYINCLUDELOOKUP ":empty" -#define USERDIRPREFIX USERDIR DIRSEP +#define USERDIRPREFIX USERDIR "/" #define USERCONFIGDIRBASE SYSTEMUSERVCONFIGDIR #define USERCONFIGDIR HIDDENPREFIX USERCONFIGDIRBASE -#define USERUSERVCONFIGPATH USERDIR DIRSEP USERCONFIGDIR -#define USERRCFILEPATH USERUSERVCONFIGPATH DIRSEP USERRCFILE -#define SYSTEMUSERVCONFIGPATH SYSTEMCONFIGDIR DIRSEP SYSTEMUSERVCONFIGDIR -#define SYSTEMRCFILEDEFAULTPATH SYSTEMUSERVCONFIGPATH DIRSEP SYSTEMRCFILEDEFAULT -#define SYSTEMRCFILEOVERRIDEPATH SYSTEMUSERVCONFIGPATH DIRSEP SYSTEMRCFILEOVERRIDE -#define SHELLLISTPATH SYSTEMCONFIGDIR DIRSEP SHELLLIST +#define USERUSERVCONFIGPATH USERDIR "/" USERCONFIGDIR +#define USERRCFILEPATH USERUSERVCONFIGPATH "/" USERRCFILE +#define SYSTEMUSERVCONFIGPATH SYSTEMCONFIGDIR "/" SYSTEMUSERVCONFIGDIR +#define SYSTEMRCFILEDEFAULTPATH SYSTEMUSERVCONFIGPATH "/" SYSTEMRCFILEDEFAULT +#define SYSTEMRCFILEOVERRIDEPATH SYSTEMUSERVCONFIGPATH "/" SYSTEMRCFILEOVERRIDE +#define SHELLLISTPATH SYSTEMCONFIGDIR "/" SHELLLIST +#define SETENVIRONMENTPATH SYSTEMCONFIGDIR "/" SETENVIRONMENT #define USERDIR "~" #define HIDDENPREFIX "." @@ -97,7 +110,7 @@ #define MAX_ERRMSG_LEN 2048 #define ERRMSG_RESERVE_ERRNO 128 -int parse_string(const char *string, const char *descrip); +int parse_string(const char *string, const char *descrip, int isinternal); void parseerrprint(const char *fmt, ...) PRINTFFORMAT(1,2); void ensurelogopen(int wantfacility); void ensurefdarray(int fd); @@ -111,6 +124,10 @@ void debug_dumpparameter(const char *parm, char **values); pid_t nondebug_fork(void); const char *nondebug_serviceuserdir(const char *ifnondebug); +void execservice(const int synchsocket[], int clientfd) NONRETURNING; +void servicerequest(int sfd) NONRETURNING; +int synchread(int fd, int ch); + struct fdstate { int iswrite, realfd, holdfd; int wantstate; @@ -120,7 +137,6 @@ struct fdstate { /* tokv_word_read, tokv_word_write */ }; -extern gid_t *gidarray; extern char **argarray; extern char *((*defvararray)[2]); extern struct fdstate *fdarray; /* indexed by nominal fd */ @@ -129,15 +145,14 @@ extern int restfdwantstate, restfdwantrw; extern struct request_msg request_mbuf; extern char *serviceuser, *service, *logname, *cwd; extern char *overridedata, *userrcfile; -extern char *serviceuser_dir, *serviceuser_shell; +extern char *serviceuser_dir, *serviceuser_shell, *callinguser_shell; +extern int service_ngids; +extern gid_t *calling_gids, *service_gids; +extern const char **calling_groups, **service_groups; extern uid_t serviceuser_uid; -extern gid_t serviceuser_gid; extern char *execpath, **execargs; extern int execute; /* One of the execution modes tokt_execmode */ extern int setenvironment, suppressargs, disconnecthup; -extern int ehandling; /* One of the error handling modes tokt_ehandlemode */ -extern int ehlogfacility, ehloglevel, syslogopenfacility, ehfilekeep; -extern FILE *ehfile; -extern char *ehfilename; +extern int syslogopenfacility; #endif