]>
Commit | Line | Data |
---|---|---|
9a83b251 | 1 | /* |
2 | * $Source$ | |
3 | * $Author$ | |
4 | * $Header$ | |
5 | * | |
6 | * Copyright (C) 1987 by the Massachusetts Institute of Technology | |
7 | * | |
2ce085d2 | 8 | * Server for user registration with MOIRA and Kerberos. |
9a83b251 | 9 | * |
10 | * This file contains all the information needed by all source | |
11 | * files for the user registration server. | |
12 | */ | |
13 | ||
9a83b251 | 14 | #include <sys/types.h> |
952aa193 | 15 | #include <ctype.h> |
9a83b251 | 16 | #include "ureg_err.h" |
17 | #include "ureg_proto.h" | |
9a83b251 | 18 | |
19 | #ifndef TRUE | |
20 | #define TRUE 1 | |
21 | #endif | |
22 | ||
23 | #ifndef FALSE | |
24 | #define FALSE 0 | |
25 | #endif | |
26 | ||
27 | #define FAIL_INST "reg_svr" /* Instance for failure zephyrgrams */ | |
28 | ||
29 | #define CUR_UREG_VERSION 1 /* Version for the register protocol */ | |
30 | #define SUCCESS 0 /* General purpose success code */ | |
31 | #define FAILURE 1 /* To use when any non-zero number will work */ | |
32 | #define min(a,b) ((a)>(b)?(b):(a)) | |
33 | #define MIN_UNAME 3 /* Username must be between three and */ | |
34 | #define MAX_UNAME 8 /* eight characters long. */ | |
35 | #define CRYPT_LEN 14 /* crypt() returns a 13 char string */ | |
36 | #define LOGIN_LEN MAX_UNAME + 1 /* Leave room for a null */ | |
37 | #define UID_LEN 7 /* Allow room for a 16 bit number */ | |
38 | ||
9a83b251 | 39 | extern char *whoami; /* Name of program - used by libraries */ |
40 | extern int errno; /* Unix error number */ | |
41 | ||
2ce085d2 | 42 | /* This structure holds information from the MOIRA database that will be |
9a83b251 | 43 | worth holding on to. An instance of it appears in the formatted |
44 | packet structure. */ | |
45 | struct db_data | |
46 | { | |
47 | char mit_id[CRYPT_LEN]; /* Encrypted MIT ID */ | |
48 | int reg_status; /* Registration status */ | |
49 | char uid[UID_LEN]; /* Reserved uid */ | |
50 | char login[LOGIN_LEN]; /* Login (username) */ | |
51 | }; | |
52 | ||
53 | /* This structure stores information sent over in the packet in a | |
54 | more convenient format and also stores some information obtained | |
55 | from the database that will be needed for each transaction. It | |
56 | initialized from format_pkt() and find_user(). */ | |
57 | struct msg | |
58 | { | |
59 | U_32BIT version; /* User registration protocol version */ | |
60 | U_32BIT request; /* Request */ | |
61 | char *first; /* First name */ | |
62 | char *last; /* Last name */ | |
63 | char *encrypted; /* Encrypted information in packet */ | |
64 | int encrypted_len; /* Length of encrypted information in packet */ | |
65 | char *leftover; /* Leftover information sent in the packet */ | |
66 | int leftover_len; /* Length of leftover information */ | |
2ce085d2 | 67 | struct db_data db; /* Information from the MOIRA database */ |
9a83b251 | 68 | }; |
69 | ||
70 | void failure_alert(); /* Log an unexplainable failure */ | |
71 | int parse_pkt(); /* Parse a packet from the client */ | |
72 | int format_pkt(); /* Prepare a packet to send to client*/ | |
73 | int verify_user(); /* Make sure user is allowed to register */ | |
74 | int reserve_user(); /* Reserve a login for this user */ | |
75 | int set_password(); /* Set this user's password */ | |
49312245 | 76 | |
77 | ||
78 | /* For logging successful database transactions */ | |
49312245 | 79 | extern FILE *journal; |
80 |