/* $Id: apitest.c,v 1.2 1995/06/23 19:28:17 p-pomes Exp $
* apitest: test the qiapi routines.
*/
#include <stdio.h>
#include "qiapi.h"

#ifndef QIHOST
#define QIHOST "ns"
#endif

static char *UseHost = QIHOST;
static char *User = NULL;
static char *Password = NULL;
static int Opts = -1;

static void do_opts __P((int, char **));

main(argc,argv)
int argc;
char **argv;
{
 FILE *To, *From;
 int rc;
 char *alias;

 do_opts(argc,argv);
 rc = OpenQi(UseHost,&To,&From);
 if (rc) {
   fprintf(stderr,"OpenQi failed with %d\n",rc);
   exit(1);
 }
 alias = LoginQi(UseHost,To,From,Opts,User,Password);
 if (alias)
   printf("Logged in as %s\n",alias);
 else {
   fprintf(stderr,"Login failed.\n");
   exit(1);
 }
 rc = LogoutQi(To, From);
 if (rc)
   printf("logged out\n");
 else {
   fprintf(stderr,"logout failed %d\n",rc);
   exit(1);
 }
 CloseQi(To, From);
 exit(0);
}

static void
do_opts(argc,argv)
int argc;
char **argv;
{
 extern int optind;
 extern char *optarg;
 int c,argerr=0;

 while ((c = getopt(argc,argv,"aik:elds:u:p:")) != EOF)
   switch(c) {
   case 'd':
     ++QiDebug;
     break;
   case 's':
     UseHost = optarg;
     break;
   case 'a':
     if (Opts == -1)
       Opts = 0;
     Opts |= LQ_AUTO;
     break;
   case 'i':
     if (Opts == -1)
       Opts = 0;
     Opts |= LQ_INTERACTIVE;
     break;
   case 'k':
     if (Opts == -1)
       Opts = 0;
     if (!optarg || *optarg == '\0' || *optarg == '4')
       Opts |= LQ_KRB4;
     else if (*optarg == '5')
       Opts |= LQ_KRB5;
     break;
   case 'e':
     if (Opts == -1)
       Opts = 0;
     Opts |= LQ_EMAIL;
     break;
   case 'l':
     if (Opts == -1)
       Opts = 0;
     Opts |= LQ_PASSWORD;
     break;
   case 'u':
     User = optarg;
     break;
   case 'p':
     Password = optarg;
     break;
   default:
     ++argerr;
     break;
   }
 if (argerr) {
   fprintf(stderr,"Usage: %s [-daikel] [-s host] [-u user] [-p pass]\n",argv[0]);
   fprintf(stderr,"\t-d debug\n");
   fprintf(stderr,"\t-a attempt auto login\n");
   fprintf(stderr,"\t-i interactively prompt for user/pass if needed\n");
   fprintf(stderr,"\t-k use kerberos login protocol\n");
   fprintf(stderr,"\t-e use email login protocol\n");
   fprintf(stderr,"\t-l use conventional login protocol\n");
   exit(1);
 }
 if (Opts == -1)
   Opts = LQ_ALL|LQ_INTERACTIVE|LQ_AUTO;
}