소스 검색

fix(arkserver): remove all appworkshop_346110.acf if multiple exist (#2852)

Daniel Gibbs 6 년 전
부모
커밋
216c29d0e5
2개의 변경된 파일45개의 추가작업 그리고 35개의 파일을 삭제
  1. 2 0
      lgsm/functions/command_validate.sh
  2. 43 35
      lgsm/functions/fix_ark.sh

+ 2 - 0
lgsm/functions/command_validate.sh

@@ -90,3 +90,5 @@ if [ "${status}" != "0" ]; then
 else
 	fn_validate
 fi
+
+core_exit.sh

+ 43 - 35
lgsm/functions/fix_ark.sh

@@ -4,44 +4,52 @@
 # Website: https://linuxgsm.com
 # Description: Resolves various issues with ARK: Survival Evolved.
 
-# Steam mods directory selecter
-# This allows LinxuGSM to select either ~/.steam or ~/Steam. depending on what is being used
-
-steamappsfile=$(find ${HOME} -name appworkshop_346110.acf)
-steamappsdir=$(dirname "${steamappsfile}")
-steamappspath=$(cd ${steamappsdir};cd ../;pwd)
-
-# removes the symlink if exists.
-# fixes issue with older versions of LinuxGSM linking to /home/arkserver/steamcmd
-if [ -L "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux" ]; then
-	fixname="broken SteamCMD symlink"
+# removes mulitple appworkshop_346110.acf if found.
+steamappsfilewc=$(find ${HOME} -name appworkshop_346110.acf | wc -l)
+if [ "${steamappsfilewc}" -gt "1" ]; then
+	fixname="multiple appworkshop acf files"
 	fn_fix_msg_start
-	unlink "${serverfiles:?}/Engine/Binaries/ThirdParty/SteamCMD/Linux"
+	find ${HOME} -name appworkshop_346110.acf -exec rm -f {} \;
 	fn_fix_msg_end
-	check_steamcmd.sh
-fi
+elif [ "${steamappsfilewc}" -eq "1" ]; then
+	# Steam mods directory selecter
+	# This allows LinxuGSM to select either ~/.steam or ~/Steam. depending on what is being used
+	steamappsfile=$(find ${HOME} -name appworkshop_346110.acf)
+	steamappsdir=$(dirname "${steamappsfile}")
+	steamappspath=$(cd "${steamappsdir}"|| return; cd ../;pwd)
 
-# removed ARK steamcmd directory if steamcmd is missing.
-if [ ! -f "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamcmd.sh" ]; then
-	fixname="remove invalid ARK SteamCMD directory"
-	fn_fix_msg_start
-	rm -rf "${serverfiles:?}/Engine/Binaries/ThirdParty/SteamCMD/Linux"
-	fn_fix_msg_end
-	check_steamcmd.sh
-fi
+	# removes the symlink if exists.
+	# fixes issue with older versions of LinuxGSM linking to /home/arkserver/steamcmd
+	if [ -L "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux" ]; then
+		fixname="broken SteamCMD symlink"
+		fn_fix_msg_start
+		unlink "${serverfiles:?}/Engine/Binaries/ThirdParty/SteamCMD/Linux"
+		fn_fix_msg_end
+		check_steamcmd.sh
+	fi
 
-# if the steamapps symlink is incorrect unlink it.
-if [ -d "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux" ]&&[ -L "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps" ]&&[ "$(readlink ${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps)" != "${steamappspath}" ]; then
-	fixname="incorrect steamapps symlink"
-	fn_fix_msg_start
-	unlink "${serverfiles:?}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps"
-	fn_fix_msg_end
-fi
+	# removed ARK steamcmd directory if steamcmd is missing.
+	if [ ! -f "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamcmd.sh" ]; then
+		fixname="remove invalid ARK SteamCMD directory"
+		fn_fix_msg_start
+		rm -rf "${serverfiles:?}/Engine/Binaries/ThirdParty/SteamCMD/Linux"
+		fn_fix_msg_end
+		check_steamcmd.sh
+	fi
 
-# Put symlink to steamapps directory into the ARK SteamCMD directory to link the downloaded mods to the correct location.
-if [ ! -L "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps" ]; then
-	fixname="steamapps symlink"
-	fn_fix_msg_start
-	ln -s "${steamappspath}" "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps"
-	fn_fix_msg_end
+	# if the steamapps symlink is incorrect unlink it.
+	if [ -d "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux" ]&&[ -L "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps" ]&&[ "$(readlink ${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps)" != "${steamappspath}" ]; then
+		fixname="incorrect steamapps symlink"
+		fn_fix_msg_start
+		unlink "${serverfiles:?}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps"
+		fn_fix_msg_end
+	fi
+
+	# Put symlink to steamapps directory into the ARK SteamCMD directory to link the downloaded mods to the correct location.
+	if [ ! -L "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps" ]; then
+		fixname="steamapps symlink"
+		fn_fix_msg_start
+		ln -s "${steamappspath}" "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamapps"
+		fn_fix_msg_end
+	fi
 fi