summaryrefslogtreecommitdiff
path: root/src/login
diff options
context:
space:
mode:
Diffstat (limited to 'src/login')
-rw-r--r--src/login/login.cpp42
1 files changed, 23 insertions, 19 deletions
diff --git a/src/login/login.cpp b/src/login/login.cpp
index 3a76c00..1460264 100644
--- a/src/login/login.cpp
+++ b/src/login/login.cpp
@@ -83,6 +83,10 @@ IP4Mask lan_subnet;
static
FString update_host;
static
+AccountName userid;
+static
+AccountPass passwd;
+static
ServerName main_server;
static
@@ -507,7 +511,7 @@ bool extract(XString line, AuthData *ad)
if (sex.size() != 1)
return false;
ad->sex = sex_from_char(sex.front());
- if (ad->sex == SEX::ERROR)
+ if (ad->sex == SEX::NEUTRAL)
return false;
if (!e_mail_check(ad->email))
@@ -532,7 +536,6 @@ static
int mmo_auth_init(void)
{
int GM_count = 0;
- int server_count = 0;
std::ifstream in(account_filename.c_str());
if (!in.is_open())
@@ -569,15 +572,13 @@ int mmo_auth_init(void)
if (isGM(ad.account_id) > 0)
GM_count++;
- if (ad.sex == SEX::SERVER)
- server_count++;
if (ad.account_id >= account_id_count)
account_id_count = ad.account_id + 1;
}
- FString str = STRPRINTF("%s has %zu accounts (%d GMs, %d servers)\n",
- account_filename, auth_data.size(), GM_count, server_count);
+ FString str = STRPRINTF("%s has %zu accounts (%d GMs)\n",
+ account_filename, auth_data.size(), GM_count);
PRINTF("%s: %s\n", __PRETTY_FUNCTION__, str);
LOGIN_LOG("%s\n", line);
@@ -1368,11 +1369,6 @@ void parse_fromchar(int fd)
{
if (ad.account_id == acc)
{
- if (ad.sex == SEX::SERVER)
- LOGIN_LOG("Char-server '%s': Error of sex change - Server account (suggested account: %d, actual sex %d (Server), ip: %s).\n",
- server[id].name, acc,
- ad.sex, ip);
- else
{
unsigned char buf[16];
SEX sex;
@@ -2955,15 +2951,14 @@ void parse_login(int fd)
ServerName server_name = stringish<ServerName>(RFIFO_STRING<20>(fd, 60).to_print());
LOGIN_LOG("Connection request of the char-server '%s' @ %s:%d (ip: %s)\n",
server_name, RFIFOIP(fd, 54), RFIFOW(fd, 58), ip);
- result = mmo_auth(&account, fd);
-
- if (result == -1 && account.sex == SEX::SERVER)
+ if (account.userid == userid && account.passwd == passwd)
{
// If this is the main server, and we don't already have a main server
if (server_fd[0] <= 0
&& server_name == main_server)
{
account.account_id = 0;
+ goto x2710_okay;
}
else
{
@@ -2973,16 +2968,15 @@ void parse_login(int fd)
if (server_fd[i] <= 0)
{
account.account_id = i;
- break;
+ goto x2710_okay;
}
}
}
}
+ goto x2710_refused;
- if (result == -1 && account.sex == SEX::SERVER
- && account.account_id < MAX_SERVERS
- && server_fd[account.account_id] == -1)
{
+ x2710_okay:
LOGIN_LOG("Connection of the char-server '%s' accepted (account: %s, pass: %s, ip: %s)\n",
server_name, account.userid,
account.passwd, ip);
@@ -3016,9 +3010,10 @@ void parse_login(int fd)
}
WFIFOW(fd, 2) = len;
WFIFOSET(fd, len);
+ goto x2710_done;
}
- else
{
+ x2710_refused:
LOGIN_LOG("Connexion of the char-server '%s' REFUSED (account: %s, pass: %s, ip: %s)\n",
server_name, account.userid,
account.passwd, ip);
@@ -3027,6 +3022,7 @@ void parse_login(int fd)
WFIFOSET(fd, 3);
}
}
+ x2710_done:
RFIFOSKIP(fd, 86);
return;
@@ -3469,6 +3465,14 @@ int login_config_read(ZString cfgName)
{
main_server = stringish<ServerName>(w2);
}
+ else if (w1 == "userid")
+ {
+ userid = stringish<AccountName>(w2);
+ }
+ else if (w1 == "passwd")
+ {
+ passwd = stringish<AccountPass>(w2);
+ }
else
{
FString w1z = w1;