int parsemot(char *skri) { struct Mote *motpek=(struct Mote *)Servermem->mot_list.mlh_Head; int going2=TRUE,found=-1; char *faci,*skri2; if(skri[0]==0 || skri[0]==' ') return(-3); for(; motpek->mot_node.mln_Succ; motpek=(struct Mote *)motpek->mot_node.mln_Succ) { if(!MaySeeConf(motpek->nummer, inloggad, &Servermem->inne[nodnr])) continue; faci=motpek->namn; skri2=skri; going2=TRUE; if(matchar(skri2,faci)) { while(going2) { skri2=hittaefter(skri2); faci=hittaefter(faci); if(skri2[0]==0) return((int)motpek->nummer); else if(faci[0]==0) going2=FALSE; else if(!matchar(skri2,faci)) { faci=hittaefter(faci); if(faci[0]==0 || !matchar(skri2,faci)) going2=FALSE; } } } } return(found); }
void listmot(char *foo) { struct Mote *listpek=(struct Mote *)Servermem->mot_list.mlh_Head; int cnt, pattern = 0, patret; char buffer[61], motpattern[101]; puttekn("\r\n\n",-1); if(foo[0]) { strncpy(buffer,foo,50); patret = ParsePatternNoCase(buffer, motpattern, 98); if(patret != 1) { puttekn("\r\n\nDu måste ange ett argument som innehåller wildcards!\r\n", -1); return; } pattern = 1; } for(; listpek->mot_node.mln_Succ; listpek=(struct Mote *)listpek->mot_node.mln_Succ) { if(!MaySeeConf(listpek->nummer,inloggad,&Servermem->inne[nodnr])) continue; if(pattern && !MatchPatternNoCase(motpattern, listpek->namn)) continue; cnt=0; if(IsMemberConf(listpek->nummer, inloggad, &Servermem->inne[nodnr])) sprintf(outbuffer,"%3d %s ",countunread(listpek->nummer),listpek->namn); else sprintf(outbuffer," *%s ",listpek->namn); if(puttekn(outbuffer,-1)) return; if(listpek->status & SLUTET) if(puttekn(" (Slutet)",-1)) return; if(listpek->status & SKRIVSKYDD) if(puttekn(" (Skrivskyddat)",-1)) return; if(listpek->status & KOMSKYDD) if(puttekn(" (Kom.skyddat)",-1)) return; if(listpek->status & HEMLIGT) if(puttekn(" (Hemligt)",-1)) return; if(listpek->status & AUTOMEDLEM) if(puttekn(" (Auto)",-1)) return; if(listpek->status & SKRIVSTYRT) if(puttekn(" (Skrivstyrt)",-1)) return; if((listpek->status & SUPERHEMLIGT) && Servermem->inne[nodnr].status >= Servermem->cfg.st.medmoten) if(puttekn(" (ARexx-styrt)",-1)) return; if(puttekn("\r\n",-1)) return; } if(Servermem->info.hightext > -1) sprintf(outbuffer,"\r\n\nGlobala texter: Lägsta textnummer: %d Högsta textnummer: %d\r\n\n",Servermem->info.lowtext, Servermem->info.hightext); else strcpy(outbuffer, "\r\n\nDet finns inga texter.\r\n\n"); puttekn(outbuffer,-1); }
void vilka(void) { int x,verbose=FALSE; long timenow, idle; struct Mote *motpek; char namn[50],bps[15]; if(argument[0]) { if(argument[0] == '-' && (argument[1] == 'v' || argument[1] == 'V')) verbose = TRUE; } puttekn("\r\n\n",-1); timenow = time(NULL); for(x=0;x<MAXNOD;x++) { if(!Servermem->nodtyp[x]) continue; if(Servermem->inloggad[x] == -1) strcpy(namn,"<Ingen inloggad>"); else if(Servermem->inloggad[x] == -2) strcpy(namn,"<Uppringd>"); else strcpy(namn,getusername(Servermem->inloggad[x])); if(Servermem->nodtyp[x]==NODCON) sprintf(outbuffer,"Nod #%-2d CON %-20s %s\n\r",x,Servermem->nodid[x],namn); else if(Servermem->nodtyp[x]==NODSER) sprintf(outbuffer,"Nod #%-2d SER %-20s %s\n\r",x,Servermem->nodid[x],namn); else sprintf(outbuffer,"Nod #%-2d FOO %-20s %s\n\r",x,Servermem->nodid[x],namn); puttekn(outbuffer,-1); if(!verbose) continue; idle = timenow - Servermem->idletime[x]; if(Servermem->inloggad[x] == -1 || Servermem->inloggad[x] == -2) { /* eka('\n'); continue; */ if(Servermem->inloggad[x] == -2) sprintf(bps,"Bps: %-7d%15d:%02d %c\r\n\n",Servermem->connectbps[x],idle/3600,(idle%3600)/60,Servermem->say[x] ? '*' : ' '); else sprintf(bps,"Bps: - %15d:%02d %c\r\n\n",idle/3600,(idle%3600)/60,Servermem->say[x] ? '*' : ' '); puttekn(bps,-1); continue; } if(Servermem->nodtyp[x]==NODCON) sprintf(bps,"Bps: - %15d:%02d %c",idle/3600,(idle%3600)/60,Servermem->say[x] ? '*' : ' '); else sprintf(bps,"Bps: %-7d%15d:%02d %c",Servermem->connectbps[x],idle/3600,(idle%3600)/60,Servermem->say[x] ? '*' : ' '); switch(Servermem->action[x]) { case INGET : sprintf(outbuffer,"%-32s Har inga olästa texter\r\n\n",bps); break; case SKRIVER : if(Servermem->varmote[x]!=-1) { motpek=getmotpek(Servermem->varmote[x]); if(!motpek) continue; if(!MaySeeConf(motpek->nummer, inloggad, &Servermem->inne[nodnr])) sprintf(outbuffer,"%-32s Skriver en text\r\n\n",bps); else sprintf(outbuffer,"%-32s Skriver i %s\r\n\n",bps,motpek->namn); } else sprintf(outbuffer,"%-32s Skriver ett brev\r\n\n",bps); break; case LASER : if(Servermem->varmote[x]!=-1) { motpek=getmotpek(Servermem->varmote[x]); if(!motpek) continue; if(!MaySeeConf(motpek->nummer, inloggad, &Servermem->inne[nodnr])) sprintf(outbuffer,"%-32s Läser texter\r\n",bps); else sprintf(outbuffer,"%-32s Läser i %s\r\n",bps,motpek->namn); } else sprintf(outbuffer,"%-32s Läser i %s\r\n",bps,Servermem->cfg.brevnamn); break; case GORNGTANNAT : sprintf(outbuffer,"%-32s %s\r\n",bps,Servermem->vilkastr[x]); break; case UPLOAD : if(!Servermem->areor[Servermem->varmote[x]].namn[0] || !arearatt(Servermem->varmote[x], inloggad, &Servermem->inne[nodnr])) sprintf(outbuffer,"%-32s Laddar upp\r\n",bps); else { if(Servermem->vilkastr[x]) sprintf(outbuffer,"%-32s Laddar upp %s\r\n",bps,Servermem->vilkastr[x]); else sprintf(outbuffer,"%-32s Ska strax ladda upp en fil\r\n",bps); } break; case DOWNLOAD : if(!Servermem->areor[Servermem->varmote[x]].namn[0] || !arearatt(Servermem->varmote[x], inloggad, &Servermem->inne[nodnr])) sprintf(outbuffer,"%-32s Laddar ner\r\n",bps); else { if(Servermem->vilkastr[x]) sprintf(outbuffer,"%-32s Laddar ner %s\r\n",bps,Servermem->vilkastr[x]); else sprintf(outbuffer,"%-32s Ska strax ladda ner en fil\r\n",bps); } break; default : sprintf(outbuffer,"%-32s <Gör något odefinierat>\r\n",bps); break; } if(Servermem->CallerID[x]) { strcat(outbuffer, Servermem->CallerID[x]); strcat(outbuffer, "\r\n"); } strcat(outbuffer, "\n"); puttekn(outbuffer,-1); } }