From 342d7b33ce21d8560fb6a6e4d45724133b36cea1 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Wed, 22 Feb 2006 19:50:01 +0000 Subject: [PATCH] (may_play): New, factored out of play_cmd() and kill_cmd(). (play_cmd, kill_cmd): Use it. (player_main): Don't check authfil, caller takes care of that. --- src/lib/player/login.c | 51 +++++++++++++++++++++-------------------- src/lib/player/player.c | 5 ---- 2 files changed, 26 insertions(+), 30 deletions(-) diff --git a/src/lib/player/login.c b/src/lib/player/login.c index e62c3e19..11a8836e 100644 --- a/src/lib/player/login.c +++ b/src/lib/player/login.c @@ -257,6 +257,30 @@ options_cmd(void) return RET_OK; } +static int +may_play(void) +{ + struct natstr *np; + + if (player->cnum == 255 || !player->authenticated) { + pr_id(player, C_CMDERR, "need country and password\n"); + return 0; + } + if (match_user(banfil, player)) { + logerror("Attempted login by BANNED host %s", praddr(player)); + pr_id(player, C_EXIT, "Your login has been banned from this game\n"); + io_shutdown(player->iop, IO_READ); + return 0; + } + np = getnatp(player->cnum); + if (np->nat_stat == STAT_GOD && !match_user(authfil, player)) { + logerror("NON-AUTHed Login attempted by %s", praddr(player)); + pr_id(player, C_EXIT, "You're not a deity!\n"); + return 0; + } + return 1; +} + static int play_cmd(void) { @@ -287,10 +311,8 @@ play_cmd(void) player->cnum = cnum; player->authenticated = 1; } - if (player->cnum == 255 || !player->authenticated) { - pr_id(player, C_CMDERR, "need country and password\n"); + if (!may_play()) return RET_FAIL; - } other = getplayer((natid)player->cnum); if (other) { natp = getnatp(player->cnum); @@ -301,12 +323,6 @@ play_cmd(void) } return RET_FAIL; } - if (match_user(banfil, player)) { - logerror("Attempted login by BANNED host %s", praddr(player)); - pr("Your login has been banned from this game\n"); - io_shutdown(player->iop, IO_READ); - return RET_FAIL; - } logerror("%s logged in as country #%d", praddr(player), player->cnum); pr_id(player, C_INIT, "%d\n", CLIENTPROTO); player_main(player); @@ -319,24 +335,9 @@ static int kill_cmd(void) { struct player *other; - struct natstr *np; - if (player->cnum == 255 || !player->authenticated) { - pr_id(player, C_CMDERR, "need country and password\n"); + if (!may_play()) return RET_FAIL; - } - if (match_user(banfil, player)) { - logerror("Attempted login by BANNED host %s", praddr(player)); - pr_id(player, C_EXIT, "Your login has been banned from this game\n"); - io_shutdown(player->iop, IO_READ); - return RET_FAIL; - } - np = getnatp(player->cnum); - if (np->nat_stat == STAT_GOD && !match_user(authfil, player)) { - logerror("NON-AUTHed Login attempted by %s", praddr(player)); - pr_id(player, C_EXIT, "You're not a deity!\n"); - return RET_FAIL; - } other = getplayer(player->cnum); if (!other) { pr_id(player, C_EXIT, "country not in use\n"); diff --git a/src/lib/player/player.c b/src/lib/player/player.c index a0621efb..435e276b 100644 --- a/src/lib/player/player.c +++ b/src/lib/player/player.c @@ -79,11 +79,6 @@ player_main(struct player *p) if (init_nats() < 0) return; natp = getnatp(player->cnum); - if (player->god && !match_user(authfil, player)) { - logerror("NON-AUTHed Login attempted by %s", praddr(player)); - pr("You're not a deity!\n"); - return; - } if (!gamehours(player->curup)) { pr("Empire hours restriction in force\n"); if (natp->nat_stat != STAT_GOD)