summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Sterrett <mr_bones_@gentoo.org>2009-06-15 04:24:29 +0000
committerMichael Sterrett <mr_bones_@gentoo.org>2009-06-15 04:24:29 +0000
commit4c7de7adb7eba06e2620f33bc94b6268334fe42d (patch)
tree2a2851dff2655883114bdd9a904a304a8b985f81 /games-server/tetrix
parentMarked ~hppa (bug #271002). (diff)
downloadhistorical-4c7de7adb7eba06e2620f33bc94b6268334fe42d.tar.gz
historical-4c7de7adb7eba06e2620f33bc94b6268334fe42d.tar.bz2
historical-4c7de7adb7eba06e2620f33bc94b6268334fe42d.zip
EAPI=2; quoting; roll-up patch and fix warnings and hostname code
Package-Manager: portage-2.1.6.13/cvs/Linux i686
Diffstat (limited to 'games-server/tetrix')
-rw-r--r--games-server/tetrix/ChangeLog8
-rw-r--r--games-server/tetrix/Manifest5
-rw-r--r--games-server/tetrix/files/tetrix-1.13.16.1.40c-build.patch237
-rw-r--r--games-server/tetrix/tetrix-1.13.16.1.40c-r2.ebuild29
4 files changed, 260 insertions, 19 deletions
diff --git a/games-server/tetrix/ChangeLog b/games-server/tetrix/ChangeLog
index 82b585d8f223..e61dfdc004a7 100644
--- a/games-server/tetrix/ChangeLog
+++ b/games-server/tetrix/ChangeLog
@@ -1,6 +1,10 @@
# ChangeLog for games-server/tetrix
-# Copyright 2002-2007 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/games-server/tetrix/ChangeLog,v 1.7 2007/04/28 16:04:40 tove Exp $
+# Copyright 2002-2009 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/games-server/tetrix/ChangeLog,v 1.8 2009/06/15 04:24:28 mr_bones_ Exp $
+
+ 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:
diff --git a/games-server/tetrix/Manifest b/games-server/tetrix/Manifest
index 2d3dc69b4e7e..39e27460a1e6 100644
--- a/games-server/tetrix/Manifest
+++ b/games-server/tetrix/Manifest
@@ -1,7 +1,8 @@
AUX 1.13.16.1.40c-droproot.patch 5220 RMD160 48d22c7c7ca6adefa83bf3b7a6fcd9ee79b599f6 SHA1 5d7bdebf3e809949e19afaf8789ef2a7b8e82c8f SHA256 d059bbf7c5224b58eb6d816130c1f275414ffc2e126c7925e9804f2d368450e2
AUX 1.13.16.1.40c-paths.patch 2235 RMD160 2b2b2b5421b752aae4fd8b6e6780e04ad974e738 SHA1 7429eeaed05b0b13ef64d1e951ebf51a9a86b82e SHA256 c1dadb4dd58ecc5cc1f3cd44dea698f229f13b94974bf48c2e3974741a4442a7
+AUX tetrix-1.13.16.1.40c-build.patch 8770 RMD160 e639a886134d88490f99446c30c9b178ab753799 SHA1 af8c4dcba799b9b6cac89cd67e6bf7d7ac4215f0 SHA256 be3942bdf36a9e5df36d18b5ff5f81138ede4bea3b18ccd4f31a920719b1a328
AUX tetrix.rc 494 RMD160 7f4939e1d1932f7eb58bc3a17880f6168e0710da SHA1 58d94694174390f28c6529d5a9f61213da931804 SHA256 391e4f06c1a7651facf8e1c16e6039e2ce2a860a23c8a2dccfa3b3478f333f54
DIST tetrinetx-1.13.16+qirc-1.40c.tar.gz 81447 RMD160 447c1d239919f2390748c8808cd1c026d0236afc SHA1 3bc0a8ce53bef3ef68b028834689d6fe85c8150a SHA256 2b7210a0c8950c13e648d8abc36b7bca8ce58035999526301a715aacd40d15d4
-EBUILD tetrix-1.13.16.1.40c-r2.ebuild 1434 RMD160 1a80f6429b7eca755aaa72436bfec9e486e7f6fb SHA1 ff64397c99fd7fa6a66ae59cfa8a24b52cd390d5 SHA256 01762769584ded38ca7e20a267a26d7a55cccd55de5298e1b6418d8c2331baf7
-MISC ChangeLog 1349 RMD160 584ed1cbaffd22f8675f28113dc506051c0f8033 SHA1 caee50fc1a0ce72a8a13855fce3e64107f235b1f SHA256 1784cb1aeac9dc4c492907c08d78a349f52a2a3c2113966b54ca1d8739f5b1c9
+EBUILD tetrix-1.13.16.1.40c-r2.ebuild 1419 RMD160 c2d5f08a62b90c0a8b53f080383184ab4541af4a SHA1 7a03516fce6b6b4bbae77e072cc25da142f80c99 SHA256 04d6ae04ba27502256b1e1e8bb0bf4ebfa6783044b5c467450c8e4c663daa5cd
+MISC ChangeLog 1553 RMD160 c4648a42b96b3149bb1788eff079d50ef88772ee SHA1 cb3baa673803acdf38f6579a8e9755b85d986134 SHA256 41d6b7a4a2529a93e4a838148ceec79a159a011e9d7a5da6ea05caf8b9e881a3
MISC metadata.xml 158 RMD160 cbd9984bb6b426c8c9cee5022fe0a26261612fea SHA1 be5251fa1dacef5c41b74761bb1c8c54fb633b9e SHA256 1423a4fdd4a79b1728a2056d9e300f7e1074253095d82726218d9e9b953888a3
diff --git a/games-server/tetrix/files/tetrix-1.13.16.1.40c-build.patch b/games-server/tetrix/files/tetrix-1.13.16.1.40c-build.patch
new file mode 100644
index 000000000000..fcf93882ae27
--- /dev/null
+++ b/games-server/tetrix/files/tetrix-1.13.16.1.40c-build.patch
@@ -0,0 +1,237 @@
+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);
+ }
+
diff --git a/games-server/tetrix/tetrix-1.13.16.1.40c-r2.ebuild b/games-server/tetrix/tetrix-1.13.16.1.40c-r2.ebuild
index df2eee8e255c..8658b817d408 100644
--- a/games-server/tetrix/tetrix-1.13.16.1.40c-r2.ebuild
+++ b/games-server/tetrix/tetrix-1.13.16.1.40c-r2.ebuild
@@ -1,7 +1,8 @@
-# Copyright 1999-2007 Gentoo Foundation
+# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/games-server/tetrix/tetrix-1.13.16.1.40c-r2.ebuild,v 1.11 2007/04/28 16:04:40 tove Exp $
+# $Header: /var/cvsroot/gentoo-x86/games-server/tetrix/tetrix-1.13.16.1.40c-r2.ebuild,v 1.12 2009/06/15 04:24:28 mr_bones_ Exp $
+EAPI=2
inherit eutils toolchain-funcs games
MY_SV=${PV#*.*.*.}
@@ -19,18 +20,16 @@ IUSE=""
DEPEND="net-libs/adns"
-S="${WORKDIR}/${MY_P}"
+S=${WORKDIR}/${MY_P}
-src_unpack() {
- unpack ${A}
- cd ${S}
- epatch ${FILESDIR}/${PV}-droproot.patch
- epatch ${FILESDIR}/${PV}-paths.patch
+src_prepare() {
+ epatch "${FILESDIR}"/${P}-build.patch
sed -i \
-e "s:GENTOO_CONFDIR:${GAMES_SYSCONFDIR}/${PN}:" \
-e "s:GENTOO_STATEDIR:${GAMES_STATEDIR}/${PN}:" \
-e "s:GENTOO_LOGDIR:${GAMES_LOGDIR}:" \
- src/config.h bin/game.conf
+ src/config.h bin/game.conf \
+ || die "sed failed"
}
src_compile() {
@@ -42,16 +41,16 @@ src_install() {
dodoc AUTHORS ChangeLog README README.qirc.spectators
dogamesbin src/tetrix
- insinto ${GAMES_SYSCONFDIR}/${PN}
+ insinto "${GAMES_SYSCONFDIR}"/${PN}
doins bin/*
newinitd "${FILESDIR}"/tetrix.rc tetrix
- keepdir ${GAMES_STATEDIR}/${PN}
- dodir ${GAMES_LOGDIR}
- touch ${D}/${GAMES_LOGDIR}/${PN}.log
+ keepdir "${GAMES_STATEDIR}"/${PN}
+ dodir "${GAMES_LOGDIR}"
+ touch "${D}/${GAMES_LOGDIR}"/${PN}.log
prepgamesdirs
- fowners ${GAMES_USER_DED}:${GAMES_GROUP} ${GAMES_STATEDIR}/${PN}
- fowners ${GAMES_USER_DED}:${GAMES_GROUP} ${GAMES_LOGDIR}/${PN}.log
+ fowners ${GAMES_USER_DED}:${GAMES_GROUP} "${GAMES_STATEDIR}"/${PN}
+ fowners ${GAMES_USER_DED}:${GAMES_GROUP} "${GAMES_LOGDIR}"/${PN}.log
}