示例#1
0
int mydeluser_timeout(void* owner, void* data)
{
    usr_info_t* p = reinterpret_cast<usr_info_t*>(data);
    ERROR_LOG("DELUSER TIMEOUT [%d %d]", p->uid, p->waitcmd);
    if(p->waitcmd) {
        send_warning(p, 1, p->waitcmd);
        send_to_self_error(p, SYSTEM_ERR);
    }
    return 0;
}
示例#2
0
int main()
{
			send_info("aaa","aaa","ok\t");
        	printf("The status in this function of this module is OK!\n");
			send_warning("aaa","aaa","warning\t");
	        printf("This function of this module sending its warning\n");
			send_error("aaa","aaa","error\t");	
	        printf("This function of this module sending its error\n");
	

	return 0;
}
示例#3
0
void handle_db_return(svr_proto_t* dbpkg, uint32_t pkglen)
{
    if (!dbpkg->seq) {
        return;
    }
    uint32_t counter = dbpkg->seq & 0xFFFF;
    uint32_t connfd  = dbpkg->seq >> 16;
    usr_info_t* p = get_usr_by_fd(connfd);
    if(!p->waitcmd || (p->uid && p->uid != dbpkg->id)) {
        ERROR_LOG("connection closed: fd=%u",connfd);
        return;
    }
    if(counter != p->counter) {
        ERROR_LOG("counter error [%d %d %d %d]", p->uid, p->waitcmd, counter, p->counter);
        return;
    }
    if(dbpkg->ret == 1001 || dbpkg->ret == 1002 || dbpkg->ret == 1003) {
#ifndef TW_VER
        send_warning(p, 1, dbpkg->cmd);
#endif
    }

    DEBUG_LOG("DB RETURN\t[uid=%u %u fd=%d cmd=0x%X ret=%u]",
                p->uid, dbpkg->id, connfd, dbpkg->cmd, dbpkg->ret);
    REMOVE_TIMERS(&p->tmr);
    int err = -1;
    uint32_t bodylen = dbpkg->len - sizeof(svr_proto_t); 
    switch(dbpkg->cmd) {
        case DB_GET_UID_BY_EMAIL:
            err = get_uid_by_mail_callback(p, dbpkg->body, bodylen, dbpkg->ret);
            break;
        case DB_CHECK_UID_PWD:
        case DB_CHECK_UID_PWD_EX:
            err = check_pwd_callback(p, dbpkg->body, bodylen, dbpkg->ret);
            break;
        default:
            ERROR_LOG("err db cmd [%d %d]", dbpkg->cmd, dbpkg->id);
    }
    if(err) {
        clear_usr_info(p);
        close_client_conn(connfd);
    }
}
示例#4
0
	void send_warning(network::connection sock, const std::string &msg, const char* warning_code = "") const
	{
		send_warning(sock, msg.c_str(), warning_code);
	}
示例#5
0
/*
 ****************************************************************
 *	Reinicializa o computador após um certo tempo		*
 ****************************************************************
 */
int
main (int argc, const char *argv[])
{
	int		opt;
	const char	*str;
	int		i, pid, used_time = STD_TIME, intervals;
	FILE		*utmp_fp;
	UTSNAME		uts;
	char		reboot = 0;

	/*
	 *	Verifica se foi invocado como "reboot"
	 */
	if ((str = strrchr (argv[0], '/')) != NOSTR)
		str++;
	else
		str = argv[0];

	if (streq (str, reboot_nm))
		reboot++;

	/*
	 *	Analisa as opções
	 */
	while ((opt = getopt (argc, argv, "t:pvH")) != EOF)
	{
		switch (opt)
		{
		    case 't':			/* Tempo */
			if ((used_time = strtol (optarg, &str, 0)) < 0 || *str != '\0')
			{
				fprintf
				( 	stderr,
					"%s: Tempo \"%s\" inválido\n",
					pgname, optarg
				);
				exit (1);
			}
			break;

		    case 'p':			/* Imediatamente */
			pflag++;
			break;

		    case 'v':			/* Verbose */
			vflag++;
			break;

		    case 'H':			/* Help */
			help ();

		    default:			/* Erro */
			putc ('\n', stderr);
			help ();

		}	/* end switch */

	}	/* end while */

	argv += optind;
	argc -= optind;

	if (argc != 0)
		help ();

	/*
	 *	Verifica o Usuário Efetivo
	 */
	if (geteuid () != 0)
	{
		fprintf
		(	stderr,
			"%s: Este comando pode ser executado apenas pelo SUPERUSUÁRIO\n",
			pgname
		);
		exit (1);
	}

	/*
	 *	Em caso de pânico, ...
	 */
	if (pflag)
	{
		if (boot () < 0)
		{
			fprintf
			(	stderr,
				"%s: Não consegui executar a chamada ao sistema \"boot\" (%s)\n",
				pgname, strerror (errno)
			);
		}
		exit (1);
	}

	/*
	 *	Obtém a identificação do sistema
	 */
	if (uname (&uts) < 0)
	{
		fprintf
		(	stderr,
			"%s: Não consegui obter a identificação do sistema (%s)\n",
			pgname, strerror (errno)
		);
		exit (1);
	}

	/*
	 *	Entra em "background"
	 */
	if ((pid = fork ()) < 0)
	{
		fprintf
		(	stderr,
			"%s: Não consegui criar um novo processo (%s)\n",
			pgname, strerror (errno)
		);
		exit (1);
	}

	if (pid != 0)
		exit (0);

	signal (SIGHUP, SIG_IGN);

	/*
	 *	Se for "reboot", muda tudo um pouquinho
	 */
	TIME_INTERVAL =	2; used_time = 1;

	/*
	 *	Calcula o número de intervalos
	 */
	intervals = (used_time + TIME_INTERVAL - 1) / TIME_INTERVAL;

	/*
	 *	Envia as mensagens
	 */
	if ((utmp_fp = fopen (utmp_nm, "r")) != NOFILE)
	{
		for (EVER)
		{
			send_warning (utmp_fp, (const char *)uts.uts_nodename, intervals * TIME_INTERVAL);

			if (intervals-- <= 0)
				break;

			sleep (TIME_INTERVAL);
		}

		fclose (utmp_fp);
	}

	/*
	 *	Atualiza os blocos dos discos
	 */
	for (i = 2; i > 0; i--)
	{
		if (sync () < 0)
		{
			fprintf
			(	stderr,
				"%s: Não consegui executar a chamada ao sistema \"sync\" (%s)\n",
				pgname, strerror (errno)
			);
			exit (1);
		}
	}

	/*
	 *	Epílogo FATAL ...
	 */
#undef	DEBUG
#ifdef	DEBUG
	fprintf (stderr, "PUM ...\n");
#else
	sleep (1);

	if (boot () < 0)
	{
		fprintf
		(	stderr,
			"%s: Não consegui executar a chamada ao sistema \"boot\" (%s)\n",
			pgname, strerror (errno)
		);
	}
#endif	DEBUG

	return (1);

}	/* end shutdown */