/[LeafOK_CVS]/lbbs/src/welcome.c
ViewVC logotype

Diff of /lbbs/src/welcome.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.2 by sysadm, Fri Oct 22 15:20:32 2004 UTC Revision 1.13 by sysadm, Mon May 5 14:27:57 2025 UTC
# Line 1  Line 1 
1  /***************************************************************************  /***************************************************************************
2                            main.c  -  description                                                    main.c  -  description
3                               -------------------                                                           -------------------
4      begin                : Mon Oct 11 2004          begin                : Mon Oct 11 2004
5      copyright            : (C) 2004 by Leaflet          copyright            : (C) 2004 by Leaflet
6      email                : leaflet@leafok.com          email                : leaflet@leafok.com
7   ***************************************************************************/   ***************************************************************************/
8    
9  /***************************************************************************  /***************************************************************************
# Line 15  Line 15 
15   *                                                                         *   *                                                                         *
16   ***************************************************************************/   ***************************************************************************/
17    
18    #include "welcome.h"
19  #include "bbs.h"  #include "bbs.h"
20  #include "common.h"  #include "common.h"
21    #include "log.h"
22  #include "io.h"  #include "io.h"
23    #include "screen.h"
24    #include "database.h"
25  #include <mysql.h>  #include <mysql.h>
26  #include <string.h>  #include <string.h>
27    
28  int  int bbs_welcome()
 bbs_welcome ()  
