AP_MSG_HANDLER_METHOD(GmModule, Gm_Stop) { if (!bActive_) { pMsg->apStatus = ApMessage::Ok; return;} int ok = 0; ok = doLogout(); if (!ok) { apLog_Error((LOG_CHANNEL, LOG_CONTEXT, "doLogout() failed")); } pMsg->apStatus = ok ? ApMessage::Ok : ApMessage::Error; }
int main(int argc, const char * argv[]) { char command[MAXCOMMAND]; char *commandArgv[MAXCOMMANDARGS]; int commandArgc = 0; int loggedIn = 0; /*Ao alterar a lista de comandos, é necessário alterar a constante TOTALCOMMANDS*/ char *listCommands[] = {"exit","help","login","logout","lista","mudapass","pesquisa","marca","desmarca"}; /*Lista de argumentos de cada comando*/ char *listCommandsArgs[] = {"","","[username] [password]","","","[passwordantiga] [passwordnova]","[origem] [destino]", "[id] [passaporte]","[id] [passaporte]"}; /*Total de argumentos de cada comando*/ int listCommandsArgc[] = {0,0,2,0,0,2,2,2,2}; /*Request*/ req = NULL; /*Sinal para parar*/ signal(SIGUSR1,stopClient); while (1) { promptShell("agente"); /*Ler comando e interpretar os argumentos*/ if (readCommand(command,commandArgv,&commandArgc) == 1) continue; /*Verificar se o comando existe*/ if (checkCommand(listCommands,listCommandsArgs,listCommandsArgc,TOTALCOMMANDS,commandArgv[0],commandArgc) == 0) { continue; } /*Executar comando*/ if (strcmp(commandArgv[0],"exit") == 0) break; else if (strcmp(commandArgv[0],"help") == 0) { printf("Comandos disponíveis:\n"); showCommandList(listCommands,listCommandsArgs,listCommandsArgc,TOTALCOMMANDS); } else if (!loggedIn) { /*Verificar login*/ if (strcmp(commandArgv[0],"login") == 0) { /*ToDo: colocar no checkCommand a validação de argumentos*/ if (commandArgc != 3) { printf("login:\n Argumentos possíveis: [username] [password]\n"); } else { /*Efectuar login do Administrador*/ req = doLogin(commandArgv[1],commandArgv[2]); loggedIn = req != NULL; } } else printf("Iniciar sessão pelo comando \"login\"\n"); } else if (strcmp(commandArgv[0],"login") == 0) { printf("Sessão já foi iniciada: %s\n",req->username); printf("Utilize o comando \"logout\" para terminar a sessão actual\n"); } else if (strcmp(commandArgv[0],"logout") == 0) { if (doLogout(req)) { destroyClientPipe(req); req = NULL; loggedIn = 0; } } else { switch (doJob(command,commandArgv,&commandArgc,req)) { case PASSCHANGED: if (doLogout(req)) { printf("Efectue o início de sessão com a nova password\n"); destroyClientPipe(req); req = NULL; loggedIn = 0; } break; } } } /*Logout*/ doLogout(req); /*Dependências*/ destroyClientPipe(req); return 0; }
void Admin::createConnections() { QObject::connect(this->changeP,SIGNAL(clicked()),this,SLOT(toFormStack())); QObject::connect(this->logout,SIGNAL(clicked()),this,SLOT(doLogout())); }
char doRegular(char expand, char c) { char toReturn; int i; int done = 0; label doorinfo; toReturn = FALSE; for (i = 0; !expand && i < MAXEXTERN && extCmd[i].name[0]; ++i) { if (c == toupper(extCmd[i].name[0]) && (onConsole || !extCmd[i].local)) { done = 1; mPrintf("\b%s", extCmd[i].name); doCR(); if (changedir(cfg.aplpath) == ERROR) { mPrintf(" -- Can't find application directory.\n\n"); changedir(cfg.homepath); } /* apsystem(extCmd[i].command); */ sprintf(doorinfo, "DORINFO%d.DEF", onConsole ? 0 : userdat.apl_com); extFmtRun(extCmd[i].command, doorinfo); } } if (!done) { switch (c) { case 'S': if (gl_user.sysop && expand) { mPrintf("\b\bSysop Menu"); doCR(); doSysop(); } else { toReturn = TRUE; } break; case 'A': if (gl_user.aide) { doAide(expand, 'E'); } else { toReturn = TRUE; } break; case 'C': doChat(expand, '\0'); break; case 'D': doDownload(expand); break; case 'E': doEnter(expand, 'm'); break; case 'F': doRead(expand, 'f'); break; case 'G': doGoto(expand, FALSE); break; case 'H': doHelp(expand); break; case 'I': doIntro(); break; case 'J': mPrintf("\bJump back to "); unGotoRoom(); break; case 'K': doKnown(expand, 'r'); break; case 'L': if (!loggedIn) { doLogin(expand); } else { if (!getYesNo(confirm, 0)) break; doLogout(expand, 's'); doLogin(expand); } break; case 'N': case 'O': case 'R': doRead(expand, tolower(c)); break; case 'B': doGoto(expand, TRUE); break; case 'T': doLogout(expand, 'q'); break; case 'U': doUpload(expand); break; case 'X': if (!expand) { doEnter(expand, 'x'); } else { doXpert(); } break; case '=': case '+': doNext(); break; case '\b': mPrintf(" "); case '-': doPrevious(); break; case ']': case '>': doNextHall(); break; case '[': case '<': doPreviousHall(); break; case '~': mPrintf("\bAnsi %s\n ", gl_term.ansiOn ? gl_str.off : gl_str.on); gl_term.ansiOn = !gl_term.ansiOn; break; case '!': mPrintf("\bIBM Graphics %s\n ", gl_term.IBMOn ? gl_str.off:gl_str.on); gl_term.IBMOn = !gl_term.IBMOn; break; case '?': nextmenu("mainopt", &(cfg.cnt.mainopttut), 1); listExterns(); break; case 0: /* never gets here in shell mode... */ if (newCarrier) { greeting(); if (cfg.forcelogin) { doCR(); doCR(); i = 0; while (!loggedIn && gotCarrier()) { doLogin(2); if (++i > 3) { Initport(); toReturn = TRUE; break; } } } newCarrier = FALSE; } if (logBuf.lbflags.NODE && loggedIn) { net_slave(); haveCarrier = FALSE; modStat = FALSE; newCarrier = FALSE; justLostCarrier = FALSE; onConsole = FALSE; disabled = FALSE; callout = FALSE; delay(2000); Initport(); cfg.callno++; terminate(FALSE, FALSE); } if (justLostCarrier || ExitToMsdos) { justLostCarrier = FALSE; if (loggedIn) terminate(FALSE, FALSE); } break; /* irrelevant value */ default: toReturn = TRUE; break; } } /* if they get unverified online */ if (logBuf.VERIFIED) terminate(FALSE, FALSE); /* update25(); */ do_idle(0); return toReturn; }