Browse Source

Merge branch 'release/v20.3.0'

pull/2899/head v20.3.0
Daniel Gibbs 5 years ago
parent
commit
983924fbbc
  1. 5
      .github/pr_labels.yml
  2. 17
      .github/request-info.yml
  3. 15
      .github/support.yml
  4. 21
      .github/welcome.yml
  5. 5
      lgsm/config-default/config-lgsm/avserver/_default.cfg
  6. 175
      lgsm/config-default/config-lgsm/cmwserver/_default.cfg
  7. 7
      lgsm/config-default/config-lgsm/pstbsserver/_default.cfg
  8. 15
      lgsm/config-default/config-lgsm/ut3server/_default.cfg
  9. 108
      lgsm/data/name-left.csv
  10. 237
      lgsm/data/name-right.csv
  11. 1
      lgsm/data/serverlist.csv
  12. 43
      lgsm/functions/alert.sh
  13. 4
      lgsm/functions/alert_discord.sh
  14. 4
      lgsm/functions/alert_email.sh
  15. 4
      lgsm/functions/alert_ifttt.sh
  16. 4
      lgsm/functions/alert_mailgun.sh
  17. 4
      lgsm/functions/alert_pushbullet.sh
  18. 4
      lgsm/functions/alert_pushover.sh
  19. 4
      lgsm/functions/alert_slack.sh
  20. 4
      lgsm/functions/alert_telegram.sh
  21. 48
      lgsm/functions/check.sh
  22. 3
      lgsm/functions/check_config.sh
  23. 68
      lgsm/functions/check_deps.sh
  24. 3
      lgsm/functions/check_executable.sh
  25. 2
      lgsm/functions/check_glibc.sh
  26. 14
      lgsm/functions/check_ip.sh
  27. 2
      lgsm/functions/check_last_update.sh
  28. 3
      lgsm/functions/check_logs.sh
  29. 4
      lgsm/functions/check_permissions.sh
  30. 5
      lgsm/functions/check_root.sh
  31. 5
      lgsm/functions/check_status.sh
  32. 22
      lgsm/functions/check_steamcmd.sh
  33. 5
      lgsm/functions/check_system_dir.sh
  34. 3
      lgsm/functions/check_system_requirements.sh
  35. 2
      lgsm/functions/check_tmuxception.sh
  36. 19
      lgsm/functions/check_version.sh
  37. 24
      lgsm/functions/command_backup.sh
  38. 8
      lgsm/functions/command_console.sh
  39. 25
      lgsm/functions/command_debug.sh
  40. 6
      lgsm/functions/command_details.sh
  41. 6
      lgsm/functions/command_dev_clear_functions.sh
  42. 6
      lgsm/functions/command_dev_debug.sh
  43. 12
      lgsm/functions/command_dev_detect_deps.sh
  44. 8
      lgsm/functions/command_dev_detect_glibc.sh
  45. 6
      lgsm/functions/command_dev_detect_ldd.sh
  46. 8
      lgsm/functions/command_dev_query_raw.sh
  47. 6
      lgsm/functions/command_donate.sh
  48. 11
      lgsm/functions/command_fastdl.sh
  49. 6
      lgsm/functions/command_install.sh
  50. 6
      lgsm/functions/command_install_resources_mta.sh
  51. 6
      lgsm/functions/command_mods_install.sh
  52. 7
      lgsm/functions/command_mods_remove.sh
  53. 6
      lgsm/functions/command_mods_update.sh
  54. 44
      lgsm/functions/command_monitor.sh
  55. 34
      lgsm/functions/command_postdetails.sh
  56. 6
      lgsm/functions/command_restart.sh
  57. 31
      lgsm/functions/command_start.sh
  58. 26
      lgsm/functions/command_stop.sh
  59. 6
      lgsm/functions/command_test_alert.sh
  60. 6
      lgsm/functions/command_ts3_server_pass.sh
  61. 8
      lgsm/functions/command_update.sh
  62. 13
      lgsm/functions/command_update_functions.sh
  63. 234
      lgsm/functions/command_update_linuxgsm.sh
  64. 9
      lgsm/functions/command_validate.sh
  65. 6
      lgsm/functions/command_wipe.sh
  66. 5
      lgsm/functions/compress_unreal2_maps.sh
  67. 5
      lgsm/functions/compress_ut99_maps.sh
  68. 202
      lgsm/functions/core_dl.sh
  69. 16
      lgsm/functions/core_exit.sh
  70. 21
      lgsm/functions/core_functions.sh
  71. 2
      lgsm/functions/core_getopt.sh
  72. 2
      lgsm/functions/core_legacy.sh
  73. 7
      lgsm/functions/core_logs.sh
  74. 78
      lgsm/functions/core_messages.sh
  75. 2
      lgsm/functions/core_trap.sh
  76. 11
      lgsm/functions/fix.sh
  77. 78
      lgsm/functions/fix_ark.sh
  78. 4
      lgsm/functions/fix_arma3.sh
  79. 3
      lgsm/functions/fix_av.sh
  80. 33
      lgsm/functions/fix_cmw.sh
  81. 4
      lgsm/functions/fix_csgo.sh
  82. 4
      lgsm/functions/fix_dst.sh
  83. 3
      lgsm/functions/fix_ges.sh
  84. 10
      lgsm/functions/fix_hw.sh
  85. 5
      lgsm/functions/fix_ins.sh
  86. 4
      lgsm/functions/fix_kf.sh
  87. 4
      lgsm/functions/fix_kf2.sh
  88. 3
      lgsm/functions/fix_mcb.sh
  89. 4
      lgsm/functions/fix_mta.sh
  90. 3
      lgsm/functions/fix_nmrih.sh
  91. 4
      lgsm/functions/fix_onset.sh
  92. 4
      lgsm/functions/fix_ro.sh
  93. 3
      lgsm/functions/fix_rust.sh
  94. 3
      lgsm/functions/fix_rw.sh
  95. 3
      lgsm/functions/fix_sdtd.sh
  96. 4
      lgsm/functions/fix_sfc.sh
  97. 4
      lgsm/functions/fix_sof2.sh
  98. 4
      lgsm/functions/fix_ss3.sh
  99. 16
      lgsm/functions/fix_steamcmd.sh
  100. 4
      lgsm/functions/fix_terraria.sh

5
.github/pr_labels.yml

@ -1,5 +0,0 @@
version: '1'
invalidStatus: "pending"
labelRule:
startsWith:
- "type:"

17
.github/request-info.yml

