+++ /dev/null
-# ChangeLog for games-server/tetrix
-# Copyright 1999-2010 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/games-server/tetrix/ChangeLog,v 1.9 2010/09/02 14:33:52 tupone Exp $
-
- 02 Sep 2010; Alfredo Tupone <tupone@gentoo.org>
- tetrix-1.13.16.1.40c-r2.ebuild:
- Respecting LDFLAGS. Bug #335627 by flameeyes@gentoo.org
-
- 15 Jun 2009; Michael Sterrett <mr_bones_@gentoo.org>
- +files/tetrix-1.13.16.1.40c-build.patch, tetrix-1.13.16.1.40c-r2.ebuild:
- EAPI=2; quoting; roll-up patch and fix warnings and hostname code
-
- 28 Apr 2007; Torsten Veller <tove@gentoo.org>
- tetrix-1.13.16.1.40c-r2.ebuild:
- Use newinitd
-
- 25 Nov 2006; Guy Martin <gmsoft@gentoo.org>
- tetrix-1.13.16.1.40c-r2.ebuild:
- Stable on hppa.
-
- 17 May 2005; Chris Gianelloni <wolf31o2@gentoo.org>
- files/1.13.16.1.40c-droproot.patch, -tetrix-1.13.16.1.40c-r1.ebuild,
- tetrix-1.13.16.1.40c-r2.ebuild:
- Cleanup for bug #92745.
-
- 11 Apr 2005; Jan Brinkmann <luckyduck@gentoo.org>
- tetrix-1.13.16.1.40c-r2.ebuild:
- added ~amd64 to KEYWORDS, fixes #72742
-
-*tetrix-1.13.16.1.40c-r2 (17 Sep 2002)
-
- 17 Sep 2003; Mike Frysinger <vapier@gentoo.org> :
- Add a custom drop root patch. Hate to see this sucker
- run as root on servers :).
-
-*tetrix-1.13.16.1.40c-r1 (13 Sep 2002)
-
- 13 Sep 2003; Mike Frysinger <vapier@gentoo.org> :
- Version bump + games.eclass support + reworked init script.
-
-*tetrix-1.13.16.1.40c (24 May 2002)
-
- 02 Aug 2003; Chris Gianelloni <wolf31o2@gentoo.org>
- tetrix-1.13.16.1.40c.ebuild:
- Fixed to use mirror://sourceforge
-
- 31 Mar 2003; Philip Walls <malverian@gentoo.org>
- tetrix-1.13.16.1.40c.ebuild, files/tetrix, files/launch_tetrix :
- Initial import.
+++ /dev/null
-diff -ru tetrinetx-1.13.16+qirc-1.40c.orig/bin/game.conf tetrinetx-1.13.16+qirc-1.40c/bin/game.conf
---- tetrinetx-1.13.16+qirc-1.40c.orig/bin/game.conf 1999-09-06 08:14:38.000000000 -0400
-+++ tetrinetx-1.13.16+qirc-1.40c/bin/game.conf 2009-06-15 00:17:22.000000000 -0400
-@@ -8,11 +8,16 @@
- # Any text after a # is ignored, and can be used as comments.
-
- # pidfile [game.pid] - Where should the Process ID be written
--pidfile=game.pid
-+pidfile=/var/run/tetrix.pid
-
- # bindip [0.0.0.0] - What IP should server be bound to (0.0.0.0 means all)
- bindip=0.0.0.0
-
-+# username/group to switch UID/GID to
-+droproot=1
-+dropuser=games
-+dropgroup=games
-+
- # maxchannels [1] - How many channels should be available on server
- maxchannels=8
-
-diff -ru tetrinetx-1.13.16+qirc-1.40c.orig/src/config.h tetrinetx-1.13.16+qirc-1.40c/src/config.h
---- tetrinetx-1.13.16+qirc-1.40c.orig/src/config.h 2001-04-23 22:31:29.000000000 -0400
-+++ tetrinetx-1.13.16+qirc-1.40c/src/config.h 2009-06-15 00:17:22.000000000 -0400
-@@ -7,16 +7,16 @@
- */
-
- /* Location of the various external files */
--#define FILE_MOTD "game.motd" /* Message of the Day File */
--#define FILE_PMOTD "game.pmotd" /* Playback motd */
--#define FILE_CONF "game.conf" /* Game configuration File */
--#define FILE_WINLIST "game.winlist" /* Winlist storage file */
--#define FILE_WINLIST2 "game.winlist2" /* Winlist storage file */
--#define FILE_WINLIST3 "game.winlist3" /* Winlist storage file */
-+#define FILE_MOTD "GENTOO_CONFDIR/game.motd" /* Message of the Day File */
-+#define FILE_PMOTD "GENTOO_CONFDIR/game.pmotd" /* Playback motd */
-+#define FILE_CONF "GENTOO_CONFDIR/game.conf" /* Game configuration File */
-+#define FILE_WINLIST "GENTOO_STATEDIR/game.winlist" /* Winlist storage file */
-+#define FILE_WINLIST2 "GENTOO_STATEDIR/game.winlist2" /* Winlist storage file */
-+#define FILE_WINLIST3 "GENTOO_STATEDIR/game.winlist3" /* Winlist storage file */
-
--#define FILE_BAN "game.ban" /* List of Banned IP's */
--#define FILE_BAN_COMPROMISE "game.ban.compromise" /* List of Banned IP's */
--#define FILE_ALLOW "game.allow" /* List of allow IP's */
--#define FILE_LOG "game.log" /* Logfile */
--#define FILE_PID "game.pid" /* Default PID */
--#define FILE_SECURE "game.secure" /* Security file */
-+#define FILE_BAN "GENTOO_CONFDIR/game.ban" /* List of Banned IP's */
-+#define FILE_BAN_COMPROMISE "GENTOO_CONFDIR/game.ban.compromise" /* List of Banned IP's */
-+#define FILE_ALLOW "GENTOO_CONFDIR/game.allow" /* List of allow IP's */
-+#define FILE_LOG "GENTOO_LOGDIR/tetrix.log" /* Logfile */
-+#define FILE_PID "/var/run/tetrix.pid" /* Default PID */
-+#define FILE_SECURE "GENTOO_CONFDIR/game.secure" /* Security file */
-diff -ru tetrinetx-1.13.16+qirc-1.40c.orig/src/game.c tetrinetx-1.13.16+qirc-1.40c/src/game.c
---- tetrinetx-1.13.16+qirc-1.40c.orig/src/game.c 2001-04-23 22:31:29.000000000 -0400
-+++ tetrinetx-1.13.16+qirc-1.40c/src/game.c 2009-06-15 00:17:22.000000000 -0400
-@@ -2,6 +2,8 @@
- game.c
-
- */
-+#include <pwd.h>
-+#include <grp.h>
-
- /* securitywrite() */
- /* Writes out the security structure into a text format game.secure file */
-@@ -149,6 +151,11 @@
- fprintf(file_out,"# bindip [0.0.0.0] - What IP should server be bound to (0.0.0.0 means all)\n");
- fprintf(file_out,"bindip=%s\n", game.bindip);
- fprintf(file_out,"\n");
-+ fprintf(file_out,"# username/group to switch UID/GID to");
-+ fprintf(file_out,"droproot=%d\n", game.droproot);
-+ fprintf(file_out,"dropuser=%s\n", game.user);
-+ fprintf(file_out,"dropgroup=%s\n", game.group);
-+ fprintf(file_out,"\n");
- fprintf(file_out,"# maxchannels [1] - How many channels should be available on server\n");
- fprintf(file_out,"maxchannels=%d\n", game.maxchannels);
- fprintf(file_out,"\n");
-@@ -466,6 +473,21 @@
- strncpy(game.bindip, id_value, IPLEN-1); game.bindip[IPLEN-1]=0;
- error=0;
- }
-+ if (!strcasecmp(id_tag,"droproot"))
-+ {
-+ game.droproot=atoi(id_value);
-+ error=0;
-+ }
-+ if (!strcasecmp(id_tag,"dropuser"))
-+ {
-+ strncpy(game.user, id_value, USERNAMELEN-1); game.user[USERNAMELEN-1]=0;
-+ error=0;
-+ }
-+ if (!strcasecmp(id_tag,"dropgroup"))
-+ {
-+ strncpy(game.group, id_value, USERNAMELEN-1); game.group[USERNAMELEN-1]=0;
-+ error=0;
-+ }
-
-
- if (!strcasecmp(id_tag,"maxchannels"))
-@@ -854,6 +876,22 @@
- }
- fclose(file_in);
- lvprintf(3,"Read game configuration from %s\n", FILE_CONF);
-+ if (game.droproot) {
-+ struct passwd *vpw;
-+ struct group *vgr;
-+ game.droproot = 0;
-+ vpw = getpwnam(game.user);
-+ if (vpw) {
-+ game.userid = vpw->pw_uid;
-+ vgr = getgrnam(game.group);
-+ if (vgr) {
-+ game.groupid = vgr->gr_gid;
-+ game.droproot = 1;
-+ }
-+ }
-+ if (!game.droproot)
-+ lvprintf(2,"Drop root was requested but the specified user/group were invalid!\n");
-+ }
- return(0);
- }
-
-diff -ru tetrinetx-1.13.16+qirc-1.40c.orig/src/main.c tetrinetx-1.13.16+qirc-1.40c/src/main.c
---- tetrinetx-1.13.16+qirc-1.40c.orig/src/main.c 2002-07-08 23:53:49.000000000 -0400
-+++ tetrinetx-1.13.16+qirc-1.40c/src/main.c 2009-06-15 00:17:22.000000000 -0400
-@@ -4878,10 +4878,13 @@
- long int timeticks, otimeticks;
-
- /* Initialise */
-+ xx = (argc == 2 && !strcmp(argv[1],"-q"));
-+ if (!xx)
- printf("Loading Tetrix. Please wait...\n");
- init_main();
- init_resolver();
- init_game();
-+ if (!xx)
- printf("Initializing security/ban list...\n");
- init_security();
- init_banlist(banlist, MAXBAN);
-@@ -4890,6 +4893,7 @@
- read_banlist(FILE_BAN_COMPROMISE, combanlist, MAXBAN);
- init_allowlist();
- read_allowlist();
-+ if (!xx)
- printf("Initializing winlist...\n");
- init_winlist(winlist, MAXWINLIST);
- init_winlist(winlist2, MAXWINLIST);
-@@ -4898,16 +4902,21 @@
- readwinlist(FILE_WINLIST2, winlist2, MAXWINLIST);
- readwinlist(FILE_WINLIST3, winlist3, MAXWINLIST);
- sleep(1);
-+ if (!xx)
- printf("Initialize network connection...\n");
- init_net();
-+ if (!xx)
- printf("Gameplay ... ");
- usleep(300000);
- init_telnet_port();
-+ if (!xx)
- printf("Spectator ... ");
- usleep(300000);
- init_playback_port();
-+ if (!xx)
- printf("Ircadm ... \n");
- init_query_port();
-+ if (!xx)
- printf("Completed!!!\n");
-
- if (securityread() < 0)
-@@ -4933,6 +4942,14 @@
-
- /* Write out PID */
- writepid();
-+
-+ /* drop root */
-+ if (game.droproot) {
-+ if (setgid(game.groupid))
-+ perror("Could not setgid");
-+ if (setuid(game.userid))
-+ perror("Could not setuid");
-+ }
-
- /* Reset time */
- timeticks = time(NULL);
-diff -ru tetrinetx-1.13.16+qirc-1.40c.orig/src/main.h tetrinetx-1.13.16+qirc-1.40c/src/main.h
---- tetrinetx-1.13.16+qirc-1.40c.orig/src/main.h 2001-04-29 15:00:28.000000000 -0400
-+++ tetrinetx-1.13.16+qirc-1.40c/src/main.h 2009-06-15 00:17:22.000000000 -0400
-@@ -48,6 +48,7 @@
- /* Defines */
- #define TETVERSION "1.13" /* What Tetrinet version we are for */
- #define SERVERBUILD "16+qirc-1.40b" /* What build we are at */
-+#define USERNAMELEN 30 /* Maximum length of username/group for droproot */
- #define NICKLEN 30 /* Maximum length of Nickname */
- #define VERLEN 10 /* Maximum length of Tetrinet version */
- #define UHOSTLEN 121 /* Maximum length of Hostname */
-@@ -235,6 +236,12 @@
-
- int verbose; /* Verbosity */
- char pidfile[PIDFILELEN+1];
-+
-+ int droproot; /* should we drop root when starting ? */
-+ char user[USERNAMELEN+1];
-+ uid_t userid;
-+ char group[USERNAMELEN+1];
-+ gid_t groupid;
- };
-
-
-diff -ru tetrinetx-1.13.16+qirc-1.40c.orig/src/net.c tetrinetx-1.13.16+qirc-1.40c/src/net.c
---- tetrinetx-1.13.16+qirc-1.40c.orig/src/net.c 2001-04-23 22:31:29.000000000 -0400
-+++ tetrinetx-1.13.16+qirc-1.40c/src/net.c 2009-06-15 00:19:16.000000000 -0400
-@@ -57,21 +57,21 @@
- p=getenv("HOSTNAME"); if (p!=NULL) {
- strncpy(s,p, UHOSTLEN);
- s[UHOSTLEN] = 0;
-- if (strchr(s,'.')!=NULL) return;
-+ if (*s) return;
- }
- gethostname(s,80);
-- if (strchr(s,'.')!=NULL) return;
-+ if (*s) return;
- hp=gethostbyname(s);
- if (hp==NULL)
- fatal("Hostname self-lookup failed.",0);
- strncpy(s,hp->h_name, UHOSTLEN);
- s[UHOSTLEN] = 0;
-- if (strchr(s,'.')!=NULL) return;
-+ if (*s) return;
- if (hp->h_aliases[0] == NULL)
- fatal("Can't determine your hostname!",0);
- strncpy(s,hp->h_aliases[0], UHOSTLEN);
- s[UHOSTLEN] = 0;
-- if (strchr(s,'.')==NULL)
-+ if (!*s)
- fatal("Can't determine your hostname!",0);
- }
-