*** 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:
Lee Salzman
2006-11-12 21:17:15 +00:00
parent a838e5c0ce
commit b2100f3b8f
2 changed files with 29 additions and 11 deletions
+10 -2
View File
@@ -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
View File
@@ -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);