"Fossies" - the Fresh Open Source Software archive

Member "dbox-2.41/oserv/alpha.C" of archive dbox-2.41.tgz:


/*

  DBOX Module
  Copyright (C) 1994-2000 Daniel Kroening <kroening@handshake.de>

  Purpose: 

*/

#include <unistd.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <time.h>
#include <dirent.h>

#include <dboxpath.h>
#include <netdefs.h>
#include <logins.h>
#include "../online/extern.h"
#include "../online/online.h"
#include "../online/userlog.h"
#include "netz.h"
#include "puffer.h"
#include "z38.h"
#include "alpha.h"

class alphanetlogint:public z38netlogint
 {
 public:
  virtual bool checklicense();
  virtual void handle_local();
 };
 
void alphanetlogint::handle_local()
 {
  char infilename[DIRLEN], 
       outfilename[DIRLEN], 
       newoutfilename[DIRLEN];

  del_port_temp_dir();

  snprintf(infilename, DIRLEN, DBOXPORTTEMPDIR "infile.%s", config.dboxdir, 
    config.port, packerextention(up|"packer"));

  remove(infilename);

  online.printf("\r\n***OK***\r\n");

  // EMPFANGEN

  if(status.online2)
   {
    if(!online.comport.dcd())
     {
      userlogprintf2(status, up.name, "alphanetlogin", "Carrier lost");
      rename(newoutfilename, outfilename);
      freenetcallfile(&up);
      return;
     }
   }

   {
    char tempstr[TEXTLEN];

    snprintf(tempstr, TEXTLEN, "Eingangspuffer von Netzwerksystem %s", up.name);
    if(doupload_specialfile('Z', infilename, tempstr, logintype))
     {
      userlogprintf2(status, up.name, "alphanetlogin", "Upload fehlgeschlagen");
      rename(newoutfilename, outfilename);
      freenetcallfile(&up);
      return;
     }
   }

  online.flushkeys();

  storearchive(&up, infilename);

  // SENDEN

  if(getnetcallfile(&up, outfilename))
   {
    userlogprintf2(status, up.name, "alphanetlogin", "Failed to get netcallfile");
    online.printf("\r\n###ENDE###\r\n");
    sleep(1);
    return;
   }

  if(access(outfilename, 00)!=0)
   {
    online.printf("\r\n###ENDE###\r\n");
    freenetcallfile(&up);
    sleep(1);
    return;
   }

  snprintf(newoutfilename, DIRLEN, DBOXPORTTEMPDIR "buffer",
    config.dboxdir, config.port);
  remove(newoutfilename);
  rename(outfilename, newoutfilename);

  online.printf("*");

   {
    char tempstr[TEXTLEN];

    snprintf(tempstr, TEXTLEN, "Ausgangspuffer von Netzwerksystem %s", up.name);
    if(dodownload('Z', newoutfilename, tempstr, logintype))
     {
      userlogprintf2(status, up.name, "alphanetlogin", "Download fehlgeschlagen");
      rename(newoutfilename, outfilename);
      freenetcallfile(&up);
      return;
     }
   }

  remove(newoutfilename);
  freenetcallfile(&up);
  online.printf("\r\n###ENDE###\r\n");
  sleep(1);
 }

bool alphanetlogint::checklicense()
 {
  return FALSE;
 }

void alpha1login(const char *login)
 {
  alphanetlogint alphanetlogin;

  strmaxcpy(alphanetlogin.loginstring, login, TEXTLEN-1);
  alphanetlogin.login=NETZ_ALPHABOX;
  alphanetlogin.donetlogin();
 }