Browse Source

Merge branch 'release/180409' into develop

pull/1915/head
Daniel Gibbs 7 years ago
parent
commit
d472532c32
  1. 2
      .travis.yml
  2. BIN
      images/icons/centos-icon-32.png
  3. BIN
      images/icons/debian-icon-32.png
  4. BIN
      images/icons/ubuntu-icon-32.png
  5. 3
      images/logo/README.md
  6. BIN
      images/logo/apple-touch-icon-precomposed.png
  7. BIN
      images/logo/assets/lgsm-font-pt_sans.zip
  8. BIN
      images/logo/assets/lgsm-font-source_code_pro.zip
  9. 238
      images/logo/assets/svg/linuxgsm_black_gradiant_vector.svg
  10. 304
      images/logo/assets/svg/linuxgsm_black_gradiant_vector_full.svg
  11. 286
      images/logo/assets/svg/linuxgsm_black_vector.svg
  12. 248
      images/logo/assets/svg/linuxgsm_white_vector.svg
  13. 324
      images/logo/assets/svg/linuxgsm_white_vector_full.svg
  14. BIN
      images/logo/facebook.png
  15. BIN
      images/logo/lgsm-dark-full.png
  16. BIN
      images/logo/lgsm-dark-square-114.png
  17. BIN
      images/logo/lgsm-dark-square-16.png
  18. BIN
      images/logo/lgsm-dark-square-184.png
  19. BIN
      images/logo/lgsm-dark-square-24.png
  20. BIN
      images/logo/lgsm-dark-square-512.png
  21. BIN
      images/logo/lgsm-dark-square-64.png
  22. BIN
      images/logo/lgsm-light-full.png
  23. BIN
      images/logo/lgsm_full.png
  24. BIN
      images/logo/lgsmbutton.png
  25. BIN
      images/wallpaper/LinuxGSM_wallpaper.png
  26. BIN
      images/wallpaper/LinuxGSM_wallpaper_2.png
  27. 118
      lgsm/config-default/config-lgsm/rwserver/_default.cfg
  28. 1
      lgsm/data/serverlist.csv
  29. 2
      lgsm/functions/alert_discord.sh
  30. 2
      lgsm/functions/alert_ifttt.sh
  31. 2
      lgsm/functions/alert_mailgun.sh
  32. 6
      lgsm/functions/alert_pushover.sh
  33. 10
      lgsm/functions/check_deps.sh
  34. 12
      lgsm/functions/check_ip.sh
  35. 34
      lgsm/functions/check_permissions.sh
  36. 4
      lgsm/functions/check_status.sh
  37. 3
      lgsm/functions/check_steamcmd.sh
  38. 4
      lgsm/functions/check_system_requirements.sh
  39. 28
      lgsm/functions/command_backup.sh
  40. 6
      lgsm/functions/command_console.sh
  41. 12
      lgsm/functions/command_debug.sh
  42. 6
      lgsm/functions/command_dev_detect_deps.sh
  43. 6
      lgsm/functions/command_dev_detect_glibc.sh
  44. 12
      lgsm/functions/command_dev_detect_ldd.sh
  45. 2
      lgsm/functions/command_dev_query_raw.sh
  46. 6
      lgsm/functions/command_fastdl.sh
  47. 4
      lgsm/functions/command_mods_install.sh
  48. 2
      lgsm/functions/command_mods_remove.sh
  49. 2
      lgsm/functions/command_mods_update.sh
  50. 70
      lgsm/functions/command_monitor.sh
  51. 4
      lgsm/functions/command_postdetails.sh
  52. 23
      lgsm/functions/command_start.sh
  53. 26
      lgsm/functions/command_stop.sh
  54. 2
      lgsm/functions/command_test_alert.sh
  55. 4
      lgsm/functions/command_ts3_server_pass.sh
  56. 8
      lgsm/functions/command_update_linuxgsm.sh
  57. 10
      lgsm/functions/command_validate.sh
  58. 20
      lgsm/functions/command_wipe.sh
  59. 2
      lgsm/functions/compress_ut99_maps.sh
  60. 4
      lgsm/functions/core_dl.sh
  61. 2
      lgsm/functions/core_exit.sh
  62. 27
      lgsm/functions/core_functions.sh
  63. 12
      lgsm/functions/core_getopt.sh
  64. 14
      lgsm/functions/fix.sh
  65. 8
      lgsm/functions/fix_kf.sh
  66. 2
      lgsm/functions/fix_kf2.sh
  67. 2
      lgsm/functions/fix_mta.sh
  68. 10
      lgsm/functions/fix_ro.sh
  69. 10
      lgsm/functions/fix_rw.sh
  70. 2
      lgsm/functions/fix_ut.sh
  71. 8
      lgsm/functions/fix_ut2k4.sh
  72. 20
      lgsm/functions/fix_ut3.sh
  73. 60
      lgsm/functions/info_config.sh
  74. 4
      lgsm/functions/info_distro.sh
  75. 4
      lgsm/functions/info_glibc.sh
  76. 23
      lgsm/functions/info_messages.sh
  77. 11
      lgsm/functions/info_parms.sh
  78. 22
      lgsm/functions/install_config.sh
  79. 2
      lgsm/functions/install_dst_token.sh
  80. 4
      lgsm/functions/install_factorio_save.sh
  81. 4
      lgsm/functions/install_gslt.sh
  82. 6
      lgsm/functions/install_logs.sh
  83. 2
      lgsm/functions/install_minecraft_eula.sh
  84. 5
      lgsm/functions/install_server_dir.sh
  85. 16
      lgsm/functions/install_server_files.sh
  86. 4
      lgsm/functions/install_squad_license.sh
  87. 2
      lgsm/functions/install_steamcmd.sh
  88. 12
      lgsm/functions/install_ts3db.sh
  89. 2
      lgsm/functions/install_unreal_tournament_eula.sh
  90. 4
      lgsm/functions/install_ut2k4_key.sh
  91. 38
      lgsm/functions/logs.sh
  92. 30
      lgsm/functions/update_factorio.sh
  93. 20
      lgsm/functions/update_minecraft.sh
  94. 28
      lgsm/functions/update_mta.sh
  95. 26
      lgsm/functions/update_mumble.sh
  96. 48
      lgsm/functions/update_steamcmd.sh
  97. 26
      lgsm/functions/update_ts3.sh
  98. 20
      linuxgsm.sh
  99. 910
      tests/tests_fctrserver.sh
  100. 139
      tests/tests_jc2server.sh

2
.travis.yml

@ -36,6 +36,8 @@ jobs:
include:
- stage: jobs
script: bash tests/tests_jc2server.sh
- # stage name not required
script: bash tests/tests_fctrserver.sh
- # stage name not required
script: bash tests/tests_ts3server.sh
- # stage name not required

BIN
images/icons/centos-icon-32.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

BIN
images/icons/debian-icon-32.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

BIN
images/icons/ubuntu-icon-32.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

3
images/logo/README.md

@ -1,3 +0,0 @@
# LinuxGSM - Official Logos
For Reference the original design can be found here.
http://twolofbees.com/artwork.php?iid=870

BIN
images/logo/apple-touch-icon-precomposed.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

BIN
images/logo/assets/lgsm-font-pt_sans.zip

Binary file not shown.

BIN
images/logo/assets/lgsm-font-source_code_pro.zip

Binary file not shown.

238
images/logo/assets/svg/linuxgsm_black_gradiant_vector.svg

@ -1,238 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="550.72363"
height="829.10431"
id="svg4312"
version="1.1"
inkscape:version="0.92.1 r15371"
sodipodi:docname="lgsm_vecto_s.svg">
<title
id="title5291">Stycil Tux</title>
<defs
id="defs4314">
<linearGradient
id="linearGradient3910-6-0-8-7-7-8">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3912-5-9-3-8-7-4" />
<stop
style="stop-color:#4c4c4c;stop-opacity:1;"
offset="1"
id="stop3914-0-1-3-0-6-9" />
</linearGradient>
<linearGradient
y2="497.71365"
x2="140.00095"
y1="230.00362"
x1="140.00095"
gradientTransform="matrix(3.0012867,0,0,3.0012867,-152.31552,-675.94661)"
gradientUnits="userSpaceOnUse"
id="linearGradient4970"
xlink:href="#linearGradient3910-6-0-8-7-7-8"
inkscape:collect="always" />
<linearGradient
id="linearGradient3910-6-0-8-7-81">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3912-5-9-3-8-5" />
<stop
style="stop-color:#a6a6a6;stop-opacity:1;"
offset="1"
id="stop3914-0-1-3-0-64" />
</linearGradient>
<linearGradient
id="linearGradient4565-3">
<stop
style="stop-color:#939393;stop-opacity:1;"
offset="0"
id="stop4567-1" />
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="1"
id="stop4569-9" />
</linearGradient>
<linearGradient
id="linearGradient4617-7">
<stop
id="stop4619-9"
offset="0"
style="stop-color:#ffffff;stop-opacity:0;" />
<stop
id="stop4621-5"
offset="1"
style="stop-color:#a6a6a6;stop-opacity:0.5" />
</linearGradient>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath4719-2">
<rect
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15;marker:none;enable-background:accumulate"
id="rect4721-4"
width="1352.3417"
height="1135.7903"
x="-490.55533"
y="-358.505" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3910-6-0-8-7-7-8"
id="linearGradient5197"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.0012867,0,0,3.0012867,-152.31552,-675.94661)"
x1="140.00095"
y1="230.00362"
x2="140.00095"
y2="497.71365" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3910-6-0-8-7-7-8"
id="linearGradient5427"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.0012867,0,0,3.0012867,-152.31552,-675.94661)"
x1="140.00095"
y1="230.00362"
x2="140.00095"
y2="497.71365" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.25"
inkscape:cx="89.228893"
inkscape:cy="462.02473"
inkscape:document-units="px"
inkscape:current-layer="g6064"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1" />
<metadata
id="metadata4317">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Stycil Tux</dc:title>
<dc:creator>
<cc:Agent>
<dc:title>Cheeseness (Josh Bush)</dc:title>
</cc:Agent>
</dc:creator>
<dc:subject>
<rdf:Bag>
<rdf:li>tux linux icon</rdf:li>
</rdf:Bag>
</dc:subject>
<dc:description>A stylised stencil (a &quot;stycil&quot; - isn't that catchy) inspired by Larry Ewing's Tux illustration.
http://en.wikipedia.org/wiki/Tux
You're under no obligation to do so, but if you do something with this, drop me a line - I'd love to hear about it.
[email protected]</dc:description>
<dc:date>2012-01-02</dc:date>
<cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
<dc:source>http://twolofbees.com/uploads/2012/stycil_tux.svg</dc:source>
<dc:relation>http://twolofbees.com/artwork.php?iid=870</dc:relation>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="g6064"
transform="translate(56.568542)"
style="display:inline">
<g
transform="translate(-756.17483,-402.59665)"
id="g5961-3"
style="display:inline">
<g
transform="translate(-452.34937,725.009)"
id="g5391-8-7">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5199-1-3-9"
d="m 1295.2947,213.49225 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#000000;stroke:none;stroke-width:0.37795275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5199-9-5-2"
d="m 1295.2947,277.56671 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#000000;stroke:none;stroke-width:0.37795275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5199-8-9-8"
d="m 1295.2947,341.64115 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#000000;stroke:none;stroke-width:0.37795275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
style="fill:#000000"
transform="translate(-0.90575)"
id="g5258-9-9">
<path
inkscape:connector-curvature="0"
d="m 1424.625,162.97931 a 4.75,4 0 0 1 -4.75,4 4.75,4 0 0 1 -4.75,-4 4.75,4 0 0 1 4.75,-4 4.75,4 0 0 1 4.75,4 z m 18.375,-0.25 a 4.75,4 0 0 1 -4.75,4 4.75,4 0 0 1 -4.75,-4 4.75,4 0 0 1 4.75,-4 4.75,4 0 0 1 4.75,4 z m -146.7996,-13.31157 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.37795275;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path5239-0-4-2" />
</g>
</g>
<path
style="fill:#000000;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 912.26148,854.87423 v 7.27539 c 0,2.79634 4.1201,7.15235 7.0974,7.15235 h 57.0982 57.09622 c 2.9773,0 7.0974,-4.35601 7.0974,-7.15235 v -7.27539 h -64.19362 z"
id="path5429-1-9"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 969.04908,749.4172 c -1.2404,0 -6.5507,5.41807 -6.5507,6.21875 v 4.91993 h 0.9531 c 0,43.5553 3.7609,25.12079 3.3398,62.125 0,0.82719 4.4526,3.88671 5.4356,3.88671 v 8.39649 h -1.125 v 1.0625 h -3.2266 v 0.5957 h -48.9883 c -2.8742,0 -6.9863,4.8837 -6.9863,7.15234 v 7.2754 h 128.75002 v -7.2754 c 0,-2.79633 -4.1361,-7.15234 -7.125,-7.15234 h -8.3535 v -0.79492 h -2.166 v -3.18164 h -1.1485 v -1.28125 h -8.9726 -8.9707 v 1.28125 h -1.1485 v 3.18164 h -2.166 v 0.79492 h -16.46682 v -0.5957 h -3.2246 v -1.0625 h -1.1269 v -8.39649 c 0.983,0 5.4355,-3.05952 5.4355,-3.88671 -0.4211,-37.00421 3.3399,-18.5697 3.3398,-62.125 h 0.9532 v -4.91993 c 0,-0.80068 -5.3104,-6.21875 -6.5508,-6.21875 h -6.9551 z"
id="path5429-3-7-4" />
<path
style="fill:none;stroke:#ff00ff;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 912.26148,851.05049 v -7.27539 c 0,-2.79634 4.1201,-7.15235 7.0974,-7.15235 h 57.0982 57.09622 c 2.9773,0 7.0974,4.35601 7.0974,7.15235 v 7.27539 h -64.19362 z"
id="path5429-7-77-6"
inkscape:connector-curvature="0" />
</g>
<g
transform="translate(-55.729306)"
id="g5425"
style="display:inline">
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#f6bd0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:16;marker:none;enable-background:accumulate"
d="m 116.05923,577.93526 c -3.48,0.20109 -7.3256,1.1375 -11.63,2.90735 -27.54822,11.32986 -15.44643,35.19849 -27.48069,50.27156 -12.03367,15.07396 -36.19673,7.81324 -43.79988,38.64156 -7.60286,30.82892 109.26727,182.19131 172.10487,156.34843 62.838,-25.84288 39.4726,-215.66466 12.3803,-232.22455 -27.0917,-16.55961 -39.0863,5.6223 -58.2436,3.37644 -16.1637,-1.89502 -24.5385,-20.40725 -43.331,-19.32079 z m 316.5418,0 c -17.3826,0.30013 -25.7964,17.496 -41.3614,19.32079 -19.1572,2.24586 -31.1518,-19.93605 -58.2435,-3.37644 -27.0923,16.55989 -50.4576,206.38137 12.3803,232.22455 62.8376,25.84288 179.7077,-125.51951 172.1049,-156.34843 -7.6032,-30.82832 -31.6726,-23.5676 -43.7063,-38.64156 -12.0342,-15.07307 0.069,-38.9417 -27.4803,-50.27156 -5.1656,-2.12371 -9.6822,-2.97637 -13.6937,-2.90735 z"
id="path4372-7-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccsssccssscccc"
inkscape:label="path4372-7-9" />
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient5427);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:16;marker:none;enable-background:accumulate"
d="M 275.31501,-1.7916665e-6 C 194.26645,-1.7916665e-6 146.68586,49.443198 137.72462,116.11228 128.76368,182.78135 143.19147,194.9981 120.74874,263.26927 98.30602,331.53923 -2.31211,448.5711 0.04059,556.5511 c 0.73262,33.61801 4.60398,62.7266 11.34877,88.1628 8.26915,-13.70117 20.521,-23.35722 29.45012,-27.48068 6.9708,-3.21799 10.34005,-4.76544 11.91151,-5.34589 0.2281,-1.72724 1.11168,-5.65953 2.71977,-13.41216 2.20895,-10.64736 10.67498,-27.3186 25.13578,-38.2664 -0.14707,-3.31673 -0.30674,-6.59923 -0.37516,-10.0354 -1.67022,-83.75241 84.89138,-174.48761 100.82462,-227.44141 15.93263,-52.952 9.00175,-58.40504 11.62998,-71.56178 2.62793,-13.15674 12.77468,-28.48221 27.38675,-40.70495 1.39198,-1.1651 2.74677,-1.67532 4.12676,-1.68823 13.32151,-0.12605 26.65263,48.37144 52.42857,48.39576 25.77596,0.03 39.1848,-59.11995 54.02317,-46.70753 14.61207,12.22304 24.75882,27.54821 27.38674,40.70495 2.62823,13.15674 -4.30325,18.60978 11.62999,71.56178 15.93322,52.9532 102.40085,143.6887 100.73065,227.44141 -0.069,3.40406 -0.2311,6.65445 -0.3751,9.94176 14.525,10.94599 23.0156,27.68686 25.2294,38.36004 1.6081,7.75263 2.492,11.68492 2.7201,13.41216 1.5666,0.57954 4.95,2.21674 11.9112,5.43983 8.9321,4.13577 21.1104,13.7738 29.3564,27.48068 6.7629,-25.46262 10.7089,-54.59011 11.4425,-88.25674 2.3527,-107.98 -98.3591,-225.01217 -120.80184,-293.28183 C 407.43855,194.9981 421.95998,182.78135 412.99903,116.11228 404.03809,49.443198 356.36355,-1.7916666e-6 275.31501,-1.7916665e-6 Z M 271.93856,763.54594 c -1.37309,8.8712 -3.21648,17.57674 -5.62741,25.98004 -3.92959,13.69607 -9.66505,27.42155 -18.19531,39.11067 8.8406,0.54803 17.90178,0.62006 27.19917,0.18608 9.29738,0.43308 18.35556,0.36075 27.19916,-0.18608 -8.53027,-11.68912 -14.26572,-25.4146 -18.1953,-39.11067 -2.41093,-8.4033 -4.25433,-17.10884 -5.62741,-25.98004 -1.12519,0.03 -2.24077,0.093 -3.37645,0.093 -1.13569,0 -2.25127,-0.072 -3.37645,-0.093 z"
id="path4372-7-91"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssccccccsccccscsccccccsssscscccscsc" />
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 12 KiB

304
images/logo/assets/svg/linuxgsm_black_gradiant_vector_full.svg

@ -1,304 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1710.7236"
height="830.10431"
id="svg4312"
version="1.1"
inkscape:version="0.92.1 r15371"
sodipodi:docname="linuxgsm_black_gradiant_vector_full.svg"
inkscape:export-filename="C:\Users\me\Google Drive\Projects\Linux Game Server Manager\media\logos\master rasta\linuxgsm_black_gradiant_vector_full.png"
inkscape:export-xdpi="84.68"
inkscape:export-ydpi="84.68">
<title
id="title5291">Stycil Tux</title>
<defs
id="defs4314">
<linearGradient
id="linearGradient3910-6-0-8-7-7-8">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3912-5-9-3-8-7-4" />
<stop
style="stop-color:#4c4c4c;stop-opacity:1;"
offset="1"
id="stop3914-0-1-3-0-6-9" />
</linearGradient>
<linearGradient
y2="497.71365"
x2="140.00095"
y1="230.00362"
x1="140.00095"
gradientTransform="matrix(3.0012867,0,0,3.0012867,-152.31552,-675.94661)"
gradientUnits="userSpaceOnUse"
id="linearGradient4970"
xlink:href="#linearGradient3910-6-0-8-7-7-8"
inkscape:collect="always" />
<linearGradient
id="linearGradient3910-6-0-8-7-81">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3912-5-9-3-8-5" />
<stop
style="stop-color:#a6a6a6;stop-opacity:1;"
offset="1"
id="stop3914-0-1-3-0-64" />
</linearGradient>
<linearGradient
id="linearGradient4565-3">
<stop
style="stop-color:#939393;stop-opacity:1;"
offset="0"
id="stop4567-1" />
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="1"
id="stop4569-9" />
</linearGradient>
<linearGradient
id="linearGradient4617-7">
<stop
id="stop4619-9"
offset="0"
style="stop-color:#ffffff;stop-opacity:0;" />
<stop
id="stop4621-5"
offset="1"
style="stop-color:#a6a6a6;stop-opacity:0.5" />
</linearGradient>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath4719-2">
<rect
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15;marker:none;enable-background:accumulate"
id="rect4721-4"
width="1352.3417"
height="1135.7903"
x="-490.55533"
y="-358.505" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3910-6-0-8-7-7-8"
id="linearGradient5197"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.0012867,0,0,3.0012867,-152.31552,-675.94661)"
x1="140.00095"
y1="230.00362"
x2="140.00095"
y2="497.71365" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3910-6-0-8-7-7-8"
id="linearGradient5427"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.0012867,0,0,3.0012867,-152.31552,-675.94661)"
x1="140.00095"
y1="230.00362"
x2="140.00095"
y2="497.71365" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="1228.4325"
inkscape:cy="395.54805"
inkscape:document-units="px"
inkscape:current-layer="svg4312"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:pagecheckerboard="false" />
<metadata
id="metadata4317">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Stycil Tux</dc:title>
<dc:creator>
<cc:Agent>
<dc:title>Cheeseness (Josh Bush)</dc:title>
</cc:Agent>
</dc:creator>
<dc:subject>
<rdf:Bag>
<rdf:li>tux linux icon</rdf:li>
</rdf:Bag>
</dc:subject>
<dc:description>A stylised stencil (a &quot;stycil&quot; - isn't that catchy) inspired by Larry Ewing's Tux illustration.
http://en.wikipedia.org/wiki/Tux
You're under no obligation to do so, but if you do something with this, drop me a line - I'd love to hear about it.
[email protected]</dc:description>
<dc:date>2012-01-02</dc:date>
<cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
<dc:source>http://twolofbees.com/uploads/2012/stycil_tux.svg</dc:source>
<dc:relation>http://twolofbees.com/artwork.php?iid=870</dc:relation>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Layer 1" />
<g
id="g6064"
transform="translate(56.568542,1.0001456)"
style="display:inline">
<g
transform="translate(-756.17483,-402.59665)"
id="g5961-3"
style="display:inline">
<g
transform="translate(-452.34937,725.009)"
id="g5391-8-7">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5199-1-3-9"
d="m 1295.2947,213.49225 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#000000;stroke:none;stroke-width:0.37795275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5199-9-5-2"
d="m 1295.2947,277.56671 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#000000;stroke:none;stroke-width:0.37795275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5199-8-9-8"
d="m 1295.2947,341.64115 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#000000;stroke:none;stroke-width:0.37795275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
style="fill:#000000"
transform="translate(-0.90575)"
id="g5258-9-9">
<path
inkscape:connector-curvature="0"
d="m 1424.625,162.97931 a 4.75,4 0 0 1 -4.75,4 4.75,4 0 0 1 -4.75,-4 4.75,4 0 0 1 4.75,-4 4.75,4 0 0 1 4.75,4 z m 18.375,-0.25 a 4.75,4 0 0 1 -4.75,4 4.75,4 0 0 1 -4.75,-4 4.75,4 0 0 1 4.75,-4 4.75,4 0 0 1 4.75,4 z m -146.7996,-13.31157 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.37795275;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path5239-0-4-2" />
</g>
</g>
<path
style="fill:#000000;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 912.26148,854.87423 v 7.27539 c 0,2.79634 4.1201,7.15235 7.0974,7.15235 h 57.0982 57.09622 c 2.9773,0 7.0974,-4.35601 7.0974,-7.15235 v -7.27539 h -64.19362 z"
id="path5429-1-9"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 969.04908,749.4172 c -1.2404,0 -6.5507,5.41807 -6.5507,6.21875 v 4.91993 h 0.9531 c 0,43.5553 3.7609,25.12079 3.3398,62.125 0,0.82719 4.4526,3.88671 5.4356,3.88671 v 8.39649 h -1.125 v 1.0625 h -3.2266 v 0.5957 h -48.9883 c -2.8742,0 -6.9863,4.8837 -6.9863,7.15234 v 7.2754 h 128.75002 v -7.2754 c 0,-2.79633 -4.1361,-7.15234 -7.125,-7.15234 h -8.3535 v -0.79492 h -2.166 v -3.18164 h -1.1485 v -1.28125 h -8.9726 -8.9707 v 1.28125 h -1.1485 v 3.18164 h -2.166 v 0.79492 h -16.46682 v -0.5957 h -3.2246 v -1.0625 h -1.1269 v -8.39649 c 0.983,0 5.4355,-3.05952 5.4355,-3.88671 -0.4211,-37.00421 3.3399,-18.5697 3.3398,-62.125 h 0.9532 v -4.91993 c 0,-0.80068 -5.3104,-6.21875 -6.5508,-6.21875 h -6.9551 z"
id="path5429-3-7-4" />
<path
style="fill:none;stroke:#ff00ff;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 912.26148,851.05049 v -7.27539 c 0,-2.79634 4.1201,-7.15235 7.0974,-7.15235 h 57.0982 57.09622 c 2.9773,0 7.0974,4.35601 7.0974,7.15235 v 7.27539 h -64.19362 z"
id="path5429-7-77-6"
inkscape:connector-curvature="0" />
</g>
<g
transform="translate(-55.729306)"
id="g5425"
style="display:inline">
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#f6bd0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:16;marker:none;enable-background:accumulate"
d="m 116.05923,577.93526 c -3.48,0.20109 -7.3256,1.1375 -11.63,2.90735 -27.54822,11.32986 -15.44643,35.19849 -27.48069,50.27156 -12.03367,15.07396 -36.19673,7.81324 -43.79988,38.64156 -7.60286,30.82892 109.26727,182.19131 172.10487,156.34843 62.838,-25.84288 39.4726,-215.66466 12.3803,-232.22455 -27.0917,-16.55961 -39.0863,5.6223 -58.2436,3.37644 -16.1637,-1.89502 -24.5385,-20.40725 -43.331,-19.32079 z m 316.5418,0 c -17.3826,0.30013 -25.7964,17.496 -41.3614,19.32079 -19.1572,2.24586 -31.1518,-19.93605 -58.2435,-3.37644 -27.0923,16.55989 -50.4576,206.38137 12.3803,232.22455 62.8376,25.84288 179.7077,-125.51951 172.1049,-156.34843 -7.6032,-30.82832 -31.6726,-23.5676 -43.7063,-38.64156 -12.0342,-15.07307 0.069,-38.9417 -27.4803,-50.27156 -5.1656,-2.12371 -9.6822,-2.97637 -13.6937,-2.90735 z"
id="path4372-7-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccsssccssscccc"
inkscape:label="path4372-7-9" />
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient5427);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:16;marker:none;enable-background:accumulate"
d="M 275.31501,-1.7916665e-6 C 194.26645,-1.7916665e-6 146.68586,49.443198 137.72462,116.11228 128.76368,182.78135 143.19147,194.9981 120.74874,263.26927 98.30602,331.53923 -2.31211,448.5711 0.04059,556.5511 c 0.73262,33.61801 4.60398,62.7266 11.34877,88.1628 8.26915,-13.70117 20.521,-23.35722 29.45012,-27.48068 6.9708,-3.21799 10.34005,-4.76544 11.91151,-5.34589 0.2281,-1.72724 1.11168,-5.65953 2.71977,-13.41216 2.20895,-10.64736 10.67498,-27.3186 25.13578,-38.2664 -0.14707,-3.31673 -0.30674,-6.59923 -0.37516,-10.0354 -1.67022,-83.75241 84.89138,-174.48761 100.82462,-227.44141 15.93263,-52.952 9.00175,-58.40504 11.62998,-71.56178 2.62793,-13.15674 12.77468,-28.48221 27.38675,-40.70495 1.39198,-1.1651 2.74677,-1.67532 4.12676,-1.68823 13.32151,-0.12605 26.65263,48.37144 52.42857,48.39576 25.77596,0.03 39.1848,-59.11995 54.02317,-46.70753 14.61207,12.22304 24.75882,27.54821 27.38674,40.70495 2.62823,13.15674 -4.30325,18.60978 11.62999,71.56178 15.93322,52.9532 102.40085,143.6887 100.73065,227.44141 -0.069,3.40406 -0.2311,6.65445 -0.3751,9.94176 14.525,10.94599 23.0156,27.68686 25.2294,38.36004 1.6081,7.75263 2.492,11.68492 2.7201,13.41216 1.5666,0.57954 4.95,2.21674 11.9112,5.43983 8.9321,4.13577 21.1104,13.7738 29.3564,27.48068 6.7629,-25.46262 10.7089,-54.59011 11.4425,-88.25674 2.3527,-107.98 -98.3591,-225.01217 -120.80184,-293.28183 C 407.43855,194.9981 421.95998,182.78135 412.99903,116.11228 404.03809,49.443198 356.36355,-1.7916666e-6 275.31501,-1.7916665e-6 Z M 271.93856,763.54594 c -1.37309,8.8712 -3.21648,17.57674 -5.62741,25.98004 -3.92959,13.69607 -9.66505,27.42155 -18.19531,39.11067 8.8406,0.54803 17.90178,0.62006 27.19917,0.18608 9.29738,0.43308 18.35556,0.36075 27.19916,-0.18608 -8.53027,-11.68912 -14.26572,-25.4146 -18.1953,-39.11067 -2.41093,-8.4033 -4.25433,-17.10884 -5.62741,-25.98004 -1.12519,0.03 -2.24077,0.093 -3.37645,0.093 -1.13569,0 -2.25127,-0.072 -3.37645,-0.093 z"
id="path4372-7-91"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssccccccsccccscsccccccsssscscccscsc" />
</g>
<flowRoot
xml:space="preserve"
id="flowRoot4513"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
transform="translate(-56.568542,-1.8359376e-6)"><flowRegion
id="flowRegion4515"><rect
id="rect4517"
width="584"
height="560"
x="532"
y="65.104309" /></flowRegion><flowPara
id="flowPara4519" /></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot4521"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'PT Sans';-inkscape-font-specification:'PT Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
transform="translate(-56.568542,-1.8359376e-6)"><flowRegion
id="flowRegion4523"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'PT Sans';-inkscape-font-specification:'PT Sans'"><rect
id="rect4525"
width="476"
height="536"
x="548"
y="81.104309"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'PT Sans';-inkscape-font-specification:'PT Sans'" /></flowRegion><flowPara
id="flowPara4527" /></flowRoot> <text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:169.59358215px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.23983955"
x="429.06406"
y="220.41109"
id="text4531"
transform="scale(1.0093264,0.99075977)"
inkscape:export-filename="C:\Users\me\Google Drive\Projects\Linux Game Server Manager\media\logos\master rasta\text4531.png"
inkscape:export-xdpi="118.84"
inkscape:export-ydpi="118.84"><tspan
sodipodi:role="line"
id="tspan4529"
x="429.06406"
y="220.41109"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:213.33334351px;font-family:'PT Sans';-inkscape-font-specification:'PT Sans';fill:#f6bd0e;fill-opacity:1;stroke-width:4.23983955">Linux</tspan><tspan
sodipodi:role="line"
x="429.06406"
y="487.07776"
id="tspan4535"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:213.33334351px;font-family:'PT Sans';-inkscape-font-specification:'PT Sans';stroke-width:4.23983955"> Game Server</tspan><tspan
sodipodi:role="line"
x="429.06406"
y="753.74445"
id="tspan4537"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:213.33334351px;font-family:'PT Sans';-inkscape-font-specification:'PT Sans';stroke-width:4.23983955"> Managers_</tspan></text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 16 KiB

286
images/logo/assets/svg/linuxgsm_black_vector.svg

@ -1,286 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="550.72363"
height="829.10431"
id="svg4312"
version="1.1"
inkscape:version="0.92.1 r15371"
sodipodi:docname="linuxgsm_black_vector.svg">
<title
id="title5291">Stycil Tux</title>
<defs
id="defs4314">
<linearGradient
id="linearGradient3910-6-0-8-7-7-8">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3912-5-9-3-8-7-4" />
<stop
style="stop-color:#4c4c4c;stop-opacity:1;"
offset="1"
id="stop3914-0-1-3-0-6-9" />
</linearGradient>
<linearGradient
y2="497.71365"
x2="140.00095"
y1="230.00362"
x1="140.00095"
gradientTransform="matrix(3.0012867,0,0,3.0012867,-152.31552,-675.94661)"
gradientUnits="userSpaceOnUse"
id="linearGradient4970"
xlink:href="#linearGradient3910-6-0-8-7-7-8"
inkscape:collect="always" />
<linearGradient
id="linearGradient3910-6-0-8-7-81">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3912-5-9-3-8-5" />
<stop
style="stop-color:#a6a6a6;stop-opacity:1;"
offset="1"
id="stop3914-0-1-3-0-64" />
</linearGradient>
<linearGradient
id="linearGradient4565-3">
<stop
style="stop-color:#939393;stop-opacity:1;"
offset="0"
id="stop4567-1" />
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="1"
id="stop4569-9" />
</linearGradient>
<linearGradient
id="linearGradient4617-7">
<stop
id="stop4619-9"
offset="0"
style="stop-color:#ffffff;stop-opacity:0;" />
<stop
id="stop4621-5"
offset="1"
style="stop-color:#a6a6a6;stop-opacity:0.5" />
</linearGradient>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath4719-2">
<rect
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15;marker:none;enable-background:accumulate"
id="rect4721-4"
width="1352.3417"
height="1135.7903"
x="-490.55533"
y="-358.505" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3910-6-0-8-7-7-8"
id="linearGradient5197"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.0012867,0,0,3.0012867,-152.31552,-675.94661)"
x1="140.00095"
y1="230.00362"
x2="140.00095"
y2="497.71365" />
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3910-6-0-8-7-7-8"
id="linearGradient5427"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.0012867,0,0,3.0012867,-152.31552,-675.94661)"
x1="140.00095"
y1="230.00362"
x2="140.00095"
y2="497.71365" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="397.59441"
inkscape:cy="382.02473"
inkscape:document-units="px"
inkscape:current-layer="g6064"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1" />
<metadata
id="metadata4317">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Stycil Tux</dc:title>
<dc:creator>
<cc:Agent>
<dc:title>Cheeseness (Josh Bush)</dc:title>
</cc:Agent>
</dc:creator>
<dc:subject>
<rdf:Bag>
<rdf:li>tux linux icon</rdf:li>
</rdf:Bag>
</dc:subject>
<dc:description>A stylised stencil (a &quot;stycil&quot; - isn't that catchy) inspired by Larry Ewing's Tux illustration.
http://en.wikipedia.org/wiki/Tux
You're under no obligation to do so, but if you do something with this, drop me a line - I'd love to hear about it.
[email protected]</dc:description>
<dc:date>2012-01-02</dc:date>
<cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
<dc:source>http://twolofbees.com/uploads/2012/stycil_tux.svg</dc:source>
<dc:relation>http://twolofbees.com/artwork.php?iid=870</dc:relation>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="g6064"
transform="translate(56.568542)"
style="display:inline">
<g
transform="translate(-756.17483,-402.59665)"
id="g5961-3"
style="display:inline">
<g
transform="translate(-452.34937,725.009)"
id="g5391-8-7">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5199-1-3-9"
d="m 1295.2947,213.49225 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#000000;stroke:none;stroke-width:0.37795275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5199-9-5-2"
d="m 1295.2947,277.56671 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#000000;stroke:none;stroke-width:0.37795275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5199-8-9-8"
d="m 1295.2947,341.64115 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#000000;stroke:none;stroke-width:0.37795275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
style="fill:#000000"
transform="translate(-0.90575)"
id="g5258-9-9">
<path
inkscape:connector-curvature="0"
d="m 1424.625,162.97931 a 4.75,4 0 0 1 -4.75,4 4.75,4 0 0 1 -4.75,-4 4.75,4 0 0 1 4.75,-4 4.75,4 0 0 1 4.75,4 z m 18.375,-0.25 a 4.75,4 0 0 1 -4.75,4 4.75,4 0 0 1 -4.75,-4 4.75,4 0 0 1 4.75,-4 4.75,4 0 0 1 4.75,4 z m -146.7996,-13.31157 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.37795275;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path5239-0-4-2" />
</g>
</g>
<path
style="fill:#000000;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 912.26148,854.87423 v 7.27539 c 0,2.79634 4.1201,7.15235 7.0974,7.15235 h 57.0982 57.09622 c 2.9773,0 7.0974,-4.35601 7.0974,-7.15235 v -7.27539 h -64.19362 z"
id="path5429-1-9"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="fill:#000000;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 969.04908,749.4172 c -1.2404,0 -6.5507,5.41807 -6.5507,6.21875 v 4.91993 h 0.9531 c 0,43.5553 3.7609,25.12079 3.3398,62.125 0,0.82719 4.4526,3.88671 5.4356,3.88671 v 8.39649 h -1.125 v 1.0625 h -3.2266 v 0.5957 h -48.9883 c -2.8742,0 -6.9863,4.8837 -6.9863,7.15234 v 7.2754 h 128.75002 v -7.2754 c 0,-2.79633 -4.1361,-7.15234 -7.125,-7.15234 h -8.3535 v -0.79492 h -2.166 v -3.18164 h -1.1485 v -1.28125 h -8.9726 -8.9707 v 1.28125 h -1.1485 v 3.18164 h -2.166 v 0.79492 h -16.46682 v -0.5957 h -3.2246 v -1.0625 h -1.1269 v -8.39649 c 0.983,0 5.4355,-3.05952 5.4355,-3.88671 -0.4211,-37.00421 3.3399,-18.5697 3.3398,-62.125 h 0.9532 v -4.91993 c 0,-0.80068 -5.3104,-6.21875 -6.5508,-6.21875 h -6.9551 z"
id="path5429-3-7-4" />
<path
style="fill:none;stroke:#ff00ff;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 912.26148,851.05049 v -7.27539 c 0,-2.79634 4.1201,-7.15235 7.0974,-7.15235 h 57.0982 57.09622 c 2.9773,0 7.0974,4.35601 7.0974,7.15235 v 7.27539 h -64.19362 z"
id="path5429-7-77-6"
inkscape:connector-curvature="0" />
</g>
<g
transform="translate(-55.729306)"
id="g5425"
style="display:inline">
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#f6bd0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:16;marker:none;enable-background:accumulate"
d="m 116.05923,577.93526 c -3.48,0.20109 -7.3256,1.1375 -11.63,2.90735 -27.54822,11.32986 -15.44643,35.19849 -27.48069,50.27156 -12.03367,15.07396 -36.19673,7.81324 -43.79988,38.64156 -7.60286,30.82892 109.26727,182.19131 172.10487,156.34843 62.838,-25.84288 39.4726,-215.66466 12.3803,-232.22455 -27.0917,-16.55961 -39.0863,5.6223 -58.2436,3.37644 -16.1637,-1.89502 -24.5385,-20.40725 -43.331,-19.32079 z m 316.5418,0 c -17.3826,0.30013 -25.7964,17.496 -41.3614,19.32079 -19.1572,2.24586 -31.1518,-19.93605 -58.2435,-3.37644 -27.0923,16.55989 -50.4576,206.38137 12.3803,232.22455 62.8376,25.84288 179.7077,-125.51951 172.1049,-156.34843 -7.6032,-30.82832 -31.6726,-23.5676 -43.7063,-38.64156 -12.0342,-15.07307 0.069,-38.9417 -27.4803,-50.27156 -5.1656,-2.12371 -9.6822,-2.97637 -13.6937,-2.90735 z"
id="path4372-7-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccsssccssscccc"
inkscape:label="path4372-7-9" />
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:url(#linearGradient5427);fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:16;marker:none;enable-background:accumulate"
d="M 275.31501,-1.7916665e-6 C 194.26645,-1.7916665e-6 146.68586,49.443198 137.72462,116.11228 128.76368,182.78135 143.19147,194.9981 120.74874,263.26927 98.30602,331.53923 -2.31211,448.5711 0.04059,556.5511 c 0.73262,33.61801 4.60398,62.7266 11.34877,88.1628 8.26915,-13.70117 20.521,-23.35722 29.45012,-27.48068 6.9708,-3.21799 10.34005,-4.76544 11.91151,-5.34589 0.2281,-1.72724 1.11168,-5.65953 2.71977,-13.41216 2.20895,-10.64736 10.67498,-27.3186 25.13578,-38.2664 -0.14707,-3.31673 -0.30674,-6.59923 -0.37516,-10.0354 -1.67022,-83.75241 84.89138,-174.48761 100.82462,-227.44141 15.93263,-52.952 9.00175,-58.40504 11.62998,-71.56178 2.62793,-13.15674 12.77468,-28.48221 27.38675,-40.70495 1.39198,-1.1651 2.74677,-1.67532 4.12676,-1.68823 13.32151,-0.12605 26.65263,48.37144 52.42857,48.39576 25.77596,0.03 39.1848,-59.11995 54.02317,-46.70753 14.61207,12.22304 24.75882,27.54821 27.38674,40.70495 2.62823,13.15674 -4.30325,18.60978 11.62999,71.56178 15.93322,52.9532 102.40085,143.6887 100.73065,227.44141 -0.069,3.40406 -0.2311,6.65445 -0.3751,9.94176 14.525,10.94599 23.0156,27.68686 25.2294,38.36004 1.6081,7.75263 2.492,11.68492 2.7201,13.41216 1.5666,0.57954 4.95,2.21674 11.9112,5.43983 8.9321,4.13577 21.1104,13.7738 29.3564,27.48068 6.7629,-25.46262 10.7089,-54.59011 11.4425,-88.25674 2.3527,-107.98 -98.3591,-225.01217 -120.80184,-293.28183 C 407.43855,194.9981 421.95998,182.78135 412.99903,116.11228 404.03809,49.443198 356.36355,-1.7916666e-6 275.31501,-1.7916665e-6 Z M 271.93856,763.54594 c -1.37309,8.8712 -3.21648,17.57674 -5.62741,25.98004 -3.92959,13.69607 -9.66505,27.42155 -18.19531,39.11067 8.8406,0.54803 17.90178,0.62006 27.19917,0.18608 9.29738,0.43308 18.35556,0.36075 27.19916,-0.18608 -8.53027,-11.68912 -14.26572,-25.4146 -18.1953,-39.11067 -2.41093,-8.4033 -4.25433,-17.10884 -5.62741,-25.98004 -1.12519,0.03 -2.24077,0.093 -3.37645,0.093 -1.13569,0 -2.25127,-0.072 -3.37645,-0.093 z"
id="path4372-7-91"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssccccccsccccscsccccccsssscscccscsc" />
</g>
<path
style="fill:#000000;fill-opacity:1"
d="m 114.59441,283.23565 c 0,-0.24417 1.59959,-4.40667 3.55464,-9.25 3.63491,-9.00495 9.23801,-27.28845 11.96125,-39.03081 3.90844,-16.85289 4.64856,-25.10578 5.49513,-61.27526 0.50046,-21.38213 1.516,-42.09154 2.45188,-50 1.57119,-13.27699 5.4476,-31.36537 8.08998,-37.750001 l 1.34507,-3.25 h 128.8934 128.8934 l 2.63985,8.75 c 6.08103,20.156101 7.61955,34.406361 8.6641,80.250001 0.89562,39.30731 1.86887,48.82949 7.0831,69.30099 2.80302,11.00486 8.63504,28.95882 11.55539,35.57344 1.30505,2.95594 2.37281,5.76844 2.37281,6.25 0,0.48538 -16.91415,0.87557 -37.95469,0.87557 h -37.95468 l -0.56349,-3.25 c -0.30992,-1.7875 -0.93391,-10.02932 -1.38663,-18.31515 -0.79328,-14.51864 -0.95643,-15.34226 -4.4972,-22.70384 -6.90636,-14.35891 -21.97739,-30.71166 -28.31639,-30.72455 -4.37845,-0.009 -7.44212,3.3144 -19.37708,21.01926 -14.2565,21.14873 -22.42203,27.97905 -31.92472,26.70447 -9.8998,-1.32784 -18.30259,-8.82427 -31.07877,-27.72648 -14.74352,-21.81289 -17.97303,-23.64117 -27.45345,-15.5418 -7.14,6.0999 -15.61506,17.44854 -20.1057,26.92283 -3.66096,7.72383 -3.75314,8.20992 -4.51711,23.82022 -0.42894,8.76451 -1.05551,16.80388 -1.39238,17.86526 -0.59088,1.86169 -1.95084,1.92978 -38.5451,1.92978 -20.86294,0 -37.93261,-0.19977 -37.93261,-0.44393 z"
id="path4513"
inkscape:connector-curvature="0"
transform="translate(-56.568542)" />
<path
style="fill:#000000;fill-opacity:1"
d="m 39.594409,421.1642 c 0,-2.46749 18.185161,-36.06364 43.051057,-79.5346 8.950557,-15.64751 19.753034,-35.20002 24.005494,-43.45002 l 7.73176,-15 h 38.10604 38.10604 l -2e-4,2.23249 c -1e-4,1.22787 -1.99431,10.07578 -4.43156,19.66203 -7.78392,30.6158 -10.11179,35.29497 -49.17014,98.83517 l -10.89849,17.72969 -43.250001,0.0203 c -23.7875,0.0112 -43.25,-0.21161 -43.25,-0.49507 z"
id="path4515"
inkscape:connector-curvature="0"
transform="translate(-56.568542)" />
<path
style="fill:#000000;fill-opacity:1"
d="M 1.6139312,543.92958 C 1.641425,537.2401 4.063405,519.97082 6.6187735,508.24388 11.235559,487.05683 20.217862,461.53331 32.507714,434.67958 l 6.178397,-13.5 43.454149,0.27069 c 23.89978,0.14889 43.45415,0.51009 43.45415,0.80269 0,0.29259 -2.7456,5.28856 -6.10133,11.10216 -23.740815,41.12952 -36.428347,75.98168 -38.526541,105.83092 l -0.66733,9.49354 H 40.946809 1.5944086 Z"
id="path4517"
inkscape:connector-curvature="0"
transform="translate(-56.568542)" />
<path
style="fill:#000000;fill-opacity:1"
d="M 12.11918,641.52282 C 7.434105,628.52087 1.5944086,582.80229 1.5944086,559.12511 v -10.44553 h 39.5000004 39.5 v 5.52174 c 0,5.37128 -0.152511,5.67425 -5.596954,11.11869 -10.385281,10.38528 -16.990895,22.73555 -20.01306,37.41768 l -1.754338,8.52283 -9.567824,4.6363 c -11.35871,5.50411 -20.095112,12.38399 -26.434177,20.81682 -2.839037,3.77675 -4.811755,5.63374 -5.108876,4.80918 z"
id="path4519"
inkscape:connector-curvature="0"
transform="translate(-56.568542)" />
<path
style="fill:#000000;fill-opacity:1"
d="m 254.16359,821.45812 c 7.52064,-12.19811 14.23801,-31.7349 18.14694,-52.77854 0.74974,-4.0362 1.14242,-4.53002 3.80989,-4.79125 l 2.97399,-0.29125 1.85186,9.79125 c 3.45673,18.27665 11.55543,39.66605 19.70443,52.04125 l 2.14011,3.25 h -26.53977 -26.53978 z"
id="path4521"
inkscape:connector-curvature="0"
transform="translate(-56.568542)" />
<path
style="fill:#000000;fill-opacity:1"
d="m 535.09441,636.96904 c -5.54021,-7.77645 -15.28282,-15.56204 -26.40806,-21.1034 l -9.40806,-4.68606 -2.11797,-9.5 c -3.40509,-15.27326 -11.54346,-29.68916 -21.63936,-38.33087 l -3.92655,-3.36099 v -10.77573 c 0,-13.74446 -2.22522,-28.68219 -6.46689,-43.4117 -3.47339,-12.06159 -9.76927,-28.70642 -14.06363,-37.18093 l -2.48152,-4.89705 41.9254,-0.27137 41.92541,-0.27136 5.08406,15.5 c 9.90205,30.18876 13.08225,48.71682 13.06685,76.12834 -0.0115,20.54191 -1.15712,36.33581 -3.98003,54.87166 -2.29557,15.07316 -6.0516,33.01825 -6.8971,32.95201 -0.3369,-0.0264 -2.41255,-2.57454 -4.61255,-5.66255 z"
id="path4523"
inkscape:connector-curvature="0"
transform="translate(-56.568542)" />
<path
style="fill:#000000;fill-opacity:1"
d="m 443.09441,452.10697 c -5.67275,-11.13765 -16.52406,-29.55199 -45.92151,-77.92739 -17.75407,-29.21548 -23.39832,-41.31692 -29.96695,-64.25 l -1.50374,-5.25 41.6961,0.007 41.6961,0.007 3.91592,7.24331 c 2.15375,3.98382 11.87827,21.19331 21.61004,38.24331 20.98319,36.76244 28.29962,50.14554 37.85218,69.23861 8.14156,16.27284 19.45527,42.26131 18.71857,42.99801 -0.27223,0.27223 -18.85536,0.71456 -41.29584,0.98295 l -40.80087,0.48797 z"
id="path4525"
inkscape:connector-curvature="0"
transform="translate(-56.568542)" />
<path
style="fill:#000000;fill-opacity:1"
d="m 364.20108,297.42958 c -0.87675,-3.9875 -1.87817,-8.7125 -2.22538,-10.5 l -0.63129,-3.25 h 37.04321 c 20.37377,0 37.64252,-0.21632 38.375,-0.48072 0.88636,-0.31994 2.98736,2.94106 6.28175,9.75 2.72247,5.6269 5.12247,10.56822 5.33333,10.98072 0.21086,0.4125 -18.28395,0.75 -41.09958,0.75 h -41.48295 z"
id="path4527"
inkscape:connector-curvature="0"
transform="translate(-56.568542)" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 18 KiB

248
images/logo/assets/svg/linuxgsm_white_vector.svg

@ -1,248 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="550.72363"
height="829.10431"
id="svg4312"
version="1.1"
inkscape:version="0.92.1 r15371"
sodipodi:docname="linuxgsm_logo_white.svg"
inkscape:export-filename="C:\Users\me\Desktop\lgsm media\linuxgsm_logo_white.png"
inkscape:export-xdpi="61.009998"
inkscape:export-ydpi="61.009998">
<title
id="title5291">Stycil Tux</title>
<defs
id="defs4314">
<linearGradient
id="linearGradient3910-6-0-8-7-7-8">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3912-5-9-3-8-7-4" />
<stop
style="stop-color:#4c4c4c;stop-opacity:1;"
offset="1"
id="stop3914-0-1-3-0-6-9" />
</linearGradient>
<linearGradient
y2="497.71365"
x2="140.00095"
y1="230.00362"
x1="140.00095"
gradientTransform="matrix(3.0012867,0,0,3.0012867,-152.31552,-675.94661)"
gradientUnits="userSpaceOnUse"
id="linearGradient4970"
xlink:href="#linearGradient3910-6-0-8-7-7-8"
inkscape:collect="always" />
<linearGradient
id="linearGradient3910-6-0-8-7-81">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3912-5-9-3-8-5" />
<stop
style="stop-color:#a6a6a6;stop-opacity:1;"
offset="1"
id="stop3914-0-1-3-0-64" />
</linearGradient>
<linearGradient
id="linearGradient4565-3">
<stop
style="stop-color:#939393;stop-opacity:1;"
offset="0"
id="stop4567-1" />
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="1"
id="stop4569-9" />
</linearGradient>
<linearGradient
id="linearGradient4617-7">
<stop
id="stop4619-9"
offset="0"
style="stop-color:#ffffff;stop-opacity:0;" />
<stop
id="stop4621-5"
offset="1"
style="stop-color:#a6a6a6;stop-opacity:0.5" />
</linearGradient>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath4719-2">
<rect
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15;marker:none;enable-background:accumulate"
id="rect4721-4"
width="1352.3417"
height="1135.7903"
x="-490.55533"
y="-358.505" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3910-6-0-8-7-7-8"
id="linearGradient5197"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.0012867,0,0,3.0012867,-152.31552,-675.94661)"
x1="140.00095"
y1="230.00362"
x2="140.00095"
y2="497.71365" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="258.13863"
inkscape:cy="366.87337"
inkscape:document-units="px"
inkscape:current-layer="g6064"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:pagecheckerboard="true" />
<metadata
id="metadata4317">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Stycil Tux</dc:title>
<dc:creator>
<cc:Agent>
<dc:title>Cheeseness (Josh Bush)</dc:title>
</cc:Agent>
</dc:creator>
<dc:subject>
<rdf:Bag>
<rdf:li>tux linux icon</rdf:li>
</rdf:Bag>
</dc:subject>
<dc:description>A stylised stencil (a &quot;stycil&quot; - isn't that catchy) inspired by Larry Ewing's Tux illustration.
http://en.wikipedia.org/wiki/Tux
You're under no obligation to do so, but if you do something with this, drop me a line - I'd love to hear about it.
[email protected]</dc:description>
<dc:date>2012-01-02</dc:date>
<cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
<dc:source>http://twolofbees.com/uploads/2012/stycil_tux.svg</dc:source>
<dc:relation>http://twolofbees.com/artwork.php?iid=870</dc:relation>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
<g
id="g6064"
transform="translate(56.568542)"
style="display:inline">
<g
transform="translate(-756.17483,-402.59665)"
id="g5961-3"
style="display:inline;fill:#ababb2;fill-opacity:1">
<g
transform="translate(-452.34937,725.009)"
id="g5391-8-7"
style="fill:#ababb2;fill-opacity:1">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5199-1-3-9"
d="m 1295.2947,213.49225 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#ababb2;stroke:none;stroke-width:0.37795275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5199-9-5-2"
d="m 1295.2947,277.56671 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#ababb2;stroke:none;stroke-width:0.37795275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5199-8-9-8"
d="m 1295.2947,341.64115 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#ababb2;stroke:none;stroke-width:0.37795275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1" />
<g
style="fill:#ababb2;fill-opacity:1"
transform="translate(-0.90575)"
id="g5258-9-9">
<path
inkscape:connector-curvature="0"
d="m 1424.625,162.97931 a 4.75,4 0 0 1 -4.75,4 4.75,4 0 0 1 -4.75,-4 4.75,4 0 0 1 4.75,-4 4.75,4 0 0 1 4.75,4 z m 18.375,-0.25 a 4.75,4 0 0 1 -4.75,4 4.75,4 0 0 1 -4.75,-4 4.75,4 0 0 1 4.75,-4 4.75,4 0 0 1 4.75,4 z m -146.7996,-13.31157 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#ababb2;fill-opacity:1;stroke:none;stroke-width:0.37795275;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path5239-0-4-2" />
</g>
</g>
<path
style="fill:#ababb2;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
d="m 912.26148,854.87423 v 7.27539 c 0,2.79634 4.1201,7.15235 7.0974,7.15235 h 57.0982 57.09622 c 2.9773,0 7.0974,-4.35601 7.0974,-7.15235 v -7.27539 h -64.19362 z"
id="path5429-1-9"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="fill:#ababb2;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
d="m 969.04908,749.4172 c -1.2404,0 -6.5507,5.41807 -6.5507,6.21875 v 4.91993 h 0.9531 c 0,43.5553 3.7609,25.12079 3.3398,62.125 0,0.82719 4.4526,3.88671 5.4356,3.88671 v 8.39649 h -1.125 v 1.0625 h -3.2266 v 0.5957 h -48.9883 c -2.8742,0 -6.9863,4.8837 -6.9863,7.15234 v 7.2754 h 128.75002 v -7.2754 c 0,-2.79633 -4.1361,-7.15234 -7.125,-7.15234 h -8.3535 v -0.79492 h -2.166 v -3.18164 h -1.1485 v -1.28125 h -8.9726 -8.9707 v 1.28125 h -1.1485 v 3.18164 h -2.166 v 0.79492 h -16.46682 v -0.5957 h -3.2246 v -1.0625 h -1.1269 v -8.39649 c 0.983,0 5.4355,-3.05952 5.4355,-3.88671 -0.4211,-37.00421 3.3399,-18.5697 3.3398,-62.125 h 0.9532 v -4.91993 c 0,-0.80068 -5.3104,-6.21875 -6.5508,-6.21875 h -6.9551 z"
id="path5429-3-7-4" />
<path
style="fill:#ababb2;stroke:#ff00ff;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
d="m 912.26148,851.05049 v -7.27539 c 0,-2.79634 4.1201,-7.15235 7.0974,-7.15235 h 57.0982 57.09622 c 2.9773,0 7.0974,4.35601 7.0974,7.15235 v 7.27539 h -64.19362 z"
id="path5429-7-77-6"
inkscape:connector-curvature="0" />
</g>
<g
transform="translate(-55.729306)"
id="g5425"
style="display:inline">
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#f6bd0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:16;marker:none;enable-background:accumulate"
d="m 116.05923,577.93526 c -3.48,0.20109 -7.3256,1.1375 -11.63,2.90735 -27.54822,11.32986 -15.44643,35.19849 -27.48069,50.27156 -12.03367,15.07396 -36.19673,7.81324 -43.79988,38.64156 -7.60286,30.82892 109.26727,182.19131 172.10487,156.34843 62.838,-25.84288 39.4726,-215.66466 12.3803,-232.22455 -27.0917,-16.55961 -39.0863,5.6223 -58.2436,3.37644 -16.1637,-1.89502 -24.5385,-20.40725 -43.331,-19.32079 z m 316.5418,0 c -17.3826,0.30013 -25.7964,17.496 -41.3614,19.32079 -19.1572,2.24586 -31.1518,-19.93605 -58.2435,-3.37644 -27.0923,16.55989 -50.4576,206.38137 12.3803,232.22455 62.8376,25.84288 179.7077,-125.51951 172.1049,-156.34843 -7.6032,-30.82832 -31.6726,-23.5676 -43.7063,-38.64156 -12.0342,-15.07307 0.069,-38.9417 -27.4803,-50.27156 -5.1656,-2.12371 -9.6822,-2.97637 -13.6937,-2.90735 z"
id="path4372-7-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccsssccssscccc"
inkscape:label="path4372-7-9" />
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:16;marker:none;enable-background:accumulate"
d="M 275.31501,-1.7916665e-6 C 194.26645,-1.7916665e-6 146.68586,49.443198 137.72462,116.11228 128.76368,182.78135 143.19147,194.9981 120.74874,263.26927 98.30602,331.53923 -2.31211,448.5711 0.04059,556.5511 c 0.73262,33.61801 4.60398,62.7266 11.34877,88.1628 8.26915,-13.70117 20.521,-23.35722 29.45012,-27.48068 6.9708,-3.21799 10.34005,-4.76544 11.91151,-5.34589 0.2281,-1.72724 1.11168,-5.65953 2.71977,-13.41216 2.20895,-10.64736 10.67498,-27.3186 25.13578,-38.2664 -0.14707,-3.31673 -0.30674,-6.59923 -0.37516,-10.0354 -1.67022,-83.75241 84.89138,-174.48761 100.82462,-227.44141 15.93263,-52.952 9.00175,-58.40504 11.62998,-71.56178 2.62793,-13.15674 12.77468,-28.48221 27.38675,-40.70495 1.39198,-1.1651 2.74677,-1.67532 4.12676,-1.68823 13.32151,-0.12605 26.65263,48.37144 52.42857,48.39576 25.77596,0.03 39.1848,-59.11995 54.02317,-46.70753 14.61207,12.22304 24.75882,27.54821 27.38674,40.70495 2.62823,13.15674 -4.30325,18.60978 11.62999,71.56178 15.93322,52.9532 102.40085,143.6887 100.73065,227.44141 -0.069,3.40406 -0.2311,6.65445 -0.3751,9.94176 14.525,10.94599 23.0156,27.68686 25.2294,38.36004 1.6081,7.75263 2.492,11.68492 2.7201,13.41216 1.5666,0.57954 4.95,2.21674 11.9112,5.43983 8.9321,4.13577 21.1104,13.7738 29.3564,27.48068 6.7629,-25.46262 10.7089,-54.59011 11.4425,-88.25674 2.3527,-107.98 -98.3591,-225.01217 -120.80184,-293.28183 C 407.43855,194.9981 421.95998,182.78135 412.99903,116.11228 404.03809,49.443198 356.36355,-1.7916666e-6 275.31501,-1.7916665e-6 Z M 271.93856,763.54594 c -1.37309,8.8712 -3.21648,17.57674 -5.62741,25.98004 -3.92959,13.69607 -9.66505,27.42155 -18.19531,39.11067 8.8406,0.54803 17.90178,0.62006 27.19917,0.18608 9.29738,0.43308 18.35556,0.36075 27.19916,-0.18608 -8.53027,-11.68912 -14.26572,-25.4146 -18.1953,-39.11067 -2.41093,-8.4033 -4.25433,-17.10884 -5.62741,-25.98004 -1.12519,0.03 -2.24077,0.093 -3.37645,0.093 -1.13569,0 -2.25127,-0.072 -3.37645,-0.093 z"
id="path4372-7-91"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssccccccsccccscsccccccsssscscccscsc" />
</g>
<path
style="fill:#ababb2;fill-opacity:0"
d="m 143.73409,497.33094 v -25.5 h 132.5 132.5 v 25.5 25.5 h -132.5 -132.5 z m 126.95432,-8.94496 c 3.54491,-4.27135 -2.78295,-9.83008 -6.92404,-6.08245 -2.43802,2.20639 -2.56466,3.85017 -0.45885,5.95598 1.96721,1.96722 5.80071,2.03289 7.38289,0.12647 z m 18.06193,-0.36711 c 4.2279,-3.42355 -1.243,-9.41376 -5.92103,-6.48306 -2.33049,1.46002 -2.61483,5.44202 -0.49906,6.9891 2.39868,1.75396 3.76179,1.64651 6.42009,-0.50604 z"
id="path3731"
inkscape:connector-curvature="0"
transform="translate(-56.568542)" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 13 KiB

324
images/logo/assets/svg/linuxgsm_white_vector_full.svg

@ -1,324 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="1710.7236"
height="830.10431"
id="svg4312"
version="1.1"
inkscape:version="0.92.1 r15371"
sodipodi:docname="linuxgsm_white_vector_full.svg"
inkscape:export-filename="C:\Users\me\Google Drive\Projects\Linux Game Server Manager\media\graphics\logos\dark\lgsm-dark-full.png"
inkscape:export-xdpi="84.68"
inkscape:export-ydpi="84.68">
<title
id="title5291">Stycil Tux</title>
<defs
id="defs4314">
<linearGradient
id="linearGradient3910-6-0-8-7-7-8">
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="0"
id="stop3912-5-9-3-8-7-4" />
<stop
style="stop-color:#4c4c4c;stop-opacity:1;"
offset="1"
id="stop3914-0-1-3-0-6-9" />
</linearGradient>
<linearGradient
y2="497.71365"
x2="140.00095"
y1="230.00362"
x1="140.00095"
gradientTransform="matrix(3.0012867,0,0,3.0012867,-152.31552,-675.94661)"
gradientUnits="userSpaceOnUse"
id="linearGradient4970"
xlink:href="#linearGradient3910-6-0-8-7-7-8"
inkscape:collect="always" />
<linearGradient
id="linearGradient3910-6-0-8-7-81">
<stop
style="stop-color:#ffffff;stop-opacity:1;"
offset="0"
id="stop3912-5-9-3-8-5" />
<stop
style="stop-color:#a6a6a6;stop-opacity:1;"
offset="1"
id="stop3914-0-1-3-0-64" />
</linearGradient>
<linearGradient
id="linearGradient4565-3">
<stop
style="stop-color:#939393;stop-opacity:1;"
offset="0"
id="stop4567-1" />
<stop
style="stop-color:#000000;stop-opacity:1;"
offset="1"
id="stop4569-9" />
</linearGradient>
<linearGradient
id="linearGradient4617-7">
<stop
id="stop4619-9"
offset="0"
style="stop-color:#ffffff;stop-opacity:0;" />
<stop
id="stop4621-5"
offset="1"
style="stop-color:#a6a6a6;stop-opacity:0.5" />
</linearGradient>
<clipPath
clipPathUnits="userSpaceOnUse"
id="clipPath4719-2">
<rect
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:15;marker:none;enable-background:accumulate"
id="rect4721-4"
width="1352.3417"
height="1135.7903"
x="-490.55533"
y="-358.505" />
</clipPath>
<linearGradient
inkscape:collect="always"
xlink:href="#linearGradient3910-6-0-8-7-7-8"
id="linearGradient5197"
gradientUnits="userSpaceOnUse"
gradientTransform="matrix(3.0012867,0,0,3.0012867,-152.31552,-675.94661)"
x1="140.00095"
y1="230.00362"
x2="140.00095"
y2="497.71365" />
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:zoom="1"
inkscape:cx="1126.276"
inkscape:cy="424.55397"
inkscape:document-units="px"
inkscape:current-layer="g6064"
showgrid="false"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:window-width="1920"
inkscape:window-height="1017"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:pagecheckerboard="true" />
<metadata
id="metadata4317">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title>Stycil Tux</dc:title>
<dc:creator>
<cc:Agent>
<dc:title>Cheeseness (Josh Bush)</dc:title>
</cc:Agent>
</dc:creator>
<dc:subject>
<rdf:Bag>
<rdf:li>tux linux icon</rdf:li>
</rdf:Bag>
</dc:subject>
<dc:description>A stylised stencil (a &quot;stycil&quot; - isn't that catchy) inspired by Larry Ewing's Tux illustration.
http://en.wikipedia.org/wiki/Tux
You're under no obligation to do so, but if you do something with this, drop me a line - I'd love to hear about it.
[email protected]</dc:description>
<dc:date>2012-01-02</dc:date>
<cc:license
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
<dc:source>http://twolofbees.com/uploads/2012/stycil_tux.svg</dc:source>
<dc:relation>http://twolofbees.com/artwork.php?iid=870</dc:relation>
</cc:Work>
<cc:License
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
<cc:permits
rdf:resource="http://creativecommons.org/ns#Reproduction" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#Distribution" />
<cc:permits
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
</cc:License>
</rdf:RDF>
</metadata>
<g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="Layer 1" />
<g
id="g6064"
transform="translate(56.568542,1.0001456)"
style="display:inline">
<g
transform="translate(-756.17483,-402.59665)"
id="g5961-3"
style="display:inline;fill:#ababb2;fill-opacity:1">
<g
transform="translate(-452.34937,725.009)"
id="g5391-8-7"
style="fill:#ababb2;fill-opacity:1">
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5199-1-3-9"
d="m 1295.2947,213.49225 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#ababb2;stroke:none;stroke-width:0.37795275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5199-9-5-2"
d="m 1295.2947,277.56671 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#ababb2;stroke:none;stroke-width:0.37795275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1" />
<path
sodipodi:nodetypes="ccccc"
inkscape:connector-curvature="0"
id="path5199-8-9-8"
d="m 1295.2947,341.64115 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#ababb2;stroke:none;stroke-width:0.37795275;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1" />
<g
style="fill:#ababb2;fill-opacity:1"
transform="translate(-0.90575)"
id="g5258-9-9">
<path
inkscape:connector-curvature="0"
d="m 1424.625,162.97931 a 4.75,4 0 0 1 -4.75,4 4.75,4 0 0 1 -4.75,-4 4.75,4 0 0 1 4.75,-4 4.75,4 0 0 1 4.75,4 z m 18.375,-0.25 a 4.75,4 0 0 1 -4.75,4 4.75,4 0 0 1 -4.75,-4 4.75,4 0 0 1 4.75,-4 4.75,4 0 0 1 4.75,4 z m -146.7996,-13.31157 v 51.44487 h 265.7241 v -51.44487 z"
style="fill:#ababb2;fill-opacity:1;stroke:none;stroke-width:0.37795275;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path5239-0-4-2" />
</g>
</g>
<path
style="fill:#ababb2;stroke:none;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
d="m 912.26148,854.87423 v 7.27539 c 0,2.79634 4.1201,7.15235 7.0974,7.15235 h 57.0982 57.09622 c 2.9773,0 7.0974,-4.35601 7.0974,-7.15235 v -7.27539 h -64.19362 z"
id="path5429-1-9"
inkscape:connector-curvature="0" />
<path
inkscape:connector-curvature="0"
style="fill:#ababb2;stroke:none;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
d="m 969.04908,749.4172 c -1.2404,0 -6.5507,5.41807 -6.5507,6.21875 v 4.91993 h 0.9531 c 0,43.5553 3.7609,25.12079 3.3398,62.125 0,0.82719 4.4526,3.88671 5.4356,3.88671 v 8.39649 h -1.125 v 1.0625 h -3.2266 v 0.5957 h -48.9883 c -2.8742,0 -6.9863,4.8837 -6.9863,7.15234 v 7.2754 h 128.75002 v -7.2754 c 0,-2.79633 -4.1361,-7.15234 -7.125,-7.15234 h -8.3535 v -0.79492 h -2.166 v -3.18164 h -1.1485 v -1.28125 h -8.9726 -8.9707 v 1.28125 h -1.1485 v 3.18164 h -2.166 v 0.79492 h -16.46682 v -0.5957 h -3.2246 v -1.0625 h -1.1269 v -8.39649 c 0.983,0 5.4355,-3.05952 5.4355,-3.88671 -0.4211,-37.00421 3.3399,-18.5697 3.3398,-62.125 h 0.9532 v -4.91993 c 0,-0.80068 -5.3104,-6.21875 -6.5508,-6.21875 h -6.9551 z"
id="path5429-3-7-4" />
<path
style="fill:#ababb2;stroke:#ff00ff;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;fill-opacity:1"
d="m 912.26148,851.05049 v -7.27539 c 0,-2.79634 4.1201,-7.15235 7.0974,-7.15235 h 57.0982 57.09622 c 2.9773,0 7.0974,4.35601 7.0974,7.15235 v 7.27539 h -64.19362 z"
id="path5429-7-77-6"
inkscape:connector-curvature="0" />
</g>
<g
transform="translate(-55.729306)"
id="g5425"
style="display:inline">
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#f6bd0e;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:16;marker:none;enable-background:accumulate"
d="m 116.05923,577.93526 c -3.48,0.20109 -7.3256,1.1375 -11.63,2.90735 -27.54822,11.32986 -15.44643,35.19849 -27.48069,50.27156 -12.03367,15.07396 -36.19673,7.81324 -43.79988,38.64156 -7.60286,30.82892 109.26727,182.19131 172.10487,156.34843 62.838,-25.84288 39.4726,-215.66466 12.3803,-232.22455 -27.0917,-16.55961 -39.0863,5.6223 -58.2436,3.37644 -16.1637,-1.89502 -24.5385,-20.40725 -43.331,-19.32079 z m 316.5418,0 c -17.3826,0.30013 -25.7964,17.496 -41.3614,19.32079 -19.1572,2.24586 -31.1518,-19.93605 -58.2435,-3.37644 -27.0923,16.55989 -50.4576,206.38137 12.3803,232.22455 62.8376,25.84288 179.7077,-125.51951 172.1049,-156.34843 -7.6032,-30.82832 -31.6726,-23.5676 -43.7063,-38.64156 -12.0342,-15.07307 0.069,-38.9417 -27.4803,-50.27156 -5.1656,-2.12371 -9.6822,-2.97637 -13.6937,-2.90735 z"
id="path4372-7-9"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccsssccssscccc"
inkscape:label="path4372-7-9" />
<path
style="color:#000000;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:16;marker:none;enable-background:accumulate"
d="M 275.31501,-1.7916665e-6 C 194.26645,-1.7916665e-6 146.68586,49.443198 137.72462,116.11228 128.76368,182.78135 143.19147,194.9981 120.74874,263.26927 98.30602,331.53923 -2.31211,448.5711 0.04059,556.5511 c 0.73262,33.61801 4.60398,62.7266 11.34877,88.1628 8.26915,-13.70117 20.521,-23.35722 29.45012,-27.48068 6.9708,-3.21799 10.34005,-4.76544 11.91151,-5.34589 0.2281,-1.72724 1.11168,-5.65953 2.71977,-13.41216 2.20895,-10.64736 10.67498,-27.3186 25.13578,-38.2664 -0.14707,-3.31673 -0.30674,-6.59923 -0.37516,-10.0354 -1.67022,-83.75241 84.89138,-174.48761 100.82462,-227.44141 15.93263,-52.952 9.00175,-58.40504 11.62998,-71.56178 2.62793,-13.15674 12.77468,-28.48221 27.38675,-40.70495 1.39198,-1.1651 2.74677,-1.67532 4.12676,-1.68823 13.32151,-0.12605 26.65263,48.37144 52.42857,48.39576 25.77596,0.03 39.1848,-59.11995 54.02317,-46.70753 14.61207,12.22304 24.75882,27.54821 27.38674,40.70495 2.62823,13.15674 -4.30325,18.60978 11.62999,71.56178 15.93322,52.9532 102.40085,143.6887 100.73065,227.44141 -0.069,3.40406 -0.2311,6.65445 -0.3751,9.94176 14.525,10.94599 23.0156,27.68686 25.2294,38.36004 1.6081,7.75263 2.492,11.68492 2.7201,13.41216 1.5666,0.57954 4.95,2.21674 11.9112,5.43983 8.9321,4.13577 21.1104,13.7738 29.3564,27.48068 6.7629,-25.46262 10.7089,-54.59011 11.4425,-88.25674 2.3527,-107.98 -98.3591,-225.01217 -120.80184,-293.28183 C 407.43855,194.9981 421.95998,182.78135 412.99903,116.11228 404.03809,49.443198 356.36355,-1.7916666e-6 275.31501,-1.7916665e-6 Z M 271.93856,763.54594 c -1.37309,8.8712 -3.21648,17.57674 -5.62741,25.98004 -3.92959,13.69607 -9.66505,27.42155 -18.19531,39.11067 8.8406,0.54803 17.90178,0.62006 27.19917,0.18608 9.29738,0.43308 18.35556,0.36075 27.19916,-0.18608 -8.53027,-11.68912 -14.26572,-25.4146 -18.1953,-39.11067 -2.41093,-8.4033 -4.25433,-17.10884 -5.62741,-25.98004 -1.12519,0.03 -2.24077,0.093 -3.37645,0.093 -1.13569,0 -2.25127,-0.072 -3.37645,-0.093 z"
id="path4372-7-91"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ssssccccccsccccscsccccccsssscscccscsc" />
</g>
<flowRoot
xml:space="preserve"
id="flowRoot4513"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
transform="translate(-56.568542,-1.8359376e-6)"><flowRegion
id="flowRegion4515"><rect
id="rect4517"
width="584"
height="560"
x="532"
y="65.104309" /></flowRegion><flowPara
id="flowPara4519" /></flowRoot> <flowRoot
xml:space="preserve"
id="flowRoot4521"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:1.25;font-family:'PT Sans';-inkscape-font-specification:'PT Sans';letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
transform="translate(-56.568542,-1.8359376e-6)"><flowRegion
id="flowRegion4523"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'PT Sans';-inkscape-font-specification:'PT Sans'"><rect
id="rect4525"
width="476"
height="536"
x="548"
y="81.104309"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:'PT Sans';-inkscape-font-specification:'PT Sans'" /></flowRegion><flowPara
id="flowPara4527" /></flowRoot> <text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:169.59358215px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:4.23983955"
x="429.06406"
y="220.41109"
id="text4531"
transform="scale(1.0093264,0.99075977)"
inkscape:export-filename="C:\Users\me\Google Drive\Projects\Linux Game Server Manager\media\logos\master rasta\text4531.png"
inkscape:export-xdpi="118.84"
inkscape:export-ydpi="118.84"><tspan
sodipodi:role="line"
id="tspan4529"
x="429.06406"
y="220.41109"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:213.33334351px;font-family:'PT Sans';-inkscape-font-specification:'PT Sans';fill:#ababb2;fill-opacity:1;stroke-width:4.23983955">Linux</tspan><tspan
sodipodi:role="line"
x="429.06406"
y="487.07776"
id="tspan4535"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:213.33334351px;font-family:'PT Sans';-inkscape-font-specification:'PT Sans';fill:#7dffff;fill-opacity:0.77900552;stroke-width:4.23983955"> <tspan
style="fill:#ffffff;fill-opacity:1;opacity:1"
id="tspan942">Game Server</tspan></tspan><tspan
sodipodi:role="line"
x="429.06406"
y="753.74445"
id="tspan4537"
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:213.33334351px;font-family:'PT Sans';-inkscape-font-specification:'PT Sans';fill:#f9f9f9;fill-opacity:0;stroke-width:4.23983955"><tspan
style="fill:#ffffff;fill-opacity:1;opacity:1"
id="tspan876"> Managers_</tspan>_</tspan></text>
<flowRoot
xml:space="preserve"
id="flowRoot2606"
style="fill:black;fill-opacity:1;stroke:none;font-family:sans-serif;font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;letter-spacing:0px;word-spacing:0px"><flowRegion
id="flowRegion2608"><rect
id="rect2610"
width="596"
height="244"
x="551"
y="408.10431" /></flowRegion><flowPara
id="flowPara2612"></flowPara></flowRoot> </g>
<path
style="fill:#ffffff;fill-opacity:0"
d="m 103.95897,305.64737 c 0,-0.29209 1.98741,-4.48823 4.41646,-9.32476 10.29339,-20.49537 17.26545,-40.28401 22.07901,-62.66635 3.9742,-18.47945 4.59123,-25.6379 5.51655,-64 0.79547,-32.97852 2.08256,-50.45634 4.54764,-61.75359 l 0.60083,-2.75359 135.12878,0.25359 135.12878,0.25359 0.7479,3.5 c 2.31683,10.84216 4.06464,35.3419 4.85112,68 0.91823,38.12897 1.41461,42.93974 6.60364,64 4.40569,17.881 10.0926,33.73138 17.82493,49.68112 l 7.42651,15.31888 H 407.51376 366.1964 l -1.20552,-4.75 c -2.93,-11.54485 -4.20984,-20.83185 -4.95211,-35.9344 -0.77423,-15.75263 -0.89123,-16.38609 -4.38555,-23.74414 -4.52737,-9.53335 -8.2765,-14.98271 -15.95627,-23.1924 -5.98826,-6.40148 -10.16413,-9.37906 -13.15352,-9.37906 -3.01465,0 -9.01166,6.69118 -17.89249,19.96358 -14.5779,21.78668 -21.89779,28.26554 -31.84767,28.18846 -10.48815,-0.0812 -17.90838,-6.63067 -34.16101,-30.15204 -9.08036,-13.14143 -13.92437,-18 -17.94601,-18 -2.78994,0 -17.0247,14.17371 -22.5033,22.40678 -7.65084,11.49747 -9.29829,17.42848 -10.30335,37.09322 -0.57802,11.30946 -1.63236,20.34738 -3.14974,27 l -2.28089,10 -41.25,0.26109 c -22.6875,0.1436 -41.25,0.0221 -41.25,-0.26998 z"
id="path858"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-opacity:0"
d="m 517.45897,621.51377 c -1.1,-0.86839 -5.55983,-3.235 -9.91074,-5.25913 l -7.91074,-3.68024 -2.77827,-11.29969 c -3.50583,-14.25876 -8.76676,-23.87229 -18.53319,-33.86648 l -7.13295,-7.2993 0.50085,-6.23958 c 0.56479,-7.03604 -0.9597,-22.97762 -3.30005,-34.50852 -4.32021,-21.28575 -18.56308,-55.37094 -35.39473,-84.70457 -3.47149,-6.05 -6.50225,-11.3375 -6.73501,-11.75 -0.23276,-0.4125 19.33809,-0.75 43.49078,-0.75 h 43.91398 l 4.19984,9.0393 c 18.10421,38.96563 27.55172,68.78316 31.67198,99.9607 2.56585,19.41552 1.31093,51.25328 -3.20255,81.25 l -1.61751,10.75 -12.63084,-0.0318 c -9.96138,-0.0251 -13.05354,-0.3655 -14.63085,-1.61069 z"
id="path860"
inkscape:connector-curvature="0" />
<path
style="fill:#ffffff;fill-opacity:0"
d="m 131.38196,230.39891 c 2.26043,-7.12198 3.80851,-27.49521 4.57759,-60.24265 0.8735,-37.19355 2.20679,-52.48825 5.97138,-68.5 5.698,-24.235019 17.42655,-45.8345 34.04809,-62.703515 l 7.68211,-7.796486 h 92.50635 92.50635 l 8.46293,8.778947 c 10.02293,10.397199 17.50821,21.162474 23.38694,33.634919 11.75298,24.935379 15.0362,45.563325 16.48717,103.586135 0.83379,33.34278 1.27259,39.85533 3.45308,51.25 l 0.7176,3.75 h -35.05284 -35.05285 l -4.47347,-5.81362 c -6.22632,-8.09156 -16.26919,-17.18638 -18.97791,-17.18638 -4.40434,0 -9.15051,4.57291 -16.34675,15.75 l -4.66783,7.25 h -30.18389 -30.18388 l -3.77528,-5.75 c -8.62521,-13.13676 -14.1939,-18.04759 -19.07583,-16.8223 -2.85946,0.71768 -15.11364,12.62294 -18.93212,18.39304 l -2.7657,4.17926 h -35.4345 c -33.3485,0 -35.40167,-0.10345 -34.87674,-1.75735 z"
id="path862"
inkscape:connector-curvature="0" />
</svg>

Before

Width:  |  Height:  |  Size: 20 KiB

BIN
images/logo/facebook.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

BIN
images/logo/lgsm-dark-full.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

BIN
images/logo/lgsm-dark-square-114.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

BIN
images/logo/lgsm-dark-square-16.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 653 B

BIN
images/logo/lgsm-dark-square-184.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

BIN
images/logo/lgsm-dark-square-24.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1008 B

BIN
images/logo/lgsm-dark-square-512.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

BIN
images/logo/lgsm-dark-square-64.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

BIN
images/logo/lgsm-light-full.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

BIN
images/logo/lgsm_full.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

BIN
images/logo/lgsmbutton.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

BIN
images/wallpaper/LinuxGSM_wallpaper.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 KiB

BIN
images/wallpaper/LinuxGSM_wallpaper_2.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

118
lgsm/config-default/config-lgsm/rwserver/_default.cfg

@ -0,0 +1,118 @@
##################################
######## Default Settings ########
##################################
# DO NOT EDIT 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
#### Server Settings ####
## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters
javaram="2048" # -Xmx$2048M
## Server Start Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters
fn_parms(){
parms=""
}
#### LinuxGSM Settings ####
## Notification Alerts
# (on|off)
# More info | https://github.com/GameServerManagers/LinuxGSM/wiki/Alerts#more-info
postalert="off"
postdays="7"
posttarget="https://hastebin.com"
# Discord Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Discord
discordalert="off"
discordwebhook="webhook"
# Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Email
emailalert="off"
email="[email protected]"
emailfrom=""
# IFTTT Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/IFTTT
iftttalert="off"
ifttttoken="accesstoken"
iftttevent="linuxgsm_alert"
# Mailgun Email Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/mailgun
mailgunalert="off"
mailguntoken="accesstoken"
mailgundomain="example.com"
mailgunemailfrom="[email protected]"
mailgunemail="[email protected]"
# Pushbullet Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushbullet
pushbulletalert="off"
pushbullettoken="accesstoken"
channeltag=""
# Pushover Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Pushover
pushoveralert="off"
pushovertoken="accesstoken"
# Telegram Alerts | https://github.com/GameServerManagers/LinuxGSM/wiki/Telegram
telegramalert="off"
telegramtoken="accesstoken"
telegramchatid=""
## Updating | https://github.com/GameServerManagers/LinuxGSM/wiki/Update
updateonstart="off"
## Backup | https://github.com/GameServerManagers/LinuxGSM/wiki/Backup
maxbackups="4"
maxbackupdays="30"
stoponbackup="on"
## Logging | https://github.com/GameServerManagers/LinuxGSM/wiki/Logging
consolelogging="on"
logdays="7"
#### LinuxGSM Advanced Settings ####
## SteamCMD Settings
# Server appid
appid="339010"
# Steam App Branch Select
# Allows to opt into the various Steam app branches. Default branch is "".
# Example: "-beta latest_experimental"
branch=""
## LinuxGSM Server Details
# Do not edit
gamename="Rising World"
engine="risingworld"
#### Directories ####
# Edit with care
## Server Specific Directories
systemdir="${serverfiles}"
executabledir="${serverfiles}"
executable="java -Xmx${javaram}m -jar ${serverfiles}/server.jar"
servercfg="server.properties"
servercfgdefault="server.properties"
servercfgdir="${serverfiles}"
servercfgfullpath="${servercfgdir}/${servercfg}"
## Backup Directory
backupdir="${rootdir}/backups"
## Logging Directories
logdir="${rootdir}/log"
gamelogdir="${systemdir}/logs"
lgsmlogdir="${logdir}/script"
consolelogdir="${logdir}/console"
lgsmlog="${lgsmlogdir}/${servicename}-script.log"
consolelog="${consolelogdir}/${servicename}-console.log"
alertlog="${lgsmlogdir}/${servicename}-alert.log"
postdetailslog="${lgsmlogdir}/${servicename}-postdetails.log"
## Logs Naming
lgsmlogdate="${lgsmlogdir}/${servicename}-script-$(date '+%Y-%m-%d-%H:%M:%S').log"
consolelogdate="${consolelogdir}/${servicename}-console-$(date '+%Y-%m-%d-%H:%M:%S').log"

1
lgsm/data/serverlist.csv

@ -57,6 +57,7 @@ qw,qwserver,Quake World
ro,roserver,Red Orchestra: Ostfront 41-45
ricochet,ricochetserver,Ricochet
rust,rustserver,Rust
rw,rwserver, Rising World
samp,sampserver,San Andreas Multiplayer
ss3,ss3server,Serious Sam 3: BFE
sb,sbserver,Starbound

1 arma3 arma3server ARMA 3
57 ro roserver Red Orchestra: Ostfront 41-45
58 ricochet ricochetserver Ricochet
59 rust rustserver Rust
60 rw rwserver Rising World
61 samp sampserver San Andreas Multiplayer
62 ss3 ss3server Serious Sam 3: BFE
63 sb sbserver Starbound

2
lgsm/functions/alert_discord.sh

@ -53,7 +53,7 @@ EOF
fn_print_dots "Sending Discord alert"
sleep 0.5
discordsend=$(${curlpath} -sSL -H "Content-Type: application/json" -X POST -d """${json}""" ${discordwebhook})
discordsend=$(${curlpath} -sSL -H "Content-Type: application/json" -X POST -d """${json}""" "${discordwebhook}")
if [ -n "${discordsend}" ]; then
fn_print_fail_nl "Sending Discord alert: ${discordsend}"

2
lgsm/functions/alert_ifttt.sh

@ -19,7 +19,7 @@ EOF
fn_print_dots "Sending IFTTT alert"
sleep 0.5
iftttsend=$(${curlpath} -sSL -H "Content-Type: application/json" -X POST -d """${json}""" "https://maker.ifttt.com/trigger/${iftttevent}/with/key/${ifttttoken}"|grep "Bad Request")
iftttsend=$(${curlpath} -sSL -H "Content-Type: application/json" -X POST -d """${json}""" "https://maker.ifttt.com/trigger/${iftttevent}/with/key/${ifttttoken}" | grep "Bad Request")
if [ -n "${iftttsend}" ]; then
fn_print_fail_nl "Sending IFTTT alert: ${pushbulletsend}"

2
lgsm/functions/alert_mailgun.sh

@ -17,7 +17,7 @@ mailgunsend=$(${curlpath} -s --user "api:${mailguntoken}" \
-F subject="${alertemoji} ${alertsubject} ${alertemoji}" \
-F o:tag='alert' \
-F o:tag='LinuxGSM' \
-F text="$(cat ${alertlog})" https://api.mailgun.net/v3/${mailgundomain}/messages)
-F text="$(cat "${alertlog}")" https://api.mailgun.net/v3/${mailgundomain}/messages)
if [ -z "${mailgunsend}" ]; then
fn_print_fail_nl "Sending Email alert: Mailgun: ${email}"

6
lgsm/functions/alert_pushover.sh

@ -12,10 +12,10 @@ fn_print_dots "Sending Pushover alert"
sleep 0.5
# Different alerts are given different priorities and notification sounds
if [ "${alertsound}" == "1" ];then
if [ "${alertsound}" == "1" ]; then
alertsound=""
alertpriority="0"
elif [ "${alertsound}" == "2" ];then
elif [ "${alertsound}" == "2" ]; then
# restarted
alertsound="siren"
alertpriority="1"
@ -24,7 +24,7 @@ else
alertpriority="0"
fi
pushoversend=$(${curlpath} -sS -F token="${pushovertoken}" -F user="${pushoveruserkey}" -F html="1" -F sound="${alertsound}" -F priority="${alertpriority}" -F title="${alertemoji} ${alertsubject} ${alertemoji}" -F message=" <b>Message</b><br>${alertbody}<br><br><b>Game</b><br>${gamename}<br><br><b>Server name</b><br>${servername}<br><br><b>Hostname</b><br>${HOSTNAME}<br><br><b>Server IP</b><br><a href='https://www.gametracker.com/server_info/${ip}:${port}'>${ip}:${port}</a><br><br><b>More info</b><br><a href='${alerturl}'>${alerturl}</a>" "https://api.pushover.net/1/messages.json"|grep errors)
pushoversend=$(${curlpath} -sS -F token="${pushovertoken}" -F user="${pushoveruserkey}" -F html="1" -F sound="${alertsound}" -F priority="${alertpriority}" -F title="${alertemoji} ${alertsubject} ${alertemoji}" -F message=" <b>Message</b><br>${alertbody}<br><br><b>Game</b><br>${gamename}<br><br><b>Server name</b><br>${servername}<br><br><b>Hostname</b><br>${HOSTNAME}<br><br><b>Server IP</b><br><a href='https://www.gametracker.com/server_info/${ip}:${port}'>${ip}:${port}</a><br><br><b>More info</b><br><a href='${alerturl}'>${alerturl}</a>" "https://api.pushover.net/1/messages.json" | grep errors)
if [ -n "${pushoversend}" ]; then
fn_print_fail_nl "Sending Pushover alert: ${pushoversend}"

10
lgsm/functions/check_deps.sh

@ -19,10 +19,10 @@ fn_deps_detector(){
deptocheck="${javaversion}"
unset javacheck
elif [ -n "$(command -v apt 2>/dev/null)" ]; then
dpkg-query -W -f='${Status}' ${deptocheck} 2>/dev/null | grep -q -P '^install ok installed'
dpkg-query -W -f='${Status}' "${deptocheck}" 2>/dev/null | grep -q -P '^install ok installed'
depstatus=$?
elif [ -n "$(command -v yum 2>/dev/null)" ]; then
yum -q list installed ${deptocheck} > /dev/null 2>&1
yum -q list installed "${deptocheck}" > /dev/null 2>&1
depstatus=$?
fi
@ -77,7 +77,7 @@ fn_found_missing_deps(){
sleep 0.5
fn_print_error_nl "Checking dependencies: missing: ${red}${array_deps_missing[@]}${default}"
fn_script_log_error "Checking dependencies: missing: ${array_deps_missing[@]}"
sleep 1
sleep 0.5
sudo -v > /dev/null 2>&1
if [ $? -eq 0 ]; then
fn_print_information_nl "Automatically installing missing dependencies."
@ -91,10 +91,10 @@ fn_found_missing_deps(){
echo -en " \r"
if [ -n "$(command -v dpkg-query 2>/dev/null)" ]; then
cmd="sudo dpkg --add-architecture i386; sudo apt update; sudo apt -y install ${array_deps_missing[@]}"
eval ${cmd}
eval "${cmd}"
elif [ -n "$(command -v yum 2>/dev/null)" ]; then
cmd="sudo yum -y install ${array_deps_missing[@]}"
eval ${cmd}
eval "${cmd}"
fi
if [ $? != 0 ]; then
fn_print_failure_nl "Unable to install dependencies"

12
lgsm/functions/check_ip.sh

@ -14,19 +14,19 @@ if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]&&[ "${travi
else
ipcommand="ip"
fi
getip=$(${ipcommand} -o -4 addr|awk '{print $4}'|grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}'|grep -v 127.0.0)
getipwc=$(${ipcommand} -o -4 addr|awk '{print $4}'|grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}'|grep -vc 127.0.0)
getip=$(${ipcommand} -o -4 addr| awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}' | grep -v 127.0.0)
getipwc=$(${ipcommand} -o -4 addr| awk '{print $4}' | grep -oe '\([0-9]\{1,3\}\.\?\)\{4\}' | grep -vc 127.0.0)
info_config.sh
info_parms.sh
# IP is not set to specific IP
if [ "${ip}" == "0.0.0.0" ]||[ "${ip}" == "" ]; then
fn_print_dots "Check IP"
sleep 1
sleep 0.5
# Multiple interfaces
if [ "${getipwc}" -ge "2" ]; then
fn_print_fail "Check IP: Multiple IP addresses found."
sleep 1
sleep 0.5
echo -en "\n"
# IP is set within game config
if [ "${ipsetinconfig}" == "1" ]; then
@ -58,7 +58,7 @@ if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]&&[ "${travi
# Single interface
elif [ "${ipsetinconfig}" == "1" ]; then
fn_print_fail "Check IP: IP address not set in game config."
sleep 1
sleep 0.5
echo -en "\n"
fn_print_information "Specify the IP you want to bind within ${servercfg}.\n"
echo -en " * location: ${servercfgfullpath}\n"
@ -75,7 +75,7 @@ if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]&&[ "${travi
else
fn_print_info_nl "Check IP: ${getip}"
fn_script_log_info "IP automatically set as: ${getip}"
sleep 1
sleep 0.5
ip="${getip}"
fi
fi

34
lgsm/functions/check_permissions.sh

@ -9,17 +9,17 @@ local commandname="CHECK"
fn_check_ownership(){
if [ -f "${rootdir}/${selfname}" ]; then
if [ $(find "${rootdir}/${selfname}" -not -user $(whoami)|wc -l) -ne "0" ]; then
if [ "$(find "${rootdir}/${selfname}" -not -user $(whoami) | wc -l)" -ne "0" ]; then
selfownissue=1
fi
fi
if [ -d "${functionsdir}" ]; then
if [ $(find "${functionsdir}" -not -user $(whoami)|wc -l) -ne "0" ]; then
if [ "$(find "${functionsdir}" -not -user $(whoami) | wc -l)" -ne "0" ]; then
funcownissue=1
fi
fi
if [ -d "${serverfiles}" ]; then
if [ $(find "${serverfiles}" -not -user $(whoami)|wc -l) -ne "0" ]; then
if [ "$(find "${serverfiles}" -not -user $(whoami) | wc -l)" -ne "0" ]; then
filesownissue=1
fi
fi
@ -31,13 +31,13 @@ fn_check_ownership(){
{
echo -e "User\tGroup\tFile\n"
if [ "${selfownissue}" == "1" ]; then
find "${rootdir}/${selfname}" -not -user $(whoami) -printf "%u\t\t%g\t%p\n"
find "${rootdir}/${selfname}" -not -user "$(whoami)" -printf "%u\t\t%g\t%p\n"
fi
if [ "${funcownissue}" == "1" ]; then
find "${functionsdir}" -not -user $(whoami) -printf "%u\t\t%g\t%p\n"
find "${functionsdir}" -not -user "$(whoami)" -printf "%u\t\t%g\t%p\n"
fi
if [ "${filesownissue}" == "1" ]; then
find "${serverfiles}" -not -user $(whoami) -printf "%u\t\t%g\t%p\n"
find "${serverfiles}" -not -user "$(whoami)" -printf "%u\t\t%g\t%p\n"
fi
} | column -s $'\t' -t | tee -a "${lgsmlog}"
@ -54,7 +54,7 @@ fn_check_ownership(){
fn_check_permissions(){
if [ -d "${functionsdir}" ]; then
if [ $(find "${functionsdir}" -type f -not -executable|wc -l) -ne "0" ]; then
if [ "$(find "${functionsdir}" -type f -not -executable | wc -l)" -ne "0" ]; then
fn_print_fail_nl "Permissions issues found"
fn_script_log_fatal "Permissions issues found"
fn_print_information_nl "The following files are not executable:"
@ -102,9 +102,9 @@ fn_check_permissions(){
userexecperm="${execperm:0:1}"
groupexecperm="${execperm:1:1}"
# Check for invalid user permission
if [ "${userexecperm}" == "0" ] || [ "${userexecperm}" == "2" ] || [ "${userexecperm}" == "4" ] || [ "${userexecperm}" == "6" ]; then
if [ "${userexecperm}" == "0" ]||[ "${userexecperm}" == "2" ]||[ "${userexecperm}" == "4" ]||[ "${userexecperm}" == "6" ]; then
# If user permission is invalid, then check for invalid group permissions
if [ "${groupexecperm}" == "0" ] || [ "${groupexecperm}" == "2" ] || [ "${groupexecperm}" == "4" ] || [ "${groupexecperm}" == "6" ]; then
if [ "${groupexecperm}" == "0" ]||[ "${groupexecperm}" == "2" ]||[ "${groupexecperm}" == "4" ]||[ "${groupexecperm}" == "6" ]; then
# If permission issues are found
fn_print_warn_nl "Permissions issue found"
fn_script_log_warn "Permissions issue found"
@ -122,14 +122,14 @@ fn_check_permissions(){
# Grab the first and second digit for user and group permission
userexecperm="${execperm:0:1}"
groupexecperm="${execperm:1:1}"
if [ "${userexecperm}" == "0" ] || [ "${userexecperm}" == "2" ] || [ "${userexecperm}" == "4" ] || [ "${userexecperm}" == "6" ]; then
if [ "${groupexecperm}" == "0" ] || [ "${groupexecperm}" == "2" ] || [ "${groupexecperm}" == "4" ] || [ "${groupexecperm}" == "6" ]; then
if [ "${userexecperm}" == "0" ]||[ "${userexecperm}" == "2" ]||[ "${userexecperm}" == "4" ]||[ "${userexecperm}" == "6" ]; then
if [ "${groupexecperm}" == "0" ]||[ "${groupexecperm}" == "2" ]||[ "${groupexecperm}" == "4" ]||[ "${groupexecperm}" == "6" ]; then
# If errors are still found
fn_print_fail_nl "The following file could not be set executable:"
ls -l "${executabledir}/${execname}"
fn_script_log_warn "The following file could not be set executable:"
fn_script_log_info "${executabledir}/${execname}"
if [ "${monitorflag}" == 1 ]; then
if [ "${monitorflag}" == "1" ]; then
alert="permissions"
alert.sh
fi
@ -171,7 +171,7 @@ fn_sys_perm_fix_manually_msg(){
fn_script_log_info "To fix this issue, run the following command as root:"
echo " chmod a+rx /sys /sys/class /sys/class/net"
fn_script_log "chmod a+rx /sys /sys/class /sys/class/net"
sleep 1
sleep 0.5
if [ "${monitorflag}" == 1 ]; then
alert="permissions"
alert.sh
@ -184,7 +184,7 @@ fn_sys_perm_errors_fix(){
sudo -v > /dev/null 2>&1
if [ $? -eq 0 ]; then
fn_print_dots "Automatically fixing /sys permissions"
sleep 2
sleep 0.5
fn_script_log_info "Automatically fixing /sys permissions."
if [ "${sysdirpermerror}" == "1" ]; then
sudo chmod a+rx "/sys"
@ -200,13 +200,13 @@ fn_sys_perm_errors_fix(){
if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then
fn_print_error "Could not fix /sys permissions"
fn_script_log_error "Could not fix /sys permissions."
sleep 1
sleep 0.5
# Show the user how to fix
fn_sys_perm_fix_manually_msg
else
fn_print_ok_nl "Automatically fixing /sys permissions"
fn_script_log_pass "Permissions in /sys fixed"
sleep 1
sleep 0.5
fi
else
# Show the user how to fix
@ -221,7 +221,7 @@ fn_sys_perm_error_process(){
if [ "${sysdirpermerror}" == "1" ]||[ "${classdirpermerror}" == "1" ]||[ "${netdirpermerror}" == "1" ]; then
fn_print_error_nl "Permission error(s) found in /sys"
fn_script_log_error "Permission error(s) found in /sys"
sleep 1
sleep 0.5
# Run the fix
fn_sys_perm_errors_fix
fi

4
lgsm/functions/check_status.sh

@ -12,7 +12,7 @@ if [ "${gamename}" == "TeamSpeak 3" ]; then
# 1: Server is running
# 0: Server seems to have died
# 0: No server running (ts3server.pid is missing)
status=$(${executabledir}/ts3server_startscript.sh status servercfgfullpathfile=${servercfgfullpath})
status=$("${executabledir}/ts3server_startscript.sh" status servercfgfullpathfile=${servercfgfullpath})
if [ "${status}" == "Server is running" ]; then
status=1
else
@ -25,7 +25,7 @@ elif [ "${gamename}" == "Mumble" ]; then
info_config.sh
# 1: Server is listening
# 0: Server is not listening, considered closed
mumblepid=$(netstat -nap 2>/dev/null | grep udp | grep ${port} | grep murmur | awk '{ print $6 }' | awk -F'/' '{ print $1 }')
mumblepid=$(netstat -nap 2>/dev/null | grep udp | grep "${port}" | grep murmur | awk '{ print $6 }' | awk -F'/' '{ print $1 }')
if [ -z "${mumblepid}" ]; then
status=0
else

3
lgsm/functions/check_steamcmd.sh

@ -40,7 +40,6 @@ fn_check_steamcmd_user(){
fi
steamuser="anonymous"
steampass=''
sleep 1
fi
}
@ -53,7 +52,7 @@ fn_check_steamcmd_sh(){
else
fn_print_error_nl "SteamCMD is missing"
fn_script_log_error "SteamCMD is missing"
sleep 1
sleep 0.5
fn_install_steamcmd
fi
elif [ "${function_selfname}" == "command_install.sh" ]; then

4
lgsm/functions/check_system_requirements.sh

@ -39,8 +39,8 @@ if [ -n "${ramrequirementmb}" ]; then
sleep 0.5
# Warn the user
fn_print_warn_nl "Check RAM: ${ramrequirementgb}G required, ${physmemtotal} available"
sleep 1
sleep 0.5
echo " * ${gamename} server may fail to run or experience poor performance."
sleep 1
sleep 0.5
fi
fi

28
lgsm/functions/command_backup.sh

@ -17,7 +17,7 @@ fn_backup_trap(){
echo -ne "backup ${backupname}.tar.gz..."
fn_print_canceled_eol_nl
fn_script_log_info "Backup ${backupname}.tar.gz: CANCELED"
sleep 1
sleep 0.5
rm -f "${backupdir}/${backupname}.tar.gz" | tee -a "${lgsmlog}"
echo -ne "backup ${backupname}.tar.gz..."
fn_print_removed_eol_nl
@ -44,9 +44,9 @@ fn_backup_init(){
info_distro.sh
fn_print_dots "Backup starting"
fn_script_log_info "Backup starting"
sleep 1
sleep 0.5
fn_print_ok "Backup starting"
sleep 1
sleep 0.5
echo -ne "\n"
if [ ! -d "${backupdir}" ]||[ "${backupcount}" == "0" ]; then
fn_print_info_nl "There are no previous backups"
@ -59,11 +59,11 @@ fn_backup_init(){
daysago="${lastbackupdaysago} days ago"
fi
echo " * Previous backup was created ${daysago}, total size ${lastbackupsize}"
sleep 1
sleep 0.5
fi
}
# Check if server is started and wether to stop it
# Check if server is started and whether to stop it
fn_backup_stop_server(){
check_status.sh
# Server is stopped
@ -80,7 +80,7 @@ fn_backup_stop_server(){
else
fn_print_warn_nl "${servicename} will be stopped during the backup"
fn_script_log_warn "${servicename} will be stopped during the backup"
sleep 4
sleep 5
serverstopped="yes"
exitbypass=1
command_stop.sh
@ -131,7 +131,7 @@ fn_backup_compression(){
fn_script_log_fatal "Starting backup"
else
fn_print_ok_eol
sleep 1
sleep 0.5
fn_print_ok_nl "Completed: ${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
@ -153,18 +153,18 @@ fn_backup_prune(){
if [ "${backupquotadiff}" -gt "0" ]||[ "${backupsoudatedcount}" -gt "0" ]; then
fn_print_dots "Pruning"
fn_script_log_info "Backup pruning activated"
sleep 1
sleep 0.5
fn_print_ok_nl "Pruning"
sleep 1
sleep 0.5
# If maxbackups greater or equal to backupsoutdatedcount, then it is over maxbackupdays
if [ "${backupquotadiff}" -ge "${backupsoudatedcount}" ]; then
# Display how many backups will be cleared
echo " * Pruning: ${backupquotadiff} backup(s) has exceeded the ${maxbackups} backups limit"
fn_script_log_info "Pruning: ${backupquotadiff} backup(s) has exceeded the ${maxbackups} backups limit"
sleep 1
sleep 0.5
fn_print_dots "Pruning: Clearing ${backupquotadiff} backup(s)"
fn_script_log_info "Pruning: Clearing ${backupquotadiff} backup(s)"
sleep 1
sleep 0.5
# Clear backups over quota
find "${backupdir}"/ -type f -name "*.tar.gz" -printf '%T@ %p\n' | sort -rn | tail -${backupquotadiff} | cut -f2- -d" " | xargs rm
fn_print_ok_nl "Pruning: Clearing ${backupquotadiff} backup(s)"
@ -174,16 +174,16 @@ fn_backup_prune(){
# Display how many backups will be cleared
echo " * Pruning: ${backupsoudatedcount} backup(s) are older than ${maxbackupdays} days."
fn_script_log_info "Pruning: ${backupsoudatedcount} backup(s) older than ${maxbackupdays} days."
sleep 1
sleep 0.5
fn_print_dots "Pruning: Clearing ${backupquotadiff} backup(s)."
fn_script_log_info "Pruning: Clearing ${backupquotadiff} backup(s)"
sleep 1
sleep 0.5
# Clear backups over quota
find "${backupdir}"/ -type f -mtime +"${maxbackupdays}" -exec rm -f {} \;
fn_print_ok_nl "Pruning: Clearing ${backupquotadiff} backup(s)"
fn_script_log_pass "Pruning: Cleared ${backupquotadiff} backup(s)"
fi
sleep 1
sleep 0.5
fi
fi
}

6
lgsm/functions/command_console.sh

@ -24,19 +24,19 @@ if ! fn_prompt_yn "Continue?" Y; then
echo Exiting; return
fi
fn_print_dots "Accessing console"
sleep 1
sleep 0.5
check_status.sh
if [ "${status}" != "0" ]; then
fn_print_ok_nl "Accessing console"
fn_script_log_pass "Console accessed"
sleep 1
sleep 0.5
tmux attach-session -t="${servicename}"
fn_print_ok_nl "Closing console"
fn_script_log_pass "Console closed"
else
fn_print_error_nl "Server not running"
fn_script_log_error "Failed to access: Server not running"
sleep 1
sleep 0.5
if fn_prompt_yn "Do you want to start the server?" Y; then
exitbypass=1
command_start.sh

12
lgsm/functions/command_debug.sh

@ -40,7 +40,7 @@ if [ -n "${glibcrequired}" ]; then
:
elif [ "${glibcrequired}" == "UNKNOWN" ]; then
echo -e "${blue}GLIBC required:\t${red}${glibcrequired}"
elif [ "$(printf '%s\n'${glibcrequired}'\n' ${glibcversion} | sort -V | head -n 1)" != "${glibcrequired}" ]; then
elif [ "$(printf '%s\n'${glibcrequired}'\n' "${glibcversion}" | sort -V | head -n 1)" != "${glibcrequired}" ]; then
if [ "${glibcfix}" == "yes" ]; then
echo -e "${blue}GLIBC required:\t${red}${glibcrequired} ${default}(${green}Using GLIBC fix${default})"
else
@ -80,12 +80,12 @@ fi
fn_print_info_nl "Stopping any running servers"
fn_script_log_info "Stopping any running servers"
sleep 1
sleep 0.5
exitbypass=1
command_stop.sh
fn_print_dots "Starting debug"
fn_script_log_info "Starting debug"
sleep 1
sleep 0.5
fn_print_ok_nl "Starting debug"
# Create lockfile
@ -95,16 +95,16 @@ fn_script_log_info "${rootdir}/${lockselfname}"
# trap to remove lockfile on quit.
trap fn_lockfile_trap INT
cd "${executabledir}"
cd "${executabledir}" || exit
if [ "${engine}" == "source" ]||[ "${engine}" == "goldsource" ]; then
${executable} ${parms} -debug
elif [ "${engine}" == "realvirtuality" ]; then
# Arma3 requires semicolons in the module list, which need to
# be escaped for regular (tmux) loading, but need to be
# stripped when loading straight from the console.
${executable} ${parms//\\;/;}
"${executable}" "${parms//\\;/;}"
else
${executable} ${parms}
"${executable}" "${parms}"
fi
fn_print_dots "Stopping debug"

6
lgsm/functions/command_dev_detect_deps.sh

@ -24,9 +24,9 @@ files=$(find "${serverfiles}" | wc -l)
find "${serverfiles}" -type f -print0 |
while IFS= read -r -d $'\0' line; do
if [ "${readelf}" == "eu-readelf" ]; then
${readelf} -d "${line}" 2>/dev/null|grep NEEDED|awk '{ print $4 }'|sed 's/\[//g;s/\]//g' >> "${tmpdir}/.depdetect_readelf"
${readelf} -d "${line}" 2>/dev/null | grep NEEDED| awk '{ print $4 }' | sed 's/\[//g;s/\]//g' >> "${tmpdir}/.depdetect_readelf"
else
${readelf} -d "${line}" 2>/dev/null|grep NEEDED|awk '{ print $5 }'|sed 's/\[//g;s/\]//g' >> "${tmpdir}/.depdetect_readelf"
${readelf} -d "${line}" 2>/dev/null | grep NEEDED | awk '{ print $5 }' | sed 's/\[//g;s/\]//g' >> "${tmpdir}/.depdetect_readelf"
fi
echo -n "${i} / ${files}" $'\r'
((i++))
@ -114,7 +114,7 @@ fi
echo ""
echo "Required Librarys"
echo "================================="
sort "${tmpdir}/.depdetect_readelf" |uniq
sort "${tmpdir}/.depdetect_readelf" | uniq
echo -en "\n"
rm -f "${tmpdir}/.depdetect_centos_line"
rm -f "${tmpdir}/.depdetect_centos_list"

6
lgsm/functions/command_dev_detect_glibc.sh

@ -31,18 +31,18 @@ echo ""
files=$(find "${serverfiles}" | wc -l)
find "${serverfiles}" -type f -print0 |
while IFS= read -r -d $'\0' line; do
glibcversion=$(objdump -T "${line}" 2>/dev/null|grep -oP "GLIBC[^ ]+" |grep -v GLIBCXX|sort|uniq|sort -r --version-sort| head -n 1)
glibcversion=$(objdump -T "${line}" 2>/dev/null | grep -oP "GLIBC[^ ]+" | grep -v GLIBCXX | sort | uniq | sort -r --version-sort | head -n 1)
if [ "${glibcversion}" ]; then
echo "${glibcversion}: ${line}" >>"${tmpdir}/detect_glibc_files.tmp"
fi
objdump -T "${line}" 2>/dev/null|grep -oP "GLIBC[^ ]+" >>"${tmpdir}/detect_glibc.tmp"
objdump -T "${line}" 2>/dev/null | grep -oP "GLIBC[^ ]+" >>"${tmpdir}/detect_glibc.tmp"
echo -n "${i} / ${files}" $'\r'
((i++))
done
echo ""
cat "${tmpdir}/detect_glibc_files.tmp"
echo ""
cat "${tmpdir}/detect_glibc.tmp"|sort|uniq|sort -r --version-sort
cat "${tmpdir}/detect_glibc.tmp" | sort | uniq | sort -r --version-sort
rm "${tmpdir}/detect_glibc.tmp"
rm "${tmpdir}/detect_glibc_files.tmp"

12
lgsm/functions/command_dev_detect_ldd.sh

@ -25,14 +25,14 @@ echo ""
files=$(find "${serverfiles}" | wc -l)
find "${serverfiles}" -type f -print0 |
while IFS= read -r -d $'\0' line; do
#ldd -v $line 2>/dev/null|grep "=>" >>"${tmpdir}/detect_ldd.tmp"
if [ -n "$(ldd "${line}" 2>/dev/null |grep -v "not a dynamic executable")" ]; then
if ldd "${line}" 2>/dev/null | grep -v "not a dynamic executable"
then
echo "${line}" >> "${tmpdir}/detect_ldd.tmp"
ldd "${line}" 2>/dev/null |grep -v "not a dynamic executable" >> "${tmpdir}/detect_ldd.tmp"
if [ -n "$(ldd "${line}" 2>/dev/null |grep -v "not a dynamic executable"|grep "not found")" ]; then
ldd "${line}" 2>/dev/null | grep -v "not a dynamic executable" >> "${tmpdir}/detect_ldd.tmp"
if ldd "${line}" 2>/dev/null | grep -v "not a dynamic executable" | grep "not found"
then
echo "${line}" >> "${tmpdir}/detect_ldd_not_found.tmp"
ldd "${line}" 2>/dev/null |grep -v "not a dynamic executable"|grep "not found" >> "${tmpdir}/detect_ldd_not_found.tmp"
ldd "${line}" 2>/dev/null | grep -v "not a dynamic executable" | grep "not found" >> "${tmpdir}/detect_ldd_not_found.tmp"
fi
fi
echo -n "$i / $files" $'\r'

2
lgsm/functions/command_dev_query_raw.sh

@ -11,7 +11,7 @@ echo""
if [ ! "$(command -v gamedig 2>/dev/null)" ]; then
fn_print_failure_nl "gamedig not installed"
fi
if [ ! "$(command -v jq >/dev/null 2>&1)" ]; then
if [ ! "$(command -v jq 2>/dev/null)" ]; then
fn_print_failure_nl "jq not installed"
fi

6
lgsm/functions/command_fastdl.sh

@ -271,7 +271,7 @@ fn_fastdl_gmod(){
fi
# Clear addons directory in fastdl
echo -en "clearing addons dir from fastdl dir..."
sleep 1
sleep 0.5
rm -R "${fastdldir:?}/addons"
exitcode=$?
if [ ${exitcode} -ne 0 ]; then
@ -286,7 +286,7 @@ fn_fastdl_gmod(){
# Correct content that may be into a lua directory by mistake like some darkrpmodification addons
if [ -d "${fastdldir}/lua" ]; then
echo -en "correcting DarkRP files..."
sleep 2
sleep 1
cp -Rf "${fastdldir}/lua/"* "${fastdldir}"
exitcode=$?
if [ ${exitcode} -ne 0 ]; then
@ -302,7 +302,7 @@ fn_fastdl_gmod(){
totalfiles=$(wc -l < "${tmpdir}/fastdl_files_to_compress.txt")
# Calculates total file size
while read dufile; do
filesize=$(du -b "${dufile}"| awk '{ print $1 }')
filesize=$(du -b "${dufile}" | awk '{ print $1 }')
filesizetotal=$(( ${filesizetotal} + ${filesize} ))
done <"${tmpdir}/fastdl_files_to_compress.txt"
fi

4
lgsm/functions/command_mods_install.sh

@ -16,7 +16,7 @@ fn_print_header
# Displays a list of installed mods
fn_mods_installed_list
if [ ${installedmodscount} -gt 0 ]; then
if [ "${installedmodscount}" -gt "0" ]; then
echo "Installed addons/mods"
echo "================================="
# Go through all available commands, get details and display them to the user
@ -85,7 +85,7 @@ if [ -f "${modsinstalledlistfullpath}" ]; then
if [ -n "$(sed -n "/^${modcommand}$/p" "${modsinstalledlistfullpath}")" ]; then
fn_print_warning_nl "${modprettyname} is already installed"
fn_script_log_warn "${modprettyname} is already installed"
sleep 1
sleep 0.5
echo " * Any configs may be overwritten."
if ! fn_prompt_yn "Continue?" Y; then
echo Exiting; core_exit.sh

2
lgsm/functions/command_mods_remove.sh

@ -58,7 +58,7 @@ fn_script_log_info "Removing ${modsfilelistsize} files from ${modprettyname}"
echo -e "removing ${modprettyname}"
echo -e "* ${modsfilelistsize} files to be removed"
echo -e "* location: ${modinstalldir}"
sleep 1
sleep 0.5
# Go through every file and remove it
modfileline="1"
tput sc

2
lgsm/functions/command_mods_update.sh

@ -66,7 +66,7 @@ for ((ulindex=0; ulindex < ${#installedmodslist[@]}; ulindex++)); do
echo -e " * ${yellow}${modprettyname}${default} (retain common custom files)"
fi
done
sleep 1
sleep 0.5
## Update
# List all installed mods and apply update

70
lgsm/functions/command_monitor.sh

@ -18,15 +18,15 @@ for queryattempt in {1..5}; do
fn_print_querying_eol
fn_script_log_info "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt} : QUERYING"
sleep 0.5
if [ "${querymethod}" == "gamedig" ];then
if [ "${querymethod}" == "gamedig" ]; then
query_gamedig.sh
elif [ "${querymethod}" == "gsquery" ];then
elif [ "${querymethod}" == "gsquery" ]; then
if [ ! -f "${functionsdir}/query_gsquery.py" ]; then
fn_fetch_file_github "lgsm/functions" "query_gsquery.py" "${functionsdir}" "chmodx" "norun" "noforce" "nomd5"
fi
"${functionsdir}"/query_gsquery.py -a "${ip}" -p "${queryport}" -e "${engine}" > /dev/null 2>&1
querystatus="$?"
elif [ "${querymethod}" == "telnet" ];then
elif [ "${querymethod}" == "telnet" ]; then
bash -c 'exec 3<> /dev/tcp/'${ip}'/'${queryport}''
querystatus="$?"
fi
@ -45,15 +45,15 @@ for queryattempt in {1..5}; do
fn_script_log_info "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt}: FAIL"
fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: "
fn_print_fail_eol
sleep 1
sleep 0.5
# monitor try gamedig first then gsquery before restarting
if [ "${querymethod}" == "gsquery" ];then
if [ "${querymethod}" == "gsquery" ]; then
if [ "${totalseconds}" -ge "59" ]; then
# Server query FAIL for over 59 seconds reboot server
fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: "
fn_print_fail_eol_nl
fn_script_log_error "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt}: FAIL"
sleep 1
sleep 0.5
# Send alert if enabled
alert="restartquery"
@ -61,7 +61,7 @@ for queryattempt in {1..5}; do
command_restart.sh
core_exit.sh
fi
elif [ "${querymethod}" == "gamedig" ];then
elif [ "${querymethod}" == "gamedig" ]; then
if [ "${totalseconds}" -ge "29" ]; then
break
fi
@ -92,10 +92,10 @@ fn_monitor_check_lockfile(){
fn_monitor_check_update(){
# Monitor will not check if update is running.
if [ "$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)" != "0" ]; then
if [ "$(ps -ef | grep "${selfname} update" | grep -v grep | wc -l)" != "0" ]; then
fn_print_error_nl "SteamCMD is currently checking for updates"
fn_script_log_error "SteamCMD is currently checking for updates"
sleep 1
sleep 0.5
core_exit.sh
fi
}
@ -104,7 +104,7 @@ fn_monitor_check_session(){
fn_print_dots "Checking session: "
fn_print_checking_eol
fn_script_log_info "Checking session: CHECKING"
sleep 1
sleep 0.5
if [ "${status}" != "0" ]; then
fn_print_ok "Checking session: "
fn_print_ok_eol_nl
@ -122,10 +122,10 @@ fn_monitor_check_session(){
alert="restart"
alert.sh
fn_script_log_info "Monitor is starting ${servername}"
sleep 1
sleep 0.5
command_restart.sh
fi
sleep 1
sleep 0.5
}
fn_monitor_query(){
@ -134,32 +134,34 @@ fn_monitor_query(){
local allowed_engines_array=( avalanche2.0 avalanche3.0 goldsource idtech2 idtech3 idtech3_ql iw2.0 iw3.0 madness quake refractor realvirtuality source spark starbound unity3d unreal unreal2 unreal4 )
for allowed_engine in "${allowed_engines_array[@]}"
do
if [ "${engine}" == "idtech3_ql" ]; then
local engine="quakelive"
elif [ "${gamename}" == "Killing Floor 2" ]; then
local engine="unreal4"
fi
if [ "${allowed_engine}" == "${engine}" ]; then
if [ "${engine}" == "idtech3_ql" ]; then
local engine="quakelive"
elif [ "${gamename}" == "Killing Floor 2" ]; then
local engine="unreal4"
fi
# will first attempt to use gamedig then gsquery
totalseconds=0
local query_methods_array=( gamedig gsquery )
for query_method in "${query_methods_array[@]}"
do
if [ "${query_method}" == "gamedig" ]; then
# will bypass gamedig if not installed
if [ "$(command -v gamedig 2>/dev/null)" ]&&[ "$(command -v jq 2>/dev/null)" ]; then
# will first attempt to use gamedig then gsquery
totalseconds=0
local query_methods_array=( gamedig gsquery )
for query_method in "${query_methods_array[@]}"
do
if [ "${query_method}" == "gamedig" ]; then
# will bypass gamedig if not installed
if [ "$(command -v gamedig 2>/dev/null)" ]&&[ "$(command -v jq 2>/dev/null)" ]; then
if [ -z "${monitorpass}" ]; then
querymethod="${query_method}"
fn_monitor_loop
fi
fi
else
if [ -z "${monitorpass}" ]; then
querymethod="${query_method}"
fn_monitor_loop
fi
fi
else
if [ -z "${monitorpass}" ]; then
querymethod="${query_method}"
fn_monitor_loop
fi
fi
done
done
fi
done
}
@ -170,7 +172,7 @@ fn_monitor_query_telnet(){
monitorflag=1
fn_print_dots "${servername}"
sleep 1
sleep 0.5
check.sh
logs.sh
info_config.sh
@ -184,7 +186,7 @@ if [ "${gamename}" == "starbound" ]; then
if [ "${queryenabled}" == "true" ]; then
fn_monitor_query
fi
elif [ "${gamename}" == "Teamspeak 3" ]; then
elif [ "${gamename}" == "TeamSpeak 3" ]; then
fn_monitor_query_telnet
else
fn_monitor_query

4
lgsm/functions/command_postdetails.sh

@ -74,7 +74,7 @@ fi
if [ "${posttarget}" == "http://pastebin.com" ] ; then
fn_print_dots "Posting details to pastbin.com for ${postexpire}"
sleep 1
sleep 0.5
# grab the return from 'value' from an initial visit to pastebin.
csrftoken=$(${curlpath} -s "${posttarget}" |
sed -n 's/^.*input type="hidden" name="csrf_token_post" value="\(.*\)".*$/\1/p')
@ -94,7 +94,7 @@ if [ "${posttarget}" == "http://pastebin.com" ] ; then
echo " Please share the following url for support: ${pdurl}"
elif [ "${posttarget}" == "https://hastebin.com" ] ; then
fn_print_dots "Posting details to hastebin.com"
sleep 1
sleep 0.5
# hastebin is a bit simpler. If successful, the returned result
# should look like: {"something":"key"}, putting the reference that
# we need in "key". TODO - error handling. -CedarLUG

23
lgsm/functions/command_start.sh

@ -15,16 +15,16 @@ fn_start_teamspeak3(){
fn_script_log_warn "${servercfgfullpath} is missing"
echo " * Creating blank ${servercfg}"
fn_script_log_info "Creating blank ${servercfg}"
sleep 2
sleep 1
echo " * ${servercfg} can remain blank by default."
fn_script_log_info "${servercfgfullpath} can remain blank by default."
sleep 2
sleep 1
echo " * ${servercfg} is located in ${servercfgfullpath}."
fn_script_log_info "${servercfg} is located in ${servercfgfullpath}."
sleep 5
touch "${servercfgfullpath}"
fi
sleep 1
sleep 0.5
check_status.sh
if [ "${status}" != "0" ]; then
fn_print_info_nl "${servername} is already running"
@ -52,7 +52,7 @@ fn_start_teamspeak3(){
else
./ts3server_startscript.sh start inifile="${servercfgfullpath}" > /dev/null 2>&1
fi
sleep 1
sleep 0.5
check_status.sh
if [ "${status}" == "0" ]; then
fn_print_fail_nl "Unable to start ${servername}"
@ -112,9 +112,9 @@ fn_start_tmux(){
touch "${consolelog}"
# Get tmux version
tmuxversion="$(tmux -V|sed "s/tmux //"|sed -n '1 p')"
tmuxversion="$(tmux -V | sed "s/tmux //" | sed -n '1 p')"
# Tmux compiled from source will return "master", therefore ignore it
if [ "$(tmux -V|sed "s/tmux //"|sed -n '1 p')" == "master" ]; then
if [ "$(tmux -V | sed "s/tmux //" | sed -n '1 p')" == "master" ]; then
fn_script_log "Tmux version: master (user compiled)"
echo "Tmux version: master (user compiled)" >> "${consolelog}"
if [ "${consolelogging}" == "on" ]||[ -z "${consolelogging}" ]; then
@ -122,7 +122,7 @@ fn_start_tmux(){
fi
elif [ -n "${tmuxversion}" ]; then
# Get the digit version of tmux
tmuxversion="$(tmux -V|sed "s/tmux //"|sed -n '1 p'|tr -cd '[:digit:]')"
tmuxversion="$(tmux -V | sed "s/tmux //" | sed -n '1 p' | tr -cd '[:digit:]')"
# tmux pipe-pane not supported in tmux versions < 1.6
if [ "${tmuxversion}" -lt "16" ]; then
echo "Console logging disabled: Tmux => 1.6 required
@ -148,14 +148,14 @@ if [ "${consolelogging}" == "off" ]; then
echo "Console logging disabled by user" >> "${consolelog}"
fn_script_log_info "Console logging disabled by user"
fi
sleep 1
sleep 0.5
# If the server fails to start
check_status.sh
if [ "${status}" == "0" ]; then
fn_print_fail_nl "Unable to start ${servername}"
fn_script_log_fatal "Unable to start ${servername}"
sleep 1
sleep 0.5
if [ -s "${lgsmlogdir}/.${servicename}-tmux-error.tmp" ]; then
fn_print_fail_nl "Unable to start ${servername}: Tmux error:"
fn_script_log_fatal "Unable to start ${servername}: Tmux error:"
@ -169,7 +169,8 @@ sleep 1
cat "${lgsmlogdir}/.${servicename}-tmux-error.tmp" | tee -a "${lgsmlog}"
# Detected error https://linuxgsm.com/support
if [ $(grep -c "Operation not permitted" "${lgsmlogdir}/.${servicename}-tmux-error.tmp") ]; then
if grep -c "Operation not permitted" "${lgsmlogdir}/.${servicename}-tmux-error.tmp"
then
echo ""
echo "Fix"
echo "================================="
@ -206,7 +207,7 @@ sleep 1
}
fn_print_dots "${servername}"
sleep 1
sleep 0.5
check.sh
fix.sh
info_config.sh

26
lgsm/functions/command_stop.sh

@ -33,7 +33,7 @@ fn_stop_graceful_ctrlc(){
fn_print_fail_eol_nl
fn_script_log_error "Graceful: CTRL+c: FAIL"
fi
sleep 1
sleep 0.5
fn_stop_tmux
}
@ -44,7 +44,7 @@ fn_stop_graceful_cmd(){
fn_print_dots "Graceful: sending \"${1}\""
fn_script_log_info "Graceful: sending \"${1}\""
# sends specific stop command
tmux send -t="${servicename}" ${1} ENTER > /dev/null 2>&1
tmux send -t="${servicename}" "${1}" ENTER > /dev/null 2>&1
# waits up to given seconds giving the server time to shutdown gracefully
for ((seconds=1; seconds<=${2}; seconds++)); do
check_status.sh
@ -63,7 +63,7 @@ fn_stop_graceful_cmd(){
fn_print_fail_eol_nl
fn_script_log_error "Graceful: sending \"${1}\": FAIL"
fi
sleep 1
sleep 0.5
fn_stop_tmux
}
@ -84,7 +84,7 @@ fn_stop_graceful_goldsource(){
fn_print_ok "Graceful: sending \"quit\": ${seconds}: "
fn_print_ok_eol_nl
fn_script_log_pass "Graceful: sending \"quit\": OK: ${seconds} seconds"
sleep 1
sleep 0.5
fn_stop_tmux
}
@ -115,7 +115,7 @@ fn_stop_telnet_sdtd(){
fn_stop_graceful_sdtd(){
fn_print_dots "Graceful: telnet"
fn_script_log_info "Graceful: telnet"
sleep 1
sleep 0.5
if [ "${telnetenabled}" == "false" ]; then
fn_print_info_nl "Graceful: telnet: DISABLED: Enable in ${servercfg}"
elif [ "$(command -v expect 2>/dev/null)" ]; then
@ -123,10 +123,10 @@ fn_stop_graceful_sdtd(){
for telnetip in 127.0.0.1 ${ip}; do
fn_print_dots "Graceful: telnet: ${telnetip}"
fn_script_log_info "Graceful: telnet: ${telnetip}"
sleep 1
sleep 0.5
fn_stop_telnet_sdtd
completed=$(echo -en "\n ${sdtd_telnet_shutdown}"|grep "Completed.")
refused=$(echo -en "\n ${sdtd_telnet_shutdown}"|grep "Timeout or EOF")
completed=$(echo -en "\n ${sdtd_telnet_shutdown}" | grep "Completed.")
refused=$(echo -en "\n ${sdtd_telnet_shutdown}" | grep "Timeout or EOF")
if [ -n "${refused}" ]; then
fn_print_error "Graceful: telnet: ${telnetip}: "
fn_print_fail_eol_nl
@ -142,7 +142,7 @@ fn_stop_graceful_sdtd(){
if [ -n "${completed}" ]; then
for seconds in {1..30}; do
fn_stop_telnet_sdtd
refused=$(echo -en "\n ${sdtd_telnet_shutdown}"|grep "Timeout or EOF")
refused=$(echo -en "\n ${sdtd_telnet_shutdown}" | grep "Timeout or EOF")
if [ -n "${refused}" ]; then
fn_print_ok "Graceful: telnet: ${telnetip}: "
fn_print_ok_eol_nl
@ -173,7 +173,7 @@ fn_stop_graceful_sdtd(){
fn_print_fail_eol_nl
fn_script_log_warn "Graceful: telnet: expect not installed: FAIL"
fi
sleep 1
sleep 0.5
fn_stop_tmux
}
@ -193,7 +193,7 @@ fn_stop_graceful_select(){
fn_stop_graceful_goldsource
elif [ "${engine}" == "avalanche2.0" ]||[ "${engine}" == "avalanche3.0" ]||[ "${gamename}" == "Factorio" ]||[ "${engine}" == "unity3d" ]||[ "${engine}" == "unreal4" ]||[ "${engine}" == "unreal3" ]||[ "${engine}" == "unreal2" ]||[ "${engine}" == "unreal" ]||[ "${gamename}" == "Mumble" ]; then
fn_stop_graceful_ctrlc
elif [ "${engine}" == "source" ]||[ "${engine}" == "quake" ]||[ "${engine}" == "idtech2" ]||[ "${engine}" == "idtech3" ]||[ "${engine}" == "idtech3_ql" ]||[ "${engine}" == "Just Cause 2" ]||[ "${engine}" == "projectzomboid" ]; then
elif [ "${engine}" == "source" ]||[ "${engine}" == "quake" ]||[ "${engine}" == "idtech2" ]||[ "${engine}" == "idtech3" ]||[ "${engine}" == "idtech3_ql" ]||[ "${engine}" == "Just Cause 2" ]||[ "${engine}" == "projectzomboid" ]||[ "${shortname}" == "rw" ]; then
fn_stop_graceful_cmd "quit" 30
else
fn_stop_tmux
@ -218,7 +218,7 @@ fn_stop_ark(){
if [ "${#queryport}" -gt 0 ] ; then
for (( pidcheck=0 ; pidcheck < ${maxpiditer} ; pidcheck++ )) ; do
pid=$(netstat -nap 2>/dev/null | grep ^udp[[:space:]] |\
pid=$(netstat -nap 2>/dev/null | grep "^udp[[:space:]]" |\
grep ":${queryport}[[:space:]]" | rev | awk '{print $1}' |\
rev | cut -d\/ -f1)
#
@ -228,7 +228,7 @@ fn_stop_ark(){
# and a valid numeric pid remains unchanged.
if [ "${pid}" -gt 1 ]&&[ "${pid}" -le "$(cat "/proc/sys/kernel/pid_max")" ]; then
fn_print_dots "Process still bound. Awaiting graceful exit: ${pidcheck}"
sleep 1
sleep 0.5
else
break # Our job is done here
fi # end if for pid range check

2
lgsm/functions/command_test_alert.sh

@ -9,7 +9,7 @@ local commandaction="Alert"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_print_dots "${servername}"
sleep 1
sleep 0.5
check.sh
info_config.sh
alert="test"

4
lgsm/functions/command_ts3_server_pass.sh

@ -25,14 +25,14 @@ fn_serveradmin_password_prompt(){
fn_serveradmin_password_set(){
fn_print_info_nl "Starting server with new password..."
fn_script_log_info "Starting server with new password"
sleep 1
sleep 0.5
# Start server in "new password mode"
ts3serverpass="1"
exitbypass="1"
command_start.sh
fn_print_ok_nl "Password applied"
fn_script_log_pass "New ServerAdmin password applied"
sleep 1
sleep 0.5
}
# Running functions

8
lgsm/functions/command_update_linuxgsm.sh

@ -9,12 +9,12 @@ local commandaction="Update LinuxGSM"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_print_dots "Updating LinuxGSM"
sleep 1
sleep 0.5
check.sh
fn_script_log_info "Updating LinuxGSM"
echo -ne "\n"
if [ -z "${legacymode}" ];then
if [ -z "${legacymode}" ]; then
# Check and update _default.cfg
echo -ne " checking config _default.cfg...\c"
config_file_diff=$(diff "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" <(${curlpath} -s "https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/lgsm/config-default/config-lgsm/${gameservername}/_default.cfg"))
@ -75,7 +75,7 @@ fi
# Check and update functions
if [ -n "${functionsdir}" ]; then
if [ -d "${functionsdir}" ]; then
cd "${functionsdir}"
cd "${functionsdir}" || exit
for functionfile in *
do
echo -ne " checking function ${functionfile}...\c"
@ -97,7 +97,7 @@ if [ -n "${functionsdir}" ]; then
elif [ "${function_file_diff}" != "" ]; then
fn_print_update_eol_nl
fn_script_log_info "checking function ${functionfile}: UPDATE"
rm -rf "${functionsdir}/${functionfile}"
rm -rf "${functionsdir:?}/${functionfile}"
fn_update_function
else
fn_print_ok_eol_nl

10
lgsm/functions/command_validate.sh

@ -17,9 +17,9 @@ fn_validation(){
echo -en "\n"
fn_script_log_info "Validating files: SteamCMD"
sleep 1
sleep 0.5
cd "${steamcmddir}"
cd "${steamcmddir}" || exit
# Detects if unbuffer command is available for 32 bit distributions only.
info_distro.sh
if [ "$(command -v stdbuf)" ]&&[ "${arch}" != "x86_64" ]; then
@ -27,9 +27,9 @@ fn_validation(){
fi
if [ "${engine}" == "goldsource" ]; then
${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} +app_update "${appid}" ${branch} validate +quit| tee -a "${lgsmlog}"
${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${branch} +app_update "${appid}" ${branch} validate +quit | tee -a "${lgsmlog}"
else
${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" ${branch} validate +quit| tee -a "${lgsmlog}"
${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" ${branch} validate +quit | tee -a "${lgsmlog}"
fi
if [ $? != 0 ]; then
fn_print_fail_nl "Validating files: SteamCMD"
@ -45,7 +45,7 @@ fn_validation(){
fn_print_dots "Validating files:"
sleep 0.5
fn_print_dots "Validating files: SteamCMD"
sleep 1
sleep 0.5
check.sh
check_status.sh
if [ "${status}" != "0" ]; then

20
lgsm/functions/command_wipe.sh

@ -48,7 +48,7 @@ fn_wipe_server_remove_files(){
if [ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap.*.sav")" ]; then
currentaction="Removing procedural map save(s): ${serveridentitydir}/proceduralmap.*.sav"
echo -en "Removing map saves proceduralmap.*.sav file(s)..."
sleep 1
sleep 0.5
fn_script_log "${currentaction}"
find "${serveridentitydir:?}" -type f -name "proceduralmap.*.sav" -delete
fn_wipe_exit_code
@ -62,7 +62,7 @@ fn_wipe_server_remove_files(){
if [ -n "$(find "${serveridentitydir}" -type f -name "barren*.sav")" ]; then
currentaction="Removing barren map save(s): ${serveridentitydir}/barren*.sav"
echo -en "Removing barren map saves barren*.sav file(s)..."
sleep 1
sleep 0.5
fn_script_log "${currentaction}"
find "${serveridentitydir:?}" -type f -name "barren*.sav" -delete
fn_wipe_exit_code
@ -76,7 +76,7 @@ fn_wipe_server_remove_files(){
if [ -n "$(find "${serveridentitydir}" -type f -name "proceduralmap.*.map")" ]; then
currentaction="Removing map file(s): ${serveridentitydir}/proceduralmap.*.map"
echo -en "Removing procedural map proceduralmap.*.map file(s)..."
sleep 1
sleep 0.5
fn_script_log "${currentaction}"
find "${serveridentitydir:?}" -type f -name "proceduralmap.*.map" -delete
fn_wipe_exit_code
@ -90,7 +90,7 @@ fn_wipe_server_remove_files(){
if [ -n "$(find "${serveridentitydir}" -type f -name "barren*.map")" ]; then
currentaction="Removing map file(s): ${serveridentitydir}/barren*.map"
echo -en "Removing barren map barren*.map file(s)..."
sleep 1
sleep 0.5
fn_script_log "${currentaction}"
find "${serveridentitydir:?}" -type f -name "barren*.map" -delete
fn_wipe_exit_code
@ -103,7 +103,7 @@ fn_wipe_server_remove_files(){
if [ -d "${serveridentitydir}/user" ]; then
currentaction="Removing user directory: ${serveridentitydir}/user"
echo -en "Removing user directory..."
sleep 1
sleep 0.5
fn_script_log "${currentaction}"
rm -rf "${serveridentitydir:?}/user"
fn_wipe_exit_code
@ -116,7 +116,7 @@ fn_wipe_server_remove_files(){
if [ -d "${serveridentitydir}/storage" ]; then
currentaction="Removing storage directory: ${serveridentitydir}/storage"
echo -en "Removing storage directory..."
sleep 1
sleep 0.5
fn_script_log "${currentaction}"
rm -rf "${serveridentitydir:?}/storage"
fn_wipe_exit_code
@ -129,7 +129,7 @@ fn_wipe_server_remove_files(){
if [ -n "$(find "${serveridentitydir}" -type f -name "Log.*.txt")" ]; then
currentaction="Removing log files: ${serveridentitydir}/Log.*.txt"
echo -en "Removing Log files..."
sleep 1
sleep 0.5
fn_script_log "${currentaction}"
find "${serveridentitydir:?}" -type f -name "Log.*.txt" -delete
fn_wipe_exit_code
@ -152,12 +152,12 @@ if [ "${gamename}" == "Rust" ]; then
echo Exiting; core_exit.sh
fi
fn_script_log_info "User selects to erase any user, storage, log and map data from ${serveridentitydir}"
sleep 1
sleep 0.5
fn_wipe_server_process
else
fn_print_information_nl "No data to wipe was found"
fn_script_log_info "No data to wipe was found."
sleep 1
sleep 0.5
core_exit.sh
fi
# You can add an "elif" here to add another game or engine
@ -165,7 +165,7 @@ else
# Game not listed
fn_print_information_nl "Wipe is not available for this game"
fn_script_log_info "Wipe is not available for this game."
sleep 1
sleep 0.5
core_exit.sh
fi

2
lgsm/functions/compress_ut99_maps.sh

@ -22,7 +22,7 @@ if ! fn_prompt_yn "Start compression?" Y; then
fi
mkdir -pv "${compressedmapsdir}" > /dev/null 2>&1
rm -rfv "${serverfiles}/Maps/"*.unr.uz
cd "${systemdir}"
cd "${systemdir}" || exit
for map in "${serverfiles}/Maps/"*; do
./ucc-bin compress "${map}" --nohomedir
done

4
lgsm/functions/core_dl.sh

@ -25,7 +25,7 @@ fn_dl_md5(){
# Runs MD5 Check if available
if [ "${md5}" != "0" ]&&[ "${md5}" != "nomd5" ]; then
echo -ne "verifying ${local_filename} with MD5..."
sleep 1
sleep 0.5
local md5sumcmd=$(md5sum "${local_filedir}/${local_filename}"|awk '{print $1;}')
if [ "${md5sumcmd}" != "${md5}" ]; then
fn_print_fail_eol_nl
@ -88,7 +88,7 @@ fn_fetch_trap(){
echo -ne "downloading ${local_filename}..."
fn_print_canceled_eol_nl
fn_script_log_info "Downloading ${local_filename}...CANCELED"
sleep 1
sleep 0.5
rm -f "${local_filedir}/${local_filename}"
echo -ne "downloading ${local_filename}..."
fn_print_removed_eol_nl

2
lgsm/functions/core_exit.sh

@ -9,7 +9,7 @@ fn_exit_dev_debug(){
echo ""
echo "${function_selfname} exiting with code: ${exitcode}"
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
}

27
lgsm/functions/core_functions.sh

@ -311,37 +311,43 @@ functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_steamcmd.sh(){
fix_glibc.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_glibc.sh(){
fix_kf.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_ro.sh(){
fix_kf2.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_kf.sh(){
fix_mta.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_kf2.sh(){
fix_ro.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_ut2k4.sh(){
fix_rust.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_ut.sh(){
fix_rw.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_ut3.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
@ -351,7 +357,12 @@ functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_mta.sh(){
fix_ut2k4.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_ut.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}

12
lgsm/functions/core_getopt.sh

@ -61,7 +61,7 @@ currentopt+=( "${cmd_update_linuxgsm[@]}" )
if [ "${gamename}" != "Battlefield: 1942" ]&&[ "${engine}" != "quake" ]&&[ "${engine}" != "idtech2" ]&&[ "${engine}" != "idtech3" ]&&[ "${engine}" != "iw2.0" ]&&[ "${engine}" != "iw3.0" ]&&[ "${gamename}" != "San Andreas Multiplayer" ]; then
currentopt+=( "${cmd_update[@]}" )
# force update for SteamCMD only or MTA
if [ -n "${appid}" ] || [ "${gamename}" == "Multi Theft Auto" ]; then
if [ -n "${appid}" ]||[ "${gamename}" == "Multi Theft Auto" ]; then
currentopt+=( "${cmd_force_update[@]}" )
fi
fi
@ -139,9 +139,9 @@ fi
optcommands=()
index="0"
for ((index="0"; index < ${#currentopt[@]}; index+=3)); do
cmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')"
cmdamount="$(echo "${currentopt[index]}" | awk -F ';' '{ print NF }')"
for ((cmdindex=1; cmdindex <= ${cmdamount}; cmdindex++)); do
optcommands+=( "$(echo "${currentopt[index]}"| awk -F ';' -v x=${cmdindex} '{ print $x }')" )
optcommands+=( "$(echo "${currentopt[index]}" | awk -F ';' -v x=${cmdindex} '{ print $x }')" )
done
done
@ -176,11 +176,11 @@ for i in "${optcommands[@]}"; do
# Seek and run command
index="0"
for ((index="0"; index < ${#currentopt[@]}; index+=3)); do
currcmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')"
currcmdamount="$(echo "${currentopt[index]}" | awk -F ';' '{ print NF }')"
for ((currcmdindex=1; currcmdindex <= ${currcmdamount}; currcmdindex++)); do
if [ "$(echo "${currentopt[index]}"| awk -F ';' -v x=${currcmdindex} '{ print $x }')" == "${getopt}" ]; then
if [ "$(echo "${currentopt[index]}" | awk -F ';' -v x=${currcmdindex} '{ print $x }')" == "${getopt}" ]; then
# Run command
eval ${currentopt[index+1]}
eval "${currentopt[index+1]}"
core_exit.sh
break
fi

14
lgsm/functions/fix.sh

@ -11,18 +11,18 @@ local commandaction="Fix"
# Messages that are displayed for some fixes
fn_fix_msg_start(){
fn_print_dots "Applying ${fixname} fix: ${gamename}"
sleep 1
sleep 0.5
fn_print_info "Applying ${fixname} fix: ${gamename}"
fn_script_log_info "Applying ${fixname} fix: ${gamename}"
sleep 1
sleep 0.5
}
fn_fix_msg_start_nl(){
fn_print_dots "Applying ${fixname} fix: ${gamename}"
sleep 1
sleep 0.5
fn_print_info "Applying ${fixname} fix: ${gamename}"
fn_script_log_info "Applying ${fixname} fix: ${gamename}"
sleep 1
sleep 0.5
}
fn_fix_msg_end(){
@ -56,6 +56,8 @@ if [ "${function_selfname}" != "command_install.sh" ]; then
fix_ins.sh
elif [ "${gamename}" == "Rust" ]; then
fix_rust.sh
elif [ "${shortname}" == "rw" ]; then
fix_rw.sh
elif [ "${gamename}" == "Multi Theft Auto" ]; then
fix_mta.sh
fi
@ -66,7 +68,7 @@ if [ "${function_selfname}" == "command_install.sh" ]; then
echo ""
echo "Applying ${gamename} Server Fixes"
echo "================================="
sleep 1
sleep 0.5
if [ "${gamename}" == "Killing Floor" ]; then
fix_kf.sh
elif [ "${gamename}" == "Killing Floor 2" ]; then
@ -77,5 +79,7 @@ if [ "${function_selfname}" == "command_install.sh" ]; then
fix_ut2k4.sh
elif [ "${gamename}" == "Unreal Tournament" ]; then
fix_ut.sh
elif [ "${gamename}" == "Unreal Tournament 3" ]; then
fix_ut3.sh
fi
fi

8
lgsm/functions/fix_kf.sh

@ -12,15 +12,15 @@ echo "Applying WebAdmin ROOst.css fix."
echo "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13"
sed -i 's/none}/none;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css"
sed -i 's/underline}/underline;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css"
sleep 1
sleep 0.5
echo "Applying WebAdmin CharSet fix."
echo "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1"
sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/UWeb.int"
sleep 1
sleep 0.5
echo "applying server name fix."
sleep 1
sleep 0.5
echo "forcing server restart..."
sleep 1
sleep 0.5
command_start.sh
sleep 5
command_stop.sh

2
lgsm/functions/fix_kf2.sh

@ -12,7 +12,7 @@ fn_parms(){
parms="\"${defaultmap}?Game=KFGameContent.KFGameInfo_VersusSurvival\""
}
fn_print_information "starting Killing Floor 2 server to generate configs."
fn_print_information "starting ${gamename} server to generate configs."
sleep 1
exitbypass=1
command_start.sh

2
lgsm/functions/fix_mta.sh

@ -11,7 +11,7 @@ local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
if [ ! -f "${lgsmdir}/lib/libmysqlclient.so.16" ]; then
fixname="libmysqlclient16"
fn_fix_msg_start_nl
sleep 1
sleep 0.5
fn_fetch_file "https://nightly.mtasa.com/files/modules/64/libmysqlclient.so.16" "${lgsmdir}/lib" "libmysqlclient.so.16" "chmodx" "norun" "noforce" "6c188e0f8fb5d7a29f4bc413b9fed6c2"
fn_fix_msg_end
fi

10
lgsm/functions/fix_ro.sh

@ -12,18 +12,18 @@ echo "Applying WebAdmin ROOst.css fix."
echo "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13"
sed -i 's/none}/none;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css"
sed -i 's/underline}/underline;/g' "${serverfiles}/Web/ServerAdmin/ROOst.css"
sleep 1
sleep 0.5
echo "Applying WebAdmin CharSet fix."
echo "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1"
sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/uweb.int"
sleep 1
sleep 0.5
echo "Applying Steam AppID fix."
sed -i 's/1210/1200/g' "${systemdir}/steam_appid.txt"
sleep 1
sleep 0.5
echo "applying server name fix."
sleep 1
sleep 0.5
echo "forcing server restart..."
sleep 1
sleep 0.5
command_start.sh
sleep 5
command_stop.sh

10
lgsm/functions/fix_rw.sh

@ -0,0 +1,10 @@
#!/bin/bash
# LinuxGSM fix_rw.sh function
# Author: Daniel Gibbs
# Website: https://linuxgsm.com
# Description: Resolves startup issue with Rising World
local commandname="FIX"
local commandaction="Fix"
export LD_LIBRARY_PATH="${serverfiles}/linux64:${serverfiles}:$LD_LIBRARY_PATH"

2
lgsm/functions/fix_ut.sh

@ -11,4 +11,4 @@ local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
#Set Binary Executable
echo "chmod +x ${executabledir}/${executable}"
chmod +x "${executabledir}/${executable}"
sleep 1
sleep 0.5

8
lgsm/functions/fix_ut2k4.sh

@ -12,15 +12,15 @@ echo "applying WebAdmin ut2003.css fix."
echo "http://forums.tripwireinteractive.com/showpost.php?p=585435&postcount=13"
sed -i 's/none}/none;/g' "${serverfiles}/Web/ServerAdmin/ut2003.css"
sed -i 's/underline}/underline;/g' "${serverfiles}/Web/ServerAdmin/ut2003.css"
sleep 1
sleep 0.5
echo "applying WebAdmin CharSet fix."
echo "http://forums.tripwireinteractive.com/showpost.php?p=442340&postcount=1"
sed -i 's/CharSet="iso-8859-1"/CharSet="utf-8"/g' "${systemdir}/UWeb.int"
sleep 1
sleep 0.5
echo "applying server name fix."
sleep 1
sleep 0.5
echo "forcing server restart."
sleep 1
sleep 0.5
exitbypass=1
command_start.sh
sleep 5

20
lgsm/functions/fix_ut3.sh

@ -0,0 +1,20 @@
#!/bin/bash
# LinuxGSM fix_ut2.sh function
# Author: Daniel Gibbs
# Website: https://linuxgsm.com
# Description: Resolves various issues with configs in Unreal Tournament 3.
local commandname="FIX"
local commandaction="Fix"
local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
fn_parms(){
parms="server VCTF-Suspense?Game=UTGameContent.UTVehicleCTFGame_Content?bIsDedicated=true?bIsLanMatch=false?bUsesStats=false?bShouldAdvertise=false?PureServer=1?bAllowJoinInProgress=true?ConfigSubDir=${servicename} -port=${port} -queryport=${queryport} -multihome=${ip} -nohomedir -unattended -log=${gamelog}"
}
fn_print_information "starting ${gamename} server to generate configs."
sleep 1
exitbypass=1
command_start.sh
sleep 10
command_stop.sh

60
lgsm/functions/info_config.sh

@ -20,13 +20,14 @@ fn_info_config_justcause2(){
serverpassword="${unavailable}"
maxplayers="${zero}"
port="${zero}"
queryport="${zero}"
else
servername=$(grep "Name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/Name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
serverdescription=$(grep "Description" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/Description//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
serverpassword=$(grep "Password" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]')
port=$(grep "BindPort" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]')
queryport="${port}"
ip=$(grep "BindIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/BindIP//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
ipsetinconfig=1
ipinconfigvar="BindIP"
@ -36,6 +37,7 @@ fn_info_config_justcause2(){
serverpassword=${serverpassword:-"NOT SET"}
maxplayers=${maxplayers:-"0"}
port=${port:-"0"}
queryport=${queryport:-"0"}
fi
}
@ -364,7 +366,7 @@ fn_info_config_quakeworld(){
rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
maxplayers=$(grep "maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
port=
# Not Set
rconpassword=${rconpassword:-"NOT SET"}
servername=${servername:-"NOT SET"}
@ -417,6 +419,7 @@ fn_info_config_quakelive(){
serverpassword="${unavailable}"
maxplayers="${zero}"
port="${zero}"
queryport="${zero}"
rconport="${zero}"
statsport="${zero}"
else
@ -425,6 +428,7 @@ fn_info_config_quakelive(){
serverpassword=$(grep "g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
maxplayers=$(grep "sv_maxClients" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
port=$(grep "net_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
queryport="${port}"
rconport=$(grep "zmq_rcon_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
statsport=$(grep "zmq_stats_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
@ -438,6 +442,7 @@ fn_info_config_quakelive(){
serverpassword=${serverpassword:-"NOT SET"}
maxplayers=${maxplayers:-"0"}
port=${port:-"0"}
queryport=${queryport:-"0"}
rconport=${rconport:-"0"}
statsport=${statsport:-"0"}
fi
@ -463,6 +468,40 @@ fn_info_config_realvirtuality(){
fi
}
fn_info_config_risingworld(){
if [ ! -f "${servercfgfullpath}" ]; then
servername="${unavailable}"
rconpassword="${unavailable}"
rconport="${zero}"
maxplayers="${zero}"
port="${zero}"
gamemode="${unavailable}"
gameworld="${unavailable}"
else
servername=$(grep "server_name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
serverpassword=$(grep "server_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
rconport=$(grep "rcon_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
maxplayers=$(grep "settings_max_players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
port=$(grep "server_port" "${servercfgfullpath}" | grep -v "database_mysql_server_port" | grep -v "#" | tr -cd '[:digit:]')
gamemode=$(grep "gamemode" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
gameworld=$(grep "server_world_name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server_world_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
javaram=$(grep "server_memory" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server_memory//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
ip=$(grep "server_ip" "${servercfgfullpath}" | grep -v "database_mysql_server_ip" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/server_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
ipsetinconfig=1
ipinconfigvar="server-ip"
# Not Set
servername=${servername:-"NOT SET"}
rconpassword=${rconpassword:-"NOT SET"}
rconport=${rconport:-"NOT SET"}
maxplayers=${maxplayers:-"NOT SET"}
port=${port:-"NOT SET"}
gamemode=${gamemode:-"NOT SET"}
gameworld=${gameworld:-"NOT SET"}
fi
}
fn_info_config_seriousengine35(){
if [ ! -f "${servercfgfullpath}" ]; then
servername="${unavailable}"
@ -856,8 +895,10 @@ fn_info_config_wolfensteinenemyterritory(){
serverpassword="${unavailable}"
maxplayers="${zero}"
port="${zero}"
queryport="${zero}"
else
port=$(grep "set net_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
queryport="${port}"
rconpassword=$(grep "set zmq_rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set zmq_rcon_password //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//g' -e '/^\//d' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
servername=$(grep "set sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
@ -873,6 +914,7 @@ fn_info_config_wolfensteinenemyterritory(){
serverpassword=${serverpassword:-"NOT SET"}
maxplayers=${maxplayers:-"0"}
port=${port:-"27960"}
queryport=${queryport:-"27960"}
fi
}
@ -883,8 +925,10 @@ fn_info_config_etlegacy(){
serverpassword="${unavailable}"
maxplayers="${zero}"
port="${zero}"
queryport="${zero}"
else
port=$(grep "set net_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
queryport="${port}"
rconpassword=$(grep "set rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//g' -e '/^\//d' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
servername=$(grep "set sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
@ -900,6 +944,7 @@ fn_info_config_etlegacy(){
serverpassword=${serverpassword:-"NOT SET"}
maxplayers=${maxplayers:-"0"}
port=${port:-"27960"}
queryport=${queryport:-"27960"}
fi
}
@ -909,16 +954,16 @@ fn_info_config_squad(){
servername="${unavailable}"
maxplayers="${unavailable}"
else
servername="$(cat ${servercfgfullpath} | grep "ServerName=" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')"
maxplayers="$(cat ${servercfgfullpath} | grep "MaxPlayers=" | tr -cd '[:digit:]')"
servername="$(grep "ServerName=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')"
maxplayers="$(grep "MaxPlayers=" "${servercfgfullpath}" | tr -cd '[:digit:]')"
fi
if [ ! -f "${servercfgdir}/Rcon.cfg" ]; then
rconport=${unavailable}
rconpassword=${unavailable}
else
rconport=$(cat ${servercfgdir}/Rcon.cfg | grep "Port=" | tr -cd '[:digit:]')
rconpassword=$(cat ${servercfgdir}/Rcon.cfg | grep "Password=" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
rconport=$(grep "Port=" "${servercfgdir}/Rcon.cfg" | tr -cd '[:digit:]')
rconpassword=$(grep "Password=" "${servercfgdir}/Rcon.cfg" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
fi
rconport=${rconport:-"0"}
@ -1013,6 +1058,9 @@ elif [ "${engine}" == "projectzomboid" ]; then
# ARMA 3
elif [ "${engine}" == "realvirtuality" ]; then
fn_info_config_realvirtuality
# Rising World
elif [ "${shortname}" == "rw" ]; then
fn_info_config_risingworld
# Serious Sam
elif [ "${engine}" == "seriousengine35" ]; then
fn_info_config_seriousengine35

4
lgsm/functions/info_distro.sh

@ -135,10 +135,10 @@ if [ -d "${backupdir}" ]; then
fi
# External IP address
if [ -z "${extip}" ];then
if [ -z "${extip}" ]; then
extip=$(${curlpath} -m 3 ifconfig.co > "${tmpdir}/extip.txt" 2>/dev/null)
if [ $? -ne 0 ]; then
if [ -f "${tmpdir}/extip.txt" ];then
if [ -f "${tmpdir}/extip.txt" ]; then
echo "${tmpdir}/extip.txt"
else
echo "x.x.x.x"

4
lgsm/functions/info_glibc.sh

@ -26,6 +26,7 @@ elif [ "${gamename}" == "Blade Symphony" ]; then
glibcfix="yes"
elif [ "${gamename}" == "BrainBread 2" ]; then
glibcrequired="2.17"
glibcfix="no"
elif [ "${gamename}" == "Call of Duty" ]; then
glibcrequired="2.1"
glibcfix="no"
@ -95,6 +96,9 @@ elif [ "${gamename}" == "Quake 3: Arena" ]; then
elif [ "${gamename}" == "Quake Live" ]; then
glibcrequired="2.15"
glibcfix="no"
elif [ "${shortname}" == "rw" ]; then
glibcrequired="2.14"
glibcfix="no"
elif [ "${gamename}" == "San Andreas Multiplayer" ]; then
glibcrequired="2.3"
glibcfix="no"

23
lgsm/functions/info_messages.sh

@ -122,7 +122,7 @@ fn_info_message_gameserver(){
fn_messages_separator
{
# Server name
if [ -n "${gdname}" ];then
if [ -n "${gdname}" ]; then
echo -e "${blue}Server name:\t${default}${gdname}"
elif [ -n "${servername}" ]; then
echo -e "${blue}Server name:\t${default}${servername}"
@ -479,7 +479,7 @@ fn_info_logs(){
if [ -n "${lgsmlog}" ]; then
echo -e "\nScript log\n==================="
if [ ! "$(ls -A ${lgsmlogdir})" ]; then
if [ ! "$(ls -A "${lgsmlogdir}")" ]; then
echo "${lgsmlogdir} (NO LOG FILES)"
elif [ ! -s "${lgsmlog}" ]; then
echo "${lgsmlog} (LOG FILE IS EMPTY)"
@ -492,7 +492,7 @@ fn_info_logs(){
if [ -n "${consolelog}" ]; then
echo -e "\nConsole log\n===================="
if [ ! "$(ls -A ${consolelogdir})" ]; then
if [ ! "$(ls -A "${consolelogdir}")" ]; then
echo "${consolelogdir} (NO LOG FILES)"
elif [ ! -s "${consolelog}" ]; then
echo "${consolelog} (LOG FILE IS EMPTY)"
@ -505,12 +505,12 @@ fn_info_logs(){
if [ -n "${gamelogdir}" ]; then
echo -e "\nServer log\n==================="
if [ ! "$(ls -A ${gamelogdir})" ]; then
if [ ! "$(ls -A "${gamelogdir}")" ]; then
echo "${gamelogdir} (NO LOG FILES)"
else
echo "${gamelogdir}"
# dos2unix sed 's/\r//'
tail "${gamelogdir}"/* 2>/dev/null | grep -v "==>" | sed '/^$/d' | sed 's/\r//'| tail -25
tail "${gamelogdir}"/* 2>/dev/null | grep -v "==>" | sed '/^$/d' | sed 's/\r//' | tail -25
fi
echo ""
fi
@ -775,6 +775,17 @@ fn_info_message_refractor(){
} | column -s $'\t' -t
}
fn_info_message_risingworld(){
echo -e "netstat -atunp | grep java"
echo -e ""
{
echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
echo -e "> Game/Query\tINBOUND\t${port}\ttcp/udp"
echo -e "> http query\tINBOUND\t${httpqueryport}\ttcp"
echo -e "> RCON\tINBOUND\t${rconport}\ttcp"
} | column -s $'\t' -t
}
fn_info_message_rust(){
echo -e "netstat -atunp | grep Rust"
echo -e ""
@ -1109,6 +1120,8 @@ fn_info_message_select_engine(){
fn_info_message_mumble
elif [ "${gamename}" == "Rust" ]; then
fn_info_message_rust
elif [ "${shortname}" == "rw" ]; then
fn_info_message_risingworld
elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
fn_info_message_wolfensteinenemyterritory
elif [ "${engine}" == "refractor" ]; then

11
lgsm/functions/info_parms.sh

@ -69,6 +69,14 @@ fn_info_parms_quake2(){
defaultmap=${defaultmap:-"NOT SET"}
}
fn_info_parms_risingworld(){
servername=${servername:-"NOT SET"}
port=${port:-"0"}
queryport=${port}
httpqueryport=$((port - 1))
}
fn_info_parms_rust(){
servername=${servername:-"NOT SET"}
port=${port:-"0"}
@ -152,6 +160,9 @@ elif [ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]; then
# Rust
elif [ "${gamename}" == "Rust" ]; then
fn_info_parms_rust
# Rising World
elif [ "${shortname}" == "rw" ]; then
fn_info_parms_risingworld
# Serious Sam
elif [ "${engine}" == "seriousengine35" ]; then
fn_info_config_seriousengine35

22
lgsm/functions/install_config.sh

@ -23,7 +23,7 @@ fn_fetch_default_config(){
echo "Downloading ${gamename} Configs"
echo "================================="
echo "default configs from https://github.com/GameServerManagers/Game-Server-Configs"
sleep 1
sleep 0.5
mkdir -p "${lgsmdir}/config-default/config-game"
githuburl="https://raw.githubusercontent.com/GameServerManagers/Game-Server-Configs/master"
for config in "${array_configs[@]}"; do
@ -50,7 +50,7 @@ fn_default_config_remote(){
cp -nv "${lgsmdir}/config-default/config-game/${config}" "${servercfgdir}/${config}"
fi
done
sleep 1
sleep 0.5
}
# Changes some variables within the default configs
@ -63,7 +63,7 @@ fn_set_config_vars(){
rconpass="admin$random"
echo "changing hostname."
fn_script_log_info "changing hostname."
sleep 1
sleep 0.5
if grep -q "SERVERNAME=SERVERNAME" "${lgsmdir}/config-default/config-game/${config}" 2>/dev/null; then
sed -i "s/SERVERNAME=SERVERNAME/SERVERNAME=${servername}/g" "${servercfgfullpath}"
else
@ -72,11 +72,11 @@ fn_set_config_vars(){
echo "changing rcon/admin password."
fn_script_log_info "changing rcon/admin password."
sed -i "s/ADMINPASSWORD/${rconpass}/g" "${servercfgfullpath}"
sleep 1
sleep 0.5
else
fn_script_log_warn "Config file not found, cannot alter it."
echo "Config file not found, cannot alter it."
sleep 1
sleep 0.5
fi
}
@ -87,16 +87,16 @@ fn_set_dst_config_vars(){
echo "changing server name."
fn_script_log_info "changing server name."
sed -i "s/SERVERNAME/LinuxGSM/g" "${clustercfgfullpath}"
sleep 1
sleep 0.5
echo "changing shard mode."
fn_script_log_info "changing shard mode."
sed -i "s/USESHARDING/${sharding}/g" "${clustercfgfullpath}"
sleep 1
sleep 0.5
echo "randomizing cluster key."
fn_script_log_info "randomizing cluster key."
randomkey=$(tr -dc A-Za-z0-9_ < /dev/urandom | head -c 8 | xargs)
sed -i "s/CLUSTERKEY/${randomkey}/g" "${clustercfgfullpath}"
sleep 1
sleep 0.5
else
echo "${clustercfg} is already configured."
fn_script_log_info "${clustercfg} is already configured."
@ -114,11 +114,11 @@ fn_set_dst_config_vars(){
echo "changing shard name."
fn_script_log_info "changing shard name."
sed -i "s/SHARDNAME/${shard}/g" "${servercfgfullpath}"
sleep 1
sleep 0.5
echo "changing master setting."
fn_script_log_info "changing master setting."
sed -i "s/ISMASTER/${master}/g" "${servercfgfullpath}"
sleep 1
sleep 0.5
## worldgenoverride.lua
if [ "${cave}" == "true" ]; then
@ -126,7 +126,7 @@ fn_set_dst_config_vars(){
fn_script_log_info "defining ${shard} as cave in ${servercfgdir}/worldgenoverride.lua."
echo 'return { override_enabled = true, preset = "DST_CAVE", }' > "${servercfgdir}/worldgenoverride.lua"
fi
sleep 1
sleep 0.5
echo ""
}

2
lgsm/functions/install_dst_token.sh

@ -11,7 +11,7 @@ local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
echo ""
echo "Enter ${gamename} Cluster Token"
echo "================================="
sleep 1
sleep 0.5
echo "A cluster token is required to run this server!"
echo "Follow the instructions in this link to obtain this key:"
echo "https://linuxgsm.com/dst-auth-token"

4
lgsm/functions/install_factorio_save.sh

@ -10,6 +10,6 @@ local commandaction="Install"
echo ""
echo "Creating initial Factorio savefile"
echo "================================="
sleep 1
sleep 0.5
check_glibc.sh
"${executabledir}"/factorio --create ${serverfiles}/save1
"${executabledir}"/factorio --create "${serverfiles}/save1"

4
lgsm/functions/install_gslt.sh

@ -11,7 +11,7 @@ local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
echo ""
echo "Game Server Login Token"
echo "================================="
sleep 1
sleep 0.5
if [ "${gamename}" == "Counter-Strike: Global Offensive" ]||[ "${gamename}" == "Counter-Strike: Source" ]||[ "${gamename}" == "No More Room in Hell" ]; then
echo "GSLT is required to run a public ${gamename} server"
fn_script_log_info "GSLT is required to run a public ${gamename} server"
@ -37,7 +37,7 @@ if [ -z "${autoinstall}" ]; then
fi
fi
fi
sleep 1
sleep 0.5
if [ "${gamename}" == "Tower Unite" ]; then
echo "The GSLT can be changed by editing ${servercfgdir}/${servercfg}."
fn_script_log_info "The GSLT can be changed by editing ${servercfgdir}/${servercfg}."

6
lgsm/functions/install_logs.sh

@ -13,7 +13,7 @@ if [ "${checklogs}" != "1" ]; then
echo "Creating log directories"
echo "================================="
fi
sleep 1
sleep 0.5
# Create LinuxGSM logs
echo -ne "installing log dir: ${logdir}..."
mkdir -p "${logdir}"
@ -77,7 +77,7 @@ fi
# e.g serverfiles/log is not within log/: symlink created
# log/server is in log/: symlink not created
if [ -n "${gamelogdir}" ]; then
if [ "${gamelogdir:0:${#logdir}}" != "${logdir}" ];then
if [ "${gamelogdir:0:${#logdir}}" != "${logdir}" ]; then
echo -ne "creating symlink to game log dir: ${logdir}/server -> ${gamelogdir}..."
ln -nfs "${gamelogdir}" "${logdir}/server"
if [ $? -ne 0 ]; then
@ -102,5 +102,5 @@ if [ -d "${rootdir}/Steam/logs" ]; then
fi
fi
fi
sleep 1
sleep 0.5
fn_script_log_info "Logs installed"

2
lgsm/functions/install_minecraft_eula.sh

@ -7,7 +7,7 @@
echo ""
echo "Accept ${gamename} EULA"
echo "================================="
sleep 1
sleep 0.5
echo "You are required to accept the EULA:"
echo "https://account.mojang.com/documents/minecraft_eula"

5
lgsm/functions/install_server_dir.sh

@ -11,7 +11,7 @@ local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
echo ""
echo "Server Directory"
echo "================================="
sleep 1
sleep 0.5
if [ -d "${serverfiles}" ]; then
fn_print_warning_nl "A server is already installed here."
fi
@ -24,5 +24,4 @@ if [ -z "${autoinstall}" ]; then
fi
if [ ! -d "${serverfiles}" ]; then
mkdir -v "${serverfiles}"
fi
sleep 1
fi

16
lgsm/functions/install_server_files.sh

@ -67,7 +67,7 @@ fn_install_server_files_steamcmd(){
if [ "${counter}" -ge "7" ]; then
echo "Removing $(find ${serverfiles} -type d -print0 | grep -Ez '[^/]{30}$')"
find ${serverfiles} -type d -print0 | grep -Ez '[^/]{30}$' | xargs -0 rm -rf
find "${serverfiles}" -type d -print0 | grep -Ez '[^/]{30}$' | xargs -0 rm -rf
fi
if [ "${counter}" -ge "9" ]; then
rm -rf "${steamcmddir}"
@ -76,7 +76,7 @@ fn_install_server_files_steamcmd(){
# Detects if unbuffer command is available for 32 bit distributions only.
info_distro.sh
if [ $(command -v stdbuf 2>/dev/null) ]&&[ "${arch}" != "x86_64" ]; then
if [ "$(command -v stdbuf 2>/dev/null)" ]&&[ "${arch}" != "x86_64" ]; then
unbuffer="stdbuf -i0 -o0 -e0"
fi
@ -87,11 +87,6 @@ fn_install_server_files_steamcmd(){
else
${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" ${branch} +quit
local exitcode=$?
if [ "${gamename}" == "Classic Offensive" ]; then
${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid_co}" ${branch} +quit
local exitcode=$?
fi
fi
elif [ "${counter}" -ge "5" ]; then
if [ "${engine}" == "goldsource" ]; then
@ -100,11 +95,6 @@ fn_install_server_files_steamcmd(){
else
${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" ${branch} validate +quit
local exitcode=$?
if [ "${gamename}" == "Classic Offensive" ]; then
${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid_co}" ${branch} -validate +quit
local exitcode=$?
fi
fi
fi
elif [ "${counter}" -ge "11" ]; then
@ -130,7 +120,7 @@ fn_install_server_files_steamcmd(){
echo ""
echo "Installing ${gamename} Server"
echo "================================="
sleep 1
sleep 0.5
if [ -n "${appid}" ]; then
fn_install_server_files_steamcmd

4
lgsm/functions/install_squad_license.sh

@ -11,7 +11,7 @@ local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
echo ""
echo "Squad Server License"
echo "================================="
sleep 1
sleep 0.5
echo "Server license is an optional feature for ${gamename} server"
fn_script_log_info "Server license is an optional feature for ${gamename} server"
@ -20,7 +20,7 @@ echo "http://forums.joinsquad.com/topic/16519-server-licensing-general-info/"
fn_script_log_info "Get more info and a server license here:"
fn_script_log_info "http://forums.joinsquad.com/topic/16519-server-licensing-general-info/"
echo ""
sleep 1
sleep 0.5
echo "The Squad server license can be changed by editing ${servercfgdir}/License.cfg."
fn_script_log_info "The Squad server license can be changed by editing ${selfname}."
echo ""

2
lgsm/functions/install_steamcmd.sh

@ -10,5 +10,5 @@ local commandaction="Install"
echo ""
echo "Installing SteamCMD"
echo "================================="
sleep 1
sleep 0.5
check_steamcmd.sh

12
lgsm/functions/install_ts3db.sh

@ -13,7 +13,7 @@ fn_install_ts3db_mariadb(){
echo ""
echo "checking if libmariadb2 is installed"
echo "================================="
sleep 1
sleep 0.5
ldd "${serverfiles}/libts3db_mariadb.so" | grep "libmariadb.so.2 => not found"
if [ $? -eq 0 ]; then
echo "libmariadb2 not installed. Please install it first."
@ -25,7 +25,7 @@ fn_install_ts3db_mariadb(){
echo ""
echo "Configuring ${gamename} Server for MariaDB/MySQL"
echo "================================="
sleep 1
sleep 0.5
read -rp "Enter MariaDB hostname: " mariahostname
read -rp "Enter MariaDB port: " mariaport
read -rp "Enter MariaDB username: " mariausername
@ -45,7 +45,7 @@ fn_install_ts3db_mariadb(){
sed -i "s/dbpluginparameter=/dbpluginparameter=ts3db_mariadb.ini/g" "${servercfgfullpath}"
sed -i "s/dbsqlcreatepath=create_sqlite\//dbsqlcreatepath=create_mariadb\//g" "${servercfgfullpath}"
echo "================================="
sleep 1
sleep 0.5
}
if [ -z "${autoinstall}" ]; then
@ -61,16 +61,16 @@ fi
fn_script_log "Accepting ts3server license: ${executabledir}/LICENSE"
fn_print_information_nl "Accepting TeamSpeak license:"
echo " * ${executabledir}/LICENSE"
sleep 1
sleep 0.5
touch "${executabledir}/.ts3server_license_accepted"
## Get privilege key
echo ""
echo "Getting privilege key"
echo "================================="
sleep 1
sleep 0.5
echo "IMPORANT! Save these details for later."
sleep 1
sleep 0.5
cd "${executabledir}" || exit
./ts3server_startscript.sh start inifile=ts3-server.ini
sleep 5

2
lgsm/functions/install_unreal_tournament_eula.sh

@ -7,7 +7,7 @@
echo ""
echo "Accept ${gamename} EULA"
echo "================================="
sleep 1
sleep 0.5
echo "You are required to accept the EULA:"
echo "https://www.epicgames.com/unrealtournament/unreal-tournament-pre-alpha-test-development-build-eula/"

4
lgsm/functions/install_ut2k4_key.sh

@ -11,7 +11,7 @@ local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
echo ""
echo "Enter ${gamename} CD Key"
echo "================================="
sleep 1
sleep 0.5
echo "To get your server listed on the Master Server list"
echo "you must get a free CD key. Get a key here:"
echo "https://forums.unrealtournament.com/utserver/cdkey.php?2004"
@ -19,7 +19,7 @@ echo ""
if [ -z "${autoinstall}" ]; then
echo "Once you have the key enter it below"
echo -n "KEY: "
read CODE
read -r CODE
echo ""\""CDKey"\""="\""${CODE}"\""" > "${systemdir}/cdkey"
if [ -f "${systemdir}/cdkey" ]; then
fn_script_log_info "UT2K4 Server CD Key created"

38
lgsm/functions/logs.sh

@ -22,13 +22,13 @@ if [ "${status}" != "0" ] && [ "${function_selfname}" == "command_start.sh" ] &&
fn_print_info "Moving game logs to ${gamelogdir}"
fn_script_log_info "Moving game logs to ${gamelogdir}"
echo -en "\n"
sleep 1
sleep 0.5
mv "${systemdir}"/gamelog*.log "${gamelogdir}"
fi
fi
# Log manager will start the cleanup if it finds logs older than "${logdays}"
if [ $(find "${lgsmlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; then
if [ $(find "${lgsmlogdir}"/ -type f -mtime +"${logdays}" | wc -l) -ne "0" ]; then
fn_print_dots "Starting"
# Set common logs directories
commonlogs="${systemdir}/logs"
@ -40,58 +40,58 @@ if [ $(find "${lgsmlogdir}"/ -type f -mtime +"${logdays}"|wc -l) -ne "0" ]; then
legacyserverlogdir="${logdir}/server"
# Setting up counting variables
scriptcount="0" ; consolecount="0" ; gamecount="0" ; srcdscount="0" ; smcount="0" ; ulxcount="0" ; darkrpcount="0" ; legacycount="0"
sleep 1
sleep 0.5
fn_print_ok_nl "Starting"
fn_print_info_nl "Removing logs older than ${logdays} days"
fn_script_log_info "Removing logs older than ${logdays} days"
# Logging logfiles to be removed according to "${logdays}", counting and removing them
# Script logfiles
find "${lgsmlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${lgsmlog}"
scriptcount=$(find "${lgsmlogdir}"/ -type f -mtime +"${logdays}"|wc -l)
find "${lgsmlogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
scriptcount=$(find "${lgsmlogdir}"/ -type f -mtime +"${logdays}" | wc -l)
find "${lgsmlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
# SRCDS and unreal logfiles
if [ "${engine}" == "unreal2" ]||[ "${engine}" == "source" ]; then
find "${gamelogdir}"/ -type f -mtime +"${logdays}"| tee >> "${lgsmlog}"
gamecount=$(find "${gamelogdir}"/ -type f -mtime +"${logdays}"|wc -l)
find "${gamelogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
gamecount=$(find "${gamelogdir}"/ -type f -mtime +"${logdays}" | wc -l)
find "${gamelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
fi
# Console logfiles
if [ -n "${consolelog}" ]; then
find "${consolelogdir}"/ -type f -mtime +"${logdays}"| tee >> "${lgsmlog}"
consolecount=$(find "${consolelogdir}"/ -type f -mtime +"${logdays}"|wc -l)
find "${consolelogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
consolecount=$(find "${consolelogdir}"/ -type f -mtime +"${logdays}" | wc -l)
find "${consolelogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
fi
# Common logfiles
if [ -d "${commonlogs}" ]; then
find "${commonlogs}"/ -type f -mtime +"${logdays}"| tee >> "${lgsmlog}"
smcount=$(find "${commonlogs}"/ -type f -mtime +"${logdays}"|wc -l)
find "${commonlogs}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
smcount=$(find "${commonlogs}"/ -type f -mtime +"${logdays}" | wc -l)
find "${commonlogs}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
fi
if [ -d "${commonsourcelogs}" ]; then
find "${commonsourcelogs}"/* -type f -mtime +"${logdays}"| tee >> "${lgsmlog}"
smcount=$(find "${commonsourcelogs}"/* -type f -mtime +"${logdays}"|wc -l)
find "${commonsourcelogs}"/* -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
smcount=$(find "${commonsourcelogs}"/* -type f -mtime +"${logdays}" | wc -l)
find "${commonsourcelogs}"/* -mtime +"${logdays}" -type f -exec rm -f {} \;
fi
# Source addons logfiles
if [ "${engine}" == "source" ]; then
# SourceMod logfiles
if [ -d "${sourcemodlogdir}" ]; then
find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${lgsmlog}"
smcount=$(find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}"|wc -l)
find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
smcount=$(find "${sourcemodlogdir}"/ -type f -mtime +"${logdays}" | wc -l)
find "${sourcemodlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
fi
# Garry's Mod logfiles
if [ "${gamename}" == "Garry's Mod" ]; then
# ULX logfiles
if [ -d "${ulxlogdir}" ]; then
find "${ulxlogdir}"/ -type f -mtime +"${logdays}"| tee >> "${lgsmlog}"
ulxcount=$(find "${ulxlogdir}"/ -type f -mtime +"${logdays}"|wc -l)
find "${ulxlogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
ulxcount=$(find "${ulxlogdir}"/ -type f -mtime +"${logdays}" | wc -l)
find "${ulxlogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
fi
# DarkRP logfiles
if [ -d "${darkrplogdir}" ]; then
find "${darkrplogdir}"/ -type f -mtime +"${logdays}"| tee >> "${lgsmlog}"
darkrpcount=$(find "${darkrplogdir}"/ -type f -mtime +"${logdays}"|wc -l)
find "${darkrplogdir}"/ -type f -mtime +"${logdays}" | tee >> "${lgsmlog}"
darkrpcount=$(find "${darkrplogdir}"/ -type f -mtime +"${logdays}" | wc -l)
find "${darkrplogdir}"/ -mtime +"${logdays}" -type f -exec rm -f {} \;
fi
fi

30
lgsm/functions/update_factorio.sh

@ -28,18 +28,18 @@ fn_update_factorio_currentbuild(){
# Checks if current build info is available. If it fails, then a server restart will be forced to generate logs.
if [ ! -f "${serverfiles}/factorio-current.log" ]; then
fn_print_error "Checking for update: factorio.com"
sleep 1
sleep 0.5
fn_print_error_nl "Checking for update: factorio.com: No logs with server version found"
fn_script_log_error "Checking for update: factorio.com: No logs with server version found"
sleep 1
sleep 0.5
fn_print_info_nl "Checking for update: factorio.com: Forcing server restart"
fn_script_log_info "Checking for update: factorio.com: Forcing server restart"
sleep 1
sleep 0.5
exitbypass=1
command_stop.sh
exitbypass=1
command_start.sh
sleep 1
sleep 0.5
# Check again and exit on failure.
if [ ! -f "${serverfiles}/factorio-current.log" ]; then
fn_print_fail_nl "Checking for update: factorio.com: Still No logs with server version found"
@ -49,18 +49,18 @@ fn_update_factorio_currentbuild(){
fi
# Get current build from logs
currentbuild=$(grep "Loading mod base" "${serverfiles}/factorio-current.log" 2> /dev/null|awk '{print $5}'|tail -1)
currentbuild=$(grep "Loading mod base" "${serverfiles}/factorio-current.log" 2> /dev/null | awk '{print $5}' | tail -1)
if [ -z "${currentbuild}" ]; then
fn_print_error_nl "Checking for update: factorio.com: Current build version not found"
fn_script_log_error "Checking for update: factorio.com: Current build version not found"
sleep 1
sleep 0.5
fn_print_info_nl "Checking for update: factorio.com: Forcing server restart"
fn_script_log_info "Checking for update: factorio.com: Forcing server restart"
exitbypass=1
command_stop.sh
exitbypass=1
command_start.sh
currentbuild=$(grep "Loading mod base" "${serverfiles}/factorio-current.log" 2> /dev/null|awk '{print $5}'|tail -1)
currentbuild=$(grep "Loading mod base" "${serverfiles}/factorio-current.log" 2> /dev/null | awk '{print $5}' | tail -1)
if [ -z "${currentbuild}" ]; then
fn_print_fail_nl "Checking for update: factorio.com: Current build version still not found"
fn_script_log_fatal "Checking for update: factorio.com: Current build version still not found"
@ -81,12 +81,12 @@ fn_update_factorio_availablebuild(){
else
availablebuild=$(${curlpath} -s https://www.factorio.com/download-headless | grep 'headless/linux64' | head -n 2 | tail -n 1 | grep -oP '(?<=get-download/).*?(?=/)')
fi
sleep 1
sleep 0.5
# Checks if availablebuild variable has been set
if [ -z "${availablebuild}" ]; then
fn_print_fail "Checking for update: factorio.com"
sleep 1
sleep 0.5
fn_print_fail "Checking for update: factorio.com: Not returning version info"
fn_script_log_fatal "Failure! Checking for update: factorio.com: Not returning version info"
core_exit.sh
@ -95,23 +95,23 @@ fn_update_factorio_availablebuild(){
else
fn_print_ok "Checking for update: factorio.com"
fn_script_log_pass "Checking for update: factorio.com"
sleep 1
sleep 0.5
fi
}
fn_update_factorio_compare(){
# Removes dots so if can compare version numbers
currentbuilddigit=$(echo "${currentbuild}"|tr -cd '[:digit:]')
availablebuilddigit=$(echo "${availablebuild}"|tr -cd '[:digit:]')
currentbuilddigit=$(echo "${currentbuild}" | tr -cd '[:digit:]')
availablebuilddigit=$(echo "${availablebuild}" | tr -cd '[:digit:]')
if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then
echo -e "\n"
echo -e "Update available:"
sleep 1
sleep 0.5
echo -e " Current build: ${red}${currentbuild} ${factorioarch} ${branch} ${default}"
echo -e " Available build: ${green}${availablebuild} ${factorioarch} ${branch}${default}"
echo -e ""
sleep 1
sleep 0.5
echo ""
echo -en "Applying update.\r"
sleep 1
@ -163,7 +163,7 @@ else
# Checks for server update from factorio.com
fn_print_dots "Checking for update: factorio.com"
fn_script_log_info "Checking for update: factorio.com"
sleep 1
sleep 0.5
fn_update_factorio_currentbuild
fn_update_factorio_availablebuild
fn_update_factorio_compare

20
lgsm/functions/update_minecraft.sh

@ -26,18 +26,18 @@ fn_update_currentbuild(){
# Checks if current build info is available. If it fails, then a server restart will be forced to generate logs.
if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then
fn_print_error "Checking for update: mojang.com"
sleep 1
sleep 0.5
fn_print_error_nl "Checking for update: mojang.com: No logs with server version found"
fn_script_log_error "Checking for update: mojang.com: No logs with server version found"
sleep 1
sleep 0.5
fn_print_info_nl "Checking for update: mojang.com: Forcing server restart"
fn_script_log_info "Checking for update: mojang.com: Forcing server restart"
sleep 1
sleep 0.5
exitbypass=1
command_stop.sh
exitbypass=1
command_start.sh
sleep 1
sleep 0.5
# Check again and exit on failure.
if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then
fn_print_fail_nl "Checking for update: mojang.com: Still No logs with server version found"
@ -51,7 +51,7 @@ fn_update_currentbuild(){
if [ -z "${currentbuild}" ]; then
fn_print_error_nl "Checking for update: mojang.com: Current build version not found"
fn_script_log_error "Checking for update: mojang.com: Current build version not found"
sleep 1
sleep 0.5
fn_print_info_nl "Checking for update: mojang.com: Forcing server restart"
fn_script_log_info "Checking for update: mojang.com: Forcing server restart"
exitbypass=1
@ -88,17 +88,17 @@ fn_update_availablebuild(){
fn_update_compare(){
# Removes dots so if can compare version numbers
currentbuilddigit=$(echo "${currentbuild}"|tr -cd '[:digit:]')
availablebuilddigit=$(echo "${availablebuild}"|tr -cd '[:digit:]')
currentbuilddigit=$(echo "${currentbuild}" | tr -cd '[:digit:]')
availablebuilddigit=$(echo "${availablebuild}" | tr -cd '[:digit:]')
if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then
echo -e "\n"
echo -e "Update available:"
sleep 1
sleep 0.5
echo -e " Current build: ${red}${currentbuild}${default}"
echo -e " Available build: ${green}${availablebuild}${default}"
echo -e ""
sleep 1
sleep 0.5
echo ""
echo -en "Applying update.\r"
sleep 1
@ -149,7 +149,7 @@ else
# Checks for server update from mojang.com
fn_print_dots "Checking for update: mojang.com"
fn_script_log_info "Checking for update: mojang.com"
sleep 1
sleep 0.5
fn_update_currentbuild
fn_update_availablebuild
fn_update_compare

28
lgsm/functions/update_mta.sh

@ -28,18 +28,18 @@ fn_update_mta_currentbuild(){
# Checks if current build info is available. If it fails, then a server restart will be forced to generate logs.
if [ ! -f "${gamelogdir}"/server.log ]; then
fn_print_error "Checking for update: linux.mtasa.com"
sleep 1
sleep 0.5
fn_print_error_nl "Checking for update: linux.mtasa.com: No logs with server version found"
fn_script_log_error "Checking for update: linux.mtasa.com: No logs with server version found"
sleep 1
sleep 0.5
fn_print_info_nl "Checking for update: linux.mtasa.com: Forcing server restart"
fn_script_log_info "Checking for update: linux.mtasa.com: Forcing server restart"
sleep 1
sleep 0.5
exitbypass=1
command_stop.sh
exitbypass=1
command_start.sh
sleep 1
sleep 0.5
# Check again and exit on failure.
if [ ! -f "${gamelogdir}"/server.log ]; then
fn_print_fail_nl "Checking for update: linux.mtasa.com: Still No logs with server version found"
@ -49,18 +49,18 @@ fn_update_mta_currentbuild(){
fi
# Get current build from logs
currentbuild=$(cat "${gamelogdir}"/server.log | grep "= Multi Theft Auto: San Andreas v" | awk '{ print $7 }'| sed -r 's/^.{1}//' | tail -1)
currentbuild=$(grep "= Multi Theft Auto: San Andreas v" "${gamelogdir}/server.log" | awk '{ print $7 }' | sed -r 's/^.{1}//' | tail -1)
if [ -z "${currentbuild}" ]; then
fn_print_error_nl "Checking for update: linux.mtasa.com: Current build version not found"
fn_script_log_error "Checking for update: linux.mtasa.com: Current build version not found"
sleep 1
sleep 0.5
fn_print_info_nl "Checking for update: linux.mtasa.com: Forcing server restart"
fn_script_log_info "Checking for update: linux.mtasa.com: Forcing server restart"
exitbypass=1
command_stop.sh
exitbypass=1
command_start.sh
currentbuild=$(cat "${gamelogdir}"/server.log | grep "= Multi Theft Auto: San Andreas v" | awk '{ print $7 }'| sed -r 's/^.{1}//' | tail -1)
currentbuild=$(grep "= Multi Theft Auto: San Andreas v" "${gamelogdir}/server.log" | awk '{ print $7 }' | sed -r 's/^.{1}//' | tail -1)
if [ -z "${currentbuild}" ]; then
fn_print_fail_nl "Checking for update: linux.mtasa.com: Current build version still not found"
fn_script_log_fatal "Checking for update: linux.mtasa.com: Current build version still not found"
@ -71,9 +71,9 @@ fn_update_mta_currentbuild(){
fn_mta_get_availablebuild(){
fn_fetch_file "https://raw.githubusercontent.com/multitheftauto/mtasa-blue/master/Server/version.h" "${tmpdir}" "version.h" # we need to find latest stable version here
local majorversion="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MAJOR" | awk '{ print $3 }' | sed 's/\r//g')"
local minorversion="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MINOR" | awk '{ print $3 }' | sed 's/\r//g')"
local maintenanceversion="$(cat ${tmpdir}/version.h | grep "#define MTASA_VERSION_MAINTENANCE" | awk '{ print $3 }' | sed 's/\r//g')"
local majorversion="$(grep "#define MTASA_VERSION_MAJOR" "${tmpdir}/version.h" | awk '{ print $3 }' | sed 's/\r//g')"
local minorversion="$(grep "#define MTASA_VERSION_MINOR" "${tmpdir}/version.h" | awk '{ print $3 }' | sed 's/\r//g')"
local maintenanceversion="$(grep "#define MTASA_VERSION_MAINTENANCE" "${tmpdir}/version.h" | awk '{ print $3 }' | sed 's/\r//g')"
numversion="${majorversion}${minorversion}${maintenanceversion}"
fullversion="${majorversion}.${minorversion}.${maintenanceversion}"
rm -f "${tmpdir}/version.h"
@ -81,7 +81,7 @@ fn_mta_get_availablebuild(){
fn_update_mta_compare(){
# Removes dots so if can compare version numbers
currentbuilddigit=$(echo "${currentbuild}"|tr -cd '[:digit:]')
currentbuilddigit=$(echo "${currentbuild}" | tr -cd '[:digit:]')
if [ "${currentbuilddigit}" -ne "${numversion}" ]||[ "${forceupdate}" == "1" ]; then
if [ "${forceupdate}" == "1" ]; then
# forceupdate bypasses checks, useful for small build changes
@ -91,11 +91,11 @@ fn_update_mta_compare(){
fi
echo -e "\n"
echo -e "Update ${mta_update_string}:"
sleep 1
sleep 0.5
echo -e " Current build: ${red}${currentbuild} ${default}"
echo -e " Available build: ${green}${fullversion} ${default}"
echo -e ""
sleep 1
sleep 0.5
echo ""
echo -en "Applying update.\r"
sleep 1
@ -147,7 +147,7 @@ else
# Checks for server update from linux.mtasa.com using the github repo.
fn_print_dots "Checking for update: linux.mtasa.com"
fn_script_log_info "Checking for update: linux.mtasa.com"
sleep 1
sleep 0.5
fn_update_mta_currentbuild
fn_mta_get_availablebuild
fn_update_mta_compare

26
lgsm/functions/update_mumble.sh

@ -28,18 +28,18 @@ fn_update_mumble_currentbuild(){
# Checks if current build info is available. If it fails, then a server restart will be forced to generate logs.
if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then
fn_print_error "Checking for update: GitHub"
sleep 1
sleep 0.5
fn_print_error_nl "Checking for update: GitHub: No logs with server version found"
fn_script_log_error "Checking for update: GitHub: No logs with server version found"
sleep 1
sleep 0.5
fn_print_info_nl "Checking for update: GitHub: Forcing server restart"
fn_script_log_info "Checking for update: GitHub: Forcing server restart"
sleep 1
sleep 0.5
exitbypass=1
command_stop.sh
exitbypass=1
command_start.sh
sleep 1
sleep 0.5
# Check again and exit on failure.
if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then
fn_print_fail_nl "Checking for update: GitHub: Still No logs with server version found"
@ -53,7 +53,7 @@ fn_update_mumble_currentbuild(){
if [ -z "${currentbuild}" ]; then
fn_print_error_nl "Checking for update: GitHub: Current build version not found"
fn_script_log_error "Checking for update: GitHub: Current build version not found"
sleep 1
sleep 0.5
fn_print_info_nl "Checking for update: GitHub: Forcing server restart"
fn_script_log_info "Checking for update: GitHub: Forcing server restart"
exitbypass=1
@ -77,12 +77,12 @@ fn_update_mumble_arch(){
fn_update_mumble_availablebuild(){
# Gets latest build info.
availablebuild=$(${curlpath} -s https://api.github.com/repos/mumble-voip/mumble/releases/latest | grep 'murmur-static_x86.*\.bz2"' | tail -1 | awk -F"/" '{ print $8 }')
sleep 1
sleep 0.5
# Checks if availablebuild variable has been set
if [ -z "${availablebuild}" ]; then
fn_print_fail "Checking for update: GitHub"
sleep 1
sleep 0.5
fn_print_fail "Checking for update: GitHub: Not returning version info"
fn_script_log_fatal "Failure! Checking for update: GitHub: Not returning version info"
core_exit.sh
@ -91,23 +91,23 @@ fn_update_mumble_availablebuild(){
else
fn_print_ok "Checking for update: GitHub"
fn_script_log_pass "Checking for update: GitHub"
sleep 1
sleep 0.5
fi
}
fn_update_mumble_compare(){
# Removes dots so if can compare version numbers
currentbuilddigit=$(echo "${currentbuild}"|tr -cd '[:digit:]')
availablebuilddigit=$(echo "${availablebuild}"|tr -cd '[:digit:]')
currentbuilddigit=$(echo "${currentbuild}" | tr -cd '[:digit:]')
availablebuilddigit=$(echo "${availablebuild}" | tr -cd '[:digit:]')
if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then
echo -e "\n"
echo -e "Update available:"
sleep 1
sleep 0.5
echo -e " Current build: ${red}${currentbuild} ${mumblearch}${default}"
echo -e " Available build: ${green}${availablebuild} ${mumblearch}${default}"
echo -e ""
sleep 1
sleep 0.5
echo ""
echo -en "Applying update.\r"
sleep 1
@ -159,7 +159,7 @@ else
# Checks for server update from github.com
fn_print_dots "Checking for update: github.com"
fn_script_log_info "Checking for update: github.com"
sleep 1
sleep 0.5
fn_update_mumble_currentbuild
fn_update_mumble_availablebuild
fn_update_mumble_compare

48
lgsm/functions/update_steamcmd.sh

@ -13,7 +13,7 @@ check.sh
fn_update_steamcmd_dl(){
info_config.sh
fn_print_dots "SteamCMD"
sleep 1
sleep 0.5
fn_print_ok_nl "SteamCMD"
fn_script_log_info "Starting SteamCMD"
@ -21,13 +21,13 @@ fn_update_steamcmd_dl(){
# Detects if unbuffer command is available for 32 bit distributions only.
info_distro.sh
if [ $(command -v stdbuf) ]&&[ "${arch}" != "x86_64" ]; then
if [ "$(command -v stdbuf)" ]&&[ "${arch}" != "x86_64" ]; then
unbuffer="stdbuf -i0 -o0 -e0"
fi
cd "${steamcmddir}"
cd "${steamcmddir}" || exit
if [ "${engine}" == "goldsource" ]; then
${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_set_config 90 mod ${appidmod} +app_update "${appid}" ${branch} +quit | tee -a "${lgsmlog}"
${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_set_config 90 mod "${appidmod}" +app_update "${appid}" ${branch} +quit | tee -a "${lgsmlog}"
else
${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" ${branch} +quit | tee -a "${lgsmlog}"
if [ "${gamename}" == "Classic Offensive" ]; then
@ -40,7 +40,7 @@ fn_update_steamcmd_dl(){
fn_appmanifest_info(){
appmanifestfile=$(find "${serverfiles}" -type f -name "appmanifest_${appid}.acf")
appmanifestfilewc=$(find "${serverfiles}" -type f -name "appmanifest_${appid}.acf"|wc -l)
appmanifestfilewc=$(find "${serverfiles}" -type f -name "appmanifest_${appid}.acf" | wc -l)
}
fn_appmanifest_check(){
@ -48,22 +48,22 @@ fn_appmanifest_check(){
# Multiple or no matching appmanifest files may sometimes be present.
# This error is corrected if required.
if [ "${appmanifestfilewc}" -ge "2" ]; then
sleep 1
sleep 0.5
fn_print_error "Multiple appmanifest_${appid}.acf files found"
fn_script_log_error "Multiple appmanifest_${appid}.acf files found"
sleep 2
fn_print_dots "Removing x${appmanifestfilewc} appmanifest_${appid}.acf files"
sleep 1
sleep 0.5
for appfile in ${appmanifestfile}; do
rm "${appfile}"
done
sleep 1
sleep 0.5
appmanifestfilewc1="${appmanifestfilewc}"
fn_appmanifest_info
if [ "${appmanifestfilewc}" -ge "2" ]; then
fn_print_fail "Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files"
fn_script_log_fatal "Unable to remove x${appmanifestfilewc} appmanifest_${appid}.acf files"
sleep 1
sleep 0.5
echo " * Check user permissions"
for appfile in ${appmanifestfile}; do
echo " ${appfile}"
@ -72,25 +72,25 @@ fn_appmanifest_check(){
else
fn_print_ok "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files"
fn_script_log_pass "Removed x${appmanifestfilewc1} appmanifest_${appid}.acf files"
sleep 1
sleep 0.5
fn_print_info_nl "Forcing update to correct issue"
fn_script_log_info "Forcing update to correct issue"
sleep 1
sleep 0.5
fn_update_steamcmd_dl
fn_update_request_log
fi
elif [ "${appmanifestfilewc}" -eq "0" ]; then
fn_print_error "No appmanifest_${appid}.acf found"
fn_print_error_nl "No appmanifest_${appid}.acf found"
fn_script_log_error "No appmanifest_${appid}.acf found"
sleep 1
sleep 0.5
fn_print_info_nl "Forcing update to correct issue"
fn_script_log_info "Forcing update to correct issue"
sleep 1
sleep 0.5
fn_update_steamcmd_dl
fn_update_request_log
fn_appmanifest_info
if [ "${appmanifestfilewc}" -eq "0" ]; then
fn_print_fatal "Still no appmanifest_${appid}.acf found"
fn_print_fail_nl "Still no appmanifest_${appid}.acf found"
fn_script_log_fatal "Still no appmanifest_${appid}.acf found"
core_exit.sh
fi
@ -101,7 +101,7 @@ fn_update_request_log(){
# Checks for server update requests from server logs.
fn_print_dots "Checking for update: Server logs"
fn_script_log_info "Checking for update: Server logs"
sleep 1
sleep 0.5
if [ -f "${consolelog}" ]; then
requestrestart=$(grep -Ec "MasterRequestRestart" "${consolelog}")
else
@ -110,7 +110,7 @@ fn_update_request_log(){
if [ "${requestrestart}" -ge "1" ]; then
fn_print_ok_nl "Checking for update: Server logs: Update requested"
fn_script_log_pass "Checking for update: Server logs: Update requested"
sleep 1
sleep 0.5
echo ""
echo -en "Applying update.\r"
sleep 1
@ -135,7 +135,7 @@ fn_update_request_log(){
alert.sh
else
fn_print_ok "Checking for update: Server logs: No update requested"
sleep 1
sleep 0.5
fi
}
@ -145,7 +145,7 @@ fn_update_steamcmd_check(){
# Checks for server update from SteamCMD
fn_print_dots "Checking for update: SteamCMD"
fn_script_log_info "Checking for update: SteamCMD"
sleep 1
sleep 0.5
# Gets currentbuild
currentbuild=$(grep buildid "${appmanifestfile}" | tr '[:blank:]"' ' ' | tr -s ' ' | cut -d\ -f3)
@ -157,7 +157,7 @@ fn_update_steamcmd_check(){
fi
# Set branch for updateinfo
IFS=' ' read -ra branchsplits <<< "${branch}"
IFS=' ' read -ra branchsplits <<< ${branch}
if [ "${#branchsplits[@]}" -gt 1 ]; then
branchname="${branchsplits[1]}"
else
@ -169,14 +169,14 @@ fn_update_steamcmd_check(){
availablebuild=$(./steamcmd.sh +login "${steamuser}" "${steampass}" +app_info_update 1 +app_info_print "${appid}" +app_info_print "${appid}" +quit | sed -n '/branch/,$p' | grep -m 1 buildid | tr -cd '[:digit:]')
if [ -z "${availablebuild}" ]; then
fn_print_fail "Checking for update: SteamCMD"
sleep 1
sleep 0.5
fn_print_fail_nl "Checking for update: SteamCMD: Not returning version info"
fn_script_log_fatal "Checking for update: SteamCMD: Not returning version info"
core_exit.sh
else
fn_print_ok "Checking for update: SteamCMD"
fn_script_log_pass "Checking for update: SteamCMD"
sleep 1
sleep 0.5
fi
if [ "${currentbuild}" != "${availablebuild}" ]; then
@ -184,11 +184,11 @@ fn_update_steamcmd_check(){
fn_script_log_pass "Checking for update: SteamCMD: Update available"
echo -e "\n"
echo -e "Update available:"
sleep 1
sleep 0.5
echo -e " Current build: ${red}${currentbuild}${default}"
echo -e " Available build: ${green}${availablebuild}${default}"
echo -e " https://steamdb.info/app/${appid}/"
sleep 1
sleep 0.5
echo ""
echo -en "Applying update.\r"
sleep 1

26
lgsm/functions/update_ts3.sh

@ -27,18 +27,18 @@ fn_update_ts3_currentbuild(){
# Checks if current build info is available. If it fails, then a server restart will be forced to generate logs.
if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then
fn_print_error "Checking for update: teamspeak.com"
sleep 1
sleep 0.5
fn_print_error_nl "Checking for update: teamspeak.com: No logs with server version found"
fn_script_log_error "Checking for update: teamspeak.com: No logs with server version found"
sleep 1
sleep 0.5
fn_print_info_nl "Checking for update: teamspeak.com: Forcing server restart"
fn_script_log_info "Checking for update: teamspeak.com: Forcing server restart"
sleep 1
sleep 0.5
exitbypass=1
command_stop.sh
exitbypass=1
command_start.sh
sleep 1
sleep 0.5
# Check again and exit on failure.
if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then
fn_print_fail_nl "Checking for update: teamspeak.com: Still No logs with server version found"
@ -52,7 +52,7 @@ fn_update_ts3_currentbuild(){
if [ -z "${currentbuild}" ]; then
fn_print_error_nl "Checking for update: teamspeak.com: Current build version not found"
fn_script_log_error "Checking for update: teamspeak.com: Current build version not found"
sleep 1
sleep 0.5
fn_print_info_nl "Checking for update: teamspeak.com: Forcing server restart"
fn_script_log_info "Checking for update: teamspeak.com: Forcing server restart"
exitbypass=1
@ -112,7 +112,7 @@ fn_update_ts3_availablebuild_legacy(){
# Gets latest build info.
# Grabs all version numbers but not in correct order.
wget "http://dl.4players.de/ts/releases/?C=M;O=D" -q -O -| grep -i dir | grep -Eo '<a href=\".*\/\">.*\/<\/a>' | grep -Eo '[0-9\.?]+'|uniq > "${tmpdir}/.ts3_version_numbers_unsorted.tmp"
wget "http://dl.4players.de/ts/releases/?C=M;O=D" -q -O - | grep -i dir | grep -Eo '<a href=\".*\/\">.*\/<\/a>' | grep -Eo '[0-9\.?]+' | uniq > "${tmpdir}/.ts3_version_numbers_unsorted.tmp"
# Sort version numbers
cat "${tmpdir}/.ts3_version_numbers_unsorted.tmp" | sort -r --version-sort -o "${tmpdir}/.ts3_version_numbers_sorted.tmp"
@ -134,7 +134,7 @@ fn_update_ts3_availablebuild_legacy(){
# Checks availablebuild info is available
if [ -z "${availablebuild}" ]; then
fn_print_fail "Checking for update: teamspeak.com"
sleep 1
sleep 0.5
fn_print_fail "Checking for update: teamspeak.com: Not returning version info"
fn_script_log_fatal "Failure! Checking for update: teamspeak.com: Not returning version info"
core_exit.sh
@ -143,23 +143,23 @@ fn_update_ts3_availablebuild_legacy(){
else
fn_print_ok "Checking for update: teamspeak.com"
fn_script_log_pass "Checking for update: teamspeak.com"
sleep 1
sleep 0.5
fi
}
fn_update_ts3_compare(){
# Removes dots so if can compare version numbers
currentbuilddigit=$(echo "${currentbuild}"|tr -cd '[:digit:]')
availablebuilddigit=$(echo "${availablebuild}"|tr -cd '[:digit:]')
currentbuilddigit=$(echo "${currentbuild}" | tr -cd '[:digit:]')
availablebuilddigit=$(echo "${availablebuild}" | tr -cd '[:digit:]')
if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then
echo -e "\n"
echo -e "Update available:"
sleep 1
sleep 0.5
echo -e " Current build: ${red}${currentbuild} ${ts3arch}${default}"
echo -e " Available build: ${green}${availablebuild} ${ts3arch}${default}"
echo -e ""
sleep 1
sleep 0.5
echo ""
echo -en "Applying update.\r"
sleep 1
@ -216,7 +216,7 @@ else
# Checks for server update from teamspeak.com using a mirror dl.4players.de.
fn_print_dots "Checking for update: teamspeak.com"
fn_script_log_info "Checking for update: teamspeak.com"
sleep 1
sleep 0.5
fn_update_ts3_currentbuild
if [ "$(command -v jq >/dev/null 2>&1)" ]; then
fn_update_ts3_availablebuild

20
linuxgsm.sh

@ -20,7 +20,7 @@ if [ -f ".dev-debug" ]; then
set -x
fi
version="180318"
version="180409"
shortname="core"
gameservername="core"
rootdir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
@ -73,7 +73,7 @@ fn_bootstrap_fetch_file(){
curlpath=$(command -v curl 2>/dev/null)
# If curl exists download file
if [ "$(basename ${curlpath})" == "curl" ]; then
if [ "$(basename "${curlpath}")" == "curl" ]; then
# trap to remove part downloaded files
echo -ne " fetching ${local_filename}...\c"
curlcmd=$(${curlpath} -s --fail -L -o "${local_filedir}/${local_filename}" "${remote_fileurl}" 2>&1)
@ -142,14 +142,14 @@ fn_install_menu_bash() {
caption=$3
options=$4
fn_print_horizontal
fn_print_center $title
fn_print_center $caption
fn_print_center "${title}"
fn_print_center "${caption}"
fn_print_horizontal
menu_options=()
while read -r line || [[ -n "${line}" ]]; do
var=$(echo "${line}" | awk -F "," '{print $2 " - " $3}')
menu_options+=( "${var}" )
done < $options
done < ${options}
menu_options+=( "Cancel" )
select option in "${menu_options[@]}"; do
if [ -n "${option}" ] && [ "${option}" != "Cancel" ]; then
@ -175,8 +175,8 @@ fn_install_menu_whiptail() {
key=$(echo "${line}" | awk -F "," '{print $3}')
val=$(echo "${line}" | awk -F "," '{print $2}')
menu_options+=( ${val//\"} "${key//\"}" )
done < $options
OPTION=$(${menucmd} --title "${title}" --menu "${caption}" ${height} ${width} ${menuheight} "${menu_options[@]}" 3>&1 1>&2 2>&3)
done < "${options}"
OPTION=$(${menucmd} --title "${title}" --menu "${caption}" "${height}" "${width}" "${menuheight}" "${menu_options[@]}" 3>&1 1>&2 2>&3)
if [ $? == 0 ]; then
eval "$resultvar=\"${OPTION}\""
else
@ -193,12 +193,12 @@ fn_install_menu() {
options=$4
# Get menu command
for menucmd in whiptail dialog bash; do
if [ -x $(command -v ${menucmd}) ]; then
menucmd=$(command -v ${menucmd})
if [ -x "$(command -v "${menucmd}")" ]; then
menucmd=$(command -v "${menucmd}")
break
fi
done
case "$(basename ${menucmd})" in
case "$(basename "${menucmd}")" in
whiptail|dialog)
fn_install_menu_whiptail "${menucmd}" selection "${title}" "${caption}" "${options}" 40 80 30;;
*)

910
tests/tests_fctrserver.sh

@ -0,0 +1,910 @@
#!/bin/bash
# Project: Game Server Managers - LinuxGSM
# Author: Daniel Gibbs
# License: MIT License, Copyright (c) 2017 Daniel Gibbs
# Purpose: Travis CI Tests: Factorio | Linux Game Server Management Script
# Contributors: https://github.com/GameServerManagers/LinuxGSM/graphs/contributors
# Documentation: https://github.com/GameServerManagers/LinuxGSM/wiki
# Website: https://linuxgsm.com
travistest="1"
version="180409"
shortname="fctr"
gameservername="fctrserver"
rootdir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
servicename="${selfname}"
lockselfname=".${servicename}.lock"
lgsmdir="${rootdir}/lgsm"
logdir="${rootdir}/log"
lgsmlogdir="${logdir}/lgsm"
steamcmddir="${rootdir}/steamcmd"
serverfiles="${rootdir}/serverfiles"
functionsdir="${lgsmdir}/functions"
libdir="${lgsmdir}/lib"
tmpdir="${lgsmdir}/tmp"
configdir="${lgsmdir}/config-lgsm"
configdirserver="${configdir}/${gameservername}"
configdirdefault="${lgsmdir}/config-default"
# Allows for testing not on Travis CI
if [ ! -v TRAVIS ]; then
TRAVIS_BRANCH="develop"
TRAVIS_BUILD_DIR="${rootdir}"
fi
## GitHub Branch Select
# Allows for the use of different function files
# from a different repo and/or branch.
githubuser="GameServerManagers"
githubrepo="LinuxGSM"
githubbranch="${TRAVIS_BRANCH}"
# Core Function that is required first
core_functions.sh(){
functionfile="${FUNCNAME}"
fn_bootstrap_fetch_file_github "lgsm/functions" "core_functions.sh" "${functionsdir}" "chmodx" "run" "noforcedl" "nomd5"
}
# Bootstrap
# Fetches the core functions required before passed off to core_dl.sh
# Fetches core functions
fn_bootstrap_fetch_file(){
remote_fileurl="${1}"
local_filedir="${2}"
local_filename="${3}"
chmodx="${4:-0}"
run="${5:-0}"
forcedl="${6:-0}"
md5="${7:-0}"
# download file if missing or download forced
if [ ! -f "${local_filedir}/${local_filename}" ]||[ "${forcedl}" == "forcedl" ]; then
if [ ! -d "${local_filedir}" ]; then
mkdir -p "${local_filedir}"
fi
# Defines curl path
curlpath=$(command -v curl 2>/dev/null)
# If curl exists download file
if [ "$(basename "${curlpath}")" == "curl" ]; then
# trap to remove part downloaded files
echo -ne " fetching ${local_filename}...\c"
curlcmd=$(${curlpath} -s --fail -L -o "${local_filedir}/${local_filename}" "${remote_fileurl}" 2>&1)
local exitcode=$?
if [ ${exitcode} -ne 0 ]; then
echo -e "\e[0;31mFAIL\e[0m\n"
if [ -f "${lgsmlog}" ]; then
echo -e "${remote_fileurl}" | tee -a "${lgsmlog}"
echo "${curlcmd}" | tee -a "${lgsmlog}"
fi
exit 1
else
echo -e "\e[0;32mOK\e[0m"
fi
else
echo "[ FAIL ] Curl is not installed"
exit 1
fi
# make file chmodx if chmodx is set
if [ "${chmodx}" == "chmodx" ]; then
chmod +x "${local_filedir}/${local_filename}"
fi
fi
if [ -f "${local_filedir}/${local_filename}" ]; then
# run file if run is set
if [ "${run}" == "run" ]; then
source "${local_filedir}/${local_filename}"
fi
fi
}
fn_bootstrap_fetch_file_github(){
github_file_url_dir="${1}"
github_file_url_name="${2}"
githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
remote_fileurl="${githuburl}"
local_filedir="${3}"
local_filename="${github_file_url_name}"
chmodx="${4:-0}"
run="${5:-0}"
forcedl="${6:-0}"
md5="${7:-0}"
# Passes vars to the file download function
fn_bootstrap_fetch_file "${remote_fileurl}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
}
# Installer menu
fn_print_center() {
columns="$(tput cols)"
line="$@"
printf "%*s\n" $(( (${#line} + columns) / 2)) "${line}"
}
fn_print_horizontal(){
char="${1:-=}"
printf '%*s\n' "${COLUMNS:-$(tput cols)}" '' | tr ' ' "${char}"
}
# Bash Menu
fn_install_menu_bash() {
local resultvar=$1
title=$2
caption=$3
options=$4
fn_print_horizontal
fn_print_center "${title}"
fn_print_center "${caption}"
fn_print_horizontal
menu_options=()
while read -r line || [[ -n "${line}" ]]; do
var=$(echo "${line}" | awk -F "," '{print $2 " - " $3}')
menu_options+=( "${var}" )
done < ${options}
menu_options+=( "Cancel" )
select option in "${menu_options[@]}"; do
if [ -n "${option}" ] && [ "${option}" != "Cancel" ]; then
eval "$resultvar=\"${option/%\ */}\""
fi
break
done
}
# Whiptail/Dialog Menu
fn_install_menu_whiptail() {
local menucmd=$1
local resultvar=$2
title=$3
caption=$4
options=$5
height=${6:-40}
width=${7:-80}
menuheight=${8:-30}
IFS=","
menu_options=()
while read -r line; do
key=$(echo "${line}" | awk -F "," '{print $3}')
val=$(echo "${line}" | awk -F "," '{print $2}')
menu_options+=( ${val//\"} "${key//\"}" )
done < "${options}"
OPTION=$(${menucmd} --title "${title}" --menu "${caption}" "${height}" "${width}" "${menuheight}" "${menu_options[@]}" 3>&1 1>&2 2>&3)
if [ $? == 0 ]; then
eval "$resultvar=\"${OPTION}\""
else
eval "$resultvar="
fi
}
# Menu selector
fn_install_menu() {
local resultvar=$1
local selection=""
title=$2
caption=$3
options=$4
# Get menu command
for menucmd in whiptail dialog bash; do
if [ -x "$(command -v "${menucmd}")" ]; then
menucmd=$(command -v "${menucmd}")
break
fi
done
case "$(basename "${menucmd}")" in
whiptail|dialog)
fn_install_menu_whiptail "${menucmd}" selection "${title}" "${caption}" "${options}" 40 80 30;;
*)
fn_install_menu_bash selection "${title}" "${caption}" "${options}";;
esac
eval "$resultvar=\"${selection}\""
}
# Gets server info from serverlist.csv and puts in to array
fn_server_info(){
IFS=","
server_info_array=($(grep -aw "${userinput}" "${serverlist}"))
shortname="${server_info_array[0]}" # csgo
gameservername="${server_info_array[1]}" # csgoserver
gamename="${server_info_array[2]}" # Counter Strike: Global Offensive
}
fn_install_getopt(){
userinput="empty"
echo "Usage: $0 [option]"
echo -e ""
echo "Installer - Linux Game Server Managers - Version ${version}"
echo "https://linuxgsm.com"
echo -e ""
echo -e "Commands"
echo -e "install\t\t| Select server to install."
echo -e "servername\t| e.g $0 csgoserver. Enter name of server/game to install."
echo -e "list\t\t| List all servers available for install."
exit
}
fn_install_file(){
local_filename="${gameservername}"
if [ -e "${local_filename}" ]; then
i=2
while [ -e "${local_filename}-${i}" ] ; do
let i++
done
local_filename="${local_filename}-${i}"
fi
cp -R "${selfname}" "${local_filename}"
sed -i -e "s/shortname=\"core\"/shortname=\"${shortname}\"/g" "${local_filename}"
sed -i -e "s/gameservername=\"core\"/gameservername=\"${gameservername}\"/g" "${local_filename}"
echo "Installed ${gamename} server as ${local_filename}"
echo ""
if [ ! -d "${serverfiles}" ]; then
echo "./${local_filename} install"
else
echo "Remember to check server ports"
echo "./${local_filename} details"
fi
echo ""
exit
}
# Prevent from running this script as root.
if [ "$(whoami)" == "root" ]; then
if [ ! -f "${functionsdir}/core_functions.sh" ]||[ ! -f "${functionsdir}/check_root.sh" ]||[ ! -f "${functionsdir}/core_messages.sh" ]; then
echo "[ FAIL ] Do NOT run this script as root!"
exit 1
else
core_functions.sh
check_root.sh
fi
fi
# LinuxGSM installer mode
if [ "${shortname}" == "core" ]; then
userinput=$1
datadir="${tmpdir}/data"
serverlist="${datadir}/serverlist.csv"
# Download the latest serverlist. This is the complete list of all supported servers.
fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nomd5"
if [ ! -f "${serverlist}" ]; then
echo "[ FAIL ] serverlist.csv could not be loaded."
exit 1
fi
if [ "${userinput}" == "list" ]; then
{
awk -F "," '{print $2 "\t" $3}' "${serverlist}"
} | column -s $'\t' -t | more
exit
elif [ "${userinput}" == "install" ]||[ "${userinput}" == "i" ]; then
fn_install_menu result "LinuxGSM" "Select game to install" "${serverlist}"
userinput="${result}"
fn_server_info
if [ "${result}" == "${gameservername}" ]; then
fn_install_file
elif [ "${result}" == "" ]; then
echo "Install canceled"
else
echo "[ FAIL ] menu result does not match gameservername"
echo "result: ${result}"
echo "gameservername: ${gameservername}"
fi
elif [ -n "${userinput}" ]; then
fn_server_info
if [ "${userinput}" == "${gameservername}" ]||[ "${userinput}" == "${gamename}" ]||[ "${userinput}" == "${shortname}" ]; then
fn_install_file
else
echo "[ FAIL ] unknown game server"
fi
else
fn_install_getopt
fi
# LinuxGSM Server Mode
else
core_functions.sh
# Load LinuxGSM configs
# These are required to get all the default variables for the specific server.
# Load the default config. If missing download it. If changed reload it.
if [ ! -f "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" ]; then
mkdir -p "${configdirdefault}/config-lgsm/${gameservername}"
fn_fetch_config "lgsm/config-default/config-lgsm/${gameservername}" "_default.cfg" "${configdirdefault}/config-lgsm/${gameservername}" "_default.cfg" "nochmodx" "norun" "noforcedl" "nomd5"
fi
if [ ! -f "${configdirserver}/_default.cfg" ]; then
mkdir -p "${configdirserver}"
echo -ne " copying _default.cfg...\c"
cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg"
exitcode=$?
if [ ${exitcode} -ne 0 ]; then
echo -e "\e[0;31mFAIL\e[0m\n"
exit 1
else
echo -e "\e[0;32mOK\e[0m"
fi
else
function_file_diff=$(diff -q "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg")
if [ "${function_file_diff}" != "" ]; then
fn_print_warn_nl "_default.cfg has been altered. reloading config."
echo -ne " copying _default.cfg...\c"
cp -R "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg"
exitcode=$?
if [ ${exitcode} -ne 0 ]; then
echo -e "\e[0;31mFAIL\e[0m\n"
exit 1
else
echo -e "\e[0;32mOK\e[0m"
fi
fi
fi
source "${configdirserver}/_default.cfg"
# Load the common.cfg config. If missing download it
if [ ! -f "${configdirserver}/common.cfg" ]; then
fn_fetch_config "lgsm/config-default/config-lgsm" "common-template.cfg" "${configdirserver}" "common.cfg" "${chmodx}" "nochmodx" "norun" "noforcedl" "nomd5"
source "${configdirserver}/common.cfg"
else
source "${configdirserver}/common.cfg"
fi
# Load the instance.cfg config. If missing download it
if [ ! -f "${configdirserver}/${servicename}.cfg" ]; then
fn_fetch_config "lgsm/config-default/config-lgsm" "instance-template.cfg" "${configdirserver}" "${servicename}.cfg" "nochmodx" "norun" "noforcedl" "nomd5"
source "${configdirserver}/${servicename}.cfg"
else
source "${configdirserver}/${servicename}.cfg"
fi
# Load the linuxgsm.sh in to tmpdir. If missing download it
if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then
fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nomd5"
fi
# Prevents running of core_exit.sh for Travis.
if [ -z "${travistest}" ]; then
getopt=$1
core_getopt.sh
fi
fi
fn_currentstatus_tmux(){
check_status.sh
if [ "${status}" != "0" ]; then
currentstatus="ONLINE"
else
currentstatus="OFFLINE"
fi
}
fn_currentstatus_ts3(){
check_status.sh
if [ "${status}" != "0" ]; then
currentstatus="ONLINE"
else
currentstatus="OFFLINE"
fi
}
fn_setstatus(){
fn_currentstatus_tmux
echo""
echo "Required status: ${requiredstatus}"
counter=0
echo "Current status: ${currentstatus}"
while [ "${requiredstatus}" != "${currentstatus}" ]; do
counter=$((counter+1))
fn_currentstatus_tmux
echo -ne "New status: ${currentstatus}\\r"
if [ "${requiredstatus}" == "ONLINE" ]; then
(command_start.sh > /dev/null 2>&1)
else
(command_stop.sh > /dev/null 2>&1)
fi
if [ "${counter}" -gt "5" ]; then
currentstatus="FAIL"
echo "Current status: ${currentstatus}"
echo ""
echo "Unable to start or stop server."
exit 1
fi
done
echo -ne "New status: ${currentstatus}\\r"
echo -e "\n"
echo "Test starting:"
echo ""
sleep 0.5
}
# End of every test will expect the result to either pass or fail
# If the script does not do as intended the whole test will fail
# if expecting a pass
fn_test_result_pass(){
if [ $? != 0 ]; then
echo "================================="
echo "Expected result: PASS"
echo "Actual result: FAIL"
fn_print_fail_nl "TEST FAILED"
exitcode=1
core_exit.sh
else
echo "================================="
echo "Expected result: PASS"
echo "Actual result: PASS"
fn_print_ok_nl "TEST PASSED"
echo ""
fi
}
# if expecting a fail
fn_test_result_fail(){
if [ $? == 0 ]; then
echo "================================="
echo "Expected result: FAIL"
echo "Actual result: PASS"
fn_print_fail_nl "TEST FAILED"
exitcode=1
core_exit.sh
else
echo "================================="
echo "Expected result: FAIL"
echo "Actual result: FAIL"
fn_print_ok_nl "TEST PASSED"
echo ""
fi
}
echo "================================="
echo "Travis CI Tests"
echo "Linux Game Server Manager"
echo "by Daniel Gibbs"
echo "Contributors: http://goo.gl/qLmitD"
echo "https://linuxgsm.com"
echo "================================="
echo ""
echo "================================="
echo "Server Tests"
echo "Using: ${gamename}"
echo "Testing Branch: $TRAVIS_BRANCH"
echo "================================="
echo ""
echo "0.1 - Create log dir's"
echo "================================="
echo "Description:"
echo "Create log dir's"
echo ""
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
install_logs.sh
)
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "0.2 - Enable dev-debug"
echo "================================="
echo "Description:"
echo "Enable dev-debug"
echo ""
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_dev_debug.sh
)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "1.0 - start - no files"
echo "================================="
echo "Description:"
echo "test script reaction to missing server files."
echo "Command: ./fctrserver start"
echo ""
# Allows for testing not on Travis CI
if [ ! -v TRAVIS ]; then
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_start.sh
)
fn_test_result_fail
else
echo "Test bypassed"
fi
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "1.1 - getopt"
echo "================================="
echo "Description:"
echo "displaying options messages."
echo "Command: ./fctrserver"
echo ""
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
core_getopt.sh
)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "1.2 - getopt with incorrect args"
echo "================================="
echo "Description:"
echo "displaying options messages."
echo "Command: ./fctrserver abc123"
echo ""
getopt="abc123"
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
core_getopt.sh
)
fn_test_result_fail
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "2.0 - install"
echo "================================="
echo "Description:"
echo "install ${gamename} server."
echo "Command: ./fctrserver auto-install"
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
fn_autoinstall
)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "3.1 - start"
echo "================================="
echo "Description:"
echo "start ${gamename} server."
echo "Command: ./fctrserver start"
requiredstatus="OFFLINE"
fn_setstatus
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_start.sh
)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "3.2 - start - online"
echo "================================="
echo "Description:"
echo "start ${gamename} server while already running."
echo "Command: ./fctrserver start"
requiredstatus="ONLINE"
fn_setstatus
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_start.sh
)
fn_test_result_fail
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "3.3 - start - updateonstart"
echo "================================="
echo "Description:"
echo "will update server on start."
echo "Command: ./fctrserver start"
requiredstatus="OFFLINE"
fn_setstatus
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
updateonstart="on";command_start.sh
)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "3.4 - stop"
echo "================================="
echo "Description:"
echo "stop ${gamename} server."
echo "Command: ./fctrserver stop"
requiredstatus="ONLINE"
fn_setstatus
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_stop.sh
)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "3.5 - stop - offline"
echo "================================="
echo "Description:"
echo "stop ${gamename} server while already stopped."
echo "Command: ./fctrserver stop"
requiredstatus="OFFLINE"
fn_setstatus
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_stop.sh
)
fn_test_result_fail
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "3.6 - restart"
echo "================================="
echo "Description:"
echo "restart ${gamename}."
echo "Command: ./fctrserver restart"
requiredstatus="ONLINE"
fn_setstatus
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_restart.sh
)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "3.7 - restart - offline"
echo "================================="
echo "Description:"
echo "restart ${gamename} while already stopped."
echo "Command: ./fctrserver restart"
requiredstatus="OFFLINE"
fn_setstatus
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_restart.sh
)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "4.1 - update"
echo "================================="
echo "Description:"
echo "check for updates."
echo "Command: ./fctrserver update"
requiredstatus="OFFLINE"
fn_setstatus
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_update.sh
)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "5.1 - monitor - online"
echo "================================="
echo "Description:"
echo "run monitor server while already running."
echo "Command: ./fctrserver monitor"
requiredstatus="ONLINE"
fn_setstatus
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_monitor.sh
)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "5.2 - monitor - offline - with lockfile"
echo "================================="
echo "Description:"
echo "run monitor while server is offline with lockfile."
echo "Command: ./fctrserver monitor"
requiredstatus="OFFLINE"
fn_setstatus
fn_print_info_nl "creating lockfile."
date > "${rootdir}/${lockselfname}"
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_monitor.sh
)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "5.3 - monitor - offline - no lockfile"
echo "================================="
echo "Description:"
echo "run monitor while server is offline with no lockfile."
echo "Command: ./fctrserver monitor"
requiredstatus="OFFLINE"
fn_setstatus
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_monitor.sh
)
fn_test_result_fail
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "6.0 - details"
echo "================================="
echo "Description:"
echo "display details."
echo "Command: ./fctrserver details"
requiredstatus="ONLINE"
fn_setstatus
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_details.sh
)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "6.1 - post details"
echo "================================="
echo "Description:"
echo "post details."
echo "Command: ./fctrserver postdetails"
requiredstatus="ONLINE"
fn_setstatus
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_postdetails.sh
)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "7.0 - backup"
echo "================================="
echo "Description:"
echo "run a backup."
echo "Command: ./fctrserver backup"
requiredstatus="ONLINE"
fn_setstatus
echo "test de-activated until issue #1839 fixed"
#(command_backup.sh)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "8.0 - dev - detect glibc"
echo "================================="
echo "Description:"
echo "detect glibc."
echo "Command: ./fctrserver detect-glibc"
requiredstatus="ONLINE"
fn_setstatus
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_dev_detect_glibc.sh
)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "8.1 - dev - detect ldd"
echo "================================="
echo "Description:"
echo "detect ldd."
echo "Command: ./fctrserver detect-ldd"
requiredstatus="ONLINE"
fn_setstatus
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_dev_detect_ldd.sh
)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "8.2 - dev - detect deps"
echo "================================="
echo "Description:"
echo "detect dependencies."
echo "Command: ./fctrserver detect-deps"
requiredstatus="ONLINE"
fn_setstatus
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
set -x
command_dev_detect_deps.sh
)
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "================================="
echo "Server Tests - Complete!"
echo "Using: ${gamename}"
echo "================================="
requiredstatus="OFFLINE"
fn_setstatus
fn_print_info "Tidying up directories."
rm -rfv "${serverfiles}"
core_exit.sh

139
tests/tests_jc2server.sh

@ -8,16 +8,16 @@
# Website: https://linuxgsm.com
travistest="1"
version="171014"
version="180409"
shortname="jc2"
gameservername="jc2server"
rootdir="$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")"
selfname="$(basename $(readlink -f "${BASH_SOURCE[0]}"))"
selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
servicename="${selfname}"
lockselfname=".${servicename}.lock"
lgsmdir="${rootdir}/lgsm"
logdir="${rootdir}/log"
lgsmlogdir="${logdir}/lgsm"
steamcmddir="${rootdir}/steamcmd"
serverfiles="${rootdir}/serverfiles"
functionsdir="${lgsmdir}/functions"
@ -27,12 +27,18 @@ configdir="${lgsmdir}/config-lgsm"
configdirserver="${configdir}/${gameservername}"
configdirdefault="${lgsmdir}/config-default"
# Allows for testing not on Travis CI
if [ ! -v TRAVIS ]; then
TRAVIS_BRANCH="develop"
TRAVIS_BUILD_DIR="${rootdir}"
fi
## GitHub Branch Select
# Allows for the use of different function files
# from a different repo and/or branch.
githubuser="GameServerManagers"
githubrepo="LinuxGSM"
githubbranch="$TRAVIS_BRANCH"
githubbranch="${TRAVIS_BRANCH}"
# Core Function that is required first
core_functions.sh(){
@ -52,8 +58,8 @@ fn_bootstrap_fetch_file(){
run="${5:-0}"
forcedl="${6:-0}"
md5="${7:-0}"
# If the file is missing, then download
if [ ! -f "${local_filedir}/${local_filename}" ]; then
# download file if missing or download forced
if [ ! -f "${local_filedir}/${local_filename}" ]||[ "${forcedl}" == "forcedl" ]; then
if [ ! -d "${local_filedir}" ]; then
mkdir -p "${local_filedir}"
fi
@ -61,7 +67,7 @@ fn_bootstrap_fetch_file(){
curlpath=$(command -v curl 2>/dev/null)
# If curl exists download file
if [ "$(basename ${curlpath})" == "curl" ]; then
if [ "$(basename "${curlpath}")" == "curl" ]; then
# trap to remove part downloaded files
echo -ne " fetching ${local_filename}...\c"
curlcmd=$(${curlpath} -s --fail -L -o "${local_filedir}/${local_filename}" "${remote_fileurl}" 2>&1)
@ -99,15 +105,15 @@ fn_bootstrap_fetch_file_github(){
github_file_url_name="${2}"
githuburl="https://raw.githubusercontent.com/${githubuser}/${githubrepo}/${githubbranch}/${github_file_url_dir}/${github_file_url_name}"
remote_remote_fileurl="${githuburl}"
local_local_filedir="${3}"
local_local_filename="${github_file_url_name}"
remote_fileurl="${githuburl}"
local_filedir="${3}"
local_filename="${github_file_url_name}"
chmodx="${4:-0}"
run="${5:-0}"
forcedldl="${6:-0}"
forcedl="${6:-0}"
md5="${7:-0}"
# Passes vars to the file download function
fn_bootstrap_fetch_file "${remote_remote_fileurl}" "${local_local_filedir}" "${local_local_filename}" "${chmodx}" "${run}" "${forcedldl}" "${md5}"
fn_bootstrap_fetch_file "${remote_fileurl}" "${local_filedir}" "${local_filename}" "${chmodx}" "${run}" "${forcedl}" "${md5}"
}
# Installer menu
@ -130,14 +136,14 @@ fn_install_menu_bash() {
caption=$3
options=$4
fn_print_horizontal
fn_print_center $title
fn_print_center $caption
fn_print_center "${title}"
fn_print_center "${caption}"
fn_print_horizontal
menu_options=()
while read -r line || [[ -n "${line}" ]]; do
var=$(echo "${line}" | awk -F "," '{print $2 " - " $3}')
menu_options+=( "${var}" )
done < $options
done < ${options}
menu_options+=( "Cancel" )
select option in "${menu_options[@]}"; do
if [ -n "${option}" ] && [ "${option}" != "Cancel" ]; then
@ -163,8 +169,8 @@ fn_install_menu_whiptail() {
key=$(echo "${line}" | awk -F "," '{print $3}')
val=$(echo "${line}" | awk -F "," '{print $2}')
menu_options+=( ${val//\"} "${key//\"}" )
done < $options
OPTION=$(${menucmd} --title "${title}" --menu "${caption}" ${height} ${width} ${menuheight} "${menu_options[@]}" 3>&1 1>&2 2>&3)
done < "${options}"
OPTION=$(${menucmd} --title "${title}" --menu "${caption}" "${height}" "${width}" "${menuheight}" "${menu_options[@]}" 3>&1 1>&2 2>&3)
if [ $? == 0 ]; then
eval "$resultvar=\"${OPTION}\""
else
@ -181,12 +187,12 @@ fn_install_menu() {
options=$4
# Get menu command
for menucmd in whiptail dialog bash; do
if [ -x $(command -v ${menucmd}) ]; then
menucmd=$(command -v ${menucmd})
if [ -x "$(command -v "${menucmd}")" ]; then
menucmd=$(command -v "${menucmd}")
break
fi
done
case "$(basename ${menucmd})" in
case "$(basename "${menucmd}")" in
whiptail|dialog)
fn_install_menu_whiptail "${menucmd}" selection "${title}" "${caption}" "${options}" 40 80 30;;
*)
@ -212,9 +218,9 @@ fn_install_getopt(){
echo "https://linuxgsm.com"
echo -e ""
echo -e "Commands"
echo -e "install |Select server to install."
echo -e "servername |e.g $0 csgoserver. Enter the required servername will install it."
echo -e "list |List all servers available for install."
echo -e "install\t\t| Select server to install."
echo -e "servername\t| e.g $0 csgoserver. Enter name of server/game to install."
echo -e "list\t\t| List all servers available for install."
exit
}
@ -259,12 +265,8 @@ if [ "${shortname}" == "core" ]; then
datadir="${tmpdir}/data"
serverlist="${datadir}/serverlist.csv"
# Download the serverlist. This is the complete list of all supported servers.
if [ -f "${serverlist}" ]; then
rm "${serverlist}"
fi
fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "serverlist.csv" "nochmodx" "norun" "noforcedl" "nomd5"
# Download the latest serverlist. This is the complete list of all supported servers.
fn_bootstrap_fetch_file_github "lgsm/data" "serverlist.csv" "${datadir}" "nochmodx" "norun" "forcedl" "nomd5"
if [ ! -f "${serverlist}" ]; then
echo "[ FAIL ] serverlist.csv could not be loaded."
exit 1
@ -290,8 +292,10 @@ if [ "${shortname}" == "core" ]; then
fi
elif [ -n "${userinput}" ]; then
fn_server_info
if [ "${userinput}" == "${gameservername}" ]; then
if [ "${userinput}" == "${gameservername}" ]||[ "${userinput}" == "${gamename}" ]||[ "${userinput}" == "${shortname}" ]; then
fn_install_file
else
echo "[ FAIL ] unknown game server"
fi
else
fn_install_getopt
@ -320,7 +324,7 @@ else
echo -e "\e[0;32mOK\e[0m"
fi
else
function_file_diff=$(diff -q ${configdirdefault}/config-lgsm/${gameservername}/_default.cfg ${configdirserver}/_default.cfg)
function_file_diff=$(diff -q "${configdirdefault}/config-lgsm/${gameservername}/_default.cfg" "${configdirserver}/_default.cfg")
if [ "${function_file_diff}" != "" ]; then
fn_print_warn_nl "_default.cfg has been altered. reloading config."
echo -ne " copying _default.cfg...\c"
@ -353,6 +357,7 @@ else
if [ ! -f "${tmpdir}/linuxgsm.sh" ]; then
fn_fetch_file_github "" "linuxgsm.sh" "${tmpdir}" "chmodx" "norun" "noforcedl" "nomd5"
fi
# Prevents running of core_exit.sh for Travis.
if [ "${travistest}" != "1" ]; then
getopt=$1
@ -460,8 +465,8 @@ echo "Server Tests"
echo "Using: ${gamename}"
echo "Testing Branch: $TRAVIS_BRANCH"
echo "================================="
echo ""
echo ""
echo "0.1 - Create log dir's"
echo "================================="
echo "Description:"
@ -475,8 +480,9 @@ echo ""
)
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "0.2 - Enable dev-debug"
echo "================================="
echo "Description:"
@ -491,7 +497,7 @@ echo ""
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "1.0 - start - no files"
@ -500,6 +506,8 @@ echo "Description:"
echo "test script reaction to missing server files."
echo "Command: ./jc2server start"
echo ""
# Allows for testing not on Travis CI
if [ ! -v TRAVIS ]; then
(
exec 5>"${TRAVIS_BUILD_DIR}/dev-debug.log"
BASH_XTRACEFD="5"
@ -507,9 +515,13 @@ echo ""
command_start.sh
)
fn_test_result_fail
else
echo "Test bypassed"
fi
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "1.1 - getopt"
@ -527,7 +539,7 @@ echo ""
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "1.2 - getopt with incorrect args"
@ -546,7 +558,7 @@ getopt="abc123"
fn_test_result_fail
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "2.0 - install"
@ -563,7 +575,7 @@ echo "Command: ./jc2server auto-install"
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "3.1 - start"
@ -582,7 +594,7 @@ fn_setstatus
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "3.2 - start - online"
@ -601,7 +613,7 @@ fn_setstatus
fn_test_result_fail
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "3.3 - start - updateonstart"
@ -620,7 +632,7 @@ fn_setstatus
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "3.4 - stop"
@ -639,7 +651,7 @@ fn_setstatus
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "3.5 - stop - offline"
@ -658,7 +670,7 @@ fn_setstatus
fn_test_result_fail
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "3.6 - restart"
@ -677,7 +689,7 @@ fn_setstatus
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "3.7 - restart - offline"
@ -696,8 +708,9 @@ fn_setstatus
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "4.1 - update"
echo "================================="
echo "Description:"
@ -714,7 +727,7 @@ fn_setstatus
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "4.2 - update - change buildid"
@ -735,7 +748,7 @@ sed -i 's/[0-9]\+/0/' "${serverfiles}/steamapps/appmanifest_${appid}.acf"
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "4.3 - update - change buildid - online"
@ -756,7 +769,7 @@ sed -i 's/[0-9]\+/0/' "${serverfiles}/steamapps/appmanifest_${appid}.acf"
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "4.4 - update - remove appmanifest file"
@ -777,7 +790,7 @@ rm --verbose "${serverfiles}/steamapps/appmanifest_${appid}.acf"
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "4.5 - force-update"
@ -796,7 +809,7 @@ fn_setstatus
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "4.6 - force-update - online"
@ -815,7 +828,7 @@ fn_setstatus
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "4.7 - validate"
@ -834,7 +847,7 @@ fn_setstatus
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "4.8 - validate - online"
@ -854,7 +867,7 @@ fn_setstatus
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "Inserting IP address"
@ -883,7 +896,7 @@ fn_setstatus
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "5.2 - monitor - offline - with lockfile"
@ -904,7 +917,7 @@ date > "${rootdir}/${lockselfname}"
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "5.3 - monitor - offline - no lockfile"
@ -923,7 +936,7 @@ fn_setstatus
fn_test_result_fail
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "5.4 - monitor - query_gsquery.py failure"
@ -944,7 +957,7 @@ sed -i 's/[0-9]\+/0/' "${servercfgfullpath}"
fn_test_result_fail
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
fn_print_info_nl "Re-generating ${servercfg}."
@ -968,7 +981,7 @@ fn_setstatus
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "6.1 - post details"
@ -987,7 +1000,7 @@ fn_setstatus
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "7.0 - backup"
@ -1002,7 +1015,7 @@ echo "test de-activated until issue #1839 fixed"
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "8.0 - dev - detect glibc"
@ -1021,7 +1034,7 @@ fn_setstatus
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "8.1 - dev - detect ldd"
@ -1040,7 +1053,7 @@ fn_setstatus
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "8.2 - dev - detect deps"
@ -1059,7 +1072,7 @@ fn_setstatus
fn_test_result_pass
echo "run order"
echo "================="
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log"| sed 's/functionfile=//g'
grep functionfile= "${TRAVIS_BUILD_DIR}/dev-debug.log" | sed 's/functionfile=//g'
echo ""
echo "================================="

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

Loading…
Cancel
Save