| 14 |
* * |
* * |
| 15 |
***************************************************************************/ |
***************************************************************************/ |
| 16 |
|
|
|
#define _POSIX_C_SOURCE 200112L |
|
|
|
|
|
#include "login.h" |
|
| 17 |
#include "bbs.h" |
#include "bbs.h" |
|
#include "user_priv.h" |
|
| 18 |
#include "common.h" |
#include "common.h" |
| 19 |
#include "log.h" |
#include "database.h" |
| 20 |
#include "io.h" |
#include "io.h" |
| 21 |
|
#include "log.h" |
| 22 |
|
#include "login.h" |
| 23 |
#include "screen.h" |
#include "screen.h" |
| 24 |
#include "database.h" |
#include "user_priv.h" |
|
#include <errno.h> |
|
| 25 |
#include <ctype.h> |
#include <ctype.h> |
| 26 |
|
#include <errno.h> |
| 27 |
|
#include <stdlib.h> |
| 28 |
#include <string.h> |
#include <string.h> |
| 29 |
#include <regex.h> |
#include <regex.h> |
|
#include <stdlib.h> |
|
| 30 |
#include <unistd.h> |
#include <unistd.h> |
| 31 |
#include <mysql/mysql.h> |
#include <mysql/mysql.h> |
| 32 |
|
|
| 348 |
goto cleanup; |
goto cleanup; |
| 349 |
} |
} |
| 350 |
|
|
| 351 |
BBS_last_access_tm = BBS_login_tm = time(0); |
BBS_last_access_tm = BBS_login_tm = time(NULL); |
| 352 |
|
|
| 353 |
// Set user tz to process env |
// Set user tz to process env |
| 354 |
if (BBS_user_tz[0] != '\0') |
if (BBS_user_tz[0] != '\0') |
| 420 |
rs = NULL; |
rs = NULL; |
| 421 |
|
|
| 422 |
if (life != 333 && life != 365 && life != 666 && life != 999 && // Not immortal |
if (life != 333 && life != 365 && life != 666 && life != 999 && // Not immortal |
| 423 |
time(0) - last_login_dt > 60 * 60 * 24 * life) |
time(NULL) - last_login_dt > 60 * 60 * 24 * life) |
| 424 |
{ |
{ |
| 425 |
ret = -3; // Dead |
ret = -3; // Dead |
| 426 |
goto cleanup; |
goto cleanup; |
| 470 |
goto cleanup; |
goto cleanup; |
| 471 |
} |
} |
| 472 |
|
|
| 473 |
BBS_last_access_tm = BBS_login_tm = time(0); |
BBS_last_access_tm = BBS_login_tm = time(NULL); |
| 474 |
|
|
| 475 |
cleanup: |
cleanup: |
| 476 |
mysql_close(db); |
mysql_close(db); |
| 515 |
|
|
| 516 |
return 0; |
return 0; |
| 517 |
} |
} |
| 518 |
|
|
| 519 |
|
int user_online_update(const char *action) |
| 520 |
|
{ |
| 521 |
|
MYSQL *db = NULL; |
| 522 |
|
char sql[SQL_BUFFER_LEN]; |
| 523 |
|
|
| 524 |
|
if (strcmp(BBS_current_action, action) == 0) // No change |
| 525 |
|
{ |
| 526 |
|
return 0; |
| 527 |
|
} |
| 528 |
|
|
| 529 |
|
strncpy(BBS_current_action, action, sizeof(BBS_current_action) - 1); |
| 530 |
|
BBS_current_action[sizeof(BBS_current_action) - 1] = '\0'; |
| 531 |
|
|
| 532 |
|
db = db_open(); |
| 533 |
|
if (db == NULL) |
| 534 |
|
{ |
| 535 |
|
log_error("db_open() error: %s\n", mysql_error(db)); |
| 536 |
|
return -1; |
| 537 |
|
} |
| 538 |
|
|
| 539 |
|
snprintf(sql, sizeof(sql), |
| 540 |
|
"UPDATE user_online SET current_action = '%s', last_tm=NOW() " |
| 541 |
|
"WHERE SID = 'Telnet_Process_%d'", |
| 542 |
|
BBS_current_action, getpid()); |
| 543 |
|
if (mysql_query(db, sql) != 0) |
| 544 |
|
{ |
| 545 |
|
log_error("Update user_online error: %s\n", mysql_error(db)); |
| 546 |
|
return -2; |
| 547 |
|
} |
| 548 |
|
|
| 549 |
|
mysql_close(db); |
| 550 |
|
|
| 551 |
|
return 1; |
| 552 |
|
} |