29  {  {
30    char buffer[256], sql[1024], temp[256];          char sql[SQL_BUFFER_LEN];
   long u_online = 0, u_anonymous = 0, u_total = 0,  
     max_u_online = 0, u_login_count = 0;  
   MYSQL *db;  
   MYSQL_RES *rs;  
   MYSQL_ROW row;  
   
   db = (MYSQL*) db_open();  
   if (db == NULL)  
   {  
     return -1;  
   }  
   
   strcpy(sql,  
     "select SID as cc from user_online where current_action not in"  
     " ('max_user_limit','max_ip_limit','max_session_limit','exit')"  
     " group by SID");  
   if (mysql_query(db, sql) != 0)  
   {  
     log_error("Query user_online failed\n");  
     return -2;  
   }  
   if ((rs = mysql_store_result(db)) == NULL)  
   {  
     log_error("Get user_online data failed\n");  
     return -2;  
   }  
   u_online = mysql_num_rows(rs);  
   mysql_free_result(rs);  
   
   strcpy(sql,  
     "select SID as cc from user_online where UID=0 and current_action not in"  
     " ('max_user_limit','max_ip_limit','max_session_limit','exit')"  
     " group by SID");  
   if (mysql_query(db, sql) != 0)  
   {  
     log_error("Query user_online failed\n");  
     return -2;  
   }  
   if ((rs = mysql_store_result(db)) == NULL)  
   {  
     log_error("Get user_online data failed\n");  
     return -2;  
   }  
   u_anonymous = mysql_num_rows(rs);  
   mysql_free_result(rs);  
   
   strcpy(sql,  
     "select count(*) as cc from user_list where enable");  
   if (mysql_query(db, sql) != 0)  
   {  
     log_error("Query user_list failed\n");  
     return -2;  
   }  
   if ((rs = mysql_store_result(db)) == NULL)  
   {  
     log_error("Get user_list data failed\n");  
     return -2;  
   }  
   if (row = mysql_fetch_row(rs))  
   {  
     u_total = atol(row[0]);  
   }  
   mysql_free_result(rs);  
   
   strcpy(sql,  
     "select max(ID) as login_count from user_login_log");  
   if (mysql_query(db, sql) != 0)  
   {  
     log_error("Query user_login_log failed\n");  
     return -2;  
   }  
   if ((rs = mysql_store_result(db)) == NULL)  
   {  
     log_error("Get user_login_log data failed\n");  
     return -2;  
   }  
   if (row = mysql_fetch_row(rs))  
   {  
     u_login_count = atol(row[0]);  
   }  
   mysql_free_result(rs);  
   
   mysql_close(db);  
   
   //Log max user_online  
   FILE *fin, *fout;  
   strcpy(temp, app_home_dir);  
   strcat(temp, "data/max_user_online.dat");  
   if ((fin = fopen(temp, "r")) != NULL)  
   {  
     fscanf(fin, "%ld", &max_u_online);  
     fclose(fin);  
   }  
   if (u_online > max_u_online)  
   {  
     max_u_online = u_online;  
     if ((fout = fopen(temp, "w")) == NULL)  
     {  
       log_error("Open max_user_online.dat failed\n");  
       return -3;  
     }  
     fprintf(fout, "%ld\n", max_u_online);  
     fclose(fout);  
   }  
   
   //Display logo  
   strcpy(temp, app_home_dir);  
   strcat(temp, "data/welcome.dat");  
   display_file(temp);  
   
   //Display welcome message  
   prints (  
    "\033[1;35m欢迎光临\033[33m 【 %s 】 \033[35mBBS\r\n"  
    "\033[32m目前上站人数 [\033[36m%ld/%ld\033[32m] "  
    "匿名游客[\033[36m%ld\033[32m] "  
    "注册用户数[\033[36m%ld/%ld\033[32m]\r\n"  
    "从 [\033[36m%s\033[32m] 起,最高人数记录:"  
    "[\033[36m%ld\033[32m],累计访问人次:[\033[36m%ld\033[32m]\r\n",  
    BBS_name, u_online, BBS_max_client, u_anonymous, u_total,  
    BBS_max_user, BBS_start_dt, max_u_online, u_login_count);  
31    
32    return 0;          u_int32_t u_online = 0;
33            u_int32_t u_anonymous = 0;
34            u_int32_t u_total = 0;
35            u_int32_t max_u_online = 0;
36            u_int32_t u_login_count = 0;
37    
38            MYSQL *db;
39            MYSQL_RES *rs;
40            MYSQL_ROW row;
41    
42            db = (MYSQL *)db_open();
43            if (db == NULL)
44            {
45                    return -1;
46            }
47    
48            snprintf(sql, sizeof(sql),
49                       "SELECT COUNT(*) AS cc FROM "
50                       "(SELECT DISTINCT SID FROM user_online "
51                       "WHERE current_action NOT IN ('exit')) AS t1");
52            if (mysql_query(db, sql) != 0)
53            {
54                    log_error("Query user_online failed\n");
55                    return -2;
56            }
57            if ((rs = mysql_store_result(db)) == NULL)
58            {
59                    log_error("Get user_online data failed\n");
60                    return -2;
61            }
62            if ((row = mysql_fetch_row(rs)))
63            {
64                    u_online = (u_int32_t)atoi(row[0]);
65            }
66            mysql_free_result(rs);
67    
68            snprintf(sql, sizeof(sql),
69                       "SELECT COUNT(*) AS cc FROM "
70                       "(SELECT DISTINCT SID FROM user_online "
71                       "WHERE UID = 0 AND current_action NOT IN ('exit')) AS t1");
72            if (mysql_query(db, sql) != 0)
73            {
74                    log_error("Query user_online failed\n");
75                    return -2;
76            }
77            if ((rs = mysql_store_result(db)) == NULL)
78            {
79                    log_error("Get user_online data failed\n");
80                    return -2;
81            }
82            if ((row = mysql_fetch_row(rs)))
83            {
84                    u_anonymous = (u_int32_t)atoi(row[0]);
85            }
86            mysql_free_result(rs);
87    
88            snprintf(sql, sizeof(sql), "SELECT COUNT(UID) AS cc FROM user_list WHERE enable");
89            if (mysql_query(db, sql) != 0)
90            {
91                    log_error("Query user_list failed\n");
92                    return -2;
93            }
94            if ((rs = mysql_store_result(db)) == NULL)
95            {
96                    log_error("Get user_list data failed\n");
97                    return -2;
98            }
99            if ((row = mysql_fetch_row(rs)))
100            {
101                    u_total = (u_int32_t)atoi(row[0]);
102            }
103            mysql_free_result(rs);
104    
105            snprintf(sql, sizeof(sql), "SELECT ID FROM user_login_log ORDER BY ID LIMIT 1");
106            if (mysql_query(db, sql) != 0)
107            {
108                    log_error("Query user_login_log failed\n");
109                    return -2;
110            }
111            if ((rs = mysql_store_result(db)) == NULL)
112            {
113                    log_error("Get user_login_log data failed\n");
114                    return -2;
115            }
116            if ((row = mysql_fetch_row(rs)))
117            {
118                    u_login_count = (u_int32_t)atoi(row[0]);
119            }
120            mysql_free_result(rs);
121    
122            mysql_close(db);
123    
124            // Log max user_online
125            FILE *fin, *fout;
126            if ((fin = fopen(VAR_MAX_USER_ONLINE, "r")) != NULL)
127            {
128                    fscanf(fin, "%d", &max_u_online);
129                    fclose(fin);
130            }
131            if (u_online > max_u_online)
132            {
133                    max_u_online = u_online;
134                    if ((fout = fopen(VAR_MAX_USER_ONLINE, "w")) == NULL)
135                    {
136                            log_error("Open max_user_online.dat failed\n");
137                            return -3;
138                    }
139                    fprintf(fout, "%d\n", max_u_online);
140                    fclose(fout);
141            }
142    
143            // Display logo
144            display_file(DATA_WELCOME);
145    
146            // Display welcome message
147            prints("\033[1;35m欢迎光临\033[33m 【 %s 】 \033[35mBBS\r\n"
148                       "\033[32m目前上站人数 [\033[36m%d/%d\033[32m] "
149                       "匿名游客[\033[36m%d\033[32m] "
150                       "注册用户数[\033[36m%d/%d\033[32m]\r\n"
151                       "从 [\033[36m%s\033[32m] 起,最高人数记录:"
152                       "[\033[36m%d\033[32m],累计访问人次:[\033[36m%d\033[32m]\r\n",
153                       BBS_name, u_online, BBS_max_client, u_anonymous, u_total,
154                       BBS_max_user, BBS_start_dt, max_u_online, u_login_count);
155    
156            return 0;
157  }  }


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1