Commit graph

73 commits

Author SHA1 Message Date
Bill Currie
ccba39666b #include audit 2000-12-30 02:16:36 +00:00
Bill Currie
73980fe852 make qf-server REALY sleep when there are no clients currently connected 2000-12-29 05:32:24 +00:00
Bill Currie
80db620524 What's GameSpy? 2000-12-28 07:18:11 +00:00
Bill Currie
c3f6aa669a sv_main.c:
check sv_minqfversion->string[0] instead of value
sv_user.c:
	white space
2000-12-14 07:46:17 +00:00
Dabb
c3a0ab3aa1 Packet logging support for debugging and educational purposes. 2000-12-11 15:30:52 +00:00
Jeff Teunissen
54e2a4d9d3 Okay, the big whitespace reformat. There is some silliness (case
statements, variable declarations), but all in all it's not bad.
2000-12-08 06:51:37 +00:00
Bill Currie
29970187d7 sprintf audit. 2000-12-05 16:51:01 +00:00
Bill Currie
eae11661e4 strncat parameter audit. Unfortunatly, strncat is counter-intutite: the n in
strncat is not the maximum length of the destination string, but of the SOURCE
string, thus strncat (dest, src, sizeof (dest)) is incorrect. It should be
strncat (dest, src, sizeof (text) - strlen (dest)). Even then, no terminating
nul will be written if src is too long, but at least it won't crash the stack:)
2000-12-05 16:04:12 +00:00
Zephaniah E. Hull
66e0e31b57 strcat -> strncat
sprintf -> snprintf

AKA, really big buffer overflow security fixes.

More to come, geez we have holes everywhere.
2000-12-05 11:08:30 +00:00
Bill Currie
c67a1b37e5 fix handling of +set on the command line so the global config file can be
overridden (so long as it doesn't use setrom:)
2000-11-30 19:53:25 +00:00
Bill Currie
42b3a83bd9 move host_parms from quakefs.c to somewhere a little more sensibe. 2000-11-29 23:26:45 +00:00
Dabb
008f880ea4 Well, let's be really strict and put SV_Init(void) here.. 2000-11-27 15:29:25 +00:00
Forest Hale
9ce5fc95df quakeparms_t audit.
changed all parms references to directly access host_parms to improve readability, and removed unused basedir references. (all remaining fields in quakeparms_t deserve to be there)
2000-11-27 13:17:48 +00:00
Jeff Teunissen
d82b6a2e88 sv_main.c: Set the client's last_check field to -1 on connect. Unless a
player connects immediately after a timekick sample, their time WILL be
off, so don't look at them the first sample.

sv_user.c: Another location to enforce sv_maxrate, make sv_timekick and
friends ignore a user's time if it's -1, and apply double fuzz to times
lower than we expect -- it's way too sensitive otherwise. Also, some
whitespace changes.
2000-11-26 12:43:49 +00:00
Jeff Teunissen
8465917ed1 Stole a proper version comparison function from dpkg. Version strings
(for sv_minqfversion) are no longer compared as floats, so a server admin
can require client versions with a lot more granularity. (e.g. 0.2.99beta5
is greater than 0.2.99beta4, but lower than 0.3.0)
2000-11-26 09:48:01 +00:00
Jeff Teunissen
6f40c97643 New Cvars:
sv_minqfversion: Set to the minimum allowable QuakeForge version you want
to allow on a server. QF clients prior to current CVS _will_not_work_ with
this cvar, as the QF version was not reported previously.

sv_maxrate: Change maximum rate algorithm; if sv_maxrate is nonzero, it is
the maximum rate allowed by the server. If it is unset, the maximum is
10000 like it used to be. The rate is silently capped, so it won't kick.

Cvar fixed: sv_timekick and friends; Now kicks on too little time passed
as well.

Functionality removed: "Last message repeated X times". It causes too much
trouble.
2000-11-25 14:20:04 +00:00
Bill Currie
24477b651a white space cleanup 2000-11-14 16:16:07 +00:00
Jeff Teunissen
ba11d00aba compat.h: Add str*equal () convenience macros
cl_main.c: Clean up version string a little
cmd.c: Add setrom parsing to first init phase, clean up includes a little
cvar.c: setrom command now uses set's semantics. Cvar_Set, Cvar_Set_f,
Cvar_Setrom_f now do a Con_DPrintf to report attempts to set CVAR_ROM
cvars.
sv_main.c: Clean up version string a little
vid.c: -winsize, -width, and -height no longer use Cvar_SetROM. The code
looks a little uglier, but it's more correct.
2000-11-04 07:42:43 +00:00
Bill Currie
5c2257399d oops :/ 2000-10-31 05:29:32 +00:00
Bill Currie
3a9eba4f03 ok, server now runs without segging on a cvar (with simple testing, anyway.
needs fuller bashing).
2000-10-31 05:24:34 +00:00
Bill Currie
56ac383268 server now starts without segging and fix a compile error in tga.c 2000-10-30 00:05:21 +00:00
Bill Currie
4057988e1f tree now builds again. Note: this includes some of my sky work, but so long as
gl_sky_clip is not set, it's not working won't affect you :)
2000-10-29 22:02:29 +00:00
Zephaniah E. Hull
13bd5ce012 The init sequence cleanup!
Also broke up client.h into a lot of smaller headers.
Oh, software rendering works again.

