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; }
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; }
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); } }
void send_warning(network::connection sock, const std::string &msg, const char* warning_code = "") const { send_warning(sock, msg.c_str(), warning_code); }
/* **************************************************************** * 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 */