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