And yes, this does hit a hell of a lot of files.
2000-10-29 15:35:24 +00:00
Bill Currie
d295f183ba remove va from commdef.h and fix the consequences 2000-10-21 07:34:56 +00:00
Bill Currie
f0c35d7f9d o rcon now prints (hidden) instead of the rcon password
* taniwha  drops a 900lb security manual on zoid's head
	 <taniwha> nah, make that kg :)
 o  fix a potential buffer overflow
2000-10-20 18:03:26 +00:00
Bill Currie
2682888425 the big cvar value -> int_val audit. seems to work ok 2000-10-17 03:17:42 +00:00
Bill Currie
fc6ff9374d A solution to the problem of when to set the extended info keys. This allows
for nice large amounts of client info to be sent to a QuakeForge server.

sv_main.c:
	Append " QF" to the challenge reply. This DOES NOT break older clients
	because atoi stops parsing at the first non-number character but
	returns the value of what it successfully parsed. If a client does
	choke on this, its libc is broken and not to spec.

cl_main.c:
	Check for "QF" in the challenge string and if it's there, set the
	QF extended info keys before connecting. Also, make sure the extended
	info keys are NOT set prior to starting the connect process. This is
	done is the CL_Disconnect function.
2000-10-04 16:22:51 +00:00
Bill Currie
86f87122c0 zlib support (gzipped pack contents). if you have a probelm with gzgets, you
have 3 choices: remove /usr/X11R6/lib/libz.a, --diable-zlib, or fix configure.
I do intend on fixing it myself.
2000-09-27 19:44:26 +00:00
Zephaniah E. Hull
210ba16069 First off in gl_draw.c we have some nice cleanup code for the upload
code.

Then we have the completely purge of treating 'unsigned' as a type, it
is NOT a type, it is a TYPE MODIFIER!

