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