     
/*  A small FrontEnd door for /X or S!X */

#include "startup.c"    /* Our startup module */

#define ps PutString

FILE *fp = NULL;      /* We wont use the dos file functions */

BOOL clsflag = FALSE;

void UserRoutine(int nodenumber)
 {
   char buffer[200];
   char line[200];      
   char thisnode[30] = "This is your node";
   char nodes[200];
   char name[29];
   char stractivity[40];
   int  CurrentNode = 0;
   int  activity;
   int  baud = 0;
   int  buflen = 0;
   int  MaxNodes = 32;

   GetNumNodes(nodes);
   baud  = GetBaudRate();

   if(baud<9600) ShutDown();  /* Lets not bore 2400 modes for a hour :-) */
    
   ps("[0m[2J",1);
   ps("[9C[34m.---------------------------------------------------.",1);
   ps("[9C|   [35mDC FRONT 1.0 CODED BY [31mMR.WISHBONE/iNdEpENdANt   [34m|",1);
   ps("[9C| ------------------------------------------------- |",1);
   ps("[9C|[36m     YOU WANT ANOTHER /X CODER IN YE'OLD GROUP??[34m   |",1);
   ps("[9C|[36m CALL ME AT INTOXICATION (DC SITE) OR YOU CAN MAIL[34m |",1);
   ps("[9C|[36m E-MAIL TO: fredrik.skogberg@niflheim.aland.fi OR[34m  |",1);
   ps("[9C|[36m CALL FLASHBACK (SWE) OR EVEN NAUSEA (FIN) FOR INFO[34m|",1);
   ps("[9C|[36m ABOUT ME AND MY WONDERFUL EGOMANIAC STATE :-)[34m     |",1);
   ps("[9C`---------------------------------------------------'",1);
   ps("        .-----------------------------------------------------.",1);
   ps("        |-[44m [1;33mNODE#  CURRENT NODE ACTIVITY:  USER ONLINE IS:    [0;34m-|",1);
   ps("        |[8C|[22C|[21C|[0m",1);
  

  while(CurrentNode<=MaxNodes)
   {
     if(nodes[CurrentNode]=='X')
      {
        sprintf(buffer,"ENV:STATS@%d",CurrentNode);
        if(!(fp = fopen(buffer,"r")))
         {
           /* error unable to open to open file EXIT! */
           clsflag = TRUE;
           ShutDown();
         }
        fgets(buffer,80,fp);       /* Read first line */
        buflen = strlen(buffer);
        strncpy(name,buffer,28);   /* Copy 28 bytes */
        strmid(buffer,stractivity,buflen-1,2); /* get the activity */
        activity = atoi(stractivity);
       fclose(fp);
       switch(activity)
        {
          case  0 : strcpy(buffer,"Hangin loose..."); break;
          case  1 : strcpy(buffer,"Leechin a file"); break;
          case  2 : strcpy(buffer,"Uploadin a file"); break;
          case  3 : strcpy(buffer,"Usin a door"); break;
          case  4 : strcpy(buffer,"Readin/Writin Mail"); break;
          case  5 : strcpy(buffer,"Reviewing Stats"); break;
          case  6 : strcpy(buffer,"Account Editing"); break;
          case  7 : strcpy(buffer,"Zooming Mail"); break;
          case  8 : strcpy(buffer,"View Dir Files"); break;
          case  9 : strcpy(buffer,"Reading Bulletins"); break;
          case 10 : strcpy(buffer,"Viewing a File"); break;
          case 11 : strcpy(buffer,"Logging On"); break;
          case 12 : strcpy(buffer,"Logging Off"); break;
          case 13 : strcpy(buffer,"Sysop Commands"); break;
          case 14 : strcpy(buffer,"Dropped to Shell"); break;
          case 15 : strcpy(buffer,"Using editor"); break;
          case 16 : strcpy(buffer,"Joining a Conf."); break;
          case 17 : strcpy(buffer,"Chatting"); break;
          case 18 : strcpy(buffer,"Resetting Node"); break;
          case 19 : strcpy(buffer,"Paging Sysop"); break;
          case 20 : strcpy(buffer,"Connecting"); break;
          case 21 : strcpy(buffer,"Logging On"); break;
          case 22 : strcpy(buffer,"Awaiting Logon"); break;
          case 23 : strcpy(buffer,"Scanning Mail"); break;
          case 24 : strcpy(buffer,"Node Inactive"); break;
          case 25 : strcpy(buffer,"In MultiNode Chat"); break;
          case 26 : strcpy(buffer,"BBS Suspended"); break;
          case 27 : strcpy(buffer,"Reserved for User"); break;
          case 28 : strcpy(buffer,"Entered AEShell"); break;

          case 98 : strcpy(buffer,"In a Door"); break;
          default : strcpy(buffer,"Carrier Lost"); break;
        }
        if(CurrentNode==nodenumber)
         {
           sprintf(line,"[34m        |[32m  %-4.4d [34m |[33m %-20.20s [34m|[36m %-19.19s [34m|[0m",CurrentNode,thisnode,name);
           ps(line,1);
         }
         else
         {
           sprintf(line,"[34m        |[32m  %-4.4d [34m |[33m %-20.20s [34m|[36m %-19.19s [34m|[0m",CurrentNode,buffer,name);
           ps(line,1);
         }
      }
       CurrentNode++;
   }
  ps("        |[8C|[22C|[21C|",1);
  ps("        |-[44m [1;33m     HEY LOOK, I CAN SEE MY HOUSE FROM HERE!!     [0;34m-|",1);
  ps("        |[53C|",1);
  ps("        | [35mPlease excuse the LAME dezign I am no azkey artizt. [34m|",1);
  ps("        | [35mBut feel free to check out the programmin style ;-) [34m|",1);
  ps("        `-----------------------------------------------------'\n\n\n\n\n[0m",1);

 /*
  * ShutDown(); is automatically called by my startup module so we don't
  * have to call it here again.
  *
  */

 }

void UserCloseRoutine(void)
 {
   if(clsflag == TRUE)
      ps("\f",1);
 
   if(fp != NULL)  fclose(fp);

 }