Moved some variables into struct pop
(main): Added support for `-i' git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@853 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -12,12 +12,6 @@ static char SccsId[] = "@(#)@(#)pop_init.c 2.1 2.1 3/18/91";
|
|||||||
#include <popper.h>
|
#include <popper.h>
|
||||||
RCSID("$Id$");
|
RCSID("$Id$");
|
||||||
|
|
||||||
#ifdef KERBEROS
|
|
||||||
AUTH_DAT kdata;
|
|
||||||
#endif /* KERBEROS */
|
|
||||||
|
|
||||||
extern int errno;
|
|
||||||
|
|
||||||
static
|
static
|
||||||
int
|
int
|
||||||
krb_authenticate(POP *p, struct sockaddr_in *addr)
|
krb_authenticate(POP *p, struct sockaddr_in *addr)
|
||||||
@@ -33,19 +27,20 @@ krb_authenticate(POP *p, struct sockaddr_in *addr)
|
|||||||
strcpy(instance, "*");
|
strcpy(instance, "*");
|
||||||
auth = krb_recvauth(0L, 0, &ticket, "pop", instance,
|
auth = krb_recvauth(0L, 0, &ticket, "pop", instance,
|
||||||
addr, (struct sockaddr_in *) NULL,
|
addr, (struct sockaddr_in *) NULL,
|
||||||
&kdata, "", schedule, version);
|
&p->kdata, "", schedule, version);
|
||||||
|
|
||||||
if (auth != KSUCCESS) {
|
if (auth != KSUCCESS) {
|
||||||
pop_msg(p, POP_FAILURE, "Kerberos authentication failure: %s",
|
pop_msg(p, POP_FAILURE, "Kerberos authentication failure: %s",
|
||||||
krb_get_err_text(auth));
|
krb_get_err_text(auth));
|
||||||
pop_log(p, POP_FAILURE, "%s: (%s.%s@%s) %s", p->client,
|
pop_log(p, POP_FAILURE, "%s: (%s.%s@%s) %s", p->client,
|
||||||
kdata.pname, kdata.pinst, kdata.prealm, krb_get_err_text(auth));
|
p->kdata.pname, p->kdata.pinst, p->kdata.prealm,
|
||||||
|
krb_get_err_text(auth));
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef DEBUG
|
#ifdef DEBUG
|
||||||
pop_log(p, POP_DEBUG, "%s.%s@%s (%s): ok", kdata.pname,
|
pop_log(p, POP_DEBUG, "%s.%s@%s (%s): ok", p->kdata.pname,
|
||||||
kdata.pinst, kdata.prealm, inet_ntoa(addr->sin_addr));
|
p->kdata.pinst, p->kdata.prealm, inet_ntoa(addr->sin_addr));
|
||||||
#endif /* DEBUG */
|
#endif /* DEBUG */
|
||||||
|
|
||||||
#endif /* KERBEROS */
|
#endif /* KERBEROS */
|
||||||
@@ -76,6 +71,7 @@ pop_init(POP *p,int argcount,char **argmessage)
|
|||||||
int options = 0;
|
int options = 0;
|
||||||
int sp = 0; /* Socket pointer */
|
int sp = 0; /* Socket pointer */
|
||||||
char * trace_file_name;
|
char * trace_file_name;
|
||||||
|
int inetd = 0;
|
||||||
|
|
||||||
/* Initialize the POP parameter block */
|
/* Initialize the POP parameter block */
|
||||||
memset (p,0, sizeof(POP));
|
memset (p,0, sizeof(POP));
|
||||||
@@ -94,7 +90,7 @@ pop_init(POP *p,int argcount,char **argmessage)
|
|||||||
#ifdef KERBEROS
|
#ifdef KERBEROS
|
||||||
"k"
|
"k"
|
||||||
#endif
|
#endif
|
||||||
"dt:")) != EOF)
|
"dit:")) != EOF)
|
||||||
switch (c) {
|
switch (c) {
|
||||||
|
|
||||||
/* Debugging requested */
|
/* Debugging requested */
|
||||||
@@ -127,6 +123,10 @@ pop_init(POP *p,int argcount,char **argmessage)
|
|||||||
pop_timeout = atoi(optarg);
|
pop_timeout = atoi(optarg);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
/* Fake inetd */
|
||||||
|
case 'i':
|
||||||
|
inetd = 1;
|
||||||
|
break;
|
||||||
/* Unknown option received */
|
/* Unknown option received */
|
||||||
default:
|
default:
|
||||||
errflag++;
|
errflag++;
|
||||||
@@ -134,10 +134,18 @@ pop_init(POP *p,int argcount,char **argmessage)
|
|||||||
|
|
||||||
/* Exit if bad options specified */
|
/* Exit if bad options specified */
|
||||||
if (errflag) {
|
if (errflag) {
|
||||||
(void)fprintf(stderr,"Usage: %s [-d]\n",argmessage[0]);
|
fprintf(stderr,
|
||||||
|
"Usage: %s [-T timeout] [-d] [-k] [-i]\n",
|
||||||
|
argmessage[0]);
|
||||||
exit (1);
|
exit (1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Fake inetd */
|
||||||
|
if (inetd)
|
||||||
|
mini_inetd (p->kerberosp ?
|
||||||
|
k_getportbyname("kpop", "tcp", htons(1109)) :
|
||||||
|
k_getportbyname("pop", "tcp", htons(110)));
|
||||||
|
|
||||||
/* Get the address and socket of the client to whom I am speaking */
|
/* Get the address and socket of the client to whom I am speaking */
|
||||||
len = sizeof(cs);
|
len = sizeof(cs);
|
||||||
if (getpeername(sp,(struct sockaddr *)&cs,&len) < 0){
|
if (getpeername(sp,(struct sockaddr *)&cs,&len) < 0){
|
||||||
|
|||||||
Reference in New Issue
Block a user