*** empty log message ***
git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@621 e016b1c5-ed68-44aa-a2f7-31cac88cffde
This commit is contained in:
+10
-2
@@ -70,15 +70,17 @@ COMMANDN(team, newteam, ARG_1STR);
|
||||
COMMANDN(name, newname, ARG_1STR);
|
||||
COMMANDN(skin, newskin, ARG_1INT);
|
||||
|
||||
string clientpassword = "";
|
||||
|
||||
void connects(char *servername, char *password)
|
||||
{
|
||||
disconnect(1); // reset state
|
||||
|
||||
s_strcpy(clientpassword, password ? password : "");
|
||||
|
||||
ENetAddress address;
|
||||
address.port = CUBE_SERVER_PORT;
|
||||
|
||||
addmsg(SV_PWD, "rs", !password ? " " : password);
|
||||
|
||||
if(servername)
|
||||
{
|
||||
addserver(servername);
|
||||
@@ -270,6 +272,12 @@ void c2sinfo(dynent *d) // send update to the server
|
||||
packet = enet_packet_create (NULL, MAXTRANS, 0);
|
||||
ucharbuf p(packet->data, packet->dataLength);
|
||||
|
||||
if(clientpassword[0])
|
||||
{
|
||||
putint(p, SV_PWD);
|
||||
sendstring(clientpassword, p);
|
||||
clientpassword[0] = 0;
|
||||
};
|
||||
if(gun_changed)
|
||||
{
|
||||
packet->flags = ENET_PACKET_FLAG_RELIABLE;
|
||||
|
||||
+19
-9
@@ -560,12 +560,30 @@ void process(ENetPacket *packet, int sender, int chan) // sender may be -1
|
||||
client *cl = sender>=0 ? clients[sender] : NULL;
|
||||
int cn = sender, type;
|
||||
|
||||
|
||||
if(!clients[cn]->isauthed)
|
||||
{
|
||||
if(!serverpassword[0]) clients[sender]->isauthed = true;
|
||||
else if(chan==0) return;
|
||||
else if(chan!=1 || getint(p)!=SV_PWD) disconnect_client(sender, DISC_WRONGPW);
|
||||
else
|
||||
{
|
||||
getstring(text, p);
|
||||
if(!strcmp(text, serverpassword)) clients[sender]->isauthed = true;
|
||||
else disconnect_client(sender, DISC_WRONGPW);
|
||||
};
|
||||
};
|
||||
|
||||
if(packet->flags&ENET_PACKET_FLAG_RELIABLE) reliablemessages = true;
|
||||
|
||||
#define QUEUE_MSG { while(curmsg<p.length()) cl->messages.add(p.buf[curmsg++]); }
|
||||
int curmsg;
|
||||
while((curmsg = p.length()) < p.maxlen) switch(type = getint(p))
|
||||
{
|
||||
case SV_PWD:
|
||||
getstring(text, p);
|
||||
break;
|
||||
|
||||
case SV_CDIS:
|
||||
{
|
||||
int n = getint(p);
|
||||
@@ -648,7 +666,6 @@ void process(ENetPacket *packet, int sender, int chan) // sender may be -1
|
||||
{
|
||||
cn = getint(p);
|
||||
CN_CHECK;
|
||||
if(serverpassword[0] && !clients[cn]->isauthed) return;
|
||||
loopi(3) clients[cn]->pos[i] = getuint(p);
|
||||
getuint(p);
|
||||
loopi(6) getint(p);
|
||||
@@ -761,13 +778,6 @@ void process(ENetPacket *packet, int sender, int chan) // sender may be -1
|
||||
break;
|
||||
};
|
||||
|
||||
case SV_PWD:
|
||||
SENDER_CHECK;
|
||||
getstring(text, p);
|
||||
if(!strcmp(text, serverpassword) || !serverpassword[0]) clients[sender]->isauthed = true;
|
||||
else disconnect_client(sender, DISC_WRONGPW);
|
||||
break;
|
||||
|
||||
case SV_FRAGS:
|
||||
CN_CHECK;
|
||||
cl->score.frags = getint(p);
|
||||
@@ -1035,7 +1045,7 @@ void localconnect()
|
||||
|
||||
void initserver(bool dedicated, int uprate, char *sdesc, char *ip, char *master, char *passwd, int maxcl, char *maprot, char *masterpwd) // EDIT: AH
|
||||
{
|
||||
if(passwd) strcpy_s(serverpassword, passwd);
|
||||
if(passwd) s_strcpy(serverpassword, passwd);
|
||||
maxclients = maxcl ? min(maxcl, MAXCLIENTS) : DEFAULTCLIENTS;
|
||||
servermsinit(master ? master : "masterserver.cubers.net/cgi-bin/actioncube.pl/", sdesc, dedicated);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user