ソースを参照

chore(install): rebuild hosted server archives with normalised ownership, permissions and names (#5146)

Point install_server_files.sh at rebuilt copies of 18 archives on
linuxgsm.download. Game content and versions are unchanged; the
rebuilds only remove files.

- Owner and group 0/0, numeric. Several archives were owned by uid 1000.
- Directories 0755, files 0644, ELF executables and shebang scripts 0755.
  Twelve archives were 0777 throughout and the MoHAA archive had 0700
  directories and a non-executable mohaa_lnxded.
- Windows and macOS only files removed (exe, dll, bat, url, lnk, reg,
  sys, dylib, Thumbs.db), plus uninstaller leftovers and stray logs.
- Client-only content removed: Quake 2 renderers, UT3 Direct3D shader
  caches, the MoHAA Windows client utilities, the iortcw pb directory,
  the UT2004 Windows GUI and macOS ucc.
- Sorted entries, no ./ prefix, xz -9e.
- Named <shortname>-<gameversion>-linux-<arch>-linuxgsm-YYYYMMDD.tar.xz.
  This also fixes the cod local_filename, which named 1.5 instead of 1.5b.

Repack the libncurses5 i386 library archive used by fix_bf1942 and
fix_bfv with the libraries at 0644, as Ubuntu ships them. The library
files are byte for byte the same.

The original archives stay hosted, so older releases keep working.
Daniel Gibbs 3 日 前
親
コミット
2eb63e4846
3 ファイル変更、58 行追加、58 行削除
  1. 2 2
      lgsm/modules/fix_bf1942.sh
  2. 2 2
      lgsm/modules/fix_bfv.sh
  3. 54 54
      lgsm/modules/install_server_files.sh

+ 2 - 2
lgsm/modules/fix_bf1942.sh

@@ -14,8 +14,8 @@ if ldd "${executabledir}/bf1942_lnxded.static" 2>&1 | grep -qE "lib(ncurses|tinf
 	# shellcheck disable=SC2034 # Used by fn_fix_msg_start_nl and fn_fix_msg_end.
 	fixname="libncurses5 i386"
 	fn_fix_msg_start_nl
-	fn_fetch_file "https://linuxgsm.download/libraries/libncurses5-i386-6.3-2ubuntu0.3.tar.xz" "" "" "" "${tmpdir}" "libncurses5-i386-6.3-2ubuntu0.3.tar.xz" "nochmodx" "norun" "noforce" "ee141cb3a843e4201786b6f188347666"
-	fn_dl_extract "${tmpdir}" "libncurses5-i386-6.3-2ubuntu0.3.tar.xz" "${serverfiles}"
+	fn_fetch_file "https://linuxgsm.download/libraries/libncurses5-i386-6.3-2ubuntu0.3-linuxgsm-20261102.tar.xz" "" "" "" "${tmpdir}" "libncurses5-i386-6.3-2ubuntu0.3-linuxgsm-20261102.tar.xz" "nochmodx" "norun" "noforce" "dd1cc98dd60420ea14345deb6a6beb8a"
+	fn_dl_extract "${tmpdir}" "libncurses5-i386-6.3-2ubuntu0.3-linuxgsm-20261102.tar.xz" "${serverfiles}"
 	fn_clear_tmp
 	fn_fix_msg_end
 fi

+ 2 - 2
lgsm/modules/fix_bfv.sh

@@ -14,8 +14,8 @@ if ldd "${executabledir}/bfv_linded.static" 2>&1 | grep -qE "lib(ncurses|tinfo)\
 	# shellcheck disable=SC2034 # Used by fn_fix_msg_start_nl and fn_fix_msg_end.
 	fixname="libncurses5 i386"
 	fn_fix_msg_start_nl
-	fn_fetch_file "https://linuxgsm.download/libraries/libncurses5-i386-6.3-2ubuntu0.3.tar.xz" "" "" "" "${tmpdir}" "libncurses5-i386-6.3-2ubuntu0.3.tar.xz" "nochmodx" "norun" "noforce" "ee141cb3a843e4201786b6f188347666"
-	fn_dl_extract "${tmpdir}" "libncurses5-i386-6.3-2ubuntu0.3.tar.xz" "${serverfiles}"
+	fn_fetch_file "https://linuxgsm.download/libraries/libncurses5-i386-6.3-2ubuntu0.3-linuxgsm-20261102.tar.xz" "" "" "" "${tmpdir}" "libncurses5-i386-6.3-2ubuntu0.3-linuxgsm-20261102.tar.xz" "nochmodx" "norun" "noforce" "dd1cc98dd60420ea14345deb6a6beb8a"
+	fn_dl_extract "${tmpdir}" "libncurses5-i386-6.3-2ubuntu0.3-linuxgsm-20261102.tar.xz" "${serverfiles}"
 	fn_clear_tmp
 	fn_fix_msg_end
 fi

+ 54 - 54
lgsm/modules/install_server_files.sh

@@ -9,13 +9,13 @@ moduleselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 fn_install_server_files() {
 	if [ "${shortname}" == "ahl" ]; then
-		remote_fileurl="https://linuxgsm.download/ActionHalfLife/action_halflife-1.0.tar.xz"
+		remote_fileurl="https://linuxgsm.download/ActionHalfLife/ahl-1.0-linux-i386-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="action_halflife-1.0.tar.xz"
+		local_filename="ahl-1.0-linux-i386-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="61d7b79fd714888b6d65944fdaafa94a"
+		md5="4b502ed86fafd44b9b9dda99ee4cb44f"
 	elif [ "${shortname}" == "bf1942" ]; then
 		remote_fileurl="https://linuxgsm.download/BattleField1942/bf1942_lnxded-1.61-hacked-to-1.612.full-linuxgsm.tar.xz"
 		local_filedir="${tmpdir}"
@@ -34,21 +34,21 @@ fn_install_server_files() {
 		md5="9a8117732b8abd99cc59f1f0fa92adfa"
 
 	elif [ "${shortname}" == "cod" ]; then
-		remote_fileurl="https://linuxgsm.download/CallOfDuty/cod-lnxded-1.5b-full.tar.xz"
+		remote_fileurl="https://linuxgsm.download/CallOfDuty/cod-1.5b-linux-i386-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="cod-lnxded-1.5-large.tar.xz"
+		local_filename="cod-1.5b-linux-i386-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="ee0ad1ccbfa1fd27fde01a4a431a5c2f"
+		md5="a588df9db95f64ce5b5065fd94995bc1"
 	elif [ "${shortname}" == "coduo" ]; then
-		remote_fileurl="https://linuxgsm.download/CallOfDutyUnitedOffensive/coduo-lnxded-1.51b-full.tar.xz"
+		remote_fileurl="https://linuxgsm.download/CallOfDutyUnitedOffensive/coduo-1.51b-linux-i386-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="coduo-lnxded-1.51b-full.tar.xz"
+		local_filename="coduo-1.51b-linux-i386-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="35cabccd67adcda44aaebc59405915b9"
+		md5="deb2f9a66c9f3c7a23099c31c98242d0"
 	elif [ "${shortname}" == "cod2" ]; then
 		remote_fileurl="https://linuxgsm.download/CallOfDuty2/cod2-lnxded-1.3-full.tar.xz"
 		local_filedir="${tmpdir}"
@@ -58,13 +58,13 @@ fn_install_server_files() {
 		force="noforce"
 		md5="b8c4c611f01627dd43348e78478a3d41"
 	elif [ "${shortname}" == "cod4" ]; then
-		remote_fileurl="https://linuxgsm.download/CallOfDuty4/cod4x18_lnxded.tar.xz"
+		remote_fileurl="https://linuxgsm.download/CallOfDuty4/cod4x-21.2-linux-i386-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="cod4x18_lnxded.tar.xz"
+		local_filename="cod4x-21.2-linux-i386-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="d255b59b9756d7dbead67718208512ee"
+		md5="7c8d55d12e44f321f31ad1320567659a"
 	elif [ "${shortname}" == "codwaw" ]; then
 		remote_fileurl="https://linuxgsm.download/CallOfDutyWorldAtWar/codwaw-lnxded-1.7-full.tar.xz"
 		local_filedir="${tmpdir}"
@@ -74,45 +74,45 @@ fn_install_server_files() {
 		force="noforce"
 		md5="2c6be1bb66ea631b9b2e7ae6216c6680"
 	elif [ "${shortname}" == "cswon" ]; then
-		remote_fileurl="https://linuxgsm.download/CounterStrikeWON2/hlds_l-3111e-cs15-won2-linuxgsm.tar.xz"
+		remote_fileurl="https://linuxgsm.download/CounterStrikeWON2/cswon-3111e-cs15-linux-i386-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="hlds_l-3111e-cs15-won2-linuxgsm.tar.xz"
+		local_filename="cswon-3111e-cs15-linux-i386-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="8109a66e2e906ff2c309e3a6b412132a"
+		md5="0be5f9f766e48b8bbd480dfa4a9d9aa0"
 	elif [ "${shortname}" == "hlwon" ]; then
-		remote_fileurl="https://linuxgsm.download/HalfLifeWON2/hlds_l-3111e-won2-linuxgsm.tar.xz"
+		remote_fileurl="https://linuxgsm.download/HalfLifeWON2/hlwon-3111e-linux-i386-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="hlds_l-3111e-won2-linuxgsm.tar.xz"
+		local_filename="hlwon-3111e-linux-i386-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="83164405c744a5e424814e67eacf27fb"
+		md5="e64fda09d31f3acc977fb621b5ffd4fd"
 	elif [ "${shortname}" == "mohaa" ]; then
-		remote_fileurl="https://linuxgsm.download/MedalofHonorAlliedAssault/moh_revival_v1.12_RC3.5.1.tar.xz"
+		remote_fileurl="https://linuxgsm.download/MedalofHonorAlliedAssault/mohaa-1.12-rc3.5.1-linux-i386-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="moh_revival_v1.12_RC3.5.1.tar.xz"
+		local_filename="mohaa-1.12-rc3.5.1-linux-i386-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="7c664538999252eeaf2b6d9949416480"
+		md5="bf66cbe1f4aefb221e17924e7bf9bdb4"
 	elif [ "${shortname}" == "ns" ]; then
-		remote_fileurl="https://linuxgsm.download/NaturalSelection/ns_dedicated_server_v32.tar.xz"
+		remote_fileurl="https://linuxgsm.download/NaturalSelection/ns-3.2-linux-i386-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="ns_dedicated_server_v32.tar.xz"
+		local_filename="ns-3.2-linux-i386-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="23ec3cadd93d8bb1c475bad5b9cce370"
+		md5="a44d9769f9a035b98a4d57a7d7e1f81b"
 	elif [ "${shortname}" == "q2" ]; then
-		remote_fileurl="https://linuxgsm.download/Quake2/quake2-3.20-glibc-i386-full-linux2.0.tar.xz"
+		remote_fileurl="https://linuxgsm.download/Quake2/q2-3.20-linux-i386-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="quake2-3.20-glibc-i386-full-linux2.0.tar.xz"
+		local_filename="q2-3.20-linux-i386-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="2908164a32d4808bb720f2161f6b0c82"
+		md5="f0abe39ed649765cd99b7e5e1c62b4f6"
 	elif [ "${shortname}" == "q3" ]; then
 		remote_fileurl="https://linuxgsm.download/Quake3/quake3-1.32c-x86-full-linux.tar.xz"
 		local_filedir="${tmpdir}"
@@ -138,21 +138,21 @@ fn_install_server_files() {
 		force="noforce"
 		md5="82055b7d973206c13a606db8ba288d03"
 	elif [ "${shortname}" == "rtcw" ]; then
-		remote_fileurl="https://linuxgsm.download/ReturnToCastleWolfenstein/iortcw-1.51c-x86_64-server-linux-20190507.tar.xz"
+		remote_fileurl="https://linuxgsm.download/ReturnToCastleWolfenstein/rtcw-iortcw-1.51c-linux-amd64-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="iortcw-1.51c-x86_64-server-linux-20190507.tar.xz"
+		local_filename="rtcw-iortcw-1.51c-linux-amd64-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="df6ff664d37dd0d22787848bdb3cac5f"
+		md5="6bb410ac0faf9048c2ca8f918b068ed0"
 	elif [ "${shortname}" == "sfc" ]; then
-		remote_fileurl="https://linuxgsm.download/SourceFortsClassic/SFClassic-1.0-RC7-fix.tar.xz"
+		remote_fileurl="https://linuxgsm.download/SourceFortsClassic/sfc-1.0-rc7-fix-linux-i386-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="SFClassic-1.0-RC7-fix.tar.xz"
+		local_filename="sfc-1.0-rc7-fix-linux-i386-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="70077137185700e28fe6bbb6021d12bc"
+		md5="a0e3980e944cd321c5f064d752a7431e"
 	elif [ "${shortname}" == "sof2" ]; then
 		remote_fileurl="https://linuxgsm.download/SoldierOfFortune2/sof2gold-1.03.tar.xz"
 		local_filedir="${tmpdir}"
@@ -162,53 +162,53 @@ fn_install_server_files() {
 		force="noforce"
 		md5="201e23bab04207d00ce813d001c483d9"
 	elif [ "${shortname}" == "ts" ]; then
-		remote_fileurl="https://linuxgsm.download/TheSpecialists/ts-3-linux-final.tar.xz"
+		remote_fileurl="https://linuxgsm.download/TheSpecialists/ts-3.0-linux-i386-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="ts-3-linux-final.tar.xz"
+		local_filename="ts-3.0-linux-i386-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="3c66ecff6e3644f7ac88015732a0fb93"
+		md5="4ff0fdc126ec09c07d6a6f915cb9145f"
 	elif [ "${shortname}" == "ut2k4" ]; then
-		remote_fileurl="https://linuxgsm.download/UnrealTournament2004/ut2004-server-3369-3-ultimate-linux.tar.xz"
+		remote_fileurl="https://linuxgsm.download/UnrealTournament2004/ut2k4-3369.3-linux-i386-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="ut2004-server-3369-3-ultimate-linux.tar.xz"
+		local_filename="ut2k4-3369.3-linux-i386-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="9fceaab68554749f4b45be66613b9a15"
+		md5="f0ce6b3d3c7831e1a45e2a436a6aaa3b"
 	elif [ "${shortname}" == "ut99" ]; then
-		remote_fileurl="https://linuxgsm.download/UnrealTournament99/ut99-server-469b-ultimate-linux.tar.xz"
+		remote_fileurl="https://linuxgsm.download/UnrealTournament99/ut99-469b-linux-i386-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="ut99-server-469b-ultimate-linux.tar.xz"
+		local_filename="ut99-469b-linux-i386-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="dba3f1122a5e60ee45ece7422fcf78f5"
+		md5="ccb9b0907f2f926204c911c3041df743"
 	elif [ "${shortname}" == "ut" ]; then
-		remote_fileurl="https://linuxgsm.download/UnrealTournament/UnrealTournament-Server-XAN-3525360-Linux.tar.xz"
+		remote_fileurl="https://linuxgsm.download/UnrealTournament/ut-xan-3525360-linux-amd64-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="UnrealTournament-Server-XAN-3525360-Linux.tar.xz"
+		local_filename="ut-xan-3525360-linux-amd64-linuxgsm-20261102.tar.xz"
 		chmodx="noexecute"
 		run="norun"
 		force="noforce"
-		md5="41dd92015713a78211eaccf503b72393"
+		md5="ffcb25dd03d82489e0cb3d6b9779e818"
 	elif [ "${shortname}" == "ut3" ]; then
-		remote_fileurl="https://linuxgsm.download/UnrealTournament3/UT3-linux-server-2.1-openspy.tar.xz"
+		remote_fileurl="https://linuxgsm.download/UnrealTournament3/ut3-2.1-openspy-linux-i386-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="UT3-linux-server-2.1-openspy.tar.xz"
+		local_filename="ut3-2.1-openspy-linux-i386-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="f60b745613a8676666eb6a2450cbdc8e"
+		md5="a1ca829bd56d9a1abd17bf129e2bcb77"
 	elif [ "${shortname}" == "vs" ]; then
-		remote_fileurl="https://linuxgsm.download/VampireSlayer/vs_l-6.0_full.tar.xz"
+		remote_fileurl="https://linuxgsm.download/VampireSlayer/vs-6.0-linux-i386-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="vs_l-6.0_full.tar.xz"
+		local_filename="vs-6.0-linux-i386-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="b322f79e0abd31847493c52acf802667"
+		md5="c1f908ab27772d8c6ca8ee731d32ddda"
 	elif [ "${shortname}" == "wet" ]; then
 		remote_fileurl="https://linuxgsm.download/WolfensteinEnemyTerritory/enemy-territory.260b.tar.xz"
 		local_filedir="${tmpdir}"
@@ -226,13 +226,13 @@ fn_install_server_files() {
 		force="noforce"
 		md5="93705e165550c97484678236749198a4"
 	elif [ "${shortname}" == "zmr" ]; then
-		remote_fileurl="https://linuxgsm.download/ZombieMasterReborn/zombie_master_reborn_b6_1.tar.xz"
+		remote_fileurl="https://linuxgsm.download/ZombieMasterReborn/zmr-b6.1-linux-i386-linuxgsm-20261102.tar.xz"
 		local_filedir="${tmpdir}"
-		local_filename="zombie_master_reborn_b6_1.tar.xz"
+		local_filename="zmr-b6.1-linux-i386-linuxgsm-20261102.tar.xz"
 		chmodx="nochmodx"
 		run="norun"
 		force="noforce"
-		md5="0188ae86dbc9376f11ae3032dba2d665"
+		md5="f451da013ed386d3081dfcfc390c7723"
 	else
 		fn_print_fail_nl "Installing ${gamename} Server failed, missing default configuration"
 		fn_script_log_fail "Installing ${gamename} Server failed, missing default configuration"