Under gcc for x86 it happens to try and do something sane, just treat it
as a unsigned int, but that is EVIL, it is a MODIFIER and if ANYONE adds
code which uses unsigned as a type in itself I /WILL/ harm them!!!
2000-09-22 09:08:08 +00:00
Dabb
5385056a9e Detect runt client packets quicker. 2000-08-14 13:41:05 +00:00
Dabb
66e08b1e0f Some fixes to DoS code. 2000-08-14 13:02:17 +00:00
Zephaniah E. Hull
23d81824dc Old draw cleanups, frogot I had them around..
Clean up of Dabb's mess, he dies.
2000-08-14 04:53:45 +00:00
Dabb
9a2ec3c094 %d -> %f in netdosvalues/netdosexpire 2000-08-13 14:59:09 +00:00
Dabb
dc0337a885 Removed testing stuff. 2000-08-13 14:40:27 +00:00
Dabb
3c881d8ab0 Renamed dosvalues,dosexpire->netdosvalues,netdosexpire. 2000-08-13 14:37:26 +00:00
Dabb
bafb8f7239 Basic DoS flood attack protections.
Commands added: netdosexpire, netdosvalues
(oops, forgot from last ;)
2000-08-13 14:34:49 +00:00
Dabb
afc467b84f Basic DoS flood attack protections. Use sv_netdosprotect 1 to turn them on.
(quite experimental, these might break something...)
Cvars added: sv_allow_log, sv_allow_status, sv_allow_ping, sv_netdosprotect
Commands added: netdosexpire, netdosvalues
2000-08-13 14:26:20 +00:00
Jeff Teunissen
c251476789 whitespace. 2000-08-02 22:53:59 +00:00
Jeff Teunissen
acf2de7612 Enabled time stamped messages for server. To turn it on, set
sv_timestamps.

To configure how timestamps are formatted, use the sv_timefmt Cvar. It's a
formatted string, with the following special tokens (taken from the
strftime() manual page):

       %a     The abbreviated weekday name according to the  cur­
              rent locale.

       %A     The  full  weekday  name  according  to the current
              locale.

       %b     The abbreviated month name according to the current
              locale.

       %B     The  full  month  name  according  to  the  current
              locale.

       %c     The preferred date and time representation for  the
              current locale.

       %C     The century number (year/100) as a 2-digit integer.
              (SU)

       %C     The century number (the year divided by   100   and
              truncated  to  an integer).

       %d     The  day of the month as a decimal number (range 01
              to 31).

       %D     Equivalent to  %m/%d/%y.  (Yecch  -  for  Americans
              only.   Americans  should  note that in other coun­
              tries %d/%m/%y is rather common. This means that in
              international  context this format is ambiguous and
              should not be used.) (SU)

       %e     Like %d, the day of the month as a decimal  number,
              but a leading zero is replaced by a space. (SU)

       %E     Modifier: use alternative format, see below. (SU)

       %G     The ISO 8601 year with century as a decimal number.
              The 4-digit year corresponding to the ISO week num­
              ber  (see  %V).  This has the same format and value
              as %y, except that if the ISO week  number  belongs
              to  the  previous  or  next year, that year is used
              instead. (TZ)

       %g     Like %G, but without century, i.e., with a  2-digit
              year (00-99). (TZ)

       %h     Equivalent to %b. (SU)

       %H     The  hour as a decimal number using a 24-hour clock
              (range 00 to 23).

       %I     The hour as a decimal number using a 12-hour  clock
              (range 01 to 12).

       %j     The  day of the year as a decimal number (range 001
              to 366).

       %k     The hour (24-hour clock) as a decimal number (range
              0  to  23);  single digits are preceded by a blank.
              (See also %H.) (TZ)

       %l     The hour (12-hour clock) as a decimal number (range
              1  to  12);  single digits are preceded by a blank.
              (See also %I.) (TZ)

       %m     The month as a decimal number (range 01 to 12).

       %M     The minute as a decimal number (range 00 to 59).

       %n     A newline character. (SU)

       %O     Modifier: use alternative format, see below. (SU)

       %p     Either `AM' or `PM' according  to  the  given  time
              value, or the corresponding strings for the current
              locale.  Noon is treated as `pm'  and  midnight  as
              `am'.

       %P     Like  %p but in lowercase: `am' or `pm' or a corre­
              sponding string for the current locale. (GNU)

       %r     The time in a.m. or p.m. notation.   In  the  POSIX
              locale this is equivalent to `%I:%M:%S %p'. (SU)

       %R     The  time  in  24-hour notation (%H:%M). (SU) For a
              version including the seconds, see %T below.

       %s     The number of seconds since the Epoch, i.e.,  since
              1970-01-01 00:00:00 UTC. (TZ)

       %S     The second as a decimal number (range 00 to 61).

       %t     A tab character. (SU)

       %T     The time in 24-hour notation (%H:%M:%S). (SU)

       %u     The  day  of  the  week as a decimal, range 1 to 7,
              Monday being 1.  See also %w. (SU)

       %U     The week number of the current year  as  a  decimal
              number,  range  00  to  53, starting with the first
              Sunday as the first day of week 01. See also %V and
              %W.

       %V     The  ISO  8601:1988 week number of the current year
              as a decimal number, range 01 to 53, where  week  1
              is  the  first week that has at least 4 days in the
              current year, and with Monday as the first  day  of
              the week. See also %U and %W. (SU)

       %w     The  day  of  the  week as a decimal, range 0 to 6,
              Sunday being 0.  See also %u.

       %W     The week number of the current year  as  a  decimal
              number,  range  00  to  53, starting with the first
              Monday as the first day of week 01.

       %x     The preferred date representation for  the  current
              locale without the time.

       %X     The  preferred  time representation for the current
              locale without the date.

       %y     The year as a  decimal  number  without  a  century
              (range 00 to 99).

       %Y     The year as a decimal number including the century.

       %z     The time-zone as hour offset from GMT.  Required to
              emit  RFC822-conformant  dates (using "%a, %d %b %Y
              %H:%M:%S %z"). (GNU)

       %Z     The time zone or name or abbreviation.

       %+     The date and time in date(1) format. (TZ)

       %%     A literal `%' character.

Some of these may not work on some systems.
2000-08-02 07:13:12 +00:00
Jeff Teunissen
1cf0aff856 zone.c: Remove unnecessary code -- zone isn't used anymore, so it
shouldn't be allocated on the hunk.
sv_main.c: Change default timekick fuzz to 1.5 percent from 1
percent. Should cut down on people getting kicked for lag.
2000-07-09 12:43:46 +00:00
James Brown
089a0a35d0 Patched for QSG Standard 2 (Extend Protocol).
Unfinished, renderer effects are only half implimented at this point.
2000-06-25 13:00:19 +00:00
Bill Currie
acb5f4b21a revert Endy's HL changes. Sorry endy but what would you rather have: HL
support in quakeforge, or knghtbrd using your guts for violin strings? :)
2000-06-16 09:41:42 +00:00
James Brown
1501c63997 Um. Fixed the server so it won't bomb loading Half-Life maps. 2000-06-10 03:43:18 +00:00
Anton E. Gavrilov
3644a3056e host_frametime --> sv_frametime for server;
CVAR_FIXME cleanup.
2000-06-09 19:22:30 +00:00
Anton E. Gavrilov
538e021faf Remove the stupid CVAR_NONE & CVAR_USERINFO's;
CVAR_FIXME cleanup.
2000-06-09 18:58:19 +00:00
Loring Holden
5b094c2aa1 Reapply changes - this time tested w/ svga under Linux 2000-05-26 03:55:27 +00:00
Bill Currie
0bd4043ca4 revert lsh's checkins. They broke newtree for everybody but him. 2000-05-25 09:48:21 +00:00
Loring Holden
8005c0d25e I got this tree to build under Solaris, AIX, IRIX, & Linux.
In order to do so I:
* included strings.h and string.h in many files so various functions would be
defined
* Fixed model_t collision problem in cl_main.c (Solaris)
* com.c - corrected WORDS_BIGENDIAN spelling
* gl_draw.c - Use HAVE_GL_COLOR_INDEX8_EXT to avoid referencing
GL_COLOR_INDEX8_EXT when it isn't available
* net_udp.c - use socklen_t to appease AIX
2000-05-25 06:14:56 +00:00
Bill Currie
e98edd5f5f revert back to using f* for file io. I hope this fixes the catapult, but I wouldn't be suprised if it doesn't. 2000-05-23 22:43:36 +00:00
Joseph Carter
cb04fd6496 fix the +gamedir problem and fix my QFile removal 2000-05-22 21:32:14 +00:00