login_cap.h revision 25658
125658Sdavidn/*-
225658Sdavidn * Copyright (c) 1996 by
325658Sdavidn * Sean Eric Fagan <sef@kithrup.com>
425658Sdavidn * David Nugent <davidn@blaze.net.au>
525658Sdavidn * All rights reserved.
625658Sdavidn *
725658Sdavidn * Redistribution and use in source and binary forms, with or without
825658Sdavidn * modification, is permitted provided that the following conditions
925658Sdavidn * are met:
1025658Sdavidn * 1. Redistributions of source code must retain the above copyright
1125658Sdavidn *    notice immediately at the beginning of the file, without modification,
1225658Sdavidn *    this list of conditions, and the following disclaimer.
1325658Sdavidn * 2. Redistributions in binary form must reproduce the above copyright
1425658Sdavidn *    notice, this list of conditions and the following disclaimer in the
1525658Sdavidn *    documentation and/or other materials provided with the distribution.
1625658Sdavidn * 3. This work was done expressly for inclusion into FreeBSD.  Other use
1725658Sdavidn *    is permitted provided this notation is included.
1825658Sdavidn * 4. Absolutely no warranty of function or purpose is made by the authors.
1925658Sdavidn * 5. Modifications may be freely made to this file providing the above
2025658Sdavidn *    conditions are met.
2125658Sdavidn *
2225658Sdavidn * Low-level routines relating to the user capabilities database
2325658Sdavidn *
2425658Sdavidn *	Was login_cap.h,v 1.9 1997/05/07 20:00:01 eivind Exp
2525658Sdavidn *	$Id$
2625658Sdavidn */
2725658Sdavidn
2825658Sdavidn#ifndef _LOGIN_CAP_H_
2925658Sdavidn#define _LOGIN_CAP_H_
3025658Sdavidn
3125658Sdavidn#define LOGIN_DEFCLASS		"default"
3225658Sdavidn#define LOGIN_DEFSTYLE		"passwd"
3325658Sdavidn#define LOGIN_DEFSERVICE	"login"
3425658Sdavidn#define	LOGIN_DEFUMASK		022
3525658Sdavidn#define LOGIN_DEFPRI		0
3625658Sdavidn#define _PATH_LOGIN_CONF	"/etc/login.conf"
3725658Sdavidn#define _FILE_LOGIN_CONF	".login_conf"
3825658Sdavidn#define _PATH_AUTHPROG		"/usr/libexec/login_"
3925658Sdavidn
4025658Sdavidn#define LOGIN_SETGROUP		0x0001	/* set group */
4125658Sdavidn#define LOGIN_SETLOGIN		0x0002	/* set login (via setlogin) */
4225658Sdavidn#define LOGIN_SETPATH		0x0004	/* set path */
4325658Sdavidn#define LOGIN_SETPRIORITY	0x0008	/* set priority */
4425658Sdavidn#define LOGIN_SETRESOURCES	0x0010	/* set resources (cputime, etc.) */
4525658Sdavidn#define LOGIN_SETUMASK		0x0020	/* set umask, obviously */
4625658Sdavidn#define LOGIN_SETUSER		0x0040	/* set user (via setuid) */
4725658Sdavidn#define LOGIN_SETENV		0x0080	/* set user environment */
4825658Sdavidn#define	LOGIN_SETALL		0x00ff	/* set everything */
4925658Sdavidn
5025658Sdavidn#define BI_AUTH			"authorize"
5125658Sdavidn#define BI_AUTH2		"authorise"
5225658Sdavidn#define BI_REJECT		"reject"
5325658Sdavidn#define BI_REMOVE		"remove"
5425658Sdavidn#define BI_ROOTOKAY		"root"
5525658Sdavidn#define BI_SECURE		"secure"
5625658Sdavidn#define BI_SETENV		"setenv"
5725658Sdavidn
5825658Sdavidn#ifndef AUTH_NONE /* Protect against <rpc/auth.h> */
5925658Sdavidn#define AUTH_NONE		0x00
6025658Sdavidn#endif
6125658Sdavidn#define AUTH_OKAY		0x01
6225658Sdavidn#define AUTH_ROOTOKAY		0x02	/* root login okay */
6325658Sdavidn#define AUTH_SECURE		0x04	/* secure login */
6425658Sdavidn
6525658Sdavidntypedef struct login_cap {
6625658Sdavidn  char *lc_class;
6725658Sdavidn  char *lc_cap;
6825658Sdavidn  char *lc_style;
6925658Sdavidn} login_cap_t;
7025658Sdavidn
7125658Sdavidntypedef struct login_time {
7225658Sdavidn  u_short     lt_start;	    /* Start time */
7325658Sdavidn  u_short     lt_end;	    /* End time */
7425658Sdavidn  #define LTM_NONE  0x00
7525658Sdavidn  #define LTM_SUN   0x01
7625658Sdavidn  #define LTM_MON   0x02
7725658Sdavidn  #define LTM_TUE   0x04
7825658Sdavidn  #define LTM_WED   0x08
7925658Sdavidn  #define LTM_THU   0x10
8025658Sdavidn  #define LTM_FRI   0x20
8125658Sdavidn  #define LTM_SAT   0x40
8225658Sdavidn  #define LTM_ANY   0x7F
8325658Sdavidn  #define LTM_WK    0x3E
8425658Sdavidn  #define LTM_WD    0x41
8525658Sdavidn  u_char    lt_dow;	    /* Days of week */
8625658Sdavidn} login_time_t;
8725658Sdavidn#define LC_MAXTIMES 64
8825658Sdavidn
8925658Sdavidn#include <sys/cdefs.h>
9025658Sdavidn__BEGIN_DECLS
9125658Sdavidnstruct passwd;
9225658Sdavidn
9325658Sdavidnvoid login_close __P((login_cap_t *));
9425658Sdavidnlogin_cap_t *login_getclassbyname __P((const char *, const char *homedir));
9525658Sdavidnlogin_cap_t *login_getclass __P((const struct passwd *));
9625658Sdavidnlogin_cap_t *login_getuserclass __P((const struct passwd *));
9725658Sdavidn
9825658Sdavidnchar *login_getcapstr __P((login_cap_t*, const char *, char *, char *));
9925658Sdavidnchar **login_getcaplist __P((login_cap_t *, const char *, const char *));
10025658Sdavidnchar *login_getstyle __P((login_cap_t *, char *, const char *));
10125658Sdavidnrlim_t login_getcaptime __P((login_cap_t *, const char *, rlim_t, rlim_t));
10225658Sdavidnrlim_t login_getcapnum __P((login_cap_t *, const char *, rlim_t, rlim_t));
10325658Sdavidnrlim_t login_getcapsize __P((login_cap_t *, const char *, rlim_t, rlim_t));
10425658Sdavidnchar *login_getpath __P((login_cap_t *, const char *, char *));
10525658Sdavidnint login_getcapbool __P((login_cap_t *, const char *, int));
10625658Sdavidn
10725658Sdavidnint setclasscontext __P((const char*, unsigned int));
10825658Sdavidnint setusercontext __P((login_cap_t*, const struct passwd*, uid_t, unsigned int));
10925658Sdavidnvoid setclassresources __P((login_cap_t *));
11025658Sdavidnvoid setclassenvironment __P((login_cap_t *, const struct passwd *, int));
11125658Sdavidn
11225658Sdavidnint authenticate __P((const char*, const char*, const char*, const char*));
11325658Sdavidnint auth_script __P((const char*, ...));
11425658Sdavidnint auth_env __P((void));
11525658Sdavidnint auth_scan __P((int));
11625658Sdavidnint auth_rmfiles __P((void));
11725658Sdavidnvoid auth_checknologin __P((login_cap_t*));
11825658Sdavidnint auth_cat __P((const char*));
11925658Sdavidn
12025658Sdavidnint auth_ttyok __P((login_cap_t*, const char *));
12125658Sdavidnint auth_hostok __P((login_cap_t*, const char *, char const *));
12225658Sdavidnint auth_timeok __P((login_cap_t*, time_t));
12325658Sdavidn
12425658Sdavidnstruct tm;
12525658Sdavidn
12625658Sdavidnlogin_time_t parse_lt __P((const char *));
12725658Sdavidnint in_ltm __P((const login_time_t *, struct tm *, time_t *));
12825658Sdavidnint in_ltms __P((const login_time_t *, struct tm *, time_t *));
12925658Sdavidn
13025658Sdavidn/* auxiliary functions */
13125658Sdavidn
13225658Sdavidnint login_strinlist __P((char **, char const *, int));
13325658Sdavidnint login_str2inlist __P((char **, const char *, const char *, int));
13425658Sdavidnlogin_time_t * login_timelist __P((login_cap_t *, char const *, int *, login_time_t **));
13525658Sdavidnint login_ttyok __P((login_cap_t *, const char *, const char *, const char *));
13625658Sdavidnint login_hostok __P((login_cap_t *, const char *, const char *, const char *, const char *));
13725658Sdavidn
13825658Sdavidn__END_DECLS
13925658Sdavidn
14025658Sdavidn#endif /* _LOGIN_CAP_H_ */
14125658Sdavidn
142