summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pttbbs/daemon/logind/logind.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/pttbbs/daemon/logind/logind.c b/pttbbs/daemon/logind/logind.c
index c5882cf5..99d207de 100644
--- a/pttbbs/daemon/logind/logind.c
+++ b/pttbbs/daemon/logind/logind.c
@@ -705,9 +705,10 @@ _set_bind_opt(int sock)
#define FN_WELCOME BBSHOME "/etc/Welcome"
#define FN_GOODBYE BBSHOME "/etc/goodbye"
+#define FN_BANIP BBSHOME "/etc/banip.scr"
#define FN_BAN BBSHOME "/" BAN_FILE
-static char *welcome_screen, *goodbye_screen, *ban_screen;
+static char *welcome_screen, *goodbye_screen, *ban_screen, *banip_screen;
static void
load_text_screen_file(const char *filename, char **pptr)
@@ -786,6 +787,7 @@ reload_data()
g_welcome_mtime = dasht(FN_WELCOME);
load_text_screen_file(FN_WELCOME, &welcome_screen);
load_text_screen_file(FN_GOODBYE, &goodbye_screen);
+ load_text_screen_file(FN_BANIP, &banip_screen);
load_text_screen_file(FN_BAN, &ban_screen);
}
@@ -1788,15 +1790,20 @@ listen_cb(int lfd, short event, void *arg)
event_set(&conn->ev, fd, EV_READ|EV_PERSIST, client_cb, conn);
event_add(&conn->ev, &idle_tv);
- // check ban here? XXX can we directly use xsin.sin_addr instead of ASCII form?
- if (g_banned || check_banip(conn->ctx.hostip) )
- {
- // draw ban screen, if available. (for banip, this is empty).
+ if (g_banned) {
draw_text_screen (conn, ban_screen);
login_conn_remove(conn, fd, BAN_SLEEP_SEC);
return;
}
+ // TODO can we directly use xsin.sin_addr instead of ASCII form?
+ if (check_banip(conn->ctx.hostip))
+ {
+ draw_text_screen (conn, banip_screen);
+ login_conn_remove(conn, fd, BAN_SLEEP_SEC);
+ return;
+ }
+
// XXX check system load here.
if (g_overload)
{