Пример #1
0
long __saveds __regargs nik_update(struct XPR_UPDATE *update) {
    struct TransferFiles *tf, *tmptf;
    int equalulfiles = 0;

    if(update->xpru_updatemask & XPRU_FILENAME) {
        sprintf(outbuffer,"\r\nFör över %s\r\n",update->xpru_filename);
        conputtekn(outbuffer,-1);
        strcpy(xprfilnamn,update->xpru_filename);
        if(Servermem->action[nodnr]==UPLOAD || Servermem->action[nodnr]==DOWNLOAD) Servermem->vilkastr[nodnr] = FilePart(xprfilnamn);
    }
    if(update->xpru_updatemask & XPRU_FILESIZE) {
        sprintf(outbuffer,"Filens längd %d\r\n",update->xpru_filesize);
        conputtekn(outbuffer,-1);
        filesize=update->xpru_filesize;
    }
    if(update->xpru_updatemask & XPRU_MSG) {
        conputtekn(update->xpru_msg,-1);
        conputtekn("\r\n",-1);
    }
    if(update->xpru_updatemask & XPRU_ERRORMSG) {
        conputtekn(update->xpru_errormsg,-1);
        conputtekn("\r\n",-1);
    }
    if(update->xpru_updatemask & XPRU_DATARATE) cps=update->xpru_datarate;
    if(update->xpru_updatemask & XPRU_BYTES) {
        sprintf(outbuffer,"\rBytes: %d (%d cps)",update->xpru_bytes,update->xpru_datarate);
        conputtekn(outbuffer,-1);
        countbytes=update->xpru_bytes;
        if(countbytes == filesize && Servermem->action[nodnr]==UPLOAD) {
            tmptf = (struct TransferFiles *)tf_list.mlh_Head;
            while(tmptf)
            {
                if(!stricmp(tmptf->Filnamn,xprfilnamn))
                    equalulfiles = 1;
                tmptf = (struct TransferFiles *)tmptf->node.mln_Succ;
            }
            if(!equalulfiles)
            {
                if(!(tf=(struct TransferFiles *)AllocMem(sizeof(struct TransferFiles),MEMF_CLEAR))) {
                    puttekn("Kunde inte allokera en TransferFiles-struktur\n\r",-1);
                }
                else
                {
                    if(Servermem->cfg.logmask & LOG_RECFILE) {
                        LogEvent(USAGE_LOG, INFO, "Tog emot filen %s från %s",
                                 xprfilnamn, getusername(inloggad));
                    }
                    strcpy(tf->Filnamn,xprfilnamn);
                    tf->cps = cps;
                    AddTail((struct List *)&tf_list,(struct Node *)tf);
                    ulfiles++;
                }
            }

        }
    }
    return(0L);
}
Пример #2
0
void rexxsendserstring(struct RexxMsg *mess) {
  char *str, res;
  str = hittaefter(mess->rm_Args[0]);
  if(Servermem->nodtyp[nodnr] != NODCON) {
    res = serputtekn(str, -1);
  } else {
    res = conputtekn(str, -1);
  }
  if(carrierdropped()) {
    SetRexxErrorResult(mess, 100);
  } else {    
    SetRexxResultString(mess, res ? "1" : "0");
  }
}
Пример #3
0
void rexxsendserstring(struct RexxMsg *mess) {
        char *str,ret,retstr[2];
        str=hittaefter(mess->rm_Args[0]);
        if(Servermem->nodtyp[nodnr] != NODCON)
        	ret=serputtekn(str,-1);
        else
        	ret=conputtekn(str,-1);
        if(ret) retstr[0]='1';
        else retstr[0]='0';
        retstr[1]=0;
        mess->rm_Result1=0;
        if(mess->rm_Action & 1L<<RXFB_RESULT) {
                if(!(mess->rm_Result2=(long)CreateArgstring(retstr,1)))
                        puttekn("\r\n\nKunde inte allokera en Argstring!\r\n\n",-1);
        }
}
Пример #4
0
long __saveds __regargs nik_gets(char *prompt,char *buffer) {
    conputtekn("\r\n\nNu promptas det!!\r\n",-1);
    conputtekn(prompt,-1);
    strcpy(buffer,"");
    return(1L);
}
Пример #5
0
void main(int argc,char *argv[]) {
  int x;
  long tid;
  char tellstr[100],*tmppscreen, titel[80], configname[50] = "NiKom:DatoCfg/SerNode.cfg";
  if(argc>1) for(x=1;x<argc;x++) {
      if(argv[x][0]=='-') {
        if(argv[x][1]=='B') dtespeed=atoi(&argv[x][2]);
        else if(argv[x][1]=='N') nodnr = atoi(&argv[x][2]);
      } else strcpy(configname,argv[x]);
    }
  if(nodnr==-1) {
    printf("NiKomSer måste startas från prenoden.\n");
    exit(10);
  }
  NewList((struct List *)&aliaslist);
  NewList((struct List *)&edit_list);
  if(!(IntuitionBase=(struct IntuitionBase *)OpenLibrary("intuition.library",0)))
    cleanup(EXIT_ERROR,"Kunde inte öppna intuition.library\n");
  if(!(UtilityBase=OpenLibrary("utility.library",37L)))
    cleanup(EXIT_ERROR,"Kunde inte öppna utility.library\n");
  if(!(LocaleBase=OpenLibrary("locale.library",38L)))
    cleanup(EXIT_ERROR,"Kunde inte öppna locale.library\n");
  if(!(NiKomBase=OpenLibrary("nikom.library",0L)))
    cleanup(EXIT_ERROR,"Kunde inte öppna nikom.library\n");

  initnode(NODSPAWNED);
  if(!(nikomnodeport = CreateMsgPort()))
    cleanup(EXIT_ERROR,"Kunde inte skapa NiKomNode-porten");
  sprintf(nikomnodeportnamn,"NiKomNode%d",nodnr);
  nikomnodeport->mp_Node.ln_Name = nikomnodeportnamn;
  nikomnodeport->mp_Node.ln_Pri = 1;
  AddPort(nikomnodeport);
  sprintf(rexxportnamn,"NiKomRexx%d",nodnr);
  if(!(rexxport=(struct MsgPort *)CreateMsgPort()))
    cleanup(EXIT_ERROR,"Kunde inte öppna RexxPort\n");
  rexxport->mp_Node.ln_Name=rexxportnamn;
  rexxport->mp_Node.ln_Pri = 50;
  AddPort(rexxport);
  if(!(RexxSysBase=(struct RsxLib *)OpenLibrary("rexxsyslib.library",0L)))
    cleanup(EXIT_ERROR,"Kunde inte öppna rexxsyslib.library\n");
  getnodeconfig(configname);
  if(pubscreen[0]=='-') tmppscreen=NULL;
  else tmppscreen=pubscreen;
  if(!(NiKwind=(struct Window *)OpenWindowTags(NULL,WA_Left,xpos,
                                               WA_Top,ypos,
                                               WA_Width,xsize,
                                               WA_Height,ysize,
                                               WA_IDCMP,IDCMP_CLOSEWINDOW,
                                               WA_MinWidth,50,
                                               WA_MinHeight,10,
                                               WA_MaxWidth,~0,
                                               WA_MaxHeight,~0,
                                               WA_SizeGadget,TRUE,
                                               WA_SizeBBottom, TRUE,
                                               WA_DragBar,TRUE,
                                               WA_DepthGadget,TRUE,
                                               WA_CloseGadget,TRUE,
                                               WA_SimpleRefresh,TRUE,
                                               WA_ScreenTitle,"NiKomSer",
                                               WA_AutoAdjust,TRUE,
                                               WA_PubScreenName,tmppscreen,
                                               TAG_DONE)))
    cleanup(EXIT_ERROR,"Kunde inte öppna fönstret\n");
  if(!OpenIO(NiKwind)) cleanup(EXIT_ERROR,"Kunde inte öppna IO\n");
  inloggad=Servermem->inloggad[nodnr];
  conreqtkn();
  serreqtkn();
  UpdateInactive();
  sprintf(titel,"Nod #%d SER: %s #%d",nodnr,Servermem->inne[nodnr].namn,inloggad);
  SetWindowTitles(NiKwind,titel,(char *)-1L);
  if(!ReadUnreadTexts(&Servermem->unreadTexts[nodnr], inloggad)) {
    puttekn("Error reading unread text info.\r\n", -1);
    LogEvent(SYSTEM_LOG, ERROR,
             "Can't read unread text info for user %d", inloggad);
    cleanup(EXIT_ERROR, "Error reading unread text info.\n");
  }
  if(getft("NiKom:Texter/Bulletin.txt")>Servermem->inne[nodnr].senast_in) {
    sendfile("NiKom:Texter/Bulletin.txt");
  }

  connection();

  if(nodestate & NIKSTATE_NOCARRIER) {
    conputtekn("\nCarrier dropped\n",-1);
    if(Servermem->cfg.logmask & LOG_CARDROPPED) {
      LogEvent(USAGE_LOG, WARN, "%s släpper carriern (nod %d)",
               getusername(inloggad), nodnr);
    }
    if(Servermem->cfg.ar.cardropped) sendautorexx(Servermem->cfg.ar.cardropped);
  } else {
    if(nodestate & NIKSTATE_AUTOLOGOUT) {
      puttekn("\n\n\r*** Automagisk utloggning ***\n\n\r",-1);
    } else if(nodestate & NIKSTATE_INACTIVITY) {
      puttekn("\n\n\r*** Utloggning p.g.a inaktivitet ***\n\n\r",-1);
    }
    radcnt=-174711;
    if(Servermem->say[nodnr]) displaysay();
    if(Servermem->cfg.ar.utlogg) sendautorexx(Servermem->cfg.ar.utlogg);
    sendfile("NiKom:Texter/Utlogg.txt");
  }
  Servermem->inloggad[nodnr]=-1;
  if(Servermem->cfg.logmask & LOG_UTLOGG) {
    LogEvent(USAGE_LOG, INFO, "%s loggar ut från nod %d",
             getusername(inloggad), nodnr);
  }
  Servermem->action[nodnr]=0;
  time(&tid);
  Servermem->inne[nodnr].senast_in=tid;
  Servermem->inne[nodnr].tot_tid+=(tid-logintime);
  Servermem->inne[nodnr].loggin++;
  Servermem->info.inloggningar++;
  Servermem->inne[nodnr].defarea=area2;
  writeuser(inloggad,&Servermem->inne[nodnr]);
  WriteUnreadTexts(&Servermem->unreadTexts[nodnr], inloggad);
  writesenaste();
  AbortInactive();
  freealiasmem();
  sprintf(tellstr,"loggade just ut från nod %d",nodnr);
  tellallnodes(tellstr);

  if(nodestate & NIKSTATE_NOCARRIER) {
    nodestate &= ~NIKSTATE_RELOGIN;
  }
  nodestate &= (NIKSTATE_RELOGIN | NIKSTATE_CLOSESER | NIKSTATE_NOANSWER);
  cleanup(nodestate,"");
}