#ifndef lint
static char *rcsid = "$Header: xmitauth.c,v 1.2 90/07/08 01:03:23 sob Exp $";
#endif
#include <stdio.h>
#include "../common/conf.h"
#include "../common/nntp.h"
#include "nntpxmit.h"

#ifdef AUTH

extern char Debug;
extern int converse();

FILE *sys;

xmitauth(host)
char *host;
	{
	char remote[64], user[16], pass[16];
	char buf[1024];
	int i;
	char savedebug;

	sys = fopen(PASSFILE, "r");
	if (sys == NULL)
		{
		exit(1);
		}
	
	while(fgets(buf, sizeof(buf), sys))
		{
		if (buf[0] == '#')
			continue;
		
		i = sscanf(buf,"%s %s %s", remote, user, pass);
		/* malformed entry? */
		if (i != 3)
			{
			log(L_NOTICE,"malformed entry in nntp.sys");
			continue;
			}
		
		/* right host? */
		if (!strcasecmp(remote,host))
			break;
		}
	if (feof(sys))
		{
		sprintf(buf,"host %s authinfo not in nntp.sys", host);
		log(L_NOTICE, buf);
		exit(1);
		}
	
	sprintf(buf,"authinfo user %s", user);
	if (converse(buf, sizeof(buf)) != NEED_AUTHDATA)
		{
		log(L_NOTICE, buf);
		exit(1);
		}
	
	/* don't display the password even if debug is on */
	savedebug = Debug;
	Debug = FALSE;

	sprintf(buf,"authinfo pass %s", pass);
	if (converse(buf, sizeof(buf)) != OK_AUTH)
		{
		log(L_NOTICE, buf);
		exit(1);
		}
	
	Debug = savedebug;

	fclose(sys);
	}

#endif AUTH