@ -1,17 +0,0 @@
# Configuration for request-info - https://github.com/behaviorbot/request-info
# *Required* Comment to reply with
requestInfoReplyComment: >
![More Data required](https://i.imgur.com/yS9cecv.png)
More data is required to assist with this issue
or issue template was not used correctly.
https://linuxgsm.com/support/#guide
# *OPTIONAL* default titles to check against for lack of descriptiveness
# MUST BE ALL LOWERCASE
#requestInfoDefaultTitles:
# - update readme.md
# - updates
# *OPTIONAL* Label to be added to Issues and Pull Requests with insufficient information given
requestInfoLabelToAdd: "needs more info"

15
.github/support.yml

@ -1,15 +0,0 @@
# Configuration for support-requests - https://github.com/dessant/support-requests
# Label used to mark issues as support requests
supportLabel: "Outcome: wrong forum"
# Comment to post on issues marked as support requests. Add a link
# to a support page, or set to `false` to disable
supportComment: >
We use the issue tracker exclusively for bug reports and feature requests.
However, this issue appears to be a support request. Please use our
support channels to get help with the project.
https://linuxgsm.com/support
# Whether to close issues marked as support requests
close: true
# Whether to lock issues marked as support requests
lock: false

21
.github/welcome.yml

@ -1,21 +0,0 @@
# Configuration for welcome - https://github.com/behaviorbot/welcome
# Configuration for new-issue-welcome - https://github.com/behaviorbot/new-issue-welcome
# Comment to be posted to on first time issues
newIssueWelcomeComment: >
Thank you for opening your first issue. Be sure to follow the issue template! and guide for posting. https://linuxgsm.com/support/#guide
# Configuration for new-pr-welcome - https://github.com/behaviorbot/new-pr-welcome
# Comment to be posted to on PRs from first time contributors in your repository
newPRWelcomeComment: >
Thank you for opening this pull request! Please check out our contributing guidelines.
# Configuration for first-pr-merge - https://github.com/behaviorbot/first-pr-merge
# Comment to be posted to on pull requests merged by a first time user
firstPRMergeComment: >
Congratulations on merging your first pull request! Thank you for supporting LinuxGSM!
# It is recommend to include as many gifs and emojis as possible

5
lgsm/config-default/config-lgsm/avserver/_default.cfg

@ -11,14 +11,13 @@
port="27000" port="27000"
# https://steamidfinder.com # https://steamidfinder.com
adminsteamid="" adminsteamid=""
avgalaxy="avgalaxy"
## Server Start Command | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters ## Server Start Command | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
fn_parms(){ fn_parms(){
if [ ! -z "${adminsteamid}" ]; then if [ ! -z "${adminsteamid}" ]; then
admincmd="--admin ${adminsteamid}" admincmd="--admin ${adminsteamid}"
fi fi
parms="--galaxy-name ${avgalaxy} --ip ${ip} --datapath ${avdatapath} ${admincmd}" parms="--galaxy-name ${selfname} --ip ${ip} --datapath ${avdatapath} ${admincmd}"
} }
#### LinuxGSM Settings #### #### LinuxGSM Settings ####
@ -146,7 +145,7 @@ glibc="2.15"
## Game Server Directories ## Game Server Directories
avdatapath="${serverfiles}/galaxy" avdatapath="${serverfiles}/galaxy"
avgalaxypath="${avdatapath}/${avgalaxy}" avgalaxypath="${avdatapath}/${selfname}"
systemdir="${serverfiles}" systemdir="${serverfiles}"
executabledir="${systemdir}" executabledir="${systemdir}"
executable="./server.sh" executable="./server.sh"

175
lgsm/config-default/config-lgsm/cmwserver/_default.cfg

@ -0,0 +1,175 @@
##################################
######## Default Settings ########
##################################
# DO NOT EDIT, ANY CHANGES WILL BE OVERWRITTEN!
# Copy settings from here and use them in either:
# common.cfg - applies settings to every instance.
# [instance].cfg - applies settings to a specific instance.
#### Game Server Settings ####
## Server Start Settings | https://docs.linuxgsm.com/configuration/start-parameters
ip="0.0.0.0"
port="7777"
queryport="7779"
defaultmap="AOCTD-Frigid_p"
## Server Start Command | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
fn_parms(){
parms="${defaultmap}?steamsockets -multihome=${ip} -Port=${port} -QueryPort=${queryport} -seekfreeloadingserver -configsubdir=${gamelogdir} -log=${gamelog}"
}
#### LinuxGSM Settings ####
## LinuxGSM Stats
# Send useful stats to LinuxGSM developers.
# https://docs.linuxgsm.com/configuration/linuxgsm-stats
# (on|off)
stats="off"
## Notification Alerts
# (on|off)
# Display IP | https://docs.linuxgsm.com/alerts#display-ip
displayip=""
# More info | https://docs.linuxgsm.com/alerts#more-info
postalert="off"
postdays="7"
posttarget="https://termbin.com"
# Discord Alerts | https://docs.linuxgsm.com/alerts/discord
discordalert="off"
discordwebhook="webhook"
# Email Alerts | https://docs.linuxgsm.com/alerts/email
emailalert="off"
email="[email protected]"
emailfrom=""
# IFTTT Alerts | https://docs.linuxgsm.com/alerts/ifttt
iftttalert="off"
ifttttoken="accesstoken"
iftttevent="linuxgsm_alert"
# Mailgun Email Alerts | https://docs.linuxgsm.com/alerts/mailgun
mailgunalert="off"
mailguntoken="accesstoken"
mailgundomain="example.com"
mailgunemailfrom="[email protected]"
mailgunemail="[email protected]"
# Pushbullet Alerts | https://docs.linuxgsm.com/alerts/pushbullet
pushbulletalert="off"
pushbullettoken="accesstoken"
channeltag=""
# Pushover Alerts | https://docs.linuxgsm.com/alerts/pushover
pushoveralert="off"
pushovertoken="accesstoken"
# Slack Alerts | https://docs.linuxgsm.com/alerts/slack
slackalert="off"
slackwebhook="webhook"
# Telegram Alerts | https://docs.linuxgsm.com/alerts/telegram
# You can add a custom cURL string eg proxy (useful in Russia) or else in "curlcustomstring".
# like a "--socks5 ipaddr:port" for socks5 proxy see more in "curl --help", if you not need
# any custom string in curl - simple ignore this parameter.
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
curlcustomstring=""
## Updating | https://docs.linuxgsm.com/commands/update
updateonstart="off"
## Backup | https://docs.linuxgsm.com/commands/backup
maxbackups="4"
maxbackupdays="30"
stoponbackup="on"
## Logging | https://docs.linuxgsm.com/features/logging
consolelogging="on"
logdays="7"
## Monitor | https://docs.linuxgsm.com/commands/monitor
# Query delay time
querydelay="1"
## ANSI Colors | https://docs.linuxgsm.com/features/ansi-colors
ansi="on"
#### Advanced Settings ####
## Message Display Time | https://docs.linuxgsm.com/features/message-display-time
sleeptime="0.5"
## SteamCMD Settings | https://docs.linuxgsm.com/steamcmd
# Server appid
appid="220070"
# SteamCMD Branch | https://docs.linuxgsm.com/steamcmd/branch
branch=""
# Master Server | https://docs.linuxgsm.com/steamcmd/steam-master-server
steammaster="false"
## Stop Mode | https://docs.linuxgsm.com/features/stop-mode
# 1: tmux kill
# 2: CTRL+c
# 3: quit
# 4: quit 120s
# 5: stop
# 6: q
# 7: exit
# 8: 7 Days to Die
# 9: GoldSrc
# 10: Avorion
stopmode="2"
## Query mode
# 1: session only
# 2: gamedig + gsquery
# 3: gamedig
# 4: gsquery
# 5: tcp
querymode="2"
querytype="protocol-valve"
## Game Server Details
# Do not edit
gamename="Chivalry: Medieval Warfare"
engine="unreal3"
glibc="2.15"
#### Directories ####
# Edit with care
## Game Server Directories
systemdir="${serverfiles}"
executabledir="${systemdir}/Binaries/Linux"
executable="./UDKGameServer-Linux"
servercfgdir="${systemdir}/UDKGame/Config/${selfname}"
servercfg="PCServer-UDKGame.ini"
servercfgdefault="PCServer-UDKGame.ini"
servercfgfullpath="${servercfgdir}/${servercfg}"
## Backup Directory
backupdir="${lgsmdir}/backup"
## Logging Directories
logdir="${rootdir}/log"
gamelogdir="${systemdir}/Saved/Logs"
lgsmlogdir="${logdir}/script"
consolelogdir="${logdir}/console"
gamelog="${gamelogdir}/${selfname}-game.log"
lgsmlog="${lgsmlogdir}/${selfname}-script.log"
consolelog="${consolelogdir}/${selfname}-console.log"
alertlog="${lgsmlogdir}/${selfname}-alert.log"
postdetailslog="${lgsmlogdir}/${selfname}-postdetails.log"
## Logs Naming
lgsmlogdate="${lgsmlogdir}/${selfname}-script-$(date '+%Y-%m-%d-%H:%M:%S').log"
consolelogdate="${consolelogdir}/${selfname}-console-$(date '+%Y-%m-%d-%H:%M:%S').log"
gamelogdate="${gamelogdir}/${selfname}-game-$(date '+%Y-%m-%d-%H:%M:%S').log"

7
lgsm/config-default/config-lgsm/pstbsserver/_default.cfg

@ -12,14 +12,15 @@
ip="0.0.0.0" ip="0.0.0.0"
port="10027" port="10027"
queryport="10037" queryport="10037"
randommap="ALWAYS" rconport="21114"
randommap="NONE"
#servername="LinuxGSM Server" #servername="LinuxGSM Server"
maxplayers="40" maxplayers="40"
reservedslots="2" reservedslots="0"
## Server Start Command | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters ## Server Start Command | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
fn_parms(){ fn_parms(){
parms="MULTIHOME=${ip}?RANDOM=${randommap}?Port=${port}?QueryPort=${queryport}?MaxPlayers=${maxplayers}?NumReservedSlots=${reservedslots}" parms="MULTIHOME=${ip} RANDOM=${randommap} Port=${port} QueryPort=${queryport} RCONPORT=${rconport} FIXEDMAXPLAYERS=${maxplayers} NumReservedSlots=${reservedslots}"
} }
#### LinuxGSM Settings #### #### LinuxGSM Settings ####

15
lgsm/config-default/config-lgsm/ut3server/_default.cfg

@ -14,18 +14,23 @@ port="7777"
queryport="6500" queryport="6500"
defaultmap="VCTF-Suspense" defaultmap="VCTF-Suspense"
game="UTGameContent.UTVehicleCTFGame_Content" game="UTGameContent.UTVehicleCTFGame_Content"
mutators="" #"UTGame.UTMutator_Instagib,UTGame.UTMutator_LowGrav" # Example: mutators="UTGame.UTMutator_Instagib,UTGame.UTMutator_LowGrav"
mutators=""
isdedicated="true" isdedicated="true"
islanmatch="false" islanmatch="false"
usesstats="false" usesstats="false"
shouldadvertise="true" shouldadvertise="true"
pureserver="1" pureserver="1"
allowjoininprogress="true" allowjoininprogress="true"
# Required: GameSpy Username and password
# https://docs.linuxgsm.com/game-servers/unreal-tournament-3#server-gamespy-login
gsusername=""
gspassword=""
## Server Start Command | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters ## Server Start Command | https://docs.linuxgsm.com/configuration/start-parameters#additional-parameters
# Edit with care | List of game types and mutators : https://docs.linuxgsm.com/game-servers/unreal-tournament-3 # Edit with care | List of game types and mutators: https://docs.linuxgsm.com/game-servers/unreal-tournament-3
fn_parms(){ fn_parms(){
parms="server ${defaultmap}?Game=${game}?bIsDedicated=${isdedicated}?bIsLanMatch=${islanmatch}?bUsesStats=${usesstats}?bShouldAdvertise=${shouldadvertise}?PureServer=${pureserver}?bAllowJoinInProgress=${allowjoininprogress}?Mutator=${mutators}?ConfigSubDir=${selfname} -port=${port} -queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog}" parms="server ${defaultmap}?Game=${game}?bIsDedicated=${isdedicated}?bIsLanMatch=${islanmatch}?bUsesStats=${usesstats}?bShouldAdvertise=${shouldadvertise}?PureServer=${pureserver}?bAllowJoinInProgress=${allowjoininprogress}?Mutator=${mutators}?ConfigSubDir=${selfname} -login=${gsusername} -password=${gspassword} -port=${port} -queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog}"
} }
#### LinuxGSM Settings #### #### LinuxGSM Settings ####
@ -130,8 +135,8 @@ stopmode="2"
# 3: gamedig # 3: gamedig
# 4: gsquery # 4: gsquery
# 5: tcp # 5: tcp
querymode="1" querymode="2"
querytype="" querytype="ut3"
## Game Server Details ## Game Server Details
# Do not edit # Do not edit

108
lgsm/data/name-left.csv

@ -0,0 +1,108 @@
admiring
adoring
affectionate
agitated
amazing
angry
awesome
beautiful
blissful
bold
boring
brave
busy
charming
clever
cool
compassionate
competent
condescending
confident
cranky
crazy
dazzling
determined
distracted
dreamy
eager
ecstatic
elastic
elated
elegant
eloquent
epic
exciting
fervent
festive
flamboyant
focused
friendly
frosty
funny
gallant
gifted
goofy
gracious
great
happy
hardcore
heuristic
hopeful
hungry
infallible
inspiring
interesting
intelligent
jolly
jovial
keen
kind
laughing
loving
lucid
magical
mystifying
modest
musing
naughty
nervous
nice
nifty
nostalgic
objective
optimistic
peaceful
pedantic
pensive
practical
priceless
quirky
quizzical
recursing
relaxed
reverent
romantic
sad
serene
sharp
silly
sleepy
stoic
strange
stupefied
suspicious
sweet
tender
thirsty
trusting
unruffled
upbeat
vibrant
vigilant
vigorous
wizardly
wonderful
xenodochial
youthful
zealous
zen
1 admiring
2 adoring
3 affectionate
4 agitated
5 amazing
6 angry
7 awesome
8 beautiful
9 blissful
10 bold
11 boring
12 brave
13 busy
14 charming
15 clever
16 cool
17 compassionate
18 competent
19 condescending
20 confident
21 cranky
22 crazy
23 dazzling
24 determined
25 distracted
26 dreamy
27 eager
28 ecstatic
29 elastic
30 elated
31 elegant
32 eloquent
33 epic
34 exciting
35 fervent
36 festive
37 flamboyant
38 focused
39 friendly
40 frosty
41 funny
42 gallant
43 gifted
44 goofy
45 gracious
46 great
47 happy
48 hardcore
49 heuristic
50 hopeful
51 hungry
52 infallible
53 inspiring
54 interesting
55 intelligent
56 jolly
57 jovial
58 keen
59 kind
60 laughing
61 loving
62 lucid
63 magical
64 mystifying
65 modest
66 musing
67 naughty
68 nervous
69 nice
70 nifty
71 nostalgic
72 objective
73 optimistic
74 peaceful
75 pedantic
76 pensive
77 practical
78 priceless
79 quirky
80 quizzical
81 recursing
82 relaxed
83 reverent
84 romantic
85 sad
86 serene
87 sharp
88 silly
89 sleepy
90 stoic
91 strange
92 stupefied
93 suspicious
94 sweet
95 tender
96 thirsty
97 trusting
98 unruffled
99 upbeat
100 vibrant
101 vigilant
102 vigorous
103 wizardly
104 wonderful
105 xenodochial
106 youthful
107 zealous
108 zen

237
lgsm/data/name-right.csv

@ -0,0 +1,237 @@
albattani
allen
almeida
antonelli
agnesi
archimedes
ardinghelli
aryabhata
austin
babbage
banach
banzai
bardeen
bartik
bassi
beaver
bell
benz
bhabha
bhaskara
black
blackburn
blackwell
bohr
booth
borg
bose
bouman
boyd
brahmagupta
brattain
brown
buck
burnell
cannon
carson
cartwright
carver
cerf
chandrasekhar
chaplygin
chatelet
chatterjee
chebyshev
cohen
chaum
clarke
colden
cori
cray
curran
curie
darwin
davinci
dewdney
dhawan
diffie
dijkstra
dirac
driscoll
dubinsky
easley
edison
einstein
elbakyan
elgamal
elion
ellis
engelbart
euclid
euler
faraday
feistel
fermat
fermi
feynman
franklin
gagarin
galileo
galois
ganguly
gates
gauss
germain
goldberg
goldstine
goldwasser
golick
goodall
gould
greider
grothendieck
haibt
hamilton
haslett
hawking
hellman
heisenberg
hermann
herschel
hertz
heyrovsky
hodgkin
hofstadter
hoover
hopper
hugle
hypatia
ishizaka
jackson
jang
jemison
jennings
jepsen
johnson
joliot
jones
kalam
kapitsa
kare
keldysh
keller
kepler
khayyam
khorana
kilby
kirch
knuth
kowalevski
lalande
lamarr
lamport
leakey
leavitt
lederberg
lehmann
lewin
lichterman
liskov
lovelace
lumiere
mahavira
margulis
matsumoto
maxwell
mayer
mccarthy
mcclintock
mclaren
mclean
mcnulty
mendel
mendeleev
meitner
meninsky
merkle
mestorf
mirzakhani
moore
morse
murdock
moser
napier
nash
neumann
newton
nightingale
nobel
noether
northcutt
noyce
panini
pare
pascal
pasteur
payne
perlman
pike
poincare
poitras
proskuriakova
ptolemy
raman
ramanujan
ride
montalcini
ritchie
rhodes
robinson
roentgen
rosalind
rubin
saha
sammet
sanderson
satoshi
shamir
shannon
shaw
shirley
shockley
shtern
sinoussi
snyder
solomon
spence
stonebraker
sutherland
swanson
swartz
swirles
taussig
tereshkova
tesla
tharp
thompson
torvalds
tu
turing
varahamihira
vaughan
visvesvaraya
volhard
villani
wescoff
wilbur
wiles
williams
williamson
wilson
wing
wozniak
wright
wu
yalow
yonath
zhukovsky
1 albattani
2 allen
3 almeida
4 antonelli
5 agnesi
6 archimedes
7 ardinghelli
8 aryabhata
9 austin
10 babbage
11 banach
12 banzai
13 bardeen
14 bartik
15 bassi
16 beaver
17 bell
18 benz
19 bhabha
20 bhaskara
21 black
22 blackburn
23 blackwell
24 bohr
25 booth
26 borg
27 bose
28 bouman
29 boyd
30 brahmagupta
31 brattain
32 brown
33 buck
34 burnell
35 cannon
36 carson
37 cartwright
38 carver
39 cerf
40 chandrasekhar
41 chaplygin
42 chatelet
43 chatterjee
44 chebyshev
45 cohen
46 chaum
47 clarke
48 colden
49 cori
50 cray
51 curran
52 curie
53 darwin
54 davinci
55 dewdney
56 dhawan
57 diffie
58 dijkstra
59 dirac
60 driscoll
61 dubinsky
62 easley
63 edison
64 einstein
65 elbakyan
66 elgamal
67 elion
68 ellis
69 engelbart
70 euclid
71 euler
72 faraday
73 feistel
74 fermat
75 fermi
76 feynman
77 franklin
78 gagarin
79 galileo
80 galois
81 ganguly
82 gates
83 gauss
84 germain
85 goldberg
86 goldstine
87 goldwasser
88 golick
89 goodall
90 gould
91 greider
92 grothendieck
93 haibt
94 hamilton
95 haslett
96 hawking
97 hellman
98 heisenberg
99 hermann
100 herschel
101 hertz
102 heyrovsky
103 hodgkin
104 hofstadter
105 hoover
106 hopper
107 hugle
108 hypatia
109 ishizaka
110 jackson
111 jang
112 jemison
113 jennings
114 jepsen
115 johnson
116 joliot
117 jones
118 kalam
119 kapitsa
120 kare
121 keldysh
122 keller
123 kepler
124 khayyam
125 khorana
126 kilby
127 kirch
128 knuth
129 kowalevski
130 lalande
131 lamarr
132 lamport
133 leakey
134 leavitt
135 lederberg
136 lehmann
137 lewin
138 lichterman
139 liskov
140 lovelace
141 lumiere
142 mahavira
143 margulis
144 matsumoto
145 maxwell
146 mayer
147 mccarthy
148 mcclintock
149 mclaren
150 mclean
151 mcnulty
152 mendel
153 mendeleev
154 meitner
155 meninsky
156 merkle
157 mestorf
158 mirzakhani
159 moore
160 morse
161 murdock
162 moser
163 napier
164 nash
165 neumann
166 newton
167 nightingale
168 nobel
169 noether
170 northcutt
171 noyce
172 panini
173 pare
174 pascal
175 pasteur
176 payne
177 perlman
178 pike
179 poincare
180 poitras
181 proskuriakova
182 ptolemy
183 raman
184 ramanujan
185 ride
186 montalcini
187 ritchie
188 rhodes
189 robinson
190 roentgen
191 rosalind
192 rubin
193 saha
194 sammet
195 sanderson
196 satoshi
197 shamir
198 shannon
199 shaw
200 shirley
201 shockley
202 shtern
203 sinoussi
204 snyder
205 solomon
206 spence
207 stonebraker
208 sutherland
209 swanson
210 swartz
211 swirles
212 taussig
213 tereshkova
214 tesla
215 tharp
216 thompson
217 torvalds
218 tu
219 turing
220 varahamihira
221 vaughan
222 visvesvaraya
223 volhard
224 villani
225 wescoff
226 wilbur
227 wiles
228 williams
229 williamson
230 wilson
231 wing
232 wozniak
233 wright
234 wu
235 yalow
236 yonath
237 zhukovsky

1
lgsm/data/serverlist.csv

@ -14,6 +14,7 @@ bs,bsserver,Blade Symphony
bt,btserver,Barotrauma bt,btserver,Barotrauma
bt1944,bt1944server,Battalion 1944 bt1944,bt1944server,Battalion 1944
cc,ccserver,Codename CURE cc,ccserver,Codename CURE
cmw,cmwserver,Chivalry: Medieval Warfare
cod,codserver,Call of Duty cod,codserver,Call of Duty
cod2,cod2server,Call of Duty 2 cod2,cod2server,Call of Duty 2
cod4,cod4server,Call of Duty 4 cod4,cod4server,Call of Duty 4

1 ac acserver Assetto Corsa
14 bt btserver Barotrauma
15 bt1944 bt1944server Battalion 1944
16 cc ccserver Codename CURE
17 cmw cmwserver Chivalry: Medieval Warfare
18 cod codserver Call of Duty
19 cod2 cod2server Call of Duty 2
20 cod4 cod4server Call of Duty 4

43
lgsm/functions/alert.sh

@ -4,8 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Overall function for managing alerts. # Description: Overall function for managing alerts.
local modulename="ALERT" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Alert"
fn_alert_log(){ fn_alert_log(){
info_distro.sh info_distro.sh
@ -100,23 +99,23 @@ fn_alert_log
if [ "${postalert}" == "on" ]&&[ -n "${postalert}" ]; then if [ "${postalert}" == "on" ]&&[ -n "${postalert}" ]; then
exitbypass=1 exitbypass=1
command_postdetails.sh command_postdetails.sh
elif [ "${postalert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ "${postalert}" != "on" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_warn_nl "More Info not enabled" fn_print_warn_nl "More Info not enabled"
fn_script_log_warn "More Info alerts not enabled" fn_script_log_warn "More Info alerts not enabled"
elif [ -z "${posttarget}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ -z "${posttarget}" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_error_nl "posttarget not set" fn_print_error_nl "posttarget not set"
fn_script_error "posttarget not set" fn_script_error "posttarget not set"
elif [ -z "${postdays}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ -z "${postdays}" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_error_nl "postdays not set" fn_print_error_nl "postdays not set"
fn_script_error "postdays not set" fn_script_error "postdays not set"
fi fi
if [ "${discordalert}" == "on" ]&&[ -n "${discordalert}" ]; then if [ "${discordalert}" == "on" ]&&[ -n "${discordalert}" ]; then
alert_discord.sh alert_discord.sh
elif [ "${discordalert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ "${discordalert}" != "on" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_warn_nl "Discord alerts not enabled" fn_print_warn_nl "Discord alerts not enabled"
fn_script_log_warn "Discord alerts not enabled" fn_script_log_warn "Discord alerts not enabled"
elif [ -z "${discordtoken}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ -z "${discordtoken}" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_error_nl "Discord token not set" fn_print_error_nl "Discord token not set"
echo -e "* https://docs.linuxgsm.com/alerts/discord" echo -e "* https://docs.linuxgsm.com/alerts/discord"
fn_script_error "Discord token not set" fn_script_error "Discord token not set"
@ -124,20 +123,20 @@ fi
if [ "${emailalert}" == "on" ]&&[ -n "${email}" ]; then if [ "${emailalert}" == "on" ]&&[ -n "${email}" ]; then
alert_email.sh alert_email.sh
elif [ "${emailalert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ "${emailalert}" != "on" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_warn_nl "Email alerts not enabled" fn_print_warn_nl "Email alerts not enabled"
fn_script_log_warn "Email alerts not enabled" fn_script_log_warn "Email alerts not enabled"
elif [ -z "${email}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ -z "${email}" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_error_nl "Email not set" fn_print_error_nl "Email not set"
fn_script_log_error "Email not set" fn_script_log_error "Email not set"
fi fi
if [ "${iftttalert}" == "on" ]&&[ -n "${iftttalert}" ]; then if [ "${iftttalert}" == "on" ]&&[ -n "${iftttalert}" ]; then
alert_ifttt.sh alert_ifttt.sh
elif [ "${iftttalert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ "${iftttalert}" != "on" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_warn_nl "IFTTT alerts not enabled" fn_print_warn_nl "IFTTT alerts not enabled"
fn_script_log_warn "IFTTT alerts not enabled" fn_script_log_warn "IFTTT alerts not enabled"
elif [ -z "${ifttttoken}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ -z "${ifttttoken}" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_error_nl "IFTTT token not set" fn_print_error_nl "IFTTT token not set"
echo -e "* https://docs.linuxgsm.com/alerts/ifttt" echo -e "* https://docs.linuxgsm.com/alerts/ifttt"
fn_script_error "IFTTT token not set" fn_script_error "IFTTT token not set"
@ -145,10 +144,10 @@ fi
if [ "${mailgunalert}" == "on" ]&&[ -n "${mailgunalert}" ]; then if [ "${mailgunalert}" == "on" ]&&[ -n "${mailgunalert}" ]; then
alert_mailgun.sh alert_mailgun.sh
elif [ "${mailgunalert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ "${mailgunalert}" != "on" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_warn_nl "Mailgun alerts not enabled" fn_print_warn_nl "Mailgun alerts not enabled"
fn_script_log_warn "Mailgun alerts not enabled" fn_script_log_warn "Mailgun alerts not enabled"
elif [ -z "${mailguntoken}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ -z "${mailguntoken}" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_error_nl "Mailgun token not set" fn_print_error_nl "Mailgun token not set"
echo -e "* https://docs.linuxgsm.com/alerts/mailgun" echo -e "* https://docs.linuxgsm.com/alerts/mailgun"
fn_script_error "Mailgun token not set" fn_script_error "Mailgun token not set"
@ -156,10 +155,10 @@ fi
if [ "${pushbulletalert}" == "on" ]&&[ -n "${pushbullettoken}" ]; then if [ "${pushbulletalert}" == "on" ]&&[ -n "${pushbullettoken}" ]; then
alert_pushbullet.sh alert_pushbullet.sh
elif [ "${pushbulletalert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ "${pushbulletalert}" != "on" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_warn_nl "Pushbullet alerts not enabled" fn_print_warn_nl "Pushbullet alerts not enabled"
fn_script_log_warn "Pushbullet alerts not enabled" fn_script_log_warn "Pushbullet alerts not enabled"
elif [ -z "${pushbullettoken}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ -z "${pushbullettoken}" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_error_nl "Pushbullet token not set" fn_print_error_nl "Pushbullet token not set"
echo -e "* https://docs.linuxgsm.com/alerts/pushbullet" echo -e "* https://docs.linuxgsm.com/alerts/pushbullet"
fn_script_error "Pushbullet token not set" fn_script_error "Pushbullet token not set"
@ -167,10 +166,10 @@ fi
if [ "${pushoveralert}" == "on" ]&&[ -n "${pushoveralert}" ]; then if [ "${pushoveralert}" == "on" ]&&[ -n "${pushoveralert}" ]; then
alert_pushover.sh alert_pushover.sh
elif [ "${pushoveralert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ "${pushoveralert}" != "on" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_warn_nl "Pushover alerts not enabled" fn_print_warn_nl "Pushover alerts not enabled"
fn_script_log_warn "Pushover alerts not enabled" fn_script_log_warn "Pushover alerts not enabled"
elif [ -z "${pushovertoken}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ -z "${pushovertoken}" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_error_nl "Pushover token not set" fn_print_error_nl "Pushover token not set"
echo -e "* https://docs.linuxgsm.com/alerts/pushover" echo -e "* https://docs.linuxgsm.com/alerts/pushover"
fn_script_error "Pushover token not set" fn_script_error "Pushover token not set"
@ -178,14 +177,14 @@ fi
if [ "${telegramalert}" == "on" ]&&[ -n "${telegramtoken}" ]; then if [ "${telegramalert}" == "on" ]&&[ -n "${telegramtoken}" ]; then
alert_telegram.sh alert_telegram.sh
elif [ "${telegramalert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ "${telegramalert}" != "on" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_warn_nl "Telegram Messages not enabled" fn_print_warn_nl "Telegram Messages not enabled"
fn_script_log_warn "Telegram Messages not enabled" fn_script_log_warn "Telegram Messages not enabled"
elif [ -z "${telegramtoken}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ -z "${telegramtoken}" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_error_nl "Telegram token not set." fn_print_error_nl "Telegram token not set."
echo -e "* https://docs.linuxgsm.com/alerts/telegram" echo -e "* https://docs.linuxgsm.com/alerts/telegram"
fn_script_error "Telegram token not set." fn_script_error "Telegram token not set."
elif [ -z "${telegramchatid}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ -z "${telegramchatid}" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_error_nl "Telegram chat id not set." fn_print_error_nl "Telegram chat id not set."
echo -e "* https://docs.linuxgsm.com/alerts/telegram" echo -e "* https://docs.linuxgsm.com/alerts/telegram"
fn_script_error "Telegram chat id not set." fn_script_error "Telegram chat id not set."
@ -193,10 +192,10 @@ fi
if [ "${slackalert}" == "on" ]&&[ -n "${slackalert}" ]; then if [ "${slackalert}" == "on" ]&&[ -n "${slackalert}" ]; then
alert_slack.sh alert_slack.sh
elif [ "${slackalert}" != "on" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ "${slackalert}" != "on" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_warn_nl "Slack alerts not enabled" fn_print_warn_nl "Slack alerts not enabled"
fn_script_log_warn "Slack alerts not enabled" fn_script_log_warn "Slack alerts not enabled"
elif [ -z "${slacktoken}" ]&&[ "${function_selfname}" == "command_test_alert.sh" ]; then elif [ -z "${slacktoken}" ]&&[ "${commandname}" == "TEST-ALERT" ]; then
fn_print_error_nl "Slack token not set" fn_print_error_nl "Slack token not set"
echo -e "* https://docs.linuxgsm.com/alerts/slack" echo -e "* https://docs.linuxgsm.com/alerts/slack"
fn_script_error "Slack token not set" fn_script_error "Slack token not set"

4
lgsm/functions/alert_discord.sh

@ -5,9 +5,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Sends Discord alert. # Description: Sends Discord alert.
local modulename="ALERT" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Alert"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if ! command -v jq > /dev/null; then if ! command -v jq > /dev/null; then
fn_print_fail_nl "Sending Discord alert: jq is missing." fn_print_fail_nl "Sending Discord alert: jq is missing."

4
lgsm/functions/alert_email.sh

@ -4,9 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Sends email alert. # Description: Sends email alert.
local modulename="ALERT" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Alert"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_print_dots "Sending Email alert: ${email}" fn_print_dots "Sending Email alert: ${email}"
fn_sleep_time fn_sleep_time

4
lgsm/functions/alert_ifttt.sh

@ -4,9 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Sends IFTTT alert. # Description: Sends IFTTT alert.
local modulename="ALERT" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Alert"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
json=$(cat <<EOF json=$(cat <<EOF
{ {

4
lgsm/functions/alert_mailgun.sh

@ -4,9 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Sends Mailgun Email alert. # Description: Sends Mailgun Email alert.
local modulename="ALERT" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Alert"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_print_dots "Sending Email alert: Mailgun: ${email}" fn_print_dots "Sending Email alert: Mailgun: ${email}"

4
lgsm/functions/alert_pushbullet.sh

@ -4,9 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Sends Pushbullet Messenger alert. # Description: Sends Pushbullet Messenger alert.
local modulename="ALERT" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Alert"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
json=$(cat <<EOF json=$(cat <<EOF
{ {

4
lgsm/functions/alert_pushover.sh

@ -4,9 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Sends Pushover alert. # Description: Sends Pushover alert.
local modulename="ALERT" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Alert"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_print_dots "Sending Pushover alert" fn_print_dots "Sending Pushover alert"

4
lgsm/functions/alert_slack.sh

@ -4,9 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Sends Slack alert. # Description: Sends Slack alert.
local modulename="ALERT" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Alert"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if ! command -v jq > /dev/null; then if ! command -v jq > /dev/null; then
fn_print_fail_nl "Sending Slack alert: jq is missing." fn_print_fail_nl "Sending Slack alert: jq is missing."

4
lgsm/functions/alert_telegram.sh

@ -4,9 +4,7 @@
# Website: https://bytegaming.de # Website: https://bytegaming.de
# Description: Sends Telegram Messenger alert. # Description: Sends Telegram Messenger alert.
local modulename="ALERT" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Alert"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
json=$(cat <<EOF json=$(cat <<EOF
{ {

48
lgsm/functions/check.sh

@ -5,101 +5,105 @@
# Description: Overall function for managing checks. # Description: Overall function for managing checks.
# Runs checks that will either halt on or fix an issue. # Runs checks that will either halt on or fix an issue.
local modulename="CHECK" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Every command that requires checks just references check.sh. # Every command that requires checks just references check.sh.
# check.sh selects which checks to run by using arrays. # check.sh selects which checks to run by using arrays.
if [ "${userinput}" != "install" ]&&[ "${userinput}" != "auto-install" ]&&[ "${userinput}" != "i" ]&&[ "${userinput}" != "ai" ]; then if [ "${commandname}" != "INSTALL" ]; then
check_root.sh check_root.sh
fi fi
if [ "${commandname}" != "UPDATE-LGSM" ]; then
check_version.sh
fi
check_tmuxception.sh check_tmuxception.sh
if [ "$(whoami)" != "root" ]; then if [ "$(whoami)" != "root" ]; then
if [ "${function_selfname}" != "command_monitor.sh" ]; then if [ "${commandname}" != "MONITOR" ]; then
check_permissions.sh check_permissions.sh
fi fi
fi fi
if [ "${function_selfname}" != "command_install.sh" ]&&[ "${function_selfname}" != "command_update_functions.sh" ]&&[ "${function_selfname}" != "command_update_linuxgsm.sh" ]&&[ "${function_selfname}" != "command_details.sh" ]&&[ "${function_selfname}" != "command_postdetails.sh" ]; then if [ "${commandname}" != "INSTALL" ]&&[ "${commandname}" != "UPDATE-LGSM" ]&&[ "${commandname}" != "DETAILS" ]&&[ "${commandname}" != "POST-DETAILS" ]; then
check_system_dir.sh check_system_dir.sh
fi fi
local allowed_commands_array=( command_start.sh command_debug.sh ) allowed_commands_array=( START DEBUG )
for allowed_command in "${allowed_commands_array[@]}" for allowed_command in "${allowed_commands_array[@]}"
do do
if [ "${allowed_command}" == "${function_selfname}" ]; then if [ "${allowed_command}" == "${commandname}" ]; then
check_executable.sh check_executable.sh
fi fi
done done
if [ "$(whoami)" != "root" ]; then if [ "$(whoami)" != "root" ]; then
local allowed_commands_array=( command_debug.sh command_start.sh command_install.sh ) allowed_commands_array=( DEBUG START INSTALL )
for allowed_command in "${allowed_commands_array[@]}" for allowed_command in "${allowed_commands_array[@]}"
do do
if [ "${allowed_command}" == "${function_selfname}" ]; then if [ "${allowed_command}" == "${commandname}" ]; then
check_glibc.sh check_glibc.sh
fi fi
done done
fi fi
local allowed_commands_array=( command_backup.sh command_console.sh command_debug.sh command_details.sh command_unreal2_maps.sh command_fastdl.sh command_mods_install.sh command_mods_remove.sh command_mods_update.sh command_monitor.sh command_postdetails.sh command_restart.sh command_start.sh command_stop.sh command_test_alert.sh command_ts3_server_pass.sh command_update.sh command_update_functions.sh command_validate.sh command_wipe.sh command_unreal2_maps.sh command_ut99maps.sh) allowed_commands_array=( BACKUP CONSOLE DEBUG DETAILS MAP-COMPRESSOR FASTDL MODS-INSTALL MODS-REMOVE MODS-UPDATE MONITOR POST-DETAILS RESTART START STOP TEST-ALERT CHANGE-PASSWORD UPDATE UPDATE-LGSM VALIDATE WIPW )
for allowed_command in "${allowed_commands_array[@]}" for allowed_command in "${allowed_commands_array[@]}"
do do
if [ "${allowed_command}" == "${function_selfname}" ]; then if [ "${allowed_command}" == "${commandname}" ]; then
check_logs.sh check_logs.sh
fi fi
done done
local allowed_commands_array=( command_debug.sh command_start.sh command_stop.sh ) allowed_commands_array=( DEBUG START STOP )
for allowed_command in "${allowed_commands_array[@]}" for allowed_command in "${allowed_commands_array[@]}"
do do
if [ "${allowed_command}" == "${function_selfname}" ]; then if [ "${allowed_command}" == "${commandname}" ]; then
check_deps.sh check_deps.sh
fi fi
done done
local allowed_commands_array=( command_console.sh command_debug.sh command_monitor.sh command_start.sh command_stop.sh ) allowed_commands_array=( CONSOLE DEBUG MONITOR START STOP )
for allowed_command in "${allowed_commands_array[@]}" for allowed_command in "${allowed_commands_array[@]}"
do do
if [ "${allowed_command}" == "${function_selfname}" ]; then if [ "${allowed_command}" == "${commandname}" ]; then
check_config.sh check_config.sh
fi fi
done done
local allowed_commands_array=( command_debug.sh command_details.sh command_postdetails.sh command_monitor.sh command_start.sh command_stop.sh command_dev_query_raw.sh ) allowed_commands_array=( DEBUG DETAILS POST_DETAILS MONITOR START STOP DEV-QUERY-RAW )
for allowed_command in "${allowed_commands_array[@]}" for allowed_command in "${allowed_commands_array[@]}"
do do
if [ "${allowed_command}" == "${function_selfname}" ]; then if [ "${allowed_command}" == "${commandname}" ]; then
if [ -z "${installflag}" ]; then if [ -z "${installflag}" ]; then
check_ip.sh check_ip.sh
fi fi
fi fi
done done
local allowed_commands_array=( update_steamcmd.sh command_debug.sh command_start.sh command_validate.sh ) allowed_commands_array=( DEBUG START VALIDATE )
for allowed_command in "${allowed_commands_array[@]}" for allowed_command in "${allowed_commands_array[@]}"
do do
if [ "${allowed_command}" == "${function_selfname}" ]; then if [ "${allowed_command}" == "${commandname}" ]; then
if [ "${appid}" ]; then if [ "${appid}" ]; then
check_steamcmd.sh check_steamcmd.sh
fi fi
fi fi
done done
local allowed_commands_array=( command_details.sh command_monitor.sh command_start.sh command_stop.sh command_ts3_server_pass.sh command_update.sh command_details.sh command_validate.sh ) allowed_commands_array=( DETAILS MONITOR START STOP CHANGE-PASSWORD UPDATE VALIDATE )
for allowed_command in "${allowed_commands_array[@]}" for allowed_command in "${allowed_commands_array[@]}"
do do
if [ "${allowed_command}" == "${function_selfname}" ]; then if [ "${allowed_command}" == "${commandname}" ]; then
check_status.sh check_status.sh
fi fi
done done
local allowed_commands_array=( command_debug.sh command_start.sh command_install.sh ) allowed_commands_array=( DEBUG START INSTALL )
for allowed_command in "${allowed_commands_array[@]}" for allowed_command in "${allowed_commands_array[@]}"
do do
if [ "${allowed_command}" == "${function_selfname}" ]; then if [ "${allowed_command}" == "${commandname}" ]; then
check_system_requirements.sh check_system_requirements.sh
fi fi
done done

3
lgsm/functions/check_config.sh

@ -4,8 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Checks if the server config is missing and warns the user if needed. # Description: Checks if the server config is missing and warns the user if needed.
local modulename="CHECK" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ ! -f "${servercfgfullpath}" ]; then if [ ! -f "${servercfgfullpath}" ]; then
if [ "${shortname}" != "hw" ]&&[ "${shortname}" != "ut3" ]&&[ "${shortname}" != "kf2" ]; then if [ "${shortname}" != "hw" ]&&[ "${shortname}" != "ut3" ]&&[ "${shortname}" != "kf2" ]; then

68
lgsm/functions/check_deps.sh

@ -4,7 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Checks if required dependencies are installed for LinuxGSM. # Description: Checks if required dependencies are installed for LinuxGSM.
local modulename="CHECK" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_install_mono_repo(){ fn_install_mono_repo(){
if [ "${monostatus}" != "0" ]; then if [ "${monostatus}" != "0" ]; then
@ -26,13 +26,13 @@ fn_install_mono_repo(){
echo -en " \r" echo -en " \r"
if [ "${distroid}" == "ubuntu" ]; then if [ "${distroid}" == "ubuntu" ]; then
if [ "${distroversion}" == "18.04" ]; then if [ "${distroversion}" == "18.04" ]; then
cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/ubuntu stable-bionic main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/ubuntu stable-bionic main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt-get update"
eval "${cmd}" eval "${cmd}"
elif [ "${distroversion}" == "16.04" ]; then elif [ "${distroversion}" == "16.04" ]; then
cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;sudo apt install apt-transport-https;echo 'deb https://download.mono-project.com/repo/ubuntu stable-xenial main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;sudo apt-get install apt-transport-https;echo 'deb https://download.mono-project.com/repo/ubuntu stable-xenial main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt-get update"
eval "${cmd}" eval "${cmd}"
elif [ "${distroversion}" == "14.04" ]; then elif [ "${distroversion}" == "14.04" ]; then
cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;sudo apt install apt-transport-https;echo 'deb https://download.mono-project.com/repo/ubuntu stable-trusty main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;sudo apt-get install apt-transport-https;echo 'deb https://download.mono-project.com/repo/ubuntu stable-trusty main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt-get update"
eval "${cmd}" eval "${cmd}"
else else
fn_print_warn_nl "Installing Mono repository." fn_print_warn_nl "Installing Mono repository."
@ -43,13 +43,13 @@ fn_install_mono_repo(){
fi fi
elif [ "${distroid}" == "debian" ]; then elif [ "${distroid}" == "debian" ]; then
if [ "${distroversion}" == "10" ]; then if [ "${distroversion}" == "10" ]; then
cmd="sudo apt install apt-transport-https dirmngr;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-buster main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" cmd="sudo apt-get install apt-transport-https dirmngr;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-buster main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt-get update"
eval "${cmd}" eval "${cmd}"
elif [ "${distroversion}" == "9" ]; then elif [ "${distroversion}" == "9" ]; then
cmd="sudo apt install apt-transport-https dirmngr;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-stretch main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" cmd="sudo apt-get install apt-transport-https dirmngr;sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;echo 'deb https://download.mono-project.com/repo/debian stable-stretch main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt-get update"
eval "${cmd}" eval "${cmd}"
elif [ "${distroversion}" == "8" ]; then elif [ "${distroversion}" == "8" ]; then
cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;sudo apt install apt-transport-https;echo 'deb https://download.mono-project.com/repo/debian stable-jessie main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt update" cmd="sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF;sudo apt-get install apt-transport-https;echo 'deb https://download.mono-project.com/repo/debian stable-jessie main' | sudo tee /etc/apt/sources.list.d/mono-official-stable.list;sudo apt-get update"
eval "${cmd}" eval "${cmd}"
else else
echo -e "Mono auto install not available for ${distroname}" echo -e "Mono auto install not available for ${distroname}"
@ -171,14 +171,14 @@ if [ "${javacheck}" == "1" ]; then
if [ "${depstatus}" == "0" ]; then if [ "${depstatus}" == "0" ]; then
# If dependency is found. # If dependency is found.
missingdep=0 missingdep=0
if [ "${function_selfname}" == "command_install.sh" ]; then if [ "${commandname}" == "INSTALL" ]; then
echo -e "${green}${deptocheck}${default}" echo -e "${green}${deptocheck}${default}"
fn_sleep_time fn_sleep_time
fi fi
else else
# If dependency is not found. # If dependency is not found.
missingdep=1 missingdep=1
if [ "${function_selfname}" == "command_install.sh" ]; then if [ "${commandname}" == "INSTALL" ]; then
echo -e "${red}${deptocheck}${default}" echo -e "${red}${deptocheck}${default}"
fn_sleep_time fn_sleep_time
fi fi
@ -220,10 +220,10 @@ fn_deps_email(){
} }
fn_found_missing_deps(){ fn_found_missing_deps(){
if [ "${#array_deps_missing[@]}" != "0" ]; then if [ "${#array_deps_missing[*]}" != "0" ]; then
fn_print_warning_nl "Missing dependencies: ${red}${array_deps_missing[@]}${default}" fn_print_warning_nl "Missing dependencies: ${red}${array_deps_missing[*]}${default}"
fn_script_log_warn "Missing dependencies: ${array_deps_missing[@]}" fn_script_log_warn "Missing dependencies: ${array_deps_missing[*]}"
fn_sleep_time fn_sleep_time
if [ "${monostatus}" ]; then if [ "${monostatus}" ]; then
fn_install_mono_repo fn_install_mono_repo
@ -248,13 +248,13 @@ fn_found_missing_deps(){
sleep 1 sleep 1
echo -en " \r" echo -en " \r"
if [ "$(command -v dpkg-query 2>/dev/null)" ]; then if [ "$(command -v dpkg-query 2>/dev/null)" ]; then
cmd="echo steamcmd steam/question select \"I AGREE\" | sudo debconf-set-selections; echo steamcmd steam/license note '' | sudo debconf-set-selections; sudo dpkg --add-architecture i386; sudo apt update; sudo apt -y install ${array_deps_missing[@]}" cmd="echo steamcmd steam/question select \"I AGREE\" | sudo debconf-set-selections; echo steamcmd steam/license note '' | sudo debconf-set-selections; sudo dpkg --add-architecture i386; sudo apt-get update; sudo apt-get -y install ${array_deps_missing[*]}"
eval "${cmd}" eval "${cmd}"
elif [ "$(command -v dnf 2>/dev/null)" ]; then elif [ "$(command -v dnf 2>/dev/null)" ]; then
cmd="sudo dnf -y install ${array_deps_missing[@]}" cmd="sudo dnf -y install ${array_deps_missing[*]}"
eval "${cmd}" eval "${cmd}"
elif [ "$(command -v yum 2>/dev/null)" ]; then elif [ "$(command -v yum 2>/dev/null)" ]; then
cmd="sudo yum -y install ${array_deps_missing[@]}" cmd="sudo yum -y install ${array_deps_missing[*]}"
eval "${cmd}" eval "${cmd}"
fi fi
if [ $? != 0 ]; then if [ $? != 0 ]; then
@ -264,15 +264,15 @@ fn_found_missing_deps(){
fn_print_warning_nl "Manually install dependencies." fn_print_warning_nl "Manually install dependencies."
fn_script_log_warn "Manually install dependencies." fn_script_log_warn "Manually install dependencies."
if [ "$(command -v dpkg-query 2>/dev/null)" ]; then if [ "$(command -v dpkg-query 2>/dev/null)" ]; then
echo -e " sudo dpkg --add-architecture i386; sudo apt update; sudo apt install ${array_deps_missing[@]}" echo -e " sudo dpkg --add-architecture i386; sudo apt update; sudo apt install ${array_deps_missing[*]}"
elif [ "$(command -v dnf 2>/dev/null)" ]; then elif [ "$(command -v dnf 2>/dev/null)" ]; then
echo -e " sudo dnf install ${array_deps_missing[@]}" echo -e " sudo dnf install ${array_deps_missing[*]}"
elif [ "$(command -v yum 2>/dev/null)" ]; then elif [ "$(command -v yum 2>/dev/null)" ]; then
echo -e " sudo yum install ${array_deps_missing[@]}" echo -e " sudo yum install ${array_deps_missing[*]}"
fi fi
if [ "${steamcmdfail}" ]; then if [ "${steamcmdfail}" ]; then
echo -e "" echo -e ""
if [ "${function_selfname}" == "command_install.sh" ]; then if [ "${commandname}" == "INSTALL" ]; then
fn_print_failure_nl "Missing dependencies required to run SteamCMD." fn_print_failure_nl "Missing dependencies required to run SteamCMD."
fn_script_log_fatal "Missing dependencies required to run SteamCMD." fn_script_log_fatal "Missing dependencies required to run SteamCMD."
core_exit.sh core_exit.sh
@ -290,15 +290,15 @@ fn_found_missing_deps(){
fn_script_log_warn "$(whoami) does not have sudo access. Manually install dependencies." fn_script_log_warn "$(whoami) does not have sudo access. Manually install dependencies."
echo -e "" echo -e ""
if [ "$(command -v dpkg-query 2>/dev/null)" ]; then if [ "$(command -v dpkg-query 2>/dev/null)" ]; then
echo -e "sudo dpkg --add-architecture i386; sudo apt update; sudo apt install ${array_deps_missing[@]}" echo -e "sudo dpkg --add-architecture i386; sudo apt update; sudo apt install ${array_deps_missing[*]}"
elif [ "$(command -v dnf 2>/dev/null)" ]; then elif [ "$(command -v dnf 2>/dev/null)" ]; then
echo -e "sudo dnf install ${array_deps_missing[@]}" echo -e "sudo dnf install ${array_deps_missing[*]}"
elif [ "$(command -v yum 2>/dev/null)" ]; then elif [ "$(command -v yum 2>/dev/null)" ]; then
echo -e "sudo yum install ${array_deps_missing[@]}" echo -e "sudo yum install ${array_deps_missing[*]}"
fi fi
if [ "${steamcmdfail}" ]; then if [ "${steamcmdfail}" ]; then
echo -e "" echo -e ""
if [ "${function_selfname}" == "command_install.sh" ]; then if [ "${commandname}" == "INSTALL" ]; then
fn_print_failure_nl "Missing dependencies required to run SteamCMD." fn_print_failure_nl "Missing dependencies required to run SteamCMD."
fn_script_log_fatal "Missing dependencies required to run SteamCMD." fn_script_log_fatal "Missing dependencies required to run SteamCMD."
core_exit.sh core_exit.sh
@ -309,11 +309,11 @@ fn_found_missing_deps(){
fi fi
echo -e "" echo -e ""
fi fi
if [ "${function_selfname}" == "command_install.sh" ]; then if [ "${commandname}" == "INSTALL" ]; then
sleep 5 sleep 5
fi fi
else else
if [ "${function_selfname}" == "command_install.sh" ]; then if [ "${commandname}" == "INSTALL" ]; then
fn_print_information_nl "Required dependencies already installed." fn_print_information_nl "Required dependencies already installed."
fn_script_log_info "Required dependencies already installed." fn_script_log_info "Required dependencies already installed."
fi fi
@ -322,7 +322,7 @@ fn_found_missing_deps(){
fn_check_loop(){ fn_check_loop(){
# Loop though required depenencies. # Loop though required depenencies.
for deptocheck in "${array_deps_required[@]}" for deptocheck in ${array_deps_required[*]}
do do
fn_deps_detector fn_deps_detector
done done
@ -368,8 +368,8 @@ fn_deps_build_debian(){
# 7 Days to Die # 7 Days to Die
elif [ "${shortname}" == "sdtd" ]; then elif [ "${shortname}" == "sdtd" ]; then
array_deps_required+=( telnet expect ) array_deps_required+=( telnet expect )
# No More Room in Hell, Counter-Strike: Source, Garry's Mod and Zombie Panic: Source # Battlefield 1942, Counter-Strike: Source, Garry's Mod, No More Room in Hell, Source Forts Classic, Zombie Master Reborn and Zombie Panic: Source
elif [ "${shortname}" == "nmrih" ]||[ "${shortname}" == "css" ]||[ "${shortname}" == "gmod" ]||[ "${shortname}" == "zps" ]; then elif [ "${shortname}" == "bf1942" ]||[ "${shortname}" == "css" ]||[ "${shortname}" == "gmod" ]||[ "${shortname}" == "nmrih" ]||[ "${shortname}" == "sfc" ]||[ "${shortname}" == "zmr" ]||[ "${shortname}" == "zps" ]; then
if [ "${arch}" == "x86_64" ]; then if [ "${arch}" == "x86_64" ]; then
array_deps_required+=( libtinfo5:i386 ) array_deps_required+=( libtinfo5:i386 )
else else
@ -381,9 +381,6 @@ fn_deps_build_debian(){
if [ "${shortname}" == "tf2" ]; then if [ "${shortname}" == "tf2" ]; then
array_deps_required+=( libtcmalloc-minimal4:i386 ) array_deps_required+=( libtcmalloc-minimal4:i386 )
fi fi
# Battlefield: 1942
elif [ "${shortname}" == "bf1942" ]; then
array_deps_required+=( libncurses5:i386 )
# Call of Duty & Medal of Honor: Allied Assault # Call of Duty & Medal of Honor: Allied Assault
elif [ "${shortname}" == "cod" ]||[ "${shortname}" == "coduo" ]||[ "${shortname}" == "cod2" ]||[ "${shortname}" == "mohaa" ]; then elif [ "${shortname}" == "cod" ]||[ "${shortname}" == "coduo" ]||[ "${shortname}" == "cod2" ]||[ "${shortname}" == "mohaa" ]; then
array_deps_required+=( libstdc++5:i386 ) array_deps_required+=( libstdc++5:i386 )
@ -483,8 +480,8 @@ fn_deps_build_redhat(){
# 7 Days to Die # 7 Days to Die
elif [ "${shortname}" == "sdtd" ]; then elif [ "${shortname}" == "sdtd" ]; then
array_deps_required+=( telnet expect ) array_deps_required+=( telnet expect )
# No More Room in Hell, Counter-Strike: Source, Garry's Mod and Zombie Panic: Source # Battlefield 1942, Counter-Strike: Source, Garry's Mod, No More Room in Hell, Source Forts Classic, Zombie Master Reborn and Zombie Panic: Source
elif [ "${shortname}" == "nmrih" ]||[ "${shortname}" == "css" ]||[ "${shortname}" == "gmod" ]||[ "${shortname}" == "zps" ]; then elif [ "${shortname}" == "bf1942" ]||[ "${shortname}" == "css" ]||[ "${shortname}" == "gmod" ]||[ "${shortname}" == "nmrih" ]||[ "${shortname}" == "sfc" ]||[ "${shortname}" == "zmr" ]||[ "${shortname}" == "zps" ]; then
array_deps_required+=( ncurses-libs.i686 ) array_deps_required+=( ncurses-libs.i686 )
# Brainbread 2, Don't Starve Together & Team Fortress 2 # Brainbread 2, Don't Starve Together & Team Fortress 2
elif [ "${shortname}" == "bb2" ]||[ "${shortname}" == "dst" ]||[ "${shortname}" == "tf2" ]; then elif [ "${shortname}" == "bb2" ]||[ "${shortname}" == "dst" ]||[ "${shortname}" == "tf2" ]; then
@ -492,9 +489,6 @@ fn_deps_build_redhat(){
if [ "${shortname}" == "tf2" ]; then if [ "${shortname}" == "tf2" ]; then
array_deps_required+=( gperftools-libs.i686 ) array_deps_required+=( gperftools-libs.i686 )
fi fi
# Battlefield: 1942
elif [ "${shortname}" == "bf1942" ]; then
array_deps_required+=( ncurses-libs.i686 )
# Call of Duty & Medal of Honor: Allied Assault # Call of Duty & Medal of Honor: Allied Assault
elif [ "${shortname}" == "cod" ]||[ "${shortname}" == "coduo" ]||[ "${shortname}" == "cod2" ]||[ "${shortname}" == "mohaa" ]; then elif [ "${shortname}" == "cod" ]||[ "${shortname}" == "coduo" ]||[ "${shortname}" == "cod2" ]||[ "${shortname}" == "mohaa" ]; then
array_deps_required+=( compat-libstdc++-33.i686 ) array_deps_required+=( compat-libstdc++-33.i686 )
@ -556,7 +550,7 @@ fn_deps_build_redhat(){
fn_check_loop fn_check_loop
} }
if [ "${function_selfname}" == "command_install.sh" ]; then if [ "${commandname}" == "INSTALL" ]; then
if [ "$(whoami)" == "root" ]; then if [ "$(whoami)" == "root" ]; then
echo -e "" echo -e ""
echo -e "${lightyellow}Checking Dependencies as root${default}" echo -e "${lightyellow}Checking Dependencies as root${default}"

3
lgsm/functions/check_executable.sh

@ -4,8 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Checks if server executable exists. # Description: Checks if server executable exists.
local modulename="CHECK" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Check if executable exists # Check if executable exists
if [ ! -f "${executabledir}/${execname}" ]; then if [ ! -f "${executabledir}/${execname}" ]; then

2
lgsm/functions/check_glibc.sh

@ -4,7 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Checks if the server has the correct Glibc version. # Description: Checks if the server has the correct Glibc version.
local modulename="CHECK" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
info_distro.sh info_distro.sh

14
lgsm/functions/check_ip.sh

@ -5,7 +5,7 @@
# Description: Automatically identifies the server interface IP. # Description: Automatically identifies the server interface IP.
# If multiple interfaces are detected the user will need to manually set using ip="0.0.0.0". # If multiple interfaces are detected the user will need to manually set using ip="0.0.0.0".
local modulename="CHECK" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ "${travistest}" != "1" ]; then if [ "${travistest}" != "1" ]; then
if [ ! -f "/bin/ip" ]; then if [ ! -f "/bin/ip" ]; then
@ -23,10 +23,10 @@ if [ "${travistest}" != "1" ]; then
fn_print_dots "Check IP" fn_print_dots "Check IP"
# Multiple interfaces. # Multiple interfaces.
if [ "${getipwc}" -ge "2" ]; then if [ "${getipwc}" -ge "2" ]; then
if [ "${function_selfname}" == "command_details.sh" ]; then if [ "${commandname}" == "details" ]; then
fn_print_warn "Check IP: Multiple IP addresses found." fn_print_warn "Check IP: Multiple IP addresses found."
else else
fn_print_fail "Check IP: Multiple IP addresses found." fn_print_fail "Check IP: Multiple IP addresses found."
fi fi
echo -en "\n" echo -en "\n"
# IP is set within game config. # IP is set within game config.
@ -55,7 +55,7 @@ if [ "${travistest}" != "1" ]; then
echo -en "https://linuxgsm.com/network-interfaces\n" echo -en "https://linuxgsm.com/network-interfaces\n"
echo -en "" echo -en ""
# Do not exit for details and postdetails commands. # Do not exit for details and postdetails commands.
if [ "${function_selfname}" != "command_details.sh" ]||[ "${function_selfname}" != "command_postdetails.sh" ]; then if [ "${commandname}" != "DETAILS" ]||[ "${commandname}" != "POST-DETAILS" ]; then
fn_script_log_fatal "https://linuxgsm.com/network-interfaces\n" fn_script_log_fatal "https://linuxgsm.com/network-interfaces\n"
core_exit.sh core_exit.sh
else else
@ -76,8 +76,8 @@ if [ "${travistest}" != "1" ]; then
fn_script_log_fatal "IP address not set in game config." fn_script_log_fatal "IP address not set in game config."
fn_script_log_fatal "Specify the IP you want to bind within: ${servercfgfullpath}." fn_script_log_fatal "Specify the IP you want to bind within: ${servercfgfullpath}."
fn_script_log_fatal "https://linuxgsm.com/network-interfaces\n" fn_script_log_fatal "https://linuxgsm.com/network-interfaces\n"
if [ "${function_selfname}" != "command_details.sh" ]; then if [ "${commandname}" != "DETAILS" ]; then
core_exit.sh core_exit.sh
fi fi
else else
fn_print_info_nl "Check IP: ${getip}" fn_print_info_nl "Check IP: ${getip}"

2
lgsm/functions/check_last_update.sh

@ -5,6 +5,8 @@
# Description: Checks lock file to see when last update happened. # Description: Checks lock file to see when last update happened.
# Will reboot server if instance not rebooted since update. # Will reboot server if instance not rebooted since update.
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ -f "${lockdir}/${selfname}-laststart.lock" ]; then if [ -f "${lockdir}/${selfname}-laststart.lock" ]; then
laststart=$(cat "${lockdir}/${selfname}-laststart.lock") laststart=$(cat "${lockdir}/${selfname}-laststart.lock")
fi fi

3
lgsm/functions/check_logs.sh

@ -4,8 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Checks if log files exist. # Description: Checks if log files exist.
local modulename="CHECK" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_check_logs(){ fn_check_logs(){
fn_print_dots "Checking for log files" fn_print_dots "Checking for log files"

4
lgsm/functions/check_permissions.sh

@ -5,7 +5,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Checks ownership & permissions of scripts, files and directories. # Description: Checks ownership & permissions of scripts, files and directories.
local modulename="CHECK" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_check_ownership(){ fn_check_ownership(){
if [ -f "${rootdir}/${selfname}" ]; then if [ -f "${rootdir}/${selfname}" ]; then
@ -229,7 +229,7 @@ fn_sys_perm_error_process(){
if [ "$(whoami)" != "root" ]; then if [ "$(whoami)" != "root" ]; then
fn_check_ownership fn_check_ownership
fn_check_permissions fn_check_permissions
if [ "${function_selfname}" == "command_start.sh" ]; then if [ "${commandname}" == "START" ]; then
fn_sys_perm_error_process fn_sys_perm_error_process
fi fi
fi fi

5
lgsm/functions/check_root.sh

@ -4,11 +4,10 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Checks if the user tried to run the script as root. # Description: Checks if the user tried to run the script as root.
local modulename="CHECK" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ "$(whoami)" = "root" ]; then if [ "$(whoami)" = "root" ]; then
if [ "${function_selfname}" != "command_install.sh" ]; then if [ "${commandname}" != "INSTALL" ]; then
fn_print_fail_nl "Do NOT run this script as root!" fn_print_fail_nl "Do NOT run this script as root!"
if [ -d "${lgsmlogdir}" ]; then if [ -d "${lgsmlogdir}" ]; then
fn_script_log_fatal "${selfname} attempted to run as root." fn_script_log_fatal "${selfname} attempted to run as root."

5
lgsm/functions/check_status.sh

@ -5,7 +5,6 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Checks the process status of the server. Either online or offline. # Description: Checks the process status of the server. Either online or offline.
local modulename="CHECK" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
status=$(tmux list-sessions -F "#{session_name}" 2>/dev/null | grep -Ecx "^${selfname}") status=$(tmux list-sessions -F "#{session_name}" 2>/dev/null | grep -Ecx "^${sessionname}")

22
lgsm/functions/check_steamcmd.sh

@ -4,7 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Checks if SteamCMD is installed correctly. # Description: Checks if SteamCMD is installed correctly.
local modulename="CHECK" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_install_steamcmd(){ fn_install_steamcmd(){
if [ ${shortname} == "ark" ]&&[ "${installsteamcmd}" == "1" ]; then if [ ${shortname} == "ark" ]&&[ "${installsteamcmd}" == "1" ]; then
@ -13,7 +13,17 @@ fn_install_steamcmd(){
if [ ! -d "${steamcmddir}" ]; then if [ ! -d "${steamcmddir}" ]; then
mkdir -p "${steamcmddir}" mkdir -p "${steamcmddir}"
fi fi
fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "${tmpdir}" "steamcmd_linux.tar.gz" remote_fileurl="${1}"
remote_fileurl_backup="${2}"
remote_fileurl_name="${3}"
remote_fileurl_backup_name="${4}"
local_filedir="${5}"
local_filename="${6}"
chmodx="${7:-0}"
run="${8:-0}"
forcedl="${9:-0}"
md5="${10:-0}"
fn_fetch_file "http://media.steampowered.com/client/steamcmd_linux.tar.gz" "" "" "" "${tmpdir}" "steamcmd_linux.tar.gz" "" "norun" "noforce" "nomd5"
fn_dl_extract "${tmpdir}" "steamcmd_linux.tar.gz" "${steamcmddir}" fn_dl_extract "${tmpdir}" "steamcmd_linux.tar.gz" "${steamcmddir}"
chmod +x "${steamcmddir}/steamcmd.sh" chmod +x "${steamcmddir}/steamcmd.sh"
} }
@ -50,14 +60,14 @@ fn_check_steamcmd(){
# Checks if SteamCMD exists when starting or updating a server. # Checks if SteamCMD exists when starting or updating a server.
# Only install if steamcmd package is missing or steamcmd dir is missing. # Only install if steamcmd package is missing or steamcmd dir is missing.
if [ ! -f "${steamcmddir}/steamcmd.sh" ]&&[ -z "$(command -v steamcmd 2>/dev/null)" ]; then if [ ! -f "${steamcmddir}/steamcmd.sh" ]&&[ -z "$(command -v steamcmd 2>/dev/null)" ]; then
if [ "${function_selfname}" == "command_install.sh" ]; then if [ "${commandname}" == "INSTALL" ]; then
fn_install_steamcmd fn_install_steamcmd
else else
fn_print_warn_nl "SteamCMD is missing" fn_print_warn_nl "SteamCMD is missing"
fn_script_log_warn "SteamCMD is missing" fn_script_log_warn "SteamCMD is missing"
fn_install_steamcmd fn_install_steamcmd
fi fi
elif [ "${function_selfname}" == "command_install.sh" ]; then elif [ "${commandname}" == "INSTALL" ]; then
fn_print_information "SteamCMD is already installed..." fn_print_information "SteamCMD is already installed..."
fn_print_ok_eol_nl fn_print_ok_eol_nl
fi fi
@ -110,14 +120,14 @@ fn_check_steamcmd_ark(){
# to allow ark mods to work # to allow ark mods to work
if [ ! -f "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamcmd.sh" ]; then if [ ! -f "${serverfiles}/Engine/Binaries/ThirdParty/SteamCMD/Linux/steamcmd.sh" ]; then
installsteamcmd=1 installsteamcmd=1
if [ "${function_selfname}" == "command_install.sh" ]; then if [ "${commandname}" == "INSTALL" ]; then
fn_install_steamcmd fn_install_steamcmd
else else
fn_print_warn_nl "ARK mods SteamCMD is missing" fn_print_warn_nl "ARK mods SteamCMD is missing"
fn_script_log_warn "ARK mods SteamCMD is missing" fn_script_log_warn "ARK mods SteamCMD is missing"
fn_install_steamcmd fn_install_steamcmd
fi fi
elif [ "${function_selfname}" == "command_install.sh" ]; then elif [ "${commandname}" == "INSTALL" ]; then
fn_print_information "ARK mods SteamCMD is already installed..." fn_print_information "ARK mods SteamCMD is already installed..."
fn_print_ok_eol_nl fn_print_ok_eol_nl
fi fi

5
lgsm/functions/check_system_dir.sh

@ -4,10 +4,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Checks if systemdir/serverfiles is accessible. # Description: Checks if systemdir/serverfiles is accessible.
local modulename="CHECK" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ "${function_selfname}" != "command_validate.sh" ]; then if [ "${commandname}" != "VALIDATE" ]; then
checkdir="${serverfiles}" checkdir="${serverfiles}"
else else
checkdir="${systemdir}" checkdir="${systemdir}"

3
lgsm/functions/check_system_requirements.sh

@ -5,8 +5,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Checks RAM requirements # Description: Checks RAM requirements
local modulename="CHECK" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
info_distro.sh info_distro.sh

2
lgsm/functions/check_tmuxception.sh

@ -5,7 +5,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Checks if run from tmux or screen # Description: Checks if run from tmux or screen
local modulename="CHECK" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_check_is_in_tmux(){ fn_check_is_in_tmux(){
if [ "${TMUX}" ]; then if [ "${TMUX}" ]; then

19
lgsm/functions/check_version.sh

@ -0,0 +1,19 @@
#!/bin/bash
# LinuxGSM command_version.sh function
# Author: Daniel Gibbs
# Website: https://linuxgsm.com
# Description: Will run update-lgsm if gameserver.sh and modules version does not match
# this will allow gameserver.sh to update - useful for multi instance servers.
if [ -n "${modulesversion}" ]&&[ -n "${version}" ]&&[ "${version}" != "${modulesversion}" ]; then
exitbypass=1
echo -e ""
fn_print_error_nl "LinuxGSM version mismatch"
echo -e ""
echo -e "* ${selfname}: ${version}"
echo -e "* modules: ${modulesversion}"
echo -e ""
fn_sleep_time
fn_script_log_error "LinuxGSM Version mismatch: ${selfname}: ${version}: modules: ${modulesversion}"
command_update_linuxgsm.sh
fi

24
lgsm/functions/command_backup.sh

@ -5,9 +5,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Creates a .tar.gz file in the backup directory. # Description: Creates a .tar.gz file in the backup directory.
local modulename="BACKUP" commandname="BACKUP"
local commandaction="Backup" commandaction="Backing up"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
check.sh check.sh
@ -22,15 +22,15 @@ fn_backup_trap(){
fn_print_removed_eol_nl fn_print_removed_eol_nl
fn_script_log_info "Backup ${backupname}.tar.gz: REMOVED" fn_script_log_info "Backup ${backupname}.tar.gz: REMOVED"
# Remove lock file. # Remove lock file.
rm -f "${lockdir:?}/.backup.lock" rm -f "${lockdir:?}/backup.lock"
core_exit.sh core_exit.sh
} }
# Check if a backup is pending or has been aborted using .backup.lock. # Check if a backup is pending or has been aborted using backup.lock.
fn_backup_check_lockfile(){ fn_backup_check_lockfile(){
if [ -f "${lockdir}/.backup.lock" ]; then if [ -f "${lockdir}/backup.lock" ]; then
fn_print_info_nl "Lock file found: Backup is currently running" fn_print_info_nl "Lock file found: Backup is currently running"
fn_script_log_error "Lock file found: Backup is currently running: ${lockdir}/.backup.lock" fn_script_log_error "Lock file found: Backup is currently running: ${lockdir}/backup.lock"
core_exit.sh core_exit.sh
fi fi
} }
@ -115,9 +115,9 @@ fn_backup_migrate_olddir(){
fn_backup_create_lockfile(){ fn_backup_create_lockfile(){
# Create lockfile. # Create lockfile.
date '+%s' > "${lockdir}/.backup.lock" date '+%s' > "${lockdir}/backup.lock"
fn_script_log_info "Lockfile generated" fn_script_log_info "Lockfile generated"
fn_script_log_info "${lockdir}/.backup.lock" fn_script_log_info "${lockdir}/backup.lock"
# trap to remove lockfile on quit. # trap to remove lockfile on quit.
trap fn_backup_trap INT trap fn_backup_trap INT
} }
@ -138,12 +138,12 @@ fn_backup_compression(){
core_exit.sh core_exit.sh
fi fi
tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "${excludedir}" --exclude "${lockdir}/.backup.lock" ./. tar -czf "${backupdir}/${backupname}.tar.gz" -C "${rootdir}" --exclude "${excludedir}" --exclude "${lockdir}/backup.lock" ./.
local exitcode=$? local exitcode=$?
if [ ${exitcode} -ne 0 ]; then if [ ${exitcode} -ne 0 ]; then
fn_print_fail_eol fn_print_fail_eol
fn_script_log_fatal "Backup in progress: FAIL" fn_script_log_fatal "Backup in progress: FAIL"
echo -e "${tarcmd}" | tee -a "${lgsmlog}" echo -e "${extractcmd}" | tee -a "${lgsmlog}"
fn_print_fail_nl "Starting backup" fn_print_fail_nl "Starting backup"
fn_script_log_fatal "Starting backup" fn_script_log_fatal "Starting backup"
else else
@ -152,7 +152,7 @@ fn_backup_compression(){
fn_script_log_pass "Backup created: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')" fn_script_log_pass "Backup created: ${backupname}.tar.gz, total size $(du -sh "${backupdir}/${backupname}.tar.gz" | awk '{print $1}')"
fi fi
# Remove lock file # Remove lock file
rm -f "${lockdir:?}/.backup.lock" rm -f "${lockdir:?}/backup.lock"
} }
# Clear old backups according to maxbackups and maxbackupdays variables. # Clear old backups according to maxbackups and maxbackupdays variables.

8
lgsm/functions/command_console.sh

@ -4,9 +4,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Gives access to the server tmux console. # Description: Gives access to the server tmux console.
local modulename="CONSOLE" commandname="CONSOLE"
local commandaction="Console" commandaction="Access console"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
check.sh check.sh
fn_print_header fn_print_header
@ -26,7 +26,7 @@ check_status.sh
if [ "${status}" != "0" ]; then if [ "${status}" != "0" ]; then
fn_print_ok_nl "Accessing console" fn_print_ok_nl "Accessing console"
fn_script_log_pass "Console accessed" fn_script_log_pass "Console accessed"
tmux attach-session -t "${selfname}" tmux attach-session -t "${sessionname}"
fn_print_ok_nl "Closing console" fn_print_ok_nl "Closing console"
fn_script_log_pass "Console closed" fn_script_log_pass "Console closed"
else else

25
lgsm/functions/command_debug.sh

@ -4,9 +4,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Runs the server without tmux and directly from the terminal. # Description: Runs the server without tmux and directly from the terminal.
local modulename="DEBUG" commandname="DEBUG"
local commandaction="Debug" commandaction="Debuging"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Trap to remove lockfile on quit. # Trap to remove lockfile on quit.
fn_lockfile_trap(){ fn_lockfile_trap(){
@ -14,8 +14,11 @@ fn_lockfile_trap(){
rm -f "${lockdir:?}/${selfname}.lock" rm -f "${lockdir:?}/${selfname}.lock"
# resets terminal. Servers can sometimes mess up the terminal on exit. # resets terminal. Servers can sometimes mess up the terminal on exit.
reset reset
fn_print_ok_nl "Closing debug" fn_print_dots "Stopping debug"
fn_script_log_pass "Debug closed" fn_print_ok_nl "Stopping debug"
fn_script_log_pass "Stopping debug"
# remove trap.
trap - INT
core_exit.sh core_exit.sh
} }
@ -85,6 +88,7 @@ fn_print_info_nl "Stopping any running servers"
fn_script_log_info "Stopping any running servers" fn_script_log_info "Stopping any running servers"
exitbypass=1 exitbypass=1
command_stop.sh command_stop.sh
unset exitbypass
fn_print_dots "Starting debug" fn_print_dots "Starting debug"
fn_script_log_info "Starting debug" fn_script_log_info "Starting debug"
fn_print_ok_nl "Starting debug" fn_print_ok_nl "Starting debug"
@ -93,27 +97,26 @@ fn_print_ok_nl "Starting debug"
date '+%s' > "${lockdir}/${selfname}.lock" date '+%s' > "${lockdir}/${selfname}.lock"
fn_script_log_info "Lockfile generated" fn_script_log_info "Lockfile generated"
fn_script_log_info "${lockdir}/${selfname}.lock" fn_script_log_info "${lockdir}/${selfname}.lock"
# trap to remove lockfile on quit.
trap fn_lockfile_trap INT
cd "${executabledir}" || exit cd "${executabledir}" || exit
# Note: do not add double quotes to ${executable} ${parms}. # Note: do not add double quotes to ${executable} ${parms}.
if [ "${engine}" == "source" ]||[ "${engine}" == "goldsrc" ]; then if [ "${engine}" == "source" ]||[ "${engine}" == "goldsrc" ]; then
${executable} ${parms} -debug ${executable} ${parms} -debug
elif [ "${engine}" == "realvirtuality" ]; then elif [ "${shortname}" == "arma3" ]; then
# Arma3 requires semicolons in the module list, which need to # Arma3 requires semicolons in the module list, which need to
# be escaped for regular (tmux) loading, but need to be # be escaped for regular (tmux) loading, but need to be
# stripped when loading straight from the console. # stripped when loading straight from the console.
${executable} ${parms//\\;/;} ${executable} ${parms//\\;/;}
elif [ "${engine}" == "quake" ]; then elif [ "${engine}" == "quake" ]; then
${executable} ${parms} -condebug ${executable} ${parms} -condebug
else else
${executable} ${parms} ${executable} ${parms}
fi fi
fn_lockfile_trap
fn_print_dots "Stopping debug" fn_print_dots "Stopping debug"
fn_print_ok_nl "Stopping debug" fn_print_ok_nl "Stopping debug"
# remove trap. fn_script_log_info "Stopping debug"
trap - INT
core_exit.sh core_exit.sh

6
lgsm/functions/command_details.sh

@ -5,9 +5,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Displays server information. # Description: Displays server information.
local modulename="DETAILS" commandname="DETAILS"
local commandaction="Details" commandaction="Viewing details"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Run checks and gathers details to display. # Run checks and gathers details to display.
check.sh check.sh

6
lgsm/functions/command_dev_clear_functions.sh

@ -4,6 +4,10 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Deletes the contents of the functions dir. # Description: Deletes the contents of the functions dir.
commandname="DEV-CLEAR-MODULES"
commandaction="Clearing modules"
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
echo -e "=================================" echo -e "================================="
echo -e "Clear Functions" echo -e "Clear Functions"
echo -e "=================================" echo -e "================================="
@ -11,6 +15,8 @@ echo -e ""
if fn_prompt_yn "Do you want to delete all functions?" Y; then if fn_prompt_yn "Do you want to delete all functions?" Y; then
rm -rfv "${functionsdir:?}/"* rm -rfv "${functionsdir:?}/"*
rm -rfv "${configdirdefault:?}/"* rm -rfv "${configdirdefault:?}/"*
fn_script_log_info "Cleared modules directory"
fn_script_log_info "Cleared default config directory"
fi fi
core_exit.sh core_exit.sh

6
lgsm/functions/command_dev_debug.sh

@ -4,9 +4,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Dev only: Enables debugging log to be saved to dev-debug.log. # Description: Dev only: Enables debugging log to be saved to dev-debug.log.
local modulename="DEV-DEBUG" commandname="DEV-DEBUG"
local commandaction="Dev Debug" commandaction="Developer debug"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ -f "${rootdir}/.dev-debug" ]; then if [ -f "${rootdir}/.dev-debug" ]; then
rm "${rootdir:?}/.dev-debug" rm "${rootdir:?}/.dev-debug"

12
lgsm/functions/command_dev_detect_deps.sh

@ -4,9 +4,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Detects dependencies the server binary requires. # Description: Detects dependencies the server binary requires.
local modulename="DETECT-DEPS" commandname="DEV-DETECT-DEPS"
local commandaction="Detect Deps" commandaction="Developer detect deps"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
echo -e "=================================" echo -e "================================="
echo -e "Dependencies Checker" echo -e "Dependencies Checker"
@ -40,7 +40,7 @@ touch "${tmpdir}/.depdetect_debian_list"
while read -r lib; do while read -r lib; do
echo -e "${lib}" echo -e "${lib}"
local libs_array=( libm.so.6 libc.so.6 libtcmalloc_minimal.so.4 libpthread.so.0 libdl.so.2 libnsl.so.1 libgcc_s.so.1 librt.so.1 ld-linux.so.2 libdbus-glib-1.so.2 libgio-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libnm-glib.so.4 libnm-util.so.2 ) libs_array=( libm.so.6 libc.so.6 libtcmalloc_minimal.so.4 libpthread.so.0 libdl.so.2 libnsl.so.1 libgcc_s.so.1 librt.so.1 ld-linux.so.2 libdbus-glib-1.so.2 libgio-2.0.so.0 libglib-2.0.so.0 libGL.so.1 libgobject-2.0.so.0 libnm-glib.so.4 libnm-util.so.2 )
for lib_file in "${libs_array[@]}" for lib_file in "${libs_array[@]}"
do do
if [ "${lib}" == "${lib_file}" ]; then if [ "${lib}" == "${lib_file}" ]; then
@ -51,7 +51,7 @@ while read -r lib; do
fi fi
done done
local libs_array=( libawt.so libjava.so libjli.so libjvm.so libnet.so libnio.so libverify.so ) libs_array=( libawt.so libjava.so libjli.so libjvm.so libnet.so libnio.so libverify.so )
for lib_file in "${libs_array[@]}" for lib_file in "${libs_array[@]}"
do do
if [ "${lib}" == "${lib_file}" ]; then if [ "${lib}" == "${lib_file}" ]; then
@ -62,7 +62,7 @@ while read -r lib; do
fi fi
done done
local libs_array=( libtier0.so libtier0_srv.so libvstdlib_srv.so Core.so libvstdlib.so libtier0_s.so Editor.so Engine.so liblua.so libsteam_api.so ld-linux-x86-64.so.2 libPhysX3_x86.so libPhysX3Common_x86.so libPhysX3Cooking_x86.so) libs_array=( libtier0.so libtier0_srv.so libvstdlib_srv.so Core.so libvstdlib.so libtier0_s.so Editor.so Engine.so liblua.so libsteam_api.so ld-linux-x86-64.so.2 libPhysX3_x86.so libPhysX3Common_x86.so libPhysX3Cooking_x86.so)
for lib_file in "${libs_array[@]}" for lib_file in "${libs_array[@]}"
do do
# Known shared libs what dont requires dependencies. # Known shared libs what dont requires dependencies.

8
lgsm/functions/command_dev_detect_glibc.sh

@ -5,9 +5,9 @@
# Description: Automatically detects the version of GLIBC that is required. # Description: Automatically detects the version of GLIBC that is required.
# Can check a file or directory recursively. # Can check a file or directory recursively.
local modulename="DETECT-GLIBC" commandname="DEV-DETECT-GLIBC"
local commandaction="Detect Glibc" commandaction="Developer detect glibc"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
echo -e "=================================" echo -e "================================="
echo -e "glibc Requirements Checker" echo -e "glibc Requirements Checker"
@ -33,7 +33,7 @@ fi
echo -e "" echo -e ""
local glibc_check_dir_array=( steamcmddir serverfiles ) glibc_check_dir_array=( steamcmddir serverfiles )
for glibc_check_var in "${glibc_check_dir_array[@]}" for glibc_check_var in "${glibc_check_dir_array[@]}"
do do
if [ "${glibc_check_var}" == "serverfiles" ]; then if [ "${glibc_check_var}" == "serverfiles" ]; then

6
lgsm/functions/command_dev_detect_ldd.sh

@ -5,9 +5,9 @@
# Description: Automatically detects required deps using ldd. # Description: Automatically detects required deps using ldd.
# Can check a file or directory recursively. # Can check a file or directory recursively.
local modulename="DETECT-LDD" commandname="DEV-DETECT-LDD"
local commandaction="Detect LDD" commandaction="Developer detect ldd"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
echo -e "=================================" echo -e "================================="
echo -e "Shared Object dependencies Checker" echo -e "Shared Object dependencies Checker"

8
lgsm/functions/command_dev_query_raw.sh

@ -4,9 +4,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Raw gamedig output of the server. # Description: Raw gamedig output of the server.
local modulename="QUERY-RAW" commandname="DEV-QUERY-RAW"
local commandaction="Query Raw" commandaction="Developer query raw"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
check.sh check.sh
info_config.sh info_config.sh
@ -35,7 +35,7 @@ fi
query_gamedig.sh query_gamedig.sh
echo -e "${gamedigcmd}" echo -e "${gamedigcmd}"
echo"" echo""
echo -e "${gamedigraw}" | jq echo "${gamedigraw}" | jq
echo -e "" echo -e ""
echo -e "gsquery Raw Output" echo -e "gsquery Raw Output"

6
lgsm/functions/command_donate.sh

@ -4,9 +4,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Shows ways to donate. # Description: Shows ways to donate.
local modulename="CONSOLE" commandname="DONATE"
local commandaction="Console" commandaction="Donate"
local function_selfname=$(basename "$(readlink -f "${BASH_SOURCE[0]}")") functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_print_ascii_logo fn_print_ascii_logo
echo -e "${lightyellow}Support LinuxGSM${default}" echo -e "${lightyellow}Support LinuxGSM${default}"

11
lgsm/functions/command_fastdl.sh

@ -5,9 +5,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Creates a FastDL directory. # Description: Creates a FastDL directory.
local modulename="FASTDL" commandname="FASTDL"
local commandaction="FastDL" commandaction="Fastdl"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
check.sh check.sh
@ -77,7 +77,6 @@ fn_clear_old_fastdl(){
fn_print_ok_eol_nl fn_print_ok_eol_nl
fn_script_log_pass "Clearing existing FastDL directory ${fastdldir}" fn_script_log_pass "Clearing existing FastDL directory ${fastdldir}"
fi fi
fn_sleep_time
fi fi
} }
@ -95,7 +94,6 @@ fn_fastdl_dirs(){
fn_print_ok_eol_nl fn_print_ok_eol_nl
fn_script_log_pass "Creating web directory ${webdir}" fn_script_log_pass "Creating web directory ${webdir}"
fi fi
fn_sleep_time
fi fi
if [ ! -d "${fastdldir}" ]; then if [ ! -d "${fastdldir}" ]; then
echo -en "creating fastdl directory ${fastdldir}..." echo -en "creating fastdl directory ${fastdldir}..."
@ -109,7 +107,6 @@ fn_fastdl_dirs(){
fn_print_ok_eol_nl fn_print_ok_eol_nl
fn_script_log_pass "Creating fastdl directory ${fastdldir}" fn_script_log_pass "Creating fastdl directory ${fastdldir}"
fi fi
fn_sleep_time
fi fi
} }
@ -135,7 +132,7 @@ fn_human_readable_file_size(){
local factor="${item%:*}" local factor="${item%:*}"
local abbrev="${item#*:}" local abbrev="${item#*:}"
if [[ "${bytes}" -ge "${factor}" ]]; then if [[ "${bytes}" -ge "${factor}" ]]; then
local size=$(bc -l <<< "${bytes} / ${factor}") size=$(bc -l <<< "${bytes} / ${factor}")
printf "%.*f %s\n" "${precision}" "${size}" "${abbrev}" printf "%.*f %s\n" "${precision}" "${size}" "${abbrev}"
break break
fi fi

6
lgsm/functions/command_install.sh

@ -5,9 +5,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Overall function for the installer. # Description: Overall function for the installer.
local modulename="INSTALL" commandname="INSTALL"
local commandaction="Install" commandaction="Installing"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
check.sh check.sh
if [ "$(whoami)" = "root" ]; then if [ "$(whoami)" = "root" ]; then

6
lgsm/functions/command_install_resources_mta.sh

@ -4,9 +4,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Installs the default resources for Multi Theft Auto. # Description: Installs the default resources for Multi Theft Auto.
local modulename="DEFAULT_RESOURCES" commandname="DEFAULT-RESOURCES"
local commandaction="Default Resources" commandaction="Default Resources"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_install_resources(){ fn_install_resources(){
echo -e "" echo -e ""

6
lgsm/functions/command_mods_install.sh

@ -5,9 +5,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: List and installs available mods along with mods_list.sh and mods_core.sh. # Description: List and installs available mods along with mods_list.sh and mods_core.sh.
local modulename="MODS" commandname="MODS-INSTALL"
local commandaction="addons/mods" commandaction="Installing mods"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
check.sh check.sh
mods_core.sh mods_core.sh

7
lgsm/functions/command_mods_remove.sh

@ -5,9 +5,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Uninstall mods along with mods_list.sh and mods_core.sh. # Description: Uninstall mods along with mods_list.sh and mods_core.sh.
local modulename="MODS" commandname="MODS-REMOVE"
local commandaction="Mods Remove" commandaction="Removing mods"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
check.sh check.sh
mods_core.sh mods_core.sh
@ -87,7 +87,6 @@ if [ ${exitcode} -ne 0 ]; then
else else
fn_print_ok_eol_nl fn_print_ok_eol_nl
fi fi
fn_sleep_time
# Remove file list. # Remove file list.
echo -en "removing ${modcommand}-files.txt..." echo -en "removing ${modcommand}-files.txt..."
fn_sleep_time fn_sleep_time

6
lgsm/functions/command_mods_update.sh

@ -5,9 +5,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Updates installed mods along with mods_list.sh and mods_core.sh. # Description: Updates installed mods along with mods_list.sh and mods_core.sh.
local modulename="MODS" commandname="MODS-UPDATE"
local commandaction="Mods Update" commandaction="Updating mods"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
check.sh check.sh
mods_core.sh mods_core.sh

44
lgsm/functions/command_monitor.sh

@ -6,9 +6,9 @@
# Description: Monitors server by checking for running processes # Description: Monitors server by checking for running processes
# then passes to gamedig and gsquery. # then passes to gamedig and gsquery.
local modulename="MONITOR" commandname="MONITOR"
local commandaction="Monitor" commandaction="Monitoring"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_monitor_check_lockfile(){ fn_monitor_check_lockfile(){
# Monitor does not run it lockfile is not found. # Monitor does not run it lockfile is not found.
@ -16,17 +16,15 @@ fn_monitor_check_lockfile(){
fn_print_dots "Checking lockfile: " fn_print_dots "Checking lockfile: "
fn_print_checking_eol fn_print_checking_eol
fn_script_log_info "Checking lockfile: CHECKING" fn_script_log_info "Checking lockfile: CHECKING"
fn_sleep_time
fn_print_error "Checking lockfile: No lockfile found: " fn_print_error "Checking lockfile: No lockfile found: "
fn_print_error_eol_nl fn_print_error_eol_nl
fn_script_log_error "Checking lockfile: No lockfile found: ERROR" fn_script_log_error "Checking lockfile: No lockfile found: ERROR"
fn_sleep_time
echo -e "* Start ${selfname} to run monitor." echo -e "* Start ${selfname} to run monitor."
core_exit.sh core_exit.sh
fi fi
# Fix if lockfile is not unix time or contains letters # Fix if lockfile is not unix time or contains letters
if [[ "$(cat "${lockdir}/${selfname}.lock")" =~ [A-Za-z] ]]; then if [ -f "${lockdir}/${selfname}.lock" ]&&[[ "$(cat "${lockdir}/${selfname}.lock")" =~ [A-Za-z] ]]; then
date '+%s' > "${lockdir}/${selfname}.lock" date '+%s' > "${lockdir}/${selfname}.lock"
fi fi
} }
@ -37,11 +35,9 @@ fn_monitor_check_update(){
fn_print_dots "Checking active updates: " fn_print_dots "Checking active updates: "
fn_print_checking_eol fn_print_checking_eol
fn_script_log_info "Checking active updates: CHECKING" fn_script_log_info "Checking active updates: CHECKING"
fn_sleep_time
fn_print_error_nl "Checking active updates: SteamCMD is currently checking for updates: " fn_print_error_nl "Checking active updates: SteamCMD is currently checking for updates: "
fn_print_error_eol fn_print_error_eol
fn_script_log_error "Checking active updates: SteamCMD is currently checking for updates: ERROR" fn_script_log_error "Checking active updates: SteamCMD is currently checking for updates: ERROR"
fn_sleep_time
core_exit.sh core_exit.sh
fi fi
} }
@ -50,18 +46,15 @@ fn_monitor_check_session(){
fn_print_dots "Checking session: " fn_print_dots "Checking session: "
fn_print_checking_eol fn_print_checking_eol
fn_script_log_info "Checking session: CHECKING" fn_script_log_info "Checking session: CHECKING"
fn_sleep_time
# uses status var from check_status.sh # uses status var from check_status.sh
if [ "${status}" != "0" ]; then if [ "${status}" != "0" ]; then
fn_print_ok "Checking session: " fn_print_ok "Checking session: "
fn_print_ok_eol_nl fn_print_ok_eol_nl
fn_script_log_pass "Checking session: OK" fn_script_log_pass "Checking session: OK"
fn_sleep_time
else else
fn_print_error "Checking session: " fn_print_error "Checking session: "
fn_print_fail_eol_nl fn_print_fail_eol_nl
fn_script_log_fatal "Checking session: FAIL" fn_script_log_fatal "Checking session: FAIL"
fn_sleep_time
alert="restart" alert="restart"
alert.sh alert.sh
fn_script_log_info "Checking session: Monitor is restarting ${selfname}" fn_script_log_info "Checking session: Monitor is restarting ${selfname}"
@ -76,7 +69,6 @@ fn_monitor_check_queryport(){
fn_print_dots "Checking port: " fn_print_dots "Checking port: "
fn_print_checking_eol fn_print_checking_eol
fn_script_log_info "Checking port: CHECKING" fn_script_log_info "Checking port: CHECKING"
fn_sleep_time
if [ -n "${rconenabled}" ]&&[ "${rconenabled}" != "true" ]&&[ ${shortname} == "av" ]; then if [ -n "${rconenabled}" ]&&[ "${rconenabled}" != "true" ]&&[ ${shortname} == "av" ]; then
fn_print_warn "Checking port: Unable to query as rconport, rcon not enabled: " fn_print_warn "Checking port: Unable to query as rconport, rcon not enabled: "
fn_print_warn_eol_nl fn_print_warn_eol_nl
@ -86,7 +78,6 @@ fn_monitor_check_queryport(){
fn_print_error_eol_nl fn_print_error_eol_nl
fn_script_log_error "Checking port: Unable to query as queryport is not set: ERROR" fn_script_log_error "Checking port: Unable to query as queryport is not set: ERROR"
fi fi
fn_sleep_time
core_exit.sh core_exit.sh
fi fi
} }
@ -112,14 +103,14 @@ for queryattempt in {1..5}; do
fn_print_dots "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: " fn_print_dots "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: "
fn_print_querying_eol fn_print_querying_eol
fn_script_log_info "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt} : QUERYING" fn_script_log_info "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt} : QUERYING"
fn_sleep_time
# querydelay # querydelay
if [ "$(cat "${lockdir}/${selfname}.lock")" -gt "$(date "+%s" -d "${querydelay} mins ago")" ]; then if [ "$(cat "${lockdir}/${selfname}.lock")" -gt "$(date "+%s" -d "${querydelay} mins ago")" ]; then
fn_print_ok "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: " fn_print_ok "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: "
fn_print_delay_eol_nl fn_print_delay_eol_nl
fn_script_log_info "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt} : DELAY" fn_script_log_info "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt} : DELAY"
fn_script_log_info "Query bypassed: ${gameservername} started less than ${querydelay} minutes ago" fn_script_log_info "Query bypassed: ${gameservername} started less than ${querydelay} minutes ago"
fn_sleep_time fn_script_log_info "Server started: $(date -d @$(cat lgsm/lock/bmdmserver.lock))"
fn_script_log_info "Current time: $(date)"
monitorpass=1 monitorpass=1
core_exit.sh core_exit.sh
# will use query method selected in fn_monitor_loop # will use query method selected in fn_monitor_loop
@ -139,13 +130,8 @@ for queryattempt in {1..5}; do
fn_print_ok "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: " fn_print_ok "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: "
fn_print_ok_eol_nl fn_print_ok_eol_nl
fn_script_log_pass "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt}: OK" fn_script_log_pass "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt}: OK"
fn_sleep_time
monitorpass=1 monitorpass=1
# send LinuxGSM stats if monitor is OK. if [ "${querystatus}" == "0" ]; then
if [ "${stats}" == "on" ]||[ "${stats}" == "y" ]; then
info_stats.sh
fi
if [ "${querystatus}" == "0" ]; then
# Add query data to log. # Add query data to log.
if [ "${gdname}" ]; then if [ "${gdname}" ]; then
fn_script_log_info "Server name: ${gdname}" fn_script_log_info "Server name: ${gdname}"
@ -154,14 +140,19 @@ for queryattempt in {1..5}; do
fn_script_log_info "Players: ${gdplayers}/${gdmaxplayers}" fn_script_log_info "Players: ${gdplayers}/${gdmaxplayers}"
fi fi
if [ "${gdbots}" ]; then if [ "${gdbots}" ]; then
fn_script_log_info "Bots: ${gdbots}" fn_script_log_info "Bots: ${gdbots}"
fi fi
if [ "${gdmap}" ]; then if [ "${gdmap}" ]; then
fn_script_log_info "Map: ${gdmap}" fn_script_log_info "Map: ${gdmap}"
fi fi
if [ "${gdgamemode}" ]; then if [ "${gdgamemode}" ]; then
fn_script_log_info "Game Mode: ${gdgamemode}" fn_script_log_info "Game Mode: ${gdgamemode}"
fi fi
# send LinuxGSM stats if monitor is OK.
if [ "${stats}" == "on" ]||[ "${stats}" == "y" ]; then
info_stats.sh
fi
fi fi
core_exit.sh core_exit.sh
else else
@ -169,7 +160,6 @@ for queryattempt in {1..5}; do
fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: " fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: "
fn_print_fail_eol fn_print_fail_eol
fn_script_log_warn "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt}: FAIL" fn_script_log_warn "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt}: FAIL"
fn_sleep_time
# Monitor will try gamedig (if supported) for first 30s then gsquery before restarting. # Monitor will try gamedig (if supported) for first 30s then gsquery before restarting.
if [ "${querymethod}" == "gsquery" ]||[ "${querymethod}" == "tcp" ]; then if [ "${querymethod}" == "gsquery" ]||[ "${querymethod}" == "tcp" ]; then
# gsquery will fail if longer than 60s # gsquery will fail if longer than 60s
@ -178,7 +168,6 @@ for queryattempt in {1..5}; do
fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: " fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: "
fn_print_fail_eol_nl fn_print_fail_eol_nl
fn_script_log_warn "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt}: FAIL" fn_script_log_warn "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt}: FAIL"
fn_sleep_time
# Send alert if enabled. # Send alert if enabled.
alert="restartquery" alert="restartquery"
alert.sh alert.sh
@ -194,7 +183,8 @@ for queryattempt in {1..5}; do
# Second counter will wait for 15s before breaking loop. # Second counter will wait for 15s before breaking loop.
for seconds in {1..15}; do for seconds in {1..15}; do
fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: WAIT" fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: ${cyan}WAIT${default}"
sleep 0.5
totalseconds=$((totalseconds + 1)) totalseconds=$((totalseconds + 1))
if [ "${seconds}" == "15" ]; then if [ "${seconds}" == "15" ]; then
break break
@ -239,7 +229,7 @@ fn_monitor_loop(){
monitorflag=1 monitorflag=1
check.sh check.sh
logs.sh core_logs.sh
info_config.sh info_config.sh
info_parms.sh info_parms.sh

34
lgsm/functions/command_postdetails.sh

@ -5,9 +5,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Strips sensitive information out of Details output # Description: Strips sensitive information out of Details output
local modulename="POSTDETAILS" commandname="POST-DETAILS"
local commandaction="Postdetails" commandaction="Posting details"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Set posttarget to the appropriately-defined post destination. # Set posttarget to the appropriately-defined post destination.
@ -74,14 +74,13 @@ else
fn_info_message_ports fn_info_message_ports
fn_info_message_select_engine fn_info_message_select_engine
fn_info_message_statusbottom fn_info_message_statusbottom
} | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g"| tee -a "${postdetailslog}" > /dev/null 2>&1 } | sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" | tee -a "${postdetailslog}" > /dev/null 2>&1
fi fi
# Pastebin
if [ "${posttarget}" == "http://pastebin.com" ] ; then if [ "${posttarget}" == "http://pastebin.com" ] ; then
fn_print_dots "pastbin.com for ${postexpire}" fn_print_dots "pastbin.com for ${postexpire}"
# grab the return from 'value' from an initial visit to pastebin. # grab the return from 'value' from an initial visit to pastebin.
csrftoken=$(curl -s "${posttarget}" | csrftoken=$(curl -s "${posttarget}" | sed -n 's/^.*input type="hidden" name="csrf_token_post" value="\(.*\)".*$/\1/p')
sed -n 's/^.*input type="hidden" name="csrf_token_post" value="\(.*\)".*$/\1/p')
# #
# Use the csrftoken to then post the content. # Use the csrftoken to then post the content.
# #
@ -94,9 +93,9 @@ if [ "${posttarget}" == "http://pastebin.com" ] ; then
# Output the resulting link. # Output the resulting link.
fn_print_ok_nl "pastbin.com for ${postexpire}" fn_print_ok_nl "pastbin.com for ${postexpire}"
fn_script_log_pass "pastbin.com for ${postexpire}"
pdurl="${posttarget}${link}" pdurl="${posttarget}${link}"
echo -e "" # Hastebin
echo -e " Please share the following url for support: ${pdurl}"
elif [ "${posttarget}" == "https://hastebin.com" ] ; then elif [ "${posttarget}" == "https://hastebin.com" ] ; then
fn_print_dots "hastebin.com" fn_print_dots "hastebin.com"
# hastebin is a bit simpler. If successful, the returned result # hastebin is a bit simpler. If successful, the returned result
@ -104,21 +103,20 @@ elif [ "${posttarget}" == "https://hastebin.com" ] ; then
# we need in "key". TODO - error handling. -CedarLUG # we need in "key". TODO - error handling. -CedarLUG
link=$(curl -H "HTTP_X_REQUESTED_WITH:XMLHttpRequest" -s -d "$(<${postdetailslog})" "${posttarget}/documents" | cut -d\" -f4) link=$(curl -H "HTTP_X_REQUESTED_WITH:XMLHttpRequest" -s -d "$(<${postdetailslog})" "${posttarget}/documents" | cut -d\" -f4)
fn_print_ok_nl "hastebin.com for ${postexpire}" fn_print_ok_nl "hastebin.com for ${postexpire}"
fn_script_log_pass "hastebin.com for ${postexpire}"
pdurl="${posttarget}/${link}" pdurl="${posttarget}/${link}"
echo -e "" # Termbin
echo -e "Please share the following url for support: ${pdurl}"
elif [ "${posttarget}" == "https://termbin.com" ] ; then elif [ "${posttarget}" == "https://termbin.com" ] ; then
fn_print_dots "termbin.com" fn_print_dots "termbin.com"
link=$(cat "${postdetailslog}" | nc termbin.com 9999 | tr -d '\n\0') link=$(cat "${postdetailslog}" | nc termbin.com 9999 | tr -d '\n\0')
fn_print_ok_nl "termbin.com" fn_print_ok_nl "termbin.com for 30D"
fn_script_log_pass "termbin.com for 30D"
pdurl="${link}" pdurl="${link}"
echo -e ""
echo -e "Please share the following url for support: "
echo -e "${pdurl}"
else
fn_print_warn_nl "Review output in: ${postdetailslog}"
core_exit.sh
fi fi
echo -e ""
echo -e "Please share the following url for support: "
echo -e "${pdurl}"
fn_script_log_info "${pdurl}"
if [ -z "${exitbypass}" ]; then if [ -z "${exitbypass}" ]; then
core_exit.sh core_exit.sh

6
lgsm/functions/command_restart.sh

@ -4,9 +4,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Restarts the server. # Description: Restarts the server.
local modulename="RESTART" commandname="MODS-INSTALL"
local commandaction="Restarting" commandaction="Restarting"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
info_config.sh info_config.sh
exitbypass=1 exitbypass=1

31
lgsm/functions/command_start.sh

@ -5,9 +5,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Starts the server. # Description: Starts the server.
local modulename="START" commandname="START"
local commandaction="Starting" commandaction="Starting"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_start_teamspeak3(){ fn_start_teamspeak3(){
if [ ! -f "${servercfgfullpath}" ]; then if [ ! -f "${servercfgfullpath}" ]; then
@ -62,9 +62,9 @@ fn_start_tmux(){
fi fi
# Create lockfile # Create lockfile
date > "${lockdir}/${selfname}.lock" date '+%s' > "${lockdir}/${selfname}.lock"
cd "${executabledir}" || exit cd "${executabledir}" || exit
tmux new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${selfname}" "${executable} ${parms}" 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp" tmux new-session -d -x "${sessionwidth}" -y "${sessionheight}" -s "${sessionname}" "${executable} ${parms}" 2> "${lgsmlogdir}/.${selfname}-tmux-error.tmp"
# Create logfile. # Create logfile.
touch "${consolelog}" touch "${consolelog}"
@ -79,7 +79,7 @@ fn_start_tmux(){
fn_script_log "Tmux version: master (user compiled)" fn_script_log "Tmux version: master (user compiled)"
echo -e "Tmux version: master (user compiled)" >> "${consolelog}" echo -e "Tmux version: master (user compiled)" >> "${consolelog}"
if [ "${consolelogging}" == "on" ]||[ -z "${consolelogging}" ]; then if [ "${consolelogging}" == "on" ]||[ -z "${consolelogging}" ]; then
tmux pipe-pane -o -t "${selfname}" "exec cat >> '${consolelog}'" tmux pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'"
fi fi
elif [ "${tmuxversion}" ]; then elif [ "${tmuxversion}" ]; then
# Get the digit version of tmux. # Get the digit version of tmux.
@ -97,19 +97,19 @@ fn_start_tmux(){
Currently installed: $(tmux -V)" > "${consolelog}" Currently installed: $(tmux -V)" > "${consolelog}"
# Console logging enable or not set. # Console logging enable or not set.
elif [ "${consolelogging}" == "on" ]||[ -z "${consolelogging}" ]; then elif [ "${consolelogging}" == "on" ]||[ -z "${consolelogging}" ]; then
tmux pipe-pane -o -t "${selfname}" "exec cat >> '${consolelog}'" tmux pipe-pane -o -t "${sessionname}" "exec cat >> '${consolelog}'"
fi fi
else else
echo -e "Unable to detect tmux version" >> "${consolelog}" echo -e "Unable to detect tmux version" >> "${consolelog}"
fn_script_log_warn "Unable to detect tmux version" fn_script_log_warn "Unable to detect tmux version"
fi fi
# Console logging disabled. # Console logging disabled.
if [ "${consolelogging}" == "off" ]; then if [ "${consolelogging}" == "off" ]; then
echo -e "Console logging disabled by user" >> "${consolelog}" echo -e "Console logging disabled by user" >> "${consolelog}"
fn_script_log_info "Console logging disabled by user" fn_script_log_info "Console logging disabled by user"
fi fi
fn_sleep_time fn_sleep_time
# If the server fails to start. # If the server fails to start.
check_status.sh check_status.sh
@ -122,7 +122,7 @@ fn_sleep_time
echo -e "" echo -e ""
echo -e "Command" echo -e "Command"
echo -e "=================================" echo -e "================================="
echo -e "tmux new-session -d -s \"${selfname}\" \"${executable} ${parms}\"" | tee -a "${lgsmlog}" echo -e "tmux new-session -d -s \"${sessionname}\" \"${executable} ${parms}\"" | tee -a "${lgsmlog}"
echo -e "" echo -e ""
echo -e "Error" echo -e "Error"
echo -e "=================================" echo -e "================================="
@ -156,7 +156,6 @@ fn_sleep_time
fi fi
fi fi
fi fi
core_exit.sh core_exit.sh
else else
fn_print_ok "${servername}" fn_print_ok "${servername}"
@ -183,7 +182,7 @@ if [ -z "${fixbypass}" ]; then
fix.sh fix.sh
fi fi
info_config.sh info_config.sh
logs.sh core_logs.sh
# Will check for updates is updateonstart is yes. # Will check for updates is updateonstart is yes.
if [ "${updateonstart}" == "yes" ]||[ "${updateonstart}" == "1" ]||[ "${updateonstart}" == "on" ]; then if [ "${updateonstart}" == "yes" ]||[ "${updateonstart}" == "1" ]||[ "${updateonstart}" == "on" ]; then

26
lgsm/functions/command_stop.sh

@ -5,16 +5,16 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Stops the server. # Description: Stops the server.
local modulename="STOP" commandname="STOP"
local commandaction="Stopping" commandaction="Stopping"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Attempts graceful shutdown by sending 'CTRL+c'. # Attempts graceful shutdown by sending 'CTRL+c'.
fn_stop_graceful_ctrlc(){ fn_stop_graceful_ctrlc(){
fn_print_dots "Graceful: CTRL+c" fn_print_dots "Graceful: CTRL+c"
fn_script_log_info "Graceful: CTRL+c" fn_script_log_info "Graceful: CTRL+c"
# Sends quit. # Sends quit.
tmux send-keys -t "${selfname}" C-c > /dev/null 2>&1 tmux send-keys -t "${sessionname}" C-c > /dev/null 2>&1
# Waits up to 30 seconds giving the server time to shutdown gracefuly. # Waits up to 30 seconds giving the server time to shutdown gracefuly.
for seconds in {1..30}; do for seconds in {1..30}; do
check_status.sh check_status.sh
@ -33,7 +33,6 @@ fn_stop_graceful_ctrlc(){
fn_print_fail_eol_nl fn_print_fail_eol_nl
fn_script_log_error "Graceful: CTRL+c: FAIL" fn_script_log_error "Graceful: CTRL+c: FAIL"
fi fi
fn_sleep_time
} }
# Attempts graceful shutdown by sending a specified command. # Attempts graceful shutdown by sending a specified command.
@ -43,7 +42,7 @@ fn_stop_graceful_cmd(){
fn_print_dots "Graceful: sending \"${1}\"" fn_print_dots "Graceful: sending \"${1}\""
fn_script_log_info "Graceful: sending \"${1}\"" fn_script_log_info "Graceful: sending \"${1}\""
# Sends specific stop command. # Sends specific stop command.
tmux send -t "${selfname}" "${1}" ENTER > /dev/null 2>&1 tmux send -t "${sessionname}" "${1}" ENTER > /dev/null 2>&1
# Waits up to ${seconds} seconds giving the server time to shutdown gracefully. # Waits up to ${seconds} seconds giving the server time to shutdown gracefully.
for ((seconds=1; seconds<=${2}; seconds++)); do for ((seconds=1; seconds<=${2}; seconds++)); do
check_status.sh check_status.sh
@ -62,7 +61,6 @@ fn_stop_graceful_cmd(){
fn_print_fail_eol_nl fn_print_fail_eol_nl
fn_script_log_error "Graceful: sending \"${1}\": FAIL" fn_script_log_error "Graceful: sending \"${1}\": FAIL"
fi fi
fn_sleep_time
} }
# Attempts graceful shutdown of goldsrc using rcon 'quit' command. # Attempts graceful shutdown of goldsrc using rcon 'quit' command.
@ -72,7 +70,7 @@ fn_stop_graceful_goldsrc(){
fn_print_dots "Graceful: sending \"quit\"" fn_print_dots "Graceful: sending \"quit\""
fn_script_log_info "Graceful: sending \"quit\"" fn_script_log_info "Graceful: sending \"quit\""
# sends quit # sends quit
tmux send -t "${selfname}" quit ENTER > /dev/null 2>&1 tmux send -t "${sessionname}" quit ENTER > /dev/null 2>&1
# Waits 3 seconds as goldsrc servers restart with the quit command. # Waits 3 seconds as goldsrc servers restart with the quit command.
for seconds in {1..3}; do for seconds in {1..3}; do
sleep 1 sleep 1
@ -178,7 +176,6 @@ fn_stop_graceful_sdtd(){
fn_print_fail_eol_nl fn_print_fail_eol_nl
fn_script_log_warn "Graceful: telnet: expect not installed: FAIL" fn_script_log_warn "Graceful: telnet: expect not installed: FAIL"
fi fi
fn_sleep_time
} }
# Attempts graceful shutdown by sending /save /stop. # Attempts graceful shutdown by sending /save /stop.
@ -186,10 +183,10 @@ fn_stop_graceful_avorion(){
fn_print_dots "Graceful: /save /stop" fn_print_dots "Graceful: /save /stop"
fn_script_log_info "Graceful: /save /stop" fn_script_log_info "Graceful: /save /stop"
# Sends /save. # Sends /save.
tmux send-keys -t "${selfname}" /save ENTER > /dev/null 2>&1 tmux send-keys -t "${sessionname}" /save ENTER > /dev/null 2>&1
sleep 5 sleep 5
# Sends /quit. # Sends /quit.
tmux send-keys -t "${selfname}" /stop ENTER > /dev/null 2>&1 tmux send-keys -t "${sessionname}" /stop ENTER > /dev/null 2>&1
# Waits up to 30 seconds giving the server time to shutdown gracefuly. # Waits up to 30 seconds giving the server time to shutdown gracefuly.
for seconds in {1..30}; do for seconds in {1..30}; do
check_status.sh check_status.sh
@ -208,7 +205,6 @@ fn_stop_graceful_avorion(){
fn_print_fail_eol_nl fn_print_fail_eol_nl
fn_script_log_error "Graceful: /save /stop: FAIL" fn_script_log_error "Graceful: /save /stop: FAIL"
fi fi
fn_sleep_time
} }
fn_stop_graceful_select(){ fn_stop_graceful_select(){
@ -237,10 +233,10 @@ fn_stop_graceful_select(){
fn_stop_tmux(){ fn_stop_tmux(){
fn_print_dots "${servername}" fn_print_dots "${servername}"
fn_script_log_info "tmux kill-session: ${servername}" fn_script_log_info "tmux kill-session: ${sessionname}: ${servername}"
# Kill tmux session. # Kill tmux session.
tmux kill-session -t "${selfname}" > /dev/null 2>&1 tmux kill-session -t "${sessionname}" > /dev/null 2>&1
fn_sleep_time sleep 0.5
check_status.sh check_status.sh
if [ "${status}" == "0" ]; then if [ "${status}" == "0" ]; then
fn_print_ok_nl "${servername}" fn_print_ok_nl "${servername}"

6
lgsm/functions/command_test_alert.sh

@ -4,9 +4,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Sends a test alert. # Description: Sends a test alert.
local modulename="ALERT" commandname="TEST-ALERT"
local commandaction="Alert" commandaction="Sending Alert"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_print_dots "${servername}" fn_print_dots "${servername}"
check.sh check.sh

6
lgsm/functions/command_ts3_server_pass.sh

@ -5,9 +5,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Changes TS3 serveradmin password. # Description: Changes TS3 serveradmin password.
local modulename="PASSWORD-CHANGE" commandname="CHANGE-PASSWORD"
local commandaction="Password Change" commandaction="Changing password"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_serveradmin_password_prompt(){ fn_serveradmin_password_prompt(){
fn_print_header fn_print_header

8
lgsm/functions/command_update.sh

@ -4,13 +4,13 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Handles updating of servers. # Description: Handles updating of servers.
local modulename="UPDATE" commandname="UPDATE"
local commandaction="Update" commandaction="Updating"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_print_dots "" fn_print_dots ""
check.sh check.sh
logs.sh core_logs.sh
check_last_update.sh check_last_update.sh
if [ "${shortname}" == "ts3" ]; then if [ "${shortname}" == "ts3" ]; then

13
lgsm/functions/command_update_functions.sh

@ -1,13 +0,0 @@
#!/bin/bash
# LinuxGSM command_update_functions.sh function
# Author: Daniel Gibbs
# Website: https://linuxgsm.com
# Description: Deletes the functions dir to allow re-downloading of functions from GitHub.
# Legacy Command
command_update_linuxgsm.sh(){
functionfile="${FUNCNAME[0]}"
fn_fetch_function
}
command_update_linuxgsm.sh

234
lgsm/functions/command_update_linuxgsm.sh

@ -4,113 +4,197 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Deletes the functions dir to allow re-downloading of functions from GitHub. # Description: Deletes the functions dir to allow re-downloading of functions from GitHub.
local modulename="UPDATE LINUXGSM" commandname="UPDATE-LGSM"
local commandaction="Update LinuxGSM" commandaction="Updating LinuxGSM"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_print_dots "Updating LinuxGSM"
check.sh check.sh
fn_print_dots ""
fn_script_log_info "Updating LinuxGSM" fn_script_log_info "Updating LinuxGSM"
echo -en "\n"
if [ -z "${legacymode}" ]; then fn_print_dots "Selecting repo"
# Check and update _default.cfg. fn_script_log_info "Selecting repo"
echo -en " checking config _default.cfg...\c" # Select remotereponame
config_file_diff=$(diff "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" <(curl -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg")) curl -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/linuxgsm.sh" 1>/dev/null
if [ "${config_file_diff}" != "" ]; then if [ $? != "0" ]; then
fn_print_update_eol_nl curl -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/linuxgsm.sh" 1>/dev/null
fn_script_log_info "checking config _default.cfg: UPDATE" if [ $? != "0" ]; then
rm -f "${configdirdefault:?}/config-lgsm/${gameservername}/_default.cfg" fn_print_fail_nl "Selecting repo: Unable to to access GitHub or Bitbucket repositories"
fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforce" "nomd5" fn_script_log_fatal "Selecting repo: Unable to to access GitHub or Bitbucket repositories"
alert="config" core_exit.sh
alert.sh
else else
fn_print_ok_eol_nl remotereponame="Bitbucket"
fn_script_log_info "checking config _default.cfg: OK" fn_print_ok_nl "Selecting repo: ${remotereponame}"
fi fi
else
remotereponame="GitHub"
fn_print_ok_nl "Selecting repo: ${remotereponame}"
fi
# Check _default.cfg.
echo -en "checking ${remotereponame} config _default.cfg...\c"
fn_script_log_info "Checking ${remotereponame} config _default.cfg"
if [ "${remotereponame}" == "GitHub" ]; then
curl -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg" 1>/dev/null
else
curl -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg" 1>/dev/null
fi
if [ $? != "0" ]; then
fn_print_fail_eol_nl
fn_script_log_fatal "Checking ${remotereponame} config _default.cfg"
fn_script_log_fatal "Curl returned error: $?"
core_exit.sh
fi
if [ "${remotereponame}" == "GitHub" ]; then
config_file_diff=$(diff "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" <(curl -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg"))
else
config_file_diff=$(diff "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" <(curl -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg"))
fi
if [ "${config_file_diff}" != "" ]; then
fn_print_update_eol_nl
fn_script_log_update "Checking ${remotereponame} config _default.cfg"
rm -f "${configdirdefault:?}/config-lgsm/${gameservername:?}/_default.cfg"
fn_fetch_file_github "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "nochmodx" "norun" "noforce" "nomd5"
alert="config"
alert.sh
else
fn_print_ok_eol_nl
fn_script_log_pass "Checking ${remotereponame} config _default.cfg"
fi
# Check linuxsm.sh
echo -en "checking ${remotereponame} linuxgsm.sh...\c"
if [ "${remotereponame}" == "GitHub" ]; then
curl -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/linuxgsm.sh" 1>/dev/null
else
curl -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/linuxgsm.sh" 1>/dev/null
fi
if [ $? != "0" ]; then
fn_print_fail_eol_nl
fn_script_log_fatal "Checking ${remotereponame} linuxgsm.sh"
fn_script_log_fatal "Curl returned error: $?"
core_exit.sh
fi
echo -en " checking linuxgsm.sh...\c" if [ "${remotereponame}" == "GitHub" ]; then
tmp_script_diff=$(diff "${tmpdir}/linuxgsm.sh" <(curl -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/linuxgsm.sh")) tmp_script_diff=$(diff "${tmpdir}/linuxgsm.sh" <(curl -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/linuxgsm.sh"))
if [ "${tmp_script_diff}" != "" ]; then else
fn_print_update_eol_nl tmp_script_diff=$(diff "${tmpdir}/linuxgsm.sh" <(curl -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/linuxgsm.sh"))
fn_script_log_info "checking linuxgsm.sh: UPDATE" fi
rm -f "${tmpdir:?}/linuxgsm.sh"
fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "nochmodx" "norun" "noforcedl" "nomd5" if [ "${tmp_script_diff}" != "" ]; then
# Compare selfname against linuxgsm.sh in the tmp dir. Ignoring server specific vars. fn_print_update_eol_nl
fn_script_log_update "Checking ${remotereponame} linuxgsm.sh"
rm -f "${tmpdir:?}/linuxgsm.sh"
fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "nochmodx" "norun" "noforcedl" "nomd5"
else
fn_print_ok_eol_nl
fn_script_log_pass "Checking ${remotereponame} linuxgsm.sh"
fi
# Check gameserver.sh
# Compare gameserver.sh against linuxgsm.sh in the tmp dir.
# Ignoring server specific vars.
echo -en "checking ${selfname}...\c"
fn_script_log_info "Checking ${selfname}"
script_diff=$(diff <(sed '\/shortname/d;\/gameservername/d;\/gamename/d;\/githubuser/d;\/githubrepo/d;\/githubbranch/d' "${tmpdir}/linuxgsm.sh") <(sed '\/shortname/d;\/gameservername/d;\/gamename/d;\/githubuser/d;\/githubrepo/d;\/githubbranch/d' "${rootdir}/${selfname}"))
if [ "${script_diff}" != "" ]; then
fn_print_update_eol_nl
fn_script_log_update "Checking ${selfname}"
echo -en "backup ${selfname}...\c"
fn_script_log_info "Backup ${selfname}"
if [ ! -d "${backupdir}/script" ]; then
mkdir -p "${backupdir}/script"
fi
cp "${rootdir}/${selfname}" "${backupdir}/script/${selfname}-$(date +"%m_%d_%Y_%M").bak"
if [ $? -ne 0 ]; then
fn_print_fail_eol_nl
fn_script_log_fatal "Backup ${selfname}"
core_exit.sh
else else
fn_script_log_info "checking linuxgsm.sh: OK"
fn_print_ok_eol_nl fn_print_ok_eol_nl
fn_script_log_pass "Backup ${selfname}"
echo -e "backup location ${backupdir}/script/${selfname}-$(date +"%m_%d_%Y_%M").bak"
fn_script_log_pass "Backup location ${backupdir}/script/${selfname}-$(date +"%m_%d_%Y_%M").bak"
fi fi
echo -en " checking ${selfname}...\c"
script_diff=$(diff <(sed '\/shortname/d;\/gameservername/d;\/gamename/d;\/githubuser/d;\/githubrepo/d;\/githubbranch/d' "${tmpdir}/linuxgsm.sh") <(sed '\/shortname/d;\/gameservername/d;\/gamename/d;\/githubuser/d;\/githubrepo/d;\/githubbranch/d' "${rootdir}/${selfname}")) echo -en "copying ${selfname}...\c"
if [ "${script_diff}" != "" ]; then fn_script_log_info "copying ${selfname}"
fn_print_update_eol_nl cp "${tmpdir}/linuxgsm.sh" "${rootdir}/${selfname}"
echo -en " backup ${selfname}...\c" sed -i "s+shortname=\"core\"+shortname=\"${shortname}\"+g" "${rootdir}/${selfname}"
mkdir -p "${backupdir}/script/" sed -i "s+gameservername=\"core\"+gameservername=\"${gameservername}\"+g" "${rootdir}/${selfname}"
cp "${rootdir}/${selfname}" "${backupdir}/script/${selfname}-$(date +"%m_%d_%Y_%M").bak" sed -i "s+gamename=\"core\"+gamename=\"${gamename}\"+g" "${rootdir}/${selfname}"
if [ $? -ne 0 ]; then sed -i "s+githubuser=\"GameServerManagers\"+githubuser=\"${githubuser}\"+g" "${rootdir}/${selfname}"
fn_print_fail_eol_nl sed -i "s+githubrepo=\"LinuxGSM\"+githubrepo=\"${githubrepo}\"+g" "${rootdir}/${selfname}"
core_exit.sh sed -i "s+githubbranch=\"master\"+githubbranch=\"${githubbranch}\"+g" "${rootdir}/${selfname}"
else
fn_print_ok_eol_nl if [ $? != "0" ]; then
echo -e " Backup: ${backupdir}/script/${selfname}-$(date +"%m_%d_%Y_%M").bak" fn_print_fail_eol_nl
fi fn_script_log_fatal "copying ${selfname}"
echo -en " fetching ${selfname}...\c" core_exit.sh
cp "${tmpdir}/linuxgsm.sh" "${rootdir}/${selfname}"
sed -i "s/shortname=\"core\"/shortname=\"${shortname}\"/g" "${rootdir}/${selfname}"
sed -i "s/gameservername=\"core\"/gameservername=\"${gameservername}\"/g" "${rootdir}/${selfname}"
sed -i "s/gamename=\"core\"/gamename=\"${gamename}\"/g" "${rootdir}/${selfname}"
exitcode=$?
if [ "${exitcode}" != "0" ]; then
fn_print_fail_eol_nl
core_exit.sh
else
fn_print_ok_eol_nl
fi
else else
fn_print_ok_eol_nl fn_print_ok_eol_nl
fn_script_log_pass "copying ${selfname}"
fi fi
else
fn_print_ok_eol_nl
fn_script_log_info "Checking ${selfname}"
fi fi
# Check and update functions. # Check and update modules.
if [ "${functionsdir}" ]; then if [ -n "${functionsdir}" ]; then
if [ -d "${functionsdir}" ]; then if [ -d "${functionsdir}" ]; then
cd "${functionsdir}" || exit cd "${functionsdir}" || exit
for functionfile in * for functionfile in *
do do
echo -en " checking function ${functionfile}...\c" # check if module exists in the repo and remove if missing.
# commonly used if module names change.
echo -en "checking ${remotereponame} module ${functionfile}...\c"
github_file_url_dir="lgsm/functions" github_file_url_dir="lgsm/functions"
get_function_file=$(curl --fail -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${functionfile}") if [ "${remotereponame}" == "GitHub" ]; then
exitcode=$? curl -IsfL "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${functionfile}" 1>/dev/null
function_file_diff=$(diff "${functionsdir}/${functionfile}" <(curl --fail -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${functionfile}")) else
if [ ${exitcode} -ne 0 ]; then curl -IsfL "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${functionfile}" 1>/dev/null
fn_print_fail_eol_nl fi
echo -en " removing unknown function ${functionfile}...\c" if [ $? -ne 0 ]; then
fn_script_log_fatal "removing unknown function ${functionfile}" fn_print_error_eol_nl
fn_script_log_error "Checking ${remotereponame} module ${functionfile}"
echo -en "removing module ${functionfile}...\c"
if ! rm -f "${functionfile:?}"; then if ! rm -f "${functionfile:?}"; then
fn_print_fail_eol_nl fn_print_fail_eol_nl
fn_script_log_fatal "Removing module ${functionfile}"
core_exit.sh core_exit.sh
else else
fn_print_ok_eol_nl fn_print_ok_eol_nl
fn_script_log_pass "Removing module ${functionfile}"
fi fi
elif [ "${function_file_diff}" != "" ]; then
fn_print_update_eol_nl
fn_script_log_info "checking function ${functionfile}: UPDATE"
rm -rf "${functionsdir:?}/${functionfile}"
fn_update_function
else else
fn_print_ok_eol_nl # compare file
if [ "${remotereponame}" == "GitHub" ]; then
function_file_diff=$(diff "${functionsdir}/${functionfile}" <(curl -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${functionfile}"))
else
function_file_diff=$(diff "${functionsdir}/${functionfile}" <(curl -s "https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${functionfile}"))
fi
# results
if [ "${function_file_diff}" != "" ]; then
fn_print_update_eol_nl
fn_script_log_update "Checking ${remotereponame} module ${functionfile}"
rm -rf "${functionsdir:?}/${functionfile}"
fn_update_function
else
fn_print_ok_eol_nl
fn_script_log_pass "Checking ${remotereponame} module ${functionfile}"
fi
fi fi
done done
fi fi
fi fi
if [ "${exitcode}" != "0" ]&&[ -n "${exitcode}" ]; then fn_print_ok_nl "Updating functions"
fn_print_fail "Updating functions" fn_script_log_pass "Updating functions"
fn_script_log_fatal "Updating functions"
else
fn_print_ok "Updating functions"
fn_script_log_pass "Updating functions"
fi
core_exit.sh core_exit.sh

9
lgsm/functions/command_validate.sh

@ -4,9 +4,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Runs a server validation. # Description: Runs a server validation.
local modulename="VALIDATE" commandname="VALIDATE"
local commandaction="Validate" commandaction="Validating"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_validate(){ fn_validate(){
fn_script_log_warn "Validating server: SteamCMD: Validate might overwrite some customised files" fn_script_log_warn "Validating server: SteamCMD: Validate might overwrite some customised files"
@ -79,7 +79,6 @@ fn_stop_warning(){
fn_print_dots "Validating server" fn_print_dots "Validating server"
fn_print_dots "Validating server: SteamCMD" fn_print_dots "Validating server: SteamCMD"
check.sh check.sh
check_status.sh
if [ "${status}" != "0" ]; then if [ "${status}" != "0" ]; then
fn_stop_warning fn_stop_warning
exitbypass=1 exitbypass=1
@ -90,3 +89,5 @@ if [ "${status}" != "0" ]; then
else else
fn_validate fn_validate
fi fi
core_exit.sh

6
lgsm/functions/command_wipe.sh

@ -5,9 +5,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Wipes server data, useful after updates for some games like Rust # Description: Wipes server data, useful after updates for some games like Rust
local modulename="WIPE" commandname="WIPE"
local commandaction="Wipe" commandaction="Wiping"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
check.sh check.sh
fn_print_header fn_print_header

5
lgsm/functions/compress_unreal2_maps.sh

@ -4,8 +4,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Compresses unreal maps. # Description: Compresses unreal maps.
local commandaction="Unreal Map Compressor" commandname="MAP-COMPRESSOR"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" commandaction="Compressing maps"
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
check.sh check.sh
fn_print_header fn_print_header

5
lgsm/functions/compress_ut99_maps.sh

@ -4,8 +4,9 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Compresses unreal maps. # Description: Compresses unreal maps.
local commandaction="Unreal Map Compressor" commandname="MAP-COMPRESSOR"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" commandaction="Compressing maps"
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
check.sh check.sh
fn_print_header fn_print_header

202
lgsm/functions/core_dl.sh

@ -17,9 +17,7 @@
# fn_fetch_file "${remote_fileurl}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}" # fn_fetch_file "${remote_fileurl}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
# fn_fetch_file "http://example.com/file.tar.bz2" "/some/dir" "file.tar.bz2" "chmodx" "run" "forcedl" "10cd7353aa9d758a075c600a6dd193fd" # fn_fetch_file "http://example.com/file.tar.bz2" "/some/dir" "file.tar.bz2" "chmodx" "run" "forcedl" "10cd7353aa9d758a075c600a6dd193fd"
local modulename="DOWNLOAD" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Download"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Emptys contents of the LinuxGSM tmpdir. # Emptys contents of the LinuxGSM tmpdir.
fn_clear_tmp(){ fn_clear_tmp(){
@ -42,7 +40,7 @@ fn_dl_md5(){
if [ "${md5}" != "0" ]&&[ "${md5}" != "nomd5" ]; then if [ "${md5}" != "0" ]&&[ "${md5}" != "nomd5" ]; then
echo -en "verifying ${local_filename} with MD5..." echo -en "verifying ${local_filename} with MD5..."
fn_sleep_time fn_sleep_time
local md5sumcmd=$(md5sum "${local_filedir}/${local_filename}"|awk '{print $1;}') md5sumcmd=$(md5sum "${local_filedir}/${local_filename}"|awk '{print $1;}')
if [ "${md5sumcmd}" != "${md5}" ]; then if [ "${md5sumcmd}" != "${md5}" ]; then
fn_print_fail_eol_nl fn_print_fail_eol_nl
echo -e "${local_filename} returned MD5 checksum: ${md5sumcmd}" echo -e "${local_filename} returned MD5 checksum: ${md5sumcmd}"
@ -77,9 +75,9 @@ fn_dl_extract(){
if [ "${mime}" == "application/gzip" ]||[ "${mime}" == "application/x-gzip" ]; then if [ "${mime}" == "application/gzip" ]||[ "${mime}" == "application/x-gzip" ]; then
extractcmd=$(tar -zxf "${local_filedir}/${local_filename}" -C "${extractdir}") extractcmd=$(tar -zxf "${local_filedir}/${local_filename}" -C "${extractdir}")
elif [ "${mime}" == "application/x-bzip2" ]; then elif [ "${mime}" == "application/x-bzip2" ]; then
tarcmd=$(tar -jxf "${local_filedir}/${local_filename}" -C "${extractdir}") extractcmd=$(tar -jxf "${local_filedir}/${local_filename}" -C "${extractdir}")
elif [ "${mime}" == "application/x-xz" ]; then elif [ "${mime}" == "application/x-xz" ]; then
tarcmd=$(tar -xf "${local_filedir}/${local_filename}" -C "${extractdir}") extractcmd=$(tar -xf "${local_filedir}/${local_filename}" -C "${extractdir}")
elif [ "${mime}" == "application/zip" ]; then elif [ "${mime}" == "application/zip" ]; then
extractcmd=$(unzip -qo -d "${extractdir}" "${local_filedir}/${local_filename}") extractcmd=$(unzip -qo -d "${extractdir}" "${local_filedir}/${local_filename}")
fi fi
@ -114,54 +112,99 @@ fn_fetch_trap(){
fn_fetch_file(){ fn_fetch_file(){
remote_fileurl="${1}" remote_fileurl="${1}"
local_filedir="${2}" remote_fileurl_backup="${2}"
local_filename="${3}" remote_fileurl_name="${3}"
chmodx="${4:-0}" remote_fileurl_backup_name="${4}"
run="${5:-0}" local_filedir="${5}"
forcedl="${6:-0}" local_filename="${6}"
md5="${7:-0}" chmodx="${7:-0}"
run="${8:-0}"
forcedl="${9:-0}"
md5="${10:-0}"
# Download file if missing or download forced. # Download file if missing or download forced.
if [ ! -f "${local_filedir}/${local_filename}" ]||[ "${forcedl}" == "forcedl" ]; then if [ ! -f "${local_filedir}/${local_filename}" ]||[ "${forcedl}" == "forcedl" ]; then
if [ ! -d "${local_filedir}" ]; then # If backup fileurl exists include it.
mkdir -p "${local_filedir}" if [ -n "${remote_fileurl_backup}" ]; then
fi # counter set to 0 to allow second try
# Trap will remove part downloaded files if canceled. counter=0
trap fn_fetch_trap INT remote_fileurls_array=( remote_fileurl remote_fileurl_backup )
# Larger files show a progress bar.
if [ "${local_filename##*.}" == "bz2" ]||[ "${local_filename##*.}" == "gz" ]||[ "${local_filename##*.}" == "zip" ]||[ "${local_filename##*.}" == "jar" ]||[ "${local_filename##*.}" == "xz" ]; then
echo -en "downloading ${local_filename}..."
fn_sleep_time
echo -en "\033[1K"
curlcmd=$(curl --progress-bar --fail -L -o "${local_filedir}/${local_filename}" "${remote_fileurl}")
echo -en "downloading ${local_filename}..."
else else
echo -en " fetching ${local_filename}...\c" # counter set to 1 to not allow second try
curlcmd=$(curl -s --fail -L -o "${local_filedir}/${local_filename}" "${remote_fileurl}" 2>&1) counter=1
remote_fileurls_array=( remote_fileurl )
fi fi
local exitcode=$? for remote_fileurl_array in "${remote_fileurls_array[@]}"
if [ ${exitcode} -ne 0 ]; then do
fn_print_fail_eol_nl if [ "${remote_fileurl_array}" == "remote_fileurl" ]; then
if [ -f "${lgsmlog}" ]; then fileurl="${remote_fileurl}"
fn_script_log_fatal "Downloading ${local_filename}" fileurl_name="${remote_fileurl_name}"
echo -e "${remote_fileurl}" >> "${lgsmlog}" elif [ "${remote_fileurl_array}" == "remote_fileurl_backup" ]; then
echo -e "${curlcmd}" >> "${lgsmlog}" fileurl="${remote_fileurl_backup}"
fileurl_name="${remote_fileurl_backup_name}"
fi fi
echo -e "${remote_fileurl}" counter=$((counter+1))
echo -e "${curlcmd}" if [ ! -d "${local_filedir}" ]; then
core_exit.sh mkdir -p "${local_filedir}"
else
fn_print_ok_eol_nl
if [ -f "${lgsmlog}" ]; then
fn_script_log_pass "Downloading ${local_filename}"
fi fi
fi # Trap will remove part downloaded files if canceled.
# Remove trap. trap fn_fetch_trap INT
trap - INT # Larger files show a progress bar.
# Make file executable if chmodx is set. if [ "${local_filename##*.}" == "bz2" ]||[ "${local_filename##*.}" == "gz" ]||[ "${local_filename##*.}" == "zip" ]||[ "${local_filename##*.}" == "jar" ]||[ "${local_filename##*.}" == "xz" ]; then
if [ "${chmodx}" == "chmodx" ]; then echo -en "downloading ${local_filename}..."
chmod +x "${local_filedir}/${local_filename}" fn_sleep_time
fi echo -en "\033[1K"
curlcmd=$(curl --progress-bar --fail -L -o "${local_filedir}/${local_filename}" "${fileurl}")
echo -en "downloading ${local_filename}..."
else
echo -en "fetching ${fileurl_name} ${local_filename}...\c"
curlcmd=$(curl -s --fail -L -o "${local_filedir}/${local_filename}" "${fileurl}" 2>&1)
fi
local exitcode=$?
# Download will fail if downloads a html file.
if [ -f "${local_filedir}/${local_filename}" ]; then
if [ -n "$(head "${local_filedir}/${local_filename}" | grep "DOCTYPE" )" ]; then
rm "${local_filedir:?}/${local_filename:?}"
local exitcode=2
fi
fi
# On first try will error. On second try will fail.
if [ ${exitcode} -ne 0 ]; then
if [ ${counter} -ge 2 ]; then
fn_print_fail_eol_nl
if [ -f "${lgsmlog}" ]; then
fn_script_log_fatal "Downloading ${local_filename}"
fn_script_log_fatal "${fileurl}"
fi
core_exit.sh
else
fn_print_error_eol_nl
if [ -f "${lgsmlog}" ]; then
fn_script_log_error "Downloading ${local_filename}"
fn_script_log_error "${fileurl}"
fi
fi
else
fn_print_ok_eol
sleep 0.3
echo -en "\033[2K\\r"
if [ -f "${lgsmlog}" ]; then
fn_script_log_pass "Downloading ${local_filename}"
fi
# Make file executable if chmodx is set.
if [ "${chmodx}" == "chmodx" ]; then
chmod +x "${local_filedir}/${local_filename}"
fi
# Remove trap.
trap - INT
break
fi
done
fi fi
if [ -f "${local_filedir}/${local_filename}" ]; then if [ -f "${local_filedir}/${local_filename}" ]; then
@ -189,13 +232,19 @@ fn_fetch_file(){
# forcedl: Optional, force re-download of file even if exists # forcedl: Optional, force re-download of file even if exists
# md5: Optional, set an md5 sum and will compare it against the file. # md5: Optional, set an md5 sum and will compare it against the file.
# Fetches any files from the GitHub repo. # Fetches files from the Git repo.
fn_fetch_file_github(){ fn_fetch_file_github(){
github_file_url_dir="${1}" github_file_url_dir="${1}"
github_file_url_name="${2}" github_file_url_name="${2}"
githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" if [ "${githubbranch}" == "master" ]&&[ "${commandname}" != "UPDATE-LGSM" ]; then
remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_file_url_dir}/${github_file_url_name}"
remote_fileurl="${githuburl}" remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_file_url_dir}/${github_file_url_name}"
else
remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
fi
remote_fileurl_name="GitHub"
remote_fileurl_backup_name="Bitbucket"
local_filedir="${3}" local_filedir="${3}"
local_filename="${github_file_url_name}" local_filename="${github_file_url_name}"
chmodx="${4:-0}" chmodx="${4:-0}"
@ -203,15 +252,22 @@ fn_fetch_file_github(){
forcedl="${6:-0}" forcedl="${6:-0}"
md5="${7:-0}" md5="${7:-0}"
# Passes vars to the file download function. # Passes vars to the file download function.
fn_fetch_file "${remote_fileurl}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}" fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
} }
# Fetches config files from the Git repo.
fn_fetch_config(){ fn_fetch_config(){
github_file_url_dir="${1}" github_file_url_dir="${1}"
github_file_url_name="${2}" github_file_url_name="${2}"
githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" if [ "${githubbranch}" == "master" ]&&[ "${commandname}" != "UPDATE-LGSM" ]; then
remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_file_url_dir}/${github_file_url_name}"
remote_fileurl="${githuburl}" remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_file_url_dir}/${github_file_url_name}"
else
remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
fi
remote_fileurl_name="GitHub"
remote_fileurl_backup_name="Bitbucket"
local_filedir="${3}" local_filedir="${3}"
local_filename="${4}" local_filename="${4}"
chmodx="nochmodx" chmodx="nochmodx"
@ -219,16 +275,22 @@ fn_fetch_config(){
forcedl="noforce" forcedl="noforce"
md5="nomd5" md5="nomd5"
# Passes vars to the file download function. # Passes vars to the file download function.
fn_fetch_file "${remote_fileurl}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}" fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
} }
# Fetches functions. # Fetches modules from the Git repo during first download.
fn_fetch_function(){ fn_fetch_function(){
github_file_url_dir="lgsm/functions" github_file_url_dir="lgsm/functions"
github_file_url_name="${functionfile}" github_file_url_name="${functionfile}"
githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" if [ "${githubbranch}" == "master" ]&&[ "${commandname}" != "UPDATE-LGSM" ]; then
remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_file_url_dir}/${github_file_url_name}"
remote_fileurl="${githuburl}" remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_file_url_dir}/${github_file_url_name}"
else
remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
fi
remote_fileurl_name="GitHub"
remote_fileurl_backup_name="Bitbucket"
local_filedir="${functionsdir}" local_filedir="${functionsdir}"
local_filename="${github_file_url_name}" local_filename="${github_file_url_name}"
chmodx="chmodx" chmodx="chmodx"
@ -236,23 +298,31 @@ fn_fetch_function(){
forcedl="noforce" forcedl="noforce"
md5="nomd5" md5="nomd5"
# Passes vars to the file download function. # Passes vars to the file download function.
fn_fetch_file "${remote_fileurl}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}" fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
} }
# Fetches modules from the Git repo during update-lgsm.
fn_update_function(){ fn_update_function(){
exitbypass=1
github_file_url_dir="lgsm/functions" github_file_url_dir="lgsm/functions"
github_file_url_name="${functionfile}" github_file_url_name="${functionfile}"
githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}" if [ "${githubbranch}" == "master" ]&&[ "${commandname}" != "UPDATE-LGSM" ]; then
remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${version}/${github_file_url_dir}/${github_file_url_name}"
remote_fileurl="${githuburl}" remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${version}/${github_file_url_dir}/${github_file_url_name}"
else
remote_fileurl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
remote_fileurl_backup="https://bitbucket.org/${githubuser}/${githubrepo}/raw/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
fi
remote_fileurl_name="GitHub"
remote_fileurl_backup_name="Bitbucket"
local_filedir="${functionsdir}" local_filedir="${functionsdir}"
local_filename="${github_file_url_name}" local_filename="${github_file_url_name}"
chmodx="chmodx" chmodx="chmodx"
run="norun" run="norun"
forcedl="noforce" forcedl="noforce"
md5="nomd5" md5="nomd5"
fn_fetch_file "${remote_fileurl}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}" # Passes vars to the file download function.
fn_fetch_file "${remote_fileurl}" "${remote_fileurl_backup}" "${remote_fileurl_name}" "${remote_fileurl_backup_name}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
} }
# Check that curl is installed # Check that curl is installed

16
lgsm/functions/core_exit.sh

@ -4,10 +4,12 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Handles exiting of LinuxGSM by running and reporting an exit code. # Description: Handles exiting of LinuxGSM by running and reporting an exit code.
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_exit_dev_debug(){ fn_exit_dev_debug(){
if [ -f "${rootdir}/.dev-debug" ]; then if [ -f "${rootdir}/.dev-debug" ]; then
echo -e "" echo -e ""
echo -e "${function_selfname} exiting with code: ${exitcode}" echo -e "${functionselfname} exiting with code: ${exitcode}"
if [ -f "${rootdir}/dev-debug.log" ]; then if [ -f "${rootdir}/dev-debug.log" ]; then
grep "functionfile=" "${rootdir}/dev-debug.log" | sed 's/functionfile=//g' > "${rootdir}/dev-debug-function-order.log" grep "functionfile=" "${rootdir}/dev-debug.log" | sed 's/functionfile=//g' > "${rootdir}/dev-debug-function-order.log"
fi fi
@ -26,13 +28,13 @@ elif [ "${exitcode}" ]&&[ "${exitcode}" != "0" ]; then
# List LinuxGSM version in logs # List LinuxGSM version in logs
fn_script_log_info "LinuxGSM version: ${version}" fn_script_log_info "LinuxGSM version: ${version}"
if [ "${exitcode}" == "1" ]; then if [ "${exitcode}" == "1" ]; then
fn_script_log_fatal "${function_selfname} exiting with code: ${exitcode}" fn_script_log_fatal "${functionselfname} exiting with code: ${exitcode}"
elif [ "${exitcode}" == "2" ]; then elif [ "${exitcode}" == "2" ]; then
fn_script_log_error "${function_selfname} exiting with code: ${exitcode}" fn_script_log_error "${functionselfname} exiting with code: ${exitcode}"
elif [ "${exitcode}" == "3" ]; then elif [ "${exitcode}" == "3" ]; then
fn_script_log_warn "${function_selfname} exiting with code: ${exitcode}" fn_script_log_warn "${functionselfname} exiting with code: ${exitcode}"
else else
fn_script_log_warn "${function_selfname} exiting with code: ${exitcode}" fn_script_log_warn "${functionselfname} exiting with code: ${exitcode}"
fi fi
fn_exit_dev_debug fn_exit_dev_debug
# remove trap. # remove trap.
@ -41,7 +43,7 @@ elif [ "${exitcode}" ]&&[ "${exitcode}" != "0" ]; then
elif [ "${exitcode}" ]&&[ "${exitcode}" == "0" ]; then elif [ "${exitcode}" ]&&[ "${exitcode}" == "0" ]; then
# List LinuxGSM version in logs # List LinuxGSM version in logs
fn_script_log_info "LinuxGSM version: ${version}" fn_script_log_info "LinuxGSM version: ${version}"
fn_script_log_pass "${function_selfname} exiting with code: ${exitcode}" fn_script_log_pass "${functionselfname} exiting with code: ${exitcode}"
fn_exit_dev_debug fn_exit_dev_debug
# remove trap. # remove trap.
trap - INT trap - INT
@ -50,7 +52,7 @@ else
# List LinuxGSM version in logs # List LinuxGSM version in logs
fn_script_log_info "LinuxGSM version: ${version}" fn_script_log_info "LinuxGSM version: ${version}"
fn_print_error "No exit code set" fn_print_error "No exit code set"
fn_script_log_pass "${function_selfname} exiting with code: NOT SET" fn_script_log_pass "${functionselfname} exiting with code: NOT SET"
fn_exit_dev_debug fn_exit_dev_debug
# remove trap. # remove trap.
trap - INT trap - INT

21
lgsm/functions/core_functions.sh

@ -5,6 +5,10 @@
# Description: Defines all functions to allow download and execution of functions using fn_fetch_function. # Description: Defines all functions to allow download and execution of functions using fn_fetch_function.
# This function is called first before any other function. Without this file other functions will not load. # This function is called first before any other function. Without this file other functions will not load.
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
modulesversion="v20.3.0"
# Core # Core
core_dl.sh(){ core_dl.sh(){
@ -233,6 +237,11 @@ functionfile="${FUNCNAME[0]}"
fn_fetch_function fn_fetch_function
} }
check_version.sh(){
functionfile="${FUNCNAME[0]}"
fn_fetch_function
}
# Compress # Compress
compress_unreal2_maps.sh(){ compress_unreal2_maps.sh(){
@ -311,6 +320,11 @@ functionfile="${FUNCNAME[0]}"
fn_fetch_function fn_fetch_function
} }
fix_cmw.sh(){
functionfile="${FUNCNAME[0]}"
fn_fetch_function
}
fix_csgo.sh(){ fix_csgo.sh(){
functionfile="${FUNCNAME[0]}" functionfile="${FUNCNAME[0]}"
fn_fetch_function fn_fetch_function
@ -541,7 +555,7 @@ fn_fetch_function
} }
# Logs # Logs
logs.sh(){ core_logs.sh(){
functionfile="${FUNCNAME[0]}" functionfile="${FUNCNAME[0]}"
fn_fetch_function fn_fetch_function
} }
@ -664,6 +678,11 @@ functionfile="${FUNCNAME[0]}"
fn_fetch_function fn_fetch_function
} }
install_modules.sh(){
functionfile="${FUNCNAME[0]}"
fn_fetch_function
}
install_retry.sh(){ install_retry.sh(){
functionfile="${FUNCNAME[0]}" functionfile="${FUNCNAME[0]}"
fn_fetch_function fn_fetch_function

2
lgsm/functions/core_getopt.sh

@ -4,7 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: getopt arguments. # Description: getopt arguments.
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
### Define all commands here. ### Define all commands here.
## User commands | Trigger commands | Description ## User commands | Trigger commands | Description

2
lgsm/functions/core_legacy.sh

@ -4,6 +4,8 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Code for backwards compatability with older versions of LinuxGSM. # Description: Code for backwards compatability with older versions of LinuxGSM.
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ -z "${serverfiles}" ]; then if [ -z "${serverfiles}" ]; then
legacymode=1 legacymode=1
serverfiles="${filesdir}" serverfiles="${filesdir}"

7
lgsm/functions/logs.sh → lgsm/functions/core_logs.sh

@ -1,12 +1,11 @@
#!/bin/bash #!/bin/bash
# LinuxGSM logs.sh function # LinuxGSM core_logs.sh function
# Author: Daniel Gibbs # Author: Daniel Gibbs
# Contributor: UltimateByte # Contributor: UltimateByte
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Acts as a log rotator, removing old logs. # Description: Acts as a log rotator, removing old logs.
local modulename="LOGS" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Log-Manager"
# Check if logfile variable and file exist, create logfile if it doesn't exist. # Check if logfile variable and file exist, create logfile if it doesn't exist.
if [ "${consolelog}" ]; then if [ "${consolelog}" ]; then
@ -17,7 +16,7 @@ fi
# For games not displaying a console, and having logs into their game directory. # For games not displaying a console, and having logs into their game directory.
check_status.sh check_status.sh
if [ "${status}" != "0" ]&&[ "${function_selfname}" == "command_start.sh" ]&&[ -n "${gamelogfile}" ]; then if [ "${status}" != "0" ]&&[ "${commandname}" == "START" ]&&[ -n "${gamelogfile}" ]; then
if [ "$(find "${systemdir}" -name "gamelog*.log")" ]; then if [ "$(find "${systemdir}" -name "gamelog*.log")" ]; then
fn_print_info "Moving game logs to ${gamelogdir}" fn_print_info "Moving game logs to ${gamelogdir}"
fn_script_log_info "Moving game logs to ${gamelogdir}" fn_script_log_info "Moving game logs to ${gamelogdir}"

78
lgsm/functions/core_messages.sh

@ -5,6 +5,8 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Defines on-screen messages such as [ OK ] and how script logs look. # Description: Defines on-screen messages such as [ OK ] and how script logs look.
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# nl: new line: message is following by a new line. # nl: new line: message is following by a new line.
# eol: end of line: message is placed at the end of the current line. # eol: end of line: message is placed at the end of the current line.
fn_ansi_loader(){ fn_ansi_loader(){
@ -46,8 +48,8 @@ fn_sleep_time(){
## Feb 28 14:56:58 ut99-server: Monitor: ## Feb 28 14:56:58 ut99-server: Monitor:
fn_script_log(){ fn_script_log(){
if [ -d "${lgsmlogdir}" ]; then if [ -d "${lgsmlogdir}" ]; then
if [ "${modulename}" ]; then if [ -n "${commandname}" ]; then
echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${modulename}: ${1}" >> "${lgsmlog}" echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: ${1}" >> "${lgsmlog}"
else else
echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${1}" >> "${lgsmlog}" echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${1}" >> "${lgsmlog}"
fi fi
@ -58,8 +60,8 @@ fn_script_log(){
fn_script_log_pass(){ fn_script_log_pass(){
if [ -d "${lgsmlogdir}" ]; then if [ -d "${lgsmlogdir}" ]; then
if [ "${modulename}" ]; then if [ -n "${commandname}" ]; then
echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${modulename}: PASS: ${1}" >> "${lgsmlog}" echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: PASS: ${1}" >> "${lgsmlog}"
else else
echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: PASS: ${1}" >> "${lgsmlog}" echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: PASS: ${1}" >> "${lgsmlog}"
fi fi
@ -70,8 +72,8 @@ fn_script_log_pass(){
## Feb 28 14:56:58 ut99-server: Monitor: FATAL: ## Feb 28 14:56:58 ut99-server: Monitor: FATAL:
fn_script_log_fatal(){ fn_script_log_fatal(){
if [ -d "${lgsmlogdir}" ]; then if [ -d "${lgsmlogdir}" ]; then
if [ "${modulename}" ]; then if [ -n "${commandname}" ]; then
echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${modulename}: FATAL: ${1}" >> "${lgsmlog}" echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: FATAL: ${1}" >> "${lgsmlog}"
else else
echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: FATAL: ${1}" >> "${lgsmlog}" echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: FATAL: ${1}" >> "${lgsmlog}"
fi fi
@ -82,8 +84,8 @@ fn_script_log_fatal(){
## Feb 28 14:56:58 ut99-server: Monitor: ERROR: ## Feb 28 14:56:58 ut99-server: Monitor: ERROR:
fn_script_log_error(){ fn_script_log_error(){
if [ -d "${lgsmlogdir}" ]; then if [ -d "${lgsmlogdir}" ]; then
if [ "${modulename}" ]; then if [ -n "${commandname}" ]; then
echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${modulename}: ERROR: ${1}" >> "${lgsmlog}" echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: ERROR: ${1}" >> "${lgsmlog}"
else else
echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ERROR: ${1}" >> "${lgsmlog}" echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ERROR: ${1}" >> "${lgsmlog}"
fi fi
@ -94,8 +96,8 @@ fn_script_log_error(){
## Feb 28 14:56:58 ut99-server: Monitor: WARN: ## Feb 28 14:56:58 ut99-server: Monitor: WARN:
fn_script_log_warn(){ fn_script_log_warn(){
if [ -d "${lgsmlogdir}" ]; then if [ -d "${lgsmlogdir}" ]; then
if [ "${modulename}" ]; then if [ -n "${commandname}" ]; then
echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${modulename}: WARN: ${1}" >> "${lgsmlog}" echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: WARN: ${1}" >> "${lgsmlog}"
else else
echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: WARN: ${1}" >> "${lgsmlog}" echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: WARN: ${1}" >> "${lgsmlog}"
fi fi
@ -106,14 +108,25 @@ fn_script_log_warn(){
## Feb 28 14:56:58 ut99-server: Monitor: INFO: ## Feb 28 14:56:58 ut99-server: Monitor: INFO:
fn_script_log_info(){ fn_script_log_info(){
if [ -d "${lgsmlogdir}" ]; then if [ -d "${lgsmlogdir}" ]; then
if [ "${modulename}" ]; then if [ -n "${commandname}" ]; then
echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${modulename}: INFO: ${1}" >> "${lgsmlog}" echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: INFO: ${1}" >> "${lgsmlog}"
else else
echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: INFO: ${1}" >> "${lgsmlog}" echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: INFO: ${1}" >> "${lgsmlog}"
fi fi
fi fi
} }
## Feb 28 14:56:58 ut99-server: Monitor: INFO:
fn_script_log_update(){
if [ -d "${lgsmlogdir}" ]; then
if [ -n "${commandname}" ]; then
echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: ${commandname}: UPDATE: ${1}" >> "${lgsmlog}"
else
echo -e "$(date '+%b %d %H:%M:%S.%3N') ${selfname}: UPDATE: ${1}" >> "${lgsmlog}"
fi
fi
}
# On-Screen - Automated functions # On-Screen - Automated functions
################################## ##################################
@ -352,100 +365,133 @@ fn_prompt_yn(){
# OK # OK
fn_print_ok_eol(){ fn_print_ok_eol(){
echo -en "${green}OK${default}" echo -en "${green}OK${default}"
fn_sleep_time
} }
fn_print_ok_eol_nl(){ fn_print_ok_eol_nl(){
echo -e "${green}OK${default}" echo -e "${green}OK${default}"
fn_sleep_time
} }
# FAIL # FAIL
fn_print_fail_eol(){ fn_print_fail_eol(){
echo -en "${red}FAIL${default}" echo -en "${red}FAIL${default}"
fn_sleep_time
} }
fn_print_fail_eol_nl(){ fn_print_fail_eol_nl(){
echo -e "${red}FAIL${default}" echo -e "${red}FAIL${default}"
fn_sleep_time
} }
# ERROR # ERROR
fn_print_error_eol(){ fn_print_error_eol(){
echo -en "${red}ERROR${default}" echo -en "${red}ERROR${default}"
fn_sleep_time
} }
fn_print_error_eol_nl(){ fn_print_error_eol_nl(){
echo -e "${red}ERROR${default}" echo -e "${red}ERROR${default}"
fn_sleep_time
}
# WAIT
fn_print_wait_eol(){
echo -en "${cyan}WAIT${default}"
fn_sleep_time
}
fn_print_wait_eol_nl(){
echo -e "${cyan}WAIT${default}"
fn_sleep_time
} }
# WARN # WARN
fn_print_warn_eol(){ fn_print_warn_eol(){
echo -en "${lightyellow}WARN${default}" echo -en "${lightyellow}WARN${default}"
fn_sleep_time
} }
fn_print_warn_eol_nl(){ fn_print_warn_eol_nl(){
echo -e "${lightyellow}WARN${default}" echo -e "${lightyellow}WARN${default}"
fn_sleep_time
} }
# INFO # INFO
fn_print_info_eol(){ fn_print_info_eol(){
echo -en "${red}INFO${default}" echo -en "${cyan}INFO${default}"
fn_sleep_time
} }
fn_print_info_eol_nl(){ fn_print_info_eol_nl(){
echo -e "${red}INFO${default}" echo -e "${cyan}INFO${default}"
fn_sleep_time
} }
# QUERYING # QUERYING
fn_print_querying_eol(){ fn_print_querying_eol(){
echo -en "${cyan}QUERYING${default}" echo -en "${cyan}QUERYING${default}"
fn_sleep_time
} }
fn_print_querying_eol_nl(){ fn_print_querying_eol_nl(){
echo -e "${cyan}QUERYING${default}" echo -e "${cyan}QUERYING${default}"
fn_sleep_time
} }
# CHECKING # CHECKING
fn_print_checking_eol(){ fn_print_checking_eol(){
echo -en "${cyan}CHECKING${default}" echo -en "${cyan}CHECKING${default}"
fn_sleep_time
} }
fn_print_checking_eol_nl(){ fn_print_checking_eol_nl(){
echo -e "${cyan}CHECKING${default}" echo -e "${cyan}CHECKING${default}"
fn_sleep_time
} }
# DELAY # DELAY
fn_print_delay_eol(){ fn_print_delay_eol(){
echo -en "${green}DELAY${default}" echo -en "${green}DELAY${default}"
fn_sleep_time
} }
fn_print_delay_eol_nl(){ fn_print_delay_eol_nl(){
echo -e "${green}DELAY${default}" echo -e "${green}DELAY${default}"
fn_sleep_time
} }
# CANCELED # CANCELED
fn_print_canceled_eol(){ fn_print_canceled_eol(){
echo -en "${yellow}CANCELED${default}" echo -en "${lightyellow}CANCELED${default}"
fn_sleep_time
} }
fn_print_canceled_eol_nl(){ fn_print_canceled_eol_nl(){
echo -e "${yellow}CANCELED${default}" echo -e "${lightyellow}CANCELED${default}"
fn_sleep_time
} }
# REMOVED # REMOVED
fn_print_removed_eol(){ fn_print_removed_eol(){
echo -en "${red}REMOVED${default}" echo -en "${red}REMOVED${default}"
fn_sleep_time
} }
fn_print_removed_eol_nl(){ fn_print_removed_eol_nl(){
echo -e "${red}REMOVED${default}" echo -e "${red}REMOVED${default}"
fn_sleep_time
} }
# UPDATE # UPDATE
fn_print_update_eol(){ fn_print_update_eol(){
echo -en "${cyan}UPDATE${default}" echo -en "${cyan}UPDATE${default}"
fn_sleep_time
} }
fn_print_update_eol_nl(){ fn_print_update_eol_nl(){
echo -e "${cyan}UPDATE${default}" echo -e "${cyan}UPDATE${default}"
fn_sleep_time
} }
fn_print_ascii_logo(){ fn_print_ascii_logo(){

2
lgsm/functions/core_trap.sh

@ -4,6 +4,8 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Handles CTRL-C trap to give an exit code. # Description: Handles CTRL-C trap to give an exit code.
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_exit_trap(){ fn_exit_trap(){
echo -e "" echo -e ""
core_exit.sh core_exit.sh

11
lgsm/functions/fix.sh

@ -5,8 +5,7 @@
# Description: Overall function for managing fixes. # Description: Overall function for managing fixes.
# Runs functions that will fix an issue. # Runs functions that will fix an issue.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
# Messages that are displayed for some fixes. # Messages that are displayed for some fixes.
fn_fix_msg_start(){ fn_fix_msg_start(){
@ -32,7 +31,7 @@ fn_fix_msg_end(){
} }
# Fixes that are run on start. # Fixes that are run on start.
if [ "${function_selfname}" != "command_install.sh" ]&&[ -z "${fixbypass}" ]; then if [ "${commandname}" != "INSTALL" ]&&[ -z "${fixbypass}" ]; then
if [ "${appid}" ]; then if [ "${appid}" ]; then
fix_steamcmd.sh fix_steamcmd.sh
fi fi
@ -43,6 +42,8 @@ if [ "${function_selfname}" != "command_install.sh" ]&&[ -z "${fixbypass}" ]; th
fix_ark.sh fix_ark.sh
elif [ "${shortname}" == "csgo" ]; then elif [ "${shortname}" == "csgo" ]; then
fix_csgo.sh fix_csgo.sh
elif [ "${shortname}" == "cmw" ]; then
fix_cmw.sh
elif [ "${shortname}" == "dst" ]; then elif [ "${shortname}" == "dst" ]; then
fix_dst.sh fix_dst.sh
elif [ "${shortname}" == "ges" ]; then elif [ "${shortname}" == "ges" ]; then
@ -89,8 +90,8 @@ if [ "${function_selfname}" != "command_install.sh" ]&&[ -z "${fixbypass}" ]; th
fi fi
# Fixes that are run on install only. # Fixes that are run on install only.
if [ "${function_selfname}" == "command_install.sh" ]; then if [ "${commandname}" == "INSTALL" ]; then
if [ "${shortname}" == "av" ]||[ "${shortname}" == "kf" ]||[ "${shortname}" == "kf2" ]||[ "${shortname}" == "onset" ]||[ "${shortname}" == "ro" ]||[ "${shortname}" == "ut2k4" ]||[ "${shortname}" == "ut" ]||[ "${shortname}" == "ut3" ]; then if [ "${shortname}" == "av" ]||[ "${shortname}" == "cmw" ]||[ "${shortname}" == "kf" ]||[ "${shortname}" == "kf2" ]||[ "${shortname}" == "onset" ]||[ "${shortname}" == "ro" ]||[ "${shortname}" == "ut2k4" ]||[ "${shortname}" == "ut" ]||[ "${shortname}" == "ut3" ]; then
echo -e "" echo -e ""
echo -e "Applying Post-Install Fixes" echo -e "Applying Post-Install Fixes"
echo -e "=================================" echo -e "================================="

78
lgsm/functions/fix_ark.sh

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

4
lgsm/functions/fix_arma3.sh

@ -4,9 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves an issue with ARMA3. # Description: Resolves an issue with ARMA3.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Fixes: 20150 Segmentation fault (core dumped) error. # Fixes: 20150 Segmentation fault (core dumped) error.
if [ ! -d "${XDG_DATA_HOME:="${HOME}/.local/share"}/Arma 3" ]||[ ! -d "${XDG_DATA_HOME:="${HOME}/.local/share"}/Arma 3 - Other Profiles" ]; then if [ ! -d "${XDG_DATA_HOME:="${HOME}/.local/share"}/Arma 3" ]||[ ! -d "${XDG_DATA_HOME:="${HOME}/.local/share"}/Arma 3 - Other Profiles" ]; then

3
lgsm/functions/fix_av.sh

@ -4,8 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves startup issue with Avorion # Description: Resolves startup issue with Avorion
local commandname="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/linux64" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/linux64"

33
lgsm/functions/fix_cmw.sh

@ -0,0 +1,33 @@
#!/bin/bash
# LinuxGSM fix_cmw.sh function
# Author: Christian Birk
# Website: https://linuxgsm.com
# Description: Resolves the issue of the not starting server on linux
fixname="steam_appid.txt"
if [ ! -f "${executabledir}/steam_appid.txt" ]; then
fn_fix_msg_start
echo 219640 > "${executabledir}/steam_appid.txt"
fn_fix_msg_end
fi
if [ ! -f "${executabledir}/lib/steamclient.so" ]; then
fixname="steamclient.so"
fn_fix_msg_start
if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
cp "${steamcmddir}/linux32/steamclient.so" "${executabledir}/lib/steamclient.so"
elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
cp "${steamcmddir}/linux32/steamclient.so" "${executabledir}/lib/steamclient.so"
fi
fn_fix_msg_end
fi
if [ ! -f "${servercfgfullpath}" ]; then
fn_fix_msg_start
fixname="copy config"
mkdir "${servercfgdir}"
cp "${systemdir}/UDKGame/Config/"*.ini "${servercfgdir}"
fn_fix_msg_end
fi

4
lgsm/functions/fix_csgo.sh

@ -4,9 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves various issues with CS:GO. # Description: Resolves various issues with CS:GO.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Fixes: server not always creating steam_appid.txt file. # Fixes: server not always creating steam_appid.txt file.
if [ ! -f "${serverfiles}/steam_appid.txt" ]; then if [ ! -f "${serverfiles}/steam_appid.txt" ]; then

4
lgsm/functions/fix_dst.sh

@ -4,9 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves various issues with Don't Starve Together. # Description: Resolves various issues with Don't Starve Together.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Fixes: ./dontstarve_dedicated_server_nullrenderer: ./lib32/libcurl-gnutls.so.4: no version information available (required by ./dontstarve_dedicated_server_nullrenderer). # Fixes: ./dontstarve_dedicated_server_nullrenderer: ./lib32/libcurl-gnutls.so.4: no version information available (required by ./dontstarve_dedicated_server_nullrenderer).
# Issue only occures on CentOS as libcurl-gnutls.so.4 is called libcurl.so.4 on CentOS. # Issue only occures on CentOS as libcurl-gnutls.so.4 is called libcurl.so.4 on CentOS.

3
lgsm/functions/fix_ges.sh

@ -4,8 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves various issues with GoldenEye: Source. # Description: Resolves various issues with GoldenEye: Source.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
# Fixes: MALLOC_CHECK_ needing to be set to 0. # Fixes: MALLOC_CHECK_ needing to be set to 0.
export MALLOC_CHECK_=0 export MALLOC_CHECK_=0

10
lgsm/functions/fix_hw.sh

@ -4,15 +4,17 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves various issues with Hurtworld. # Description: Resolves various issues with Hurtworld.
functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ "${shortname}" == "hw" ]; then if [ "${shortname}" == "hw" ]; then
# Fixes: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.so. # Fixes: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.so.
if [ ! -f "${serverfiles}/Hurtworld_Data/Plugins/x86/steamclient.so" ]; then if [ ! -f "${serverfiles}/Hurtworld_Data/Plugins/x86/steamclient.so" ]; then
fixname="steamclient.so x86" fixname="steamclient.so x86"
fn_fix_msg_start fn_fix_msg_start
if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
cp -v "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${serverfiles}/Hurtworld_Data/Plugins/x86/steamclient.so" >> "${lgsmlog}" cp "${steamcmddir}/linux32/steamclient.so" "${serverfiles}/Hurtworld_Data/Plugins/x86/steamclient.so" >> "${lgsmlog}"
elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
cp -v "${steamcmddir}/linux32/steamclient.so" "${serverfiles}/Hurtworld_Data/Plugins/x86/steamclient.so" >> "${lgsmlog}" cp "${steamcmddir}/linux32/steamclient.so" "${serverfiles}/Hurtworld_Data/Plugins/x86/steamclient.so" >> "${lgsmlog}"
else else
: :
fi fi
@ -22,9 +24,9 @@ if [ "${shortname}" == "hw" ]; then
fixname="steamclient.so x86_64" fixname="steamclient.so x86_64"
fn_fix_msg_start fn_fix_msg_start
if [ -f "${HOME}/.steam/steamcmd/linux64/steamclient.so" ]; then if [ -f "${HOME}/.steam/steamcmd/linux64/steamclient.so" ]; then
cp -v "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${serverfiles}/Hurtworld_Data/Plugins/x86_64/steamclient.so" >> "${lgsmlog}" cp "${steamcmddir}/linux64/steamclient.so" "${serverfiles}/Hurtworld_Data/Plugins/x86_64/steamclient.so" >> "${lgsmlog}"
elif [ -f "${steamcmddir}/linux64/steamclient.so" ]; then elif [ -f "${steamcmddir}/linux64/steamclient.so" ]; then
cp -v "${steamcmddir}/linux64/steamclient.so" "${serverfiles}/Hurtworld_Data/Plugins/x86_64/steamclient.so" >> "${lgsmlog}" cp "${steamcmddir}/linux64/steamclient.so" "${serverfiles}/Hurtworld_Data/Plugins/x86_64/steamclient.so" >> "${lgsmlog}"
else else
: :
fi fi

5
lgsm/functions/fix_ins.sh

@ -4,8 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves various issues with Insurgency. # Description: Resolves various issues with Insurgency.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
# Fixes: ./srcds_linux: error while loading shared libraries: libtier0.so: cannot open shared object file: No such file or directory. # Fixes: ./srcds_linux: error while loading shared libraries: libtier0.so: cannot open shared object file: No such file or directory.
@ -13,7 +12,7 @@ export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/bin"
# Fixes: issue #529 - gamemode not passed to debug or start. # Fixes: issue #529 - gamemode not passed to debug or start.
if [ "${function_selfname}" == "command_debug.sh" ]; then if [ "${commandname}" == "DEBUG" ]; then
defaultmap="\"${defaultmap}\"" defaultmap="\"${defaultmap}\""
else else
defaultmap="\\\"${defaultmap}\\\"" defaultmap="\\\"${defaultmap}\\\""

4
lgsm/functions/fix_kf.sh

@ -4,9 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves various issues with Killing Floor. # Description: Resolves various issues with Killing Floor.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
echo -e "Applying WebAdmin ROOst.css fix." echo -e "Applying WebAdmin ROOst.css fix."
echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13" echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13"

4
lgsm/functions/fix_kf2.sh

@ -4,9 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves various issues with Killing Floor 2. # Description: Resolves various issues with Killing Floor 2.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_parms(){ fn_parms(){
parms="\"${defaultmap}?Game=KFGameContent.KFGameInfo_VersusSurvival\"" parms="\"${defaultmap}?Game=KFGameContent.KFGameInfo_VersusSurvival\""

3
lgsm/functions/fix_mcb.sh

@ -4,8 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves possible startup issue with Minecraft Bedrock. # Description: Resolves possible startup issue with Minecraft Bedrock.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
# official docs state that the server should be started with: LD_LIBRARY_PATH=. ./bedrock_server # official docs state that the server should be started with: LD_LIBRARY_PATH=. ./bedrock_server
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}"

4
lgsm/functions/fix_mta.sh

@ -5,9 +5,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Installs the libmysqlclient for database functions on the server. # Description: Installs the libmysqlclient for database functions on the server.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ ! -f "${lgsmdir}/lib/libmysqlclient.so.16" ]; then if [ ! -f "${lgsmdir}/lib/libmysqlclient.so.16" ]; then
fixname="libmysqlclient16" fixname="libmysqlclient16"

3
lgsm/functions/fix_nmrih.sh

@ -4,8 +4,7 @@
# Description: Create symlinks for renamed No More Room In Hell serverfiles. # Description: Create symlinks for renamed No More Room In Hell serverfiles.
# Solution from Steam Community post: https://steamcommunity.com/app/224260/discussions/2/1732089092441769414/ # Solution from Steam Community post: https://steamcommunity.com/app/224260/discussions/2/1732089092441769414/
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
ln -s "${serverfiles}/bin/vphysics_srv.so" "${serverfiles}/bin/vphysics.so" ln -s "${serverfiles}/bin/vphysics_srv.so" "${serverfiles}/bin/vphysics.so"
ln -s "${serverfiles}/bin/studiorender_srv.so" "${serverfiles}/bin/studiorender.so" ln -s "${serverfiles}/bin/studiorender_srv.so" "${serverfiles}/bin/studiorender.so"

4
lgsm/functions/fix_onset.sh

@ -4,9 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves various issues with Onset. # Description: Resolves various issues with Onset.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}"

4
lgsm/functions/fix_ro.sh

@ -4,9 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves various issues with Red Orchestra. # Description: Resolves various issues with Red Orchestra.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
echo -e "Applying WebAdmin ROOst.css fix." echo -e "Applying WebAdmin ROOst.css fix."
echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13" echo -e "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13"

3
lgsm/functions/fix_rust.sh

@ -4,8 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves startup issue with Rust. # Description: Resolves startup issue with Rust.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
# Fixes: [Raknet] Server Shutting Down (Shutting Down). # Fixes: [Raknet] Server Shutting Down (Shutting Down).
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${systemdir}/RustDedicated_Data/Plugins/x86_64" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${systemdir}/RustDedicated_Data/Plugins/x86_64"

3
lgsm/functions/fix_rw.sh

@ -4,7 +4,6 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves various issues with Rising World. # Description: Resolves various issues with Rising World.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/linux64" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}:${serverfiles}/linux64"

3
lgsm/functions/fix_sdtd.sh

@ -4,7 +4,6 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves various issues with 7 Days to Die. # Description: Resolves various issues with 7 Days to Die.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}"

4
lgsm/functions/fix_sfc.sh

@ -4,9 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves various issues with Source Forts Classic. # Description: Resolves various issues with Source Forts Classic.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ ! -f "${serverfiles}/bin/datacache.so" ]; then if [ ! -f "${serverfiles}/bin/datacache.so" ]; then
ln -s "${serverfiles}/bin/datacache_srv.so" "${serverfiles}/bin/datacache.so" ln -s "${serverfiles}/bin/datacache_srv.so" "${serverfiles}/bin/datacache.so"

4
lgsm/functions/fix_sof2.sh

@ -4,8 +4,6 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves various issues with Soldier of Fortune 2. # Description: Resolves various issues with Soldier of Fortune 2.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
# Fixes: error while loading shared libraries: libcxa.so.1 # Fixes: error while loading shared libraries: libcxa.so.1
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}" export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${serverfiles}"

4
lgsm/functions/fix_ss3.sh

@ -4,9 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves various issues with Serious Sam 3. # Description: Resolves various issues with Serious Sam 3.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Fixes: https://steamcommunity.com/app/41070/discussions/0/353916981477716386/ # Fixes: https://steamcommunity.com/app/41070/discussions/0/353916981477716386/
if [ ! -f "${serverfiles}/Bin/steamclient.so" ]||[ "$(diff "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${serverfiles}/Bin/steamclient.so" 2>/dev/null)" ]; then if [ ! -f "${serverfiles}/Bin/steamclient.so" ]||[ "$(diff "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${serverfiles}/Bin/steamclient.so" 2>/dev/null)" ]; then

16
lgsm/functions/fix_steamcmd.sh

@ -4,9 +4,7 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves various issues related to SteamCMD. # Description: Resolves various issues related to SteamCMD.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
# Helps fix: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam,or a local steamclient.so. # Helps fix: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam,or a local steamclient.so.
if [ ! -f "${HOME}/.steam/sdk64/steamclient.so" ]; then if [ ! -f "${HOME}/.steam/sdk64/steamclient.so" ]; then
@ -14,11 +12,9 @@ if [ ! -f "${HOME}/.steam/sdk64/steamclient.so" ]; then
fn_fix_msg_start fn_fix_msg_start
mkdir -pv "${HOME}/.steam/sdk64" >> "${lgsmlog}" mkdir -pv "${HOME}/.steam/sdk64" >> "${lgsmlog}"
if [ -f "${HOME}/.steam/steamcmd/linux64/steamclient.so" ]; then if [ -f "${HOME}/.steam/steamcmd/linux64/steamclient.so" ]; then
cp -v "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${HOME}/.steam/sdk64/steamclient.so" >> "${lgsmlog}" cp "${steamcmddir}/linux64/steamclient.so" "${HOME}/.steam/sdk64/steamclient.so" >> "${lgsmlog}"
elif [ -f "${steamcmddir}/linux64/steamclient.so" ]; then elif [ -f "${steamcmddir}/linux64/steamclient.so" ]; then
cp -v "${steamcmddir}/linux64/steamclient.so" "${HOME}/.steam/sdk64/steamclient.so" >> "${lgsmlog}" cp "${steamcmddir}/linux64/steamclient.so" "${HOME}/.steam/sdk64/steamclient.so" >> "${lgsmlog}"
else
$?=2
fi fi
fn_fix_msg_end fn_fix_msg_end
fi fi
@ -29,11 +25,9 @@ if [ ! -f "${HOME}/.steam/sdk32/steamclient.so" ]; then
fn_fix_msg_start fn_fix_msg_start
mkdir -pv "${HOME}/.steam/sdk32" >> "${lgsmlog}" mkdir -pv "${HOME}/.steam/sdk32" >> "${lgsmlog}"
if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
cp -v "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${HOME}/.steam/sdk32/steamclient.so" >> "${lgsmlog}" cp "${steamcmddir}/linux32/steamclient.so" "${HOME}/.steam/sdk32/steamclient.so" >> "${lgsmlog}"
elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
cp -v "${steamcmddir}/linux32/steamclient.so" "${HOME}/.steam/sdk32/steamclient.so" >> "${lgsmlog}" cp "${steamcmddir}/linux32/steamclient.so" "${HOME}/.steam/sdk32/steamclient.so" >> "${lgsmlog}"
else
$?=2
fi fi
fn_fix_msg_end fn_fix_msg_end
fi fi

4
lgsm/functions/fix_terraria.sh

@ -4,8 +4,6 @@
# Website: https://linuxgsm.com # Website: https://linuxgsm.com
# Description: Resolves an issue with Terraria. # Description: Resolves an issue with Terraria.
local modulename="FIX" functionselfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
local commandaction="Fix"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
export TERM=xterm export TERM=xterm

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save