]> andersk Git - moira.git/blob - server/mr_glue.c
Initialize krb_realm.
[moira.git] / server / mr_glue.c
1 /*
2  *      $Source$
3  *      $Author$
4  *      $Header$
5  *
6  *      Copyright (C) 1987 by the Massachusetts Institute of Technology
7  *
8  *      Glue routines to allow the database stuff to be linked in to
9  *      a program expecting a library level interface.
10  * 
11  *      $Log$
12  *      Revision 1.2  1987-07-29 16:03:58  wesommer
13  *      Initialize krb_realm.
14  *
15  * Revision 1.1  87/07/14  00:41:18  wesommer
16  * Initial revision
17  * 
18  */
19
20 #ifndef lint
21 static char *rcsid_sms_glue_c = "$Header$";
22 #endif lint
23
24 #include "sms_server.h"
25 #include <krb.h>                /* XXX for error codes */
26 #include <pwd.h>
27 static int already_connected = 0;
28
29 #define CHECK_CONNECTED { if (!already_connected) return SMS_NOT_CONNECTED; }
30
31 static client pseudo_client;
32 extern int krb_err_base;
33
34 sms_connect()
35 {
36     register int status;
37
38     if (already_connected) return SMS_ALREADY_CONNECTED;
39
40     init_sms_err_tbl();
41     init_krb_err_tbl();
42     bzero((char *)&pseudo_client, sizeof(pseudo_client)); /* XXX */
43
44     status =  sms_open_database();
45     if (!status) already_connected = 1;
46     return status;
47 }
48
49 sms_disconnect()
50 {
51     CHECK_CONNECTED;
52     sms_close_database();
53     already_connected = 0;
54     return 0;
55 }
56
57 sms_noop()
58 {
59     CHECK_CONNECTED;
60     return 0;
61 }
62 /*
63  * This routine is rather bogus, as it only fills in who you claim to be.
64  */
65 sms_auth()
66 {
67     struct passwd *pw;
68     extern char *krb_realm;
69
70     CHECK_CONNECTED;
71     pw = getpwuid(getuid());
72     if (!pw) return (KDC_PR_UNKNOWN + krb_err_base); /* XXX hack (we 
73                                                     * need an extended 
74                                                     * error code table)
75                                                     */
76     strcpy(pseudo_client.kname.name, pw->pw_name);
77     get_krbrlm(pseudo_client.kname.realm, 1);
78     krb_realm = pseudo_client.kname.realm;
79     
80 }
81
82 int sms_query(name, argc, argv, callproc, callarg)
83     char *name;         /* Query name */
84     int argc;           /* Arg count */
85     char **argv;                /* Args */
86     int (*callproc)();  /* Callback procedure */
87     char *callarg;              /* Callback argument */
88 {
89     return sms_process_query(&pseudo_client, name, argc, argv,
90                              callproc, callarg);
91 }
92
93 int sms_access(name, argc, argv)
94     char *name;                 /* Query name */
95     int argc;                   /* Arg count */
96     char **argv;                /* Args */
97 {
98     return sms_check_access(&pseudo_client, name, argc, argv);
99 }
100
101 int sms_query_internal(argc, argv, callproc, callarg)
102     int argc;
103     char **argv;
104     int (*callproc)();
105     char *callarg;
106 {
107     return sms_process_query(&pseudo_client, argv[0], argc-1, argv+1,
108                              callproc, callarg);
109 }
110
111 int sms_access_internal(argc, argv)
112     int argc;
113     char **argv;
114 {
115     return sms_check_access(&pseudo_client, argv[0], argc-1, argv+1);
116 }
117
118 sms_shutdown(why)
119     char *why;
120 {
121     fprintf(stderr, "Sorry, not implemented\n");
122 }
123
124 /*
125  * Local Variables:
126  * mode: c
127  * c-indent-level: 4
128  * c-continued-statement-offset: 4
129  * c-brace-offset: -4
130  * c-argdecl-indent: 4
131  * c-label-offset: -4
132  * End:
133  */
This page took 0.045155 seconds and 5 git commands to generate.