Пример #1
0
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;
}
Пример #2
0
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;
}
Пример #3
0
void Admin::createConnections()
{
    QObject::connect(this->changeP,SIGNAL(clicked()),this,SLOT(toFormStack()));
    QObject::connect(this->logout,SIGNAL(clicked()),this,SLOT(doLogout()));
}
Пример #4
0
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;
}