ソースを参照

Merge branch 'release/180409' into develop

Daniel Gibbs 8 年 前
コミット
d472532c32
100 ファイル変更1602 行追加1849 行削除
  1. 2 0
      .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. 0 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. 0 238
      images/logo/assets/svg/linuxgsm_black_gradiant_vector.svg
  10. 0 304
      images/logo/assets/svg/linuxgsm_black_gradiant_vector_full.svg
  11. 0 286
      images/logo/assets/svg/linuxgsm_black_vector.svg
  12. 0 248
      images/logo/assets/svg/linuxgsm_white_vector.svg
  13. 0 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 0
      lgsm/config-default/config-lgsm/rwserver/_default.cfg
  28. 1 0
      lgsm/data/serverlist.csv
  29. 1 1
      lgsm/functions/alert_discord.sh
  30. 1 1
      lgsm/functions/alert_ifttt.sh
  31. 1 1
      lgsm/functions/alert_mailgun.sh
  32. 3 3
      lgsm/functions/alert_pushover.sh
  33. 5 5
      lgsm/functions/check_deps.sh
  34. 6 6
      lgsm/functions/check_ip.sh
  35. 17 17
      lgsm/functions/check_permissions.sh
  36. 2 2
      lgsm/functions/check_status.sh
  37. 1 2
      lgsm/functions/check_steamcmd.sh
  38. 2 2
      lgsm/functions/check_system_requirements.sh
  39. 14 14
      lgsm/functions/command_backup.sh
  40. 3 3
      lgsm/functions/command_console.sh
  41. 6 6
      lgsm/functions/command_debug.sh
  42. 3 3
      lgsm/functions/command_dev_detect_deps.sh
  43. 3 3
      lgsm/functions/command_dev_detect_glibc.sh
  44. 6 6
      lgsm/functions/command_dev_detect_ldd.sh
  45. 1 1
      lgsm/functions/command_dev_query_raw.sh
  46. 3 3
      lgsm/functions/command_fastdl.sh
  47. 2 2
      lgsm/functions/command_mods_install.sh
  48. 1 1
      lgsm/functions/command_mods_remove.sh
  49. 1 1
      lgsm/functions/command_mods_update.sh
  50. 36 34
      lgsm/functions/command_monitor.sh
  51. 2 2
      lgsm/functions/command_postdetails.sh
  52. 12 11
      lgsm/functions/command_start.sh
  53. 13 13
      lgsm/functions/command_stop.sh
  54. 1 1
      lgsm/functions/command_test_alert.sh
  55. 2 2
      lgsm/functions/command_ts3_server_pass.sh
  56. 4 4
      lgsm/functions/command_update_linuxgsm.sh
  57. 5 5
      lgsm/functions/command_validate.sh
  58. 10 10
      lgsm/functions/command_wipe.sh
  59. 1 1
      lgsm/functions/compress_ut99_maps.sh
  60. 2 2
      lgsm/functions/core_dl.sh
  61. 1 1
      lgsm/functions/core_exit.sh
  62. 19 8
      lgsm/functions/core_functions.sh
  63. 6 6
      lgsm/functions/core_getopt.sh
  64. 9 5
      lgsm/functions/fix.sh
  65. 4 4
      lgsm/functions/fix_kf.sh
  66. 1 1
      lgsm/functions/fix_kf2.sh
  67. 1 1
      lgsm/functions/fix_mta.sh
  68. 5 5
      lgsm/functions/fix_ro.sh
  69. 10 0
      lgsm/functions/fix_rw.sh
  70. 1 1
      lgsm/functions/fix_ut.sh
  71. 4 4
      lgsm/functions/fix_ut2k4.sh
  72. 20 0
      lgsm/functions/fix_ut3.sh
  73. 54 6
      lgsm/functions/info_config.sh
  74. 2 2
      lgsm/functions/info_distro.sh
  75. 4 0
      lgsm/functions/info_glibc.sh
  76. 18 5
      lgsm/functions/info_messages.sh
  77. 11 0
      lgsm/functions/info_parms.sh
  78. 11 11
      lgsm/functions/install_config.sh
  79. 1 1
      lgsm/functions/install_dst_token.sh
  80. 2 2
      lgsm/functions/install_factorio_save.sh
  81. 2 2
      lgsm/functions/install_gslt.sh
  82. 3 3
      lgsm/functions/install_logs.sh
  83. 1 1
      lgsm/functions/install_minecraft_eula.sh
  84. 2 3
      lgsm/functions/install_server_dir.sh
  85. 3 13
      lgsm/functions/install_server_files.sh
  86. 2 2
      lgsm/functions/install_squad_license.sh
  87. 1 1
      lgsm/functions/install_steamcmd.sh
  88. 6 6
      lgsm/functions/install_ts3db.sh
  89. 1 1
      lgsm/functions/install_unreal_tournament_eula.sh
  90. 2 2
      lgsm/functions/install_ut2k4_key.sh
  91. 19 19
      lgsm/functions/logs.sh
  92. 15 15
      lgsm/functions/update_factorio.sh
  93. 10 10
      lgsm/functions/update_minecraft.sh
  94. 14 14
      lgsm/functions/update_mta.sh
  95. 13 13
      lgsm/functions/update_mumble.sh
  96. 24 24
      lgsm/functions/update_steamcmd.sh
  97. 13 13
      lgsm/functions/update_ts3.sh
  98. 10 10
      linuxgsm.sh
  99. 910 0
      tests/tests_fctrserver.sh
  100. 76 63
      tests/tests_jc2server.sh

+ 2 - 0
.travis.yml

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

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


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


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


+ 0 - 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


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


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


+ 0 - 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.
-cheese@twolofbees.com</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>

+ 0 - 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.
-cheese@twolofbees.com</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>

+ 0 - 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.
-cheese@twolofbees.com</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>

+ 0 - 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.
-cheese@twolofbees.com</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>

+ 0 - 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.
-cheese@twolofbees.com</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>

BIN
images/logo/facebook.png


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


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


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


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


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


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


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


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


BIN
images/logo/lgsm_full.png


BIN
images/logo/lgsmbutton.png


BIN
images/wallpaper/LinuxGSM_wallpaper.png


BIN
images/wallpaper/LinuxGSM_wallpaper_2.png


+ 118 - 0
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@example.com"
+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="alert@example.com"
+mailgunemail="email@myemail.com"
+
+# 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 - 0
lgsm/data/serverlist.csv

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

+ 1 - 1
lgsm/functions/alert_discord.sh

@@ -53,7 +53,7 @@ EOF
 
 
 fn_print_dots "Sending Discord alert"
 fn_print_dots "Sending Discord alert"
 sleep 0.5
 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
 if [ -n "${discordsend}" ]; then
 	fn_print_fail_nl "Sending Discord alert: ${discordsend}"
 	fn_print_fail_nl "Sending Discord alert: ${discordsend}"

+ 1 - 1
lgsm/functions/alert_ifttt.sh

@@ -19,7 +19,7 @@ EOF
 
 
 fn_print_dots "Sending IFTTT alert"
 fn_print_dots "Sending IFTTT alert"
 sleep 0.5
 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
 if [ -n "${iftttsend}" ]; then
 	fn_print_fail_nl "Sending IFTTT alert: ${pushbulletsend}"
 	fn_print_fail_nl "Sending IFTTT alert: ${pushbulletsend}"

+ 1 - 1
lgsm/functions/alert_mailgun.sh

@@ -17,7 +17,7 @@ mailgunsend=$(${curlpath} -s --user "api:${mailguntoken}" \
 -F subject="${alertemoji} ${alertsubject} ${alertemoji}" \
 -F subject="${alertemoji} ${alertsubject} ${alertemoji}" \
 -F o:tag='alert' \
 -F o:tag='alert' \
 -F o:tag='LinuxGSM' \
 -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
 if [ -z "${mailgunsend}" ]; then
 	fn_print_fail_nl "Sending Email alert: Mailgun: ${email}"
 	fn_print_fail_nl "Sending Email alert: Mailgun: ${email}"

+ 3 - 3
lgsm/functions/alert_pushover.sh

@@ -12,10 +12,10 @@ fn_print_dots "Sending Pushover alert"
 sleep 0.5
 sleep 0.5
 
 
 # Different alerts are given different priorities and notification sounds
 # Different alerts are given different priorities and notification sounds
-if [ "${alertsound}" == "1" ];then
+if [ "${alertsound}" == "1" ]; then
 	alertsound=""
 	alertsound=""
 	alertpriority="0"
 	alertpriority="0"
-elif [ "${alertsound}" == "2" ];then
+elif [ "${alertsound}" == "2" ]; then
 	# restarted
 	# restarted
 	alertsound="siren"
 	alertsound="siren"
 	alertpriority="1"
 	alertpriority="1"
@@ -24,7 +24,7 @@ else
 	alertpriority="0"
 	alertpriority="0"
 fi
 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
 if [ -n "${pushoversend}" ]; then
 	fn_print_fail_nl "Sending Pushover alert: ${pushoversend}"
 	fn_print_fail_nl "Sending Pushover alert: ${pushoversend}"

+ 5 - 5
lgsm/functions/check_deps.sh

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

+ 6 - 6
lgsm/functions/check_ip.sh

@@ -14,19 +14,19 @@ if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]&&[ "${travi
 	else
 	else
 		ipcommand="ip"
 		ipcommand="ip"
 	fi
 	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_config.sh
 	info_parms.sh
 	info_parms.sh
 
 
 	# IP is not set to specific IP
 	# IP is not set to specific IP
 	if [ "${ip}" == "0.0.0.0" ]||[ "${ip}" == "" ]; then
 	if [ "${ip}" == "0.0.0.0" ]||[ "${ip}" == "" ]; then
 		fn_print_dots "Check IP"
 		fn_print_dots "Check IP"
-		sleep 1
+		sleep 0.5
 		# Multiple interfaces
 		# Multiple interfaces
 		if [ "${getipwc}" -ge "2" ]; then
 		if [ "${getipwc}" -ge "2" ]; then
 			fn_print_fail "Check IP: Multiple IP addresses found."
 			fn_print_fail "Check IP: Multiple IP addresses found."
-			sleep 1
+			sleep 0.5
 			echo -en "\n"
 			echo -en "\n"
 			# IP is set within game config
 			# IP is set within game config
 			if [ "${ipsetinconfig}" == "1" ]; then
 			if [ "${ipsetinconfig}" == "1" ]; then
@@ -58,7 +58,7 @@ if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]&&[ "${travi
 		# Single interface
 		# Single interface
 		elif [ "${ipsetinconfig}" == "1" ]; then
 		elif [ "${ipsetinconfig}" == "1" ]; then
 			fn_print_fail "Check IP: IP address not set in game config."
 			fn_print_fail "Check IP: IP address not set in game config."
-			sleep 1
+			sleep 0.5
 			echo -en "\n"
 			echo -en "\n"
 			fn_print_information "Specify the IP you want to bind within ${servercfg}.\n"
 			fn_print_information "Specify the IP you want to bind within ${servercfg}.\n"
 			echo -en "	* location: ${servercfgfullpath}\n"
 			echo -en "	* location: ${servercfgfullpath}\n"
@@ -75,7 +75,7 @@ if [ "${gamename}" != "TeamSpeak 3" ]&&[ "${gamename}" != "Mumble" ]&&[ "${travi
 		else
 		else
 			fn_print_info_nl "Check IP: ${getip}"
 			fn_print_info_nl "Check IP: ${getip}"
 			fn_script_log_info "IP automatically set as: ${getip}"
 			fn_script_log_info "IP automatically set as: ${getip}"
-			sleep 1
+			sleep 0.5
 			ip="${getip}"
 			ip="${getip}"
 		fi
 		fi
 	fi
 	fi

+ 17 - 17
lgsm/functions/check_permissions.sh

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

+ 2 - 2
lgsm/functions/check_status.sh

@@ -12,7 +12,7 @@ if [ "${gamename}" == "TeamSpeak 3" ]; then
 	# 1: Server is running
 	# 1: Server is running
 	# 0: Server seems to have died
 	# 0: Server seems to have died
 	# 0: No server running (ts3server.pid is missing)
 	# 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
 	if [ "${status}" == "Server is running" ]; then
 		status=1
 		status=1
 	else
 	else
@@ -25,7 +25,7 @@ elif [ "${gamename}" == "Mumble" ]; then
 	info_config.sh
 	info_config.sh
 	# 1: Server is listening
 	# 1: Server is listening
 	# 0: Server is not listening, considered closed
 	# 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
 	if [ -z "${mumblepid}" ]; then
 		status=0
 		status=0
 	else
 	else

+ 1 - 2
lgsm/functions/check_steamcmd.sh

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

+ 2 - 2
lgsm/functions/check_system_requirements.sh

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

+ 14 - 14
lgsm/functions/command_backup.sh

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

+ 3 - 3
lgsm/functions/command_console.sh

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

+ 6 - 6
lgsm/functions/command_debug.sh

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

+ 3 - 3
lgsm/functions/command_dev_detect_deps.sh

@@ -24,9 +24,9 @@ files=$(find "${serverfiles}" | wc -l)
 find "${serverfiles}" -type f -print0 |
 find "${serverfiles}" -type f -print0 |
 while IFS= read -r -d $'\0' line; do
 while IFS= read -r -d $'\0' line; do
 	if [ "${readelf}" == "eu-readelf" ]; then
 	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
 	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
 	fi
 	echo -n "${i} / ${files}" $'\r'
 	echo -n "${i} / ${files}" $'\r'
 	((i++))
 	((i++))
@@ -114,7 +114,7 @@ fi
 echo ""
 echo ""
 echo "Required Librarys"
 echo "Required Librarys"
 echo "================================="
 echo "================================="
-sort "${tmpdir}/.depdetect_readelf" |uniq
+sort "${tmpdir}/.depdetect_readelf" | uniq
 echo -en "\n"
 echo -en "\n"
 rm -f "${tmpdir}/.depdetect_centos_line"
 rm -f "${tmpdir}/.depdetect_centos_line"
 rm -f "${tmpdir}/.depdetect_centos_list"
 rm -f "${tmpdir}/.depdetect_centos_list"

+ 3 - 3
lgsm/functions/command_dev_detect_glibc.sh

@@ -31,18 +31,18 @@ echo ""
 files=$(find "${serverfiles}" | wc -l)
 files=$(find "${serverfiles}" | wc -l)
 find "${serverfiles}" -type f -print0 |
 find "${serverfiles}" -type f -print0 |
 while IFS= read -r -d $'\0' line; do
 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
 	if [ "${glibcversion}" ]; then
 		echo "${glibcversion}: ${line}" >>"${tmpdir}/detect_glibc_files.tmp"
 		echo "${glibcversion}: ${line}" >>"${tmpdir}/detect_glibc_files.tmp"
 	fi
 	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'
 	echo -n "${i} / ${files}" $'\r'
 	((i++))
 	((i++))
 done
 done
 echo ""
 echo ""
 cat "${tmpdir}/detect_glibc_files.tmp"
 cat "${tmpdir}/detect_glibc_files.tmp"
 echo ""
 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.tmp"
 rm "${tmpdir}/detect_glibc_files.tmp"
 rm "${tmpdir}/detect_glibc_files.tmp"
 
 

+ 6 - 6
lgsm/functions/command_dev_detect_ldd.sh

@@ -25,14 +25,14 @@ echo ""
 files=$(find "${serverfiles}" | wc -l)
 files=$(find "${serverfiles}" | wc -l)
 find "${serverfiles}" -type f -print0 |
 find "${serverfiles}" -type f -print0 |
 while IFS= read -r -d $'\0' line; do
 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"
 		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"
 			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
 	fi
 	fi
 	echo -n "$i / $files" $'\r'
 	echo -n "$i / $files" $'\r'

+ 1 - 1
lgsm/functions/command_dev_query_raw.sh

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

+ 3 - 3
lgsm/functions/command_fastdl.sh

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

+ 2 - 2
lgsm/functions/command_mods_install.sh

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

+ 1 - 1
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 "removing ${modprettyname}"
 echo -e "* ${modsfilelistsize} files to be removed"
 echo -e "* ${modsfilelistsize} files to be removed"
 echo -e "* location: ${modinstalldir}"
 echo -e "* location: ${modinstalldir}"
-sleep 1
+sleep 0.5
 # Go through every file and remove it
 # Go through every file and remove it
 modfileline="1"
 modfileline="1"
 tput sc
 tput sc

+ 1 - 1
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)"
 		echo -e "	* ${yellow}${modprettyname}${default} (retain common custom files)"
 	fi
 	fi
 done
 done
-sleep 1
+sleep 0.5
 
 
 ## Update
 ## Update
 # List all installed mods and apply update
 # List all installed mods and apply update

+ 36 - 34
lgsm/functions/command_monitor.sh

@@ -18,15 +18,15 @@ for queryattempt in {1..5}; do
 	fn_print_querying_eol
 	fn_print_querying_eol
 	fn_script_log_info "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt} : QUERYING"
 	fn_script_log_info "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt} : QUERYING"
 	sleep 0.5
 	sleep 0.5
-	if [ "${querymethod}" ==  "gamedig" ];then
+	if [ "${querymethod}" ==  "gamedig" ]; then
 		query_gamedig.sh
 		query_gamedig.sh
-	elif [ "${querymethod}" ==  "gsquery" ];then
+	elif [ "${querymethod}" ==  "gsquery" ]; then
 		if [ ! -f "${functionsdir}/query_gsquery.py" ]; then
 		if [ ! -f "${functionsdir}/query_gsquery.py" ]; then
 			fn_fetch_file_github "lgsm/functions" "query_gsquery.py" "${functionsdir}" "chmodx" "norun" "noforce" "nomd5"
 			fn_fetch_file_github "lgsm/functions" "query_gsquery.py" "${functionsdir}" "chmodx" "norun" "noforce" "nomd5"
 		fi
 		fi
 		"${functionsdir}"/query_gsquery.py -a "${ip}" -p "${queryport}" -e "${engine}" > /dev/null 2>&1
 		"${functionsdir}"/query_gsquery.py -a "${ip}" -p "${queryport}" -e "${engine}" > /dev/null 2>&1
 		querystatus="$?"
 		querystatus="$?"
-	elif [ "${querymethod}" ==  "telnet" ];then
+	elif [ "${querymethod}" ==  "telnet" ]; then
 		bash -c 'exec 3<> /dev/tcp/'${ip}'/'${queryport}''
 		bash -c 'exec 3<> /dev/tcp/'${ip}'/'${queryport}''
 		querystatus="$?"
 		querystatus="$?"
 	fi
 	fi
@@ -45,15 +45,15 @@ for queryattempt in {1..5}; do
 		fn_script_log_info "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt}: FAIL"
 		fn_script_log_info "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt}: FAIL"
 		fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: "
 		fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: "
 		fn_print_fail_eol
 		fn_print_fail_eol
-		sleep 1
+		sleep 0.5
 		# monitor try gamedig first then gsquery before restarting
 		# monitor try gamedig first then gsquery before restarting
-		if [ "${querymethod}" ==  "gsquery" ];then
+		if [ "${querymethod}" ==  "gsquery" ]; then
 			if [ "${totalseconds}" -ge "59" ]; then
 			if [ "${totalseconds}" -ge "59" ]; then
 				# Server query FAIL for over 59 seconds reboot server
 				# Server query FAIL for over 59 seconds reboot server
 				fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: "
 				fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: "
 				fn_print_fail_eol_nl
 				fn_print_fail_eol_nl
 				fn_script_log_error "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt}: FAIL"
 				fn_script_log_error "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt}: FAIL"
-				sleep 1
+				sleep 0.5
 
 
 				# Send alert if enabled
 				# Send alert if enabled
 				alert="restartquery"
 				alert="restartquery"
@@ -61,7 +61,7 @@ for queryattempt in {1..5}; do
 				command_restart.sh
 				command_restart.sh
 				core_exit.sh
 				core_exit.sh
 			fi
 			fi
-		elif [ "${querymethod}" ==  "gamedig" ];then
+		elif [ "${querymethod}" ==  "gamedig" ]; then
 			if [ "${totalseconds}" -ge "29" ]; then
 			if [ "${totalseconds}" -ge "29" ]; then
 				break
 				break
 			fi
 			fi
@@ -92,10 +92,10 @@ fn_monitor_check_lockfile(){
 
 
 fn_monitor_check_update(){
 fn_monitor_check_update(){
 	# Monitor will not check if update is running.
 	# 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_print_error_nl "SteamCMD is currently checking for updates"
 		fn_script_log_error "SteamCMD is currently checking for updates"
 		fn_script_log_error "SteamCMD is currently checking for updates"
-		sleep 1
+		sleep 0.5
 		core_exit.sh
 		core_exit.sh
 	fi
 	fi
 }
 }
@@ -104,7 +104,7 @@ fn_monitor_check_session(){
 	fn_print_dots "Checking session: "
 	fn_print_dots "Checking session: "
 	fn_print_checking_eol
 	fn_print_checking_eol
 	fn_script_log_info "Checking session: CHECKING"
 	fn_script_log_info "Checking session: CHECKING"
-	sleep 1
+	sleep 0.5
 	if [ "${status}" != "0" ]; then
 	if [ "${status}" != "0" ]; then
 		fn_print_ok "Checking session: "
 		fn_print_ok "Checking session: "
 		fn_print_ok_eol_nl
 		fn_print_ok_eol_nl
@@ -122,10 +122,10 @@ fn_monitor_check_session(){
 		alert="restart"
 		alert="restart"
 		alert.sh
 		alert.sh
 		fn_script_log_info "Monitor is starting ${servername}"
 		fn_script_log_info "Monitor is starting ${servername}"
-		sleep 1
+		sleep 0.5
 		command_restart.sh
 		command_restart.sh
 	fi
 	fi
-	sleep 1
+	sleep 0.5
 }
 }
 
 
 fn_monitor_query(){
 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 )
 	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[@]}"
 	for allowed_engine in "${allowed_engines_array[@]}"
 	do
 	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
 					if [ -z "${monitorpass}" ]; then
 						querymethod="${query_method}"
 						querymethod="${query_method}"
 						fn_monitor_loop
 						fn_monitor_loop
 					fi
 					fi
 				fi
 				fi
-			else
-				if [ -z "${monitorpass}" ]; then
-					querymethod="${query_method}"
-					fn_monitor_loop
-				fi
-			fi
-		done
+			done
+		fi
 	done
 	done
 }
 }
 
 
@@ -170,7 +172,7 @@ fn_monitor_query_telnet(){
 
 
 monitorflag=1
 monitorflag=1
 fn_print_dots "${servername}"
 fn_print_dots "${servername}"
-sleep 1
+sleep 0.5
 check.sh
 check.sh
 logs.sh
 logs.sh
 info_config.sh
 info_config.sh
@@ -184,7 +186,7 @@ if [ "${gamename}" == "starbound" ]; then
 	if [ "${queryenabled}" == "true" ]; then
 	if [ "${queryenabled}" == "true" ]; then
 		fn_monitor_query
 		fn_monitor_query
 	fi
 	fi
-elif [ "${gamename}" == "Teamspeak 3" ]; then
+elif [ "${gamename}" == "TeamSpeak 3" ]; then
 	fn_monitor_query_telnet
 	fn_monitor_query_telnet
 else
 else
 	fn_monitor_query
 	fn_monitor_query

+ 2 - 2
lgsm/functions/command_postdetails.sh

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

+ 12 - 11
lgsm/functions/command_start.sh

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

+ 13 - 13
lgsm/functions/command_stop.sh

@@ -33,7 +33,7 @@ fn_stop_graceful_ctrlc(){
 		fn_print_fail_eol_nl
 		fn_print_fail_eol_nl
 		fn_script_log_error "Graceful: CTRL+c: FAIL"
 		fn_script_log_error "Graceful: CTRL+c: FAIL"
 	fi
 	fi
-	sleep 1
+	sleep 0.5
 	fn_stop_tmux
 	fn_stop_tmux
 }
 }
 
 
@@ -44,7 +44,7 @@ fn_stop_graceful_cmd(){
 	fn_print_dots "Graceful: sending \"${1}\""
 	fn_print_dots "Graceful: sending \"${1}\""
 	fn_script_log_info "Graceful: sending \"${1}\""
 	fn_script_log_info "Graceful: sending \"${1}\""
 	# sends specific stop command
 	# sends specific stop command
-	tmux send -t="${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
 	# waits up to given seconds giving the server time to shutdown gracefully
 	for ((seconds=1; seconds<=${2}; seconds++)); do
 	for ((seconds=1; seconds<=${2}; seconds++)); do
 		check_status.sh
 		check_status.sh
@@ -63,7 +63,7 @@ fn_stop_graceful_cmd(){
 		fn_print_fail_eol_nl
 		fn_print_fail_eol_nl
 		fn_script_log_error "Graceful: sending \"${1}\": FAIL"
 		fn_script_log_error "Graceful: sending \"${1}\": FAIL"
 	fi
 	fi
-	sleep 1
+	sleep 0.5
 	fn_stop_tmux
 	fn_stop_tmux
 }
 }
 
 
@@ -84,7 +84,7 @@ fn_stop_graceful_goldsource(){
 	fn_print_ok "Graceful: sending \"quit\": ${seconds}: "
 	fn_print_ok "Graceful: sending \"quit\": ${seconds}: "
 	fn_print_ok_eol_nl
 	fn_print_ok_eol_nl
 	fn_script_log_pass "Graceful: sending \"quit\": OK: ${seconds} seconds"
 	fn_script_log_pass "Graceful: sending \"quit\": OK: ${seconds} seconds"
-	sleep 1
+	sleep 0.5
 	fn_stop_tmux
 	fn_stop_tmux
 }
 }
 
 
@@ -115,7 +115,7 @@ fn_stop_telnet_sdtd(){
 fn_stop_graceful_sdtd(){
 fn_stop_graceful_sdtd(){
 	fn_print_dots "Graceful: telnet"
 	fn_print_dots "Graceful: telnet"
 	fn_script_log_info "Graceful: telnet"
 	fn_script_log_info "Graceful: telnet"
-	sleep 1
+	sleep 0.5
 	if [ "${telnetenabled}" == "false" ]; then
 	if [ "${telnetenabled}" == "false" ]; then
 		fn_print_info_nl "Graceful: telnet: DISABLED: Enable in ${servercfg}"
 		fn_print_info_nl "Graceful: telnet: DISABLED: Enable in ${servercfg}"
 	elif [ "$(command -v expect 2>/dev/null)" ]; then
 	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
 		for telnetip in 127.0.0.1 ${ip}; do
 			fn_print_dots "Graceful: telnet: ${telnetip}"
 			fn_print_dots "Graceful: telnet: ${telnetip}"
 			fn_script_log_info "Graceful: telnet: ${telnetip}"
 			fn_script_log_info "Graceful: telnet: ${telnetip}"
-			sleep 1
+			sleep 0.5
 			fn_stop_telnet_sdtd
 			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
 			if [ -n "${refused}" ]; then
 				fn_print_error "Graceful: telnet: ${telnetip}: "
 				fn_print_error "Graceful: telnet: ${telnetip}: "
 				fn_print_fail_eol_nl
 				fn_print_fail_eol_nl
@@ -142,7 +142,7 @@ fn_stop_graceful_sdtd(){
 		if [ -n "${completed}" ]; then
 		if [ -n "${completed}" ]; then
 			for seconds in {1..30}; do
 			for seconds in {1..30}; do
 				fn_stop_telnet_sdtd
 				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
 				if [ -n "${refused}" ]; then
 					fn_print_ok "Graceful: telnet: ${telnetip}: "
 					fn_print_ok "Graceful: telnet: ${telnetip}: "
 					fn_print_ok_eol_nl
 					fn_print_ok_eol_nl
@@ -173,7 +173,7 @@ fn_stop_graceful_sdtd(){
 		fn_print_fail_eol_nl
 		fn_print_fail_eol_nl
 		fn_script_log_warn "Graceful: telnet: expect not installed: FAIL"
 		fn_script_log_warn "Graceful: telnet: expect not installed: FAIL"
 	fi
 	fi
-	sleep 1
+	sleep 0.5
 	fn_stop_tmux
 	fn_stop_tmux
 }
 }
 
 
@@ -193,7 +193,7 @@ fn_stop_graceful_select(){
 		fn_stop_graceful_goldsource
 		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
 	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
 		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
 		fn_stop_graceful_cmd "quit" 30
 	else
 	else
 		fn_stop_tmux
 		fn_stop_tmux
@@ -218,7 +218,7 @@ fn_stop_ark(){
 
 
 	if [ "${#queryport}" -gt 0 ] ; then
 	if [ "${#queryport}" -gt 0 ] ; then
 		for (( pidcheck=0 ; pidcheck < ${maxpiditer} ; pidcheck++ )) ; do
 		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}' |\
 				grep ":${queryport}[[:space:]]" | rev | awk '{print $1}' |\
 				rev | cut -d\/ -f1)
 				rev | cut -d\/ -f1)
 			#
 			#
@@ -228,7 +228,7 @@ fn_stop_ark(){
 			# and a valid numeric pid remains unchanged.
 			# and a valid numeric pid remains unchanged.
 			if [ "${pid}" -gt 1 ]&&[ "${pid}" -le "$(cat "/proc/sys/kernel/pid_max")" ]; then
 			if [ "${pid}" -gt 1 ]&&[ "${pid}" -le "$(cat "/proc/sys/kernel/pid_max")" ]; then
 			fn_print_dots "Process still bound. Awaiting graceful exit: ${pidcheck}"
 			fn_print_dots "Process still bound. Awaiting graceful exit: ${pidcheck}"
-				sleep 1
+				sleep 0.5
 			else
 			else
 				break # Our job is done here
 				break # Our job is done here
 			fi # end if for pid range check
 			fi # end if for pid range check

+ 1 - 1
lgsm/functions/command_test_alert.sh

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

+ 2 - 2
lgsm/functions/command_ts3_server_pass.sh

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

+ 4 - 4
lgsm/functions/command_update_linuxgsm.sh

@@ -9,12 +9,12 @@ local commandaction="Update LinuxGSM"
 local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 
 
 fn_print_dots "Updating LinuxGSM"
 fn_print_dots "Updating LinuxGSM"
-sleep 1
+sleep 0.5
 check.sh
 check.sh
 fn_script_log_info "Updating LinuxGSM"
 fn_script_log_info "Updating LinuxGSM"
 echo -ne "\n"
 echo -ne "\n"
 
 
-if [ -z "${legacymode}" ];then
+if [ -z "${legacymode}" ]; then
 	# Check and update _default.cfg
 	# Check and update _default.cfg
 	echo -ne "    checking config _default.cfg...\c"
 	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"))
 	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
 # Check and update functions
 if [ -n "${functionsdir}" ]; then
 if [ -n "${functionsdir}" ]; then
 	if [ -d "${functionsdir}" ]; then
 	if [ -d "${functionsdir}" ]; then
-		cd "${functionsdir}"
+		cd "${functionsdir}" || exit
 		for functionfile in *
 		for functionfile in *
 		do
 		do
 			echo -ne "    checking function ${functionfile}...\c"
 			echo -ne "    checking function ${functionfile}...\c"
@@ -97,7 +97,7 @@ if [ -n "${functionsdir}" ]; then
 			elif [ "${function_file_diff}" != "" ]; then
 			elif [ "${function_file_diff}" != "" ]; then
 				fn_print_update_eol_nl
 				fn_print_update_eol_nl
 				fn_script_log_info "checking function ${functionfile}: UPDATE"
 				fn_script_log_info "checking function ${functionfile}: UPDATE"
-				rm -rf "${functionsdir}/${functionfile}"
+				rm -rf "${functionsdir:?}/${functionfile}"
 				fn_update_function
 				fn_update_function
 			else
 			else
 				fn_print_ok_eol_nl
 				fn_print_ok_eol_nl

+ 5 - 5
lgsm/functions/command_validate.sh

@@ -17,9 +17,9 @@ fn_validation(){
 	echo -en "\n"
 	echo -en "\n"
 
 
 	fn_script_log_info "Validating files: SteamCMD"
 	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.
 	# Detects if unbuffer command is available for 32 bit distributions only.
 	info_distro.sh
 	info_distro.sh
 	if [ "$(command -v stdbuf)" ]&&[ "${arch}" != "x86_64" ]; then
 	if [ "$(command -v stdbuf)" ]&&[ "${arch}" != "x86_64" ]; then
@@ -27,9 +27,9 @@ fn_validation(){
 	fi
 	fi
 
 
 	if [ "${engine}" == "goldsource" ]; then
 	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
 	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
 	fi
 	if [ $? != 0 ]; then
 	if [ $? != 0 ]; then
 		fn_print_fail_nl "Validating files: SteamCMD"
 		fn_print_fail_nl "Validating files: SteamCMD"
@@ -45,7 +45,7 @@ fn_validation(){
 fn_print_dots "Validating files:"
 fn_print_dots "Validating files:"
 sleep 0.5
 sleep 0.5
 fn_print_dots "Validating files: SteamCMD"
 fn_print_dots "Validating files: SteamCMD"
-sleep 1
+sleep 0.5
 check.sh
 check.sh
 check_status.sh
 check_status.sh
 if [ "${status}" != "0" ]; then
 if [ "${status}" != "0" ]; then

+ 10 - 10
lgsm/functions/command_wipe.sh

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

+ 1 - 1
lgsm/functions/compress_ut99_maps.sh

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

+ 2 - 2
lgsm/functions/core_dl.sh

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

+ 1 - 1
lgsm/functions/core_exit.sh

@@ -9,7 +9,7 @@ fn_exit_dev_debug(){
 		echo ""
 		echo ""
 		echo "${function_selfname} exiting with code: ${exitcode}"
 		echo "${function_selfname} exiting with code: ${exitcode}"
 		if [ -f "${rootdir}/dev-debug.log" ]; then
 		if [ -f "${rootdir}/dev-debug.log" ]; then
-			grep "functionfile=" "${rootdir}/dev-debug.log"| sed 's/functionfile=//g' > "${rootdir}/dev-debug-function-order.log"
+			grep "functionfile=" "${rootdir}/dev-debug.log" | sed 's/functionfile=//g' > "${rootdir}/dev-debug-function-order.log"
 		fi
 		fi
 	fi
 	fi
 }
 }

+ 19 - 8
lgsm/functions/core_functions.sh

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

+ 6 - 6
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
 if [ "${gamename}" != "Battlefield: 1942" ]&&[ "${engine}" != "quake" ]&&[ "${engine}" != "idtech2" ]&&[ "${engine}" != "idtech3" ]&&[ "${engine}" != "iw2.0" ]&&[ "${engine}" != "iw3.0" ]&&[ "${gamename}" != "San Andreas Multiplayer" ]; then
 	currentopt+=( "${cmd_update[@]}" )
 	currentopt+=( "${cmd_update[@]}" )
 	# force update for SteamCMD only or MTA
 	# 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[@]}" )
 		currentopt+=( "${cmd_force_update[@]}" )
 	fi
 	fi
 fi
 fi
@@ -139,9 +139,9 @@ fi
 optcommands=()
 optcommands=()
 index="0"
 index="0"
 for ((index="0"; index < ${#currentopt[@]}; index+=3)); do
 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
 	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
 done
 done
 
 
@@ -176,11 +176,11 @@ for i in "${optcommands[@]}"; do
 		# Seek and run command
 		# Seek and run command
 		index="0"
 		index="0"
 		for ((index="0"; index < ${#currentopt[@]}; index+=3)); do
 		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
 			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
 					# Run command
-					eval ${currentopt[index+1]}
+					eval "${currentopt[index+1]}"
 					core_exit.sh
 					core_exit.sh
 					break
 					break
 				fi
 				fi

+ 9 - 5
lgsm/functions/fix.sh

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

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

+ 1 - 1
lgsm/functions/fix_kf2.sh

@@ -12,7 +12,7 @@ fn_parms(){
 parms="\"${defaultmap}?Game=KFGameContent.KFGameInfo_VersusSurvival\""
 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
 sleep 1
 exitbypass=1
 exitbypass=1
 command_start.sh
 command_start.sh

+ 1 - 1
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
 if [ ! -f "${lgsmdir}/lib/libmysqlclient.so.16" ]; then
 	fixname="libmysqlclient16"
 	fixname="libmysqlclient16"
 	fn_fix_msg_start_nl
 	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_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
 	fn_fix_msg_end
 fi
 fi

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

+ 10 - 0
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"

+ 1 - 1
lgsm/functions/fix_ut.sh

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

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

+ 20 - 0
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

+ 54 - 6
lgsm/functions/info_config.sh

@@ -20,13 +20,14 @@ fn_info_config_justcause2(){
 		serverpassword="${unavailable}"
 		serverpassword="${unavailable}"
 		maxplayers="${zero}"
 		maxplayers="${zero}"
 		port="${zero}"
 		port="${zero}"
+		queryport="${zero}"
 	else
 	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]*$//')
 		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]*$//')
 		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]*$//')
 		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:]')
 		maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]')
 		port=$(grep "BindPort" "${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]*$//')
 		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
 		ipsetinconfig=1
 		ipinconfigvar="BindIP"
 		ipinconfigvar="BindIP"
@@ -36,6 +37,7 @@ fn_info_config_justcause2(){
 		serverpassword=${serverpassword:-"NOT SET"}
 		serverpassword=${serverpassword:-"NOT SET"}
 		maxplayers=${maxplayers:-"0"}
 		maxplayers=${maxplayers:-"0"}
 		port=${port:-"0"}
 		port=${port:-"0"}
+		queryport=${queryport:-"0"}
 	fi
 	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]*$//')
 		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]*$//')
 		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:]')
 		maxplayers=$(grep "maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
-		port=
+
 		# Not Set
 		# Not Set
 		rconpassword=${rconpassword:-"NOT SET"}
 		rconpassword=${rconpassword:-"NOT SET"}
 		servername=${servername:-"NOT SET"}
 		servername=${servername:-"NOT SET"}
@@ -417,6 +419,7 @@ fn_info_config_quakelive(){
 		serverpassword="${unavailable}"
 		serverpassword="${unavailable}"
 		maxplayers="${zero}"
 		maxplayers="${zero}"
 		port="${zero}"
 		port="${zero}"
+		queryport="${zero}"
 		rconport="${zero}"
 		rconport="${zero}"
 		statsport="${zero}"
 		statsport="${zero}"
 	else
 	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]*$//')
 		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:]')
 		maxplayers=$(grep "sv_maxClients" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
 		port=$(grep "net_port" "${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:]')
 		rconport=$(grep "zmq_rcon_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
 		statsport=$(grep "zmq_stats_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"}
 		serverpassword=${serverpassword:-"NOT SET"}
 		maxplayers=${maxplayers:-"0"}
 		maxplayers=${maxplayers:-"0"}
 		port=${port:-"0"}
 		port=${port:-"0"}
+		queryport=${queryport:-"0"}
 		rconport=${rconport:-"0"}
 		rconport=${rconport:-"0"}
 		statsport=${statsport:-"0"}
 		statsport=${statsport:-"0"}
 	fi
 	fi
@@ -463,6 +468,40 @@ fn_info_config_realvirtuality(){
 	fi
 	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(){
 fn_info_config_seriousengine35(){
 	if [ ! -f "${servercfgfullpath}" ]; then
 	if [ ! -f "${servercfgfullpath}" ]; then
 		servername="${unavailable}"
 		servername="${unavailable}"
@@ -856,8 +895,10 @@ fn_info_config_wolfensteinenemyterritory(){
 		serverpassword="${unavailable}"
 		serverpassword="${unavailable}"
 		maxplayers="${zero}"
 		maxplayers="${zero}"
 		port="${zero}"
 		port="${zero}"
+		queryport="${zero}"
 	else
 	else
 		port=$(grep "set net_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
 		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]*$//')
 		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]*$//')
 		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]*$//')
 		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"}
 		serverpassword=${serverpassword:-"NOT SET"}
 		maxplayers=${maxplayers:-"0"}
 		maxplayers=${maxplayers:-"0"}
 		port=${port:-"27960"}
 		port=${port:-"27960"}
+		queryport=${queryport:-"27960"}
 	fi
 	fi
 }
 }
 
 
@@ -883,8 +925,10 @@ fn_info_config_etlegacy(){
 		serverpassword="${unavailable}"
 		serverpassword="${unavailable}"
 		maxplayers="${zero}"
 		maxplayers="${zero}"
 		port="${zero}"
 		port="${zero}"
+		queryport="${zero}"
 	else
 	else
 		port=$(grep "set net_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
 		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]*$//')
 		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]*$//')
 		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]*$//')
 		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"}
 		serverpassword=${serverpassword:-"NOT SET"}
 		maxplayers=${maxplayers:-"0"}
 		maxplayers=${maxplayers:-"0"}
 		port=${port:-"27960"}
 		port=${port:-"27960"}
+		queryport=${queryport:-"27960"}
 	fi
 	fi
 }
 }
 
 
@@ -909,16 +954,16 @@ fn_info_config_squad(){
 		servername="${unavailable}"
 		servername="${unavailable}"
 		maxplayers="${unavailable}"
 		maxplayers="${unavailable}"
 	else
 	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
 	fi
 
 
 	if [ ! -f "${servercfgdir}/Rcon.cfg" ]; then
 	if [ ! -f "${servercfgdir}/Rcon.cfg" ]; then
 		rconport=${unavailable}
 		rconport=${unavailable}
 		rconpassword=${unavailable}
 		rconpassword=${unavailable}
 	else
 	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
 	fi
 
 
 	rconport=${rconport:-"0"}
 	rconport=${rconport:-"0"}
@@ -1013,6 +1058,9 @@ elif [ "${engine}" == "projectzomboid" ]; then
 # ARMA 3
 # ARMA 3
 elif [ "${engine}" == "realvirtuality" ]; then
 elif [ "${engine}" == "realvirtuality" ]; then
 	fn_info_config_realvirtuality
 	fn_info_config_realvirtuality
+# Rising World
+elif [ "${shortname}" == "rw" ]; then
+	fn_info_config_risingworld
 # Serious Sam
 # Serious Sam
 elif [ "${engine}" == "seriousengine35" ]; then
 elif [ "${engine}" == "seriousengine35" ]; then
 	fn_info_config_seriousengine35
 	fn_info_config_seriousengine35

+ 2 - 2
lgsm/functions/info_distro.sh

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

+ 4 - 0
lgsm/functions/info_glibc.sh

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

+ 18 - 5
lgsm/functions/info_messages.sh

@@ -122,7 +122,7 @@ fn_info_message_gameserver(){
 	fn_messages_separator
 	fn_messages_separator
 	{
 	{
 		# Server name
 		# Server name
-		if [ -n "${gdname}" ];then
+		if [ -n "${gdname}" ]; then
 			echo -e "${blue}Server name:\t${default}${gdname}"
 			echo -e "${blue}Server name:\t${default}${gdname}"
 		elif [ -n "${servername}" ]; then
 		elif [ -n "${servername}" ]; then
 			echo -e "${blue}Server name:\t${default}${servername}"
 			echo -e "${blue}Server name:\t${default}${servername}"
@@ -479,7 +479,7 @@ fn_info_logs(){
 
 
 	if [ -n "${lgsmlog}" ]; then
 	if [ -n "${lgsmlog}" ]; then
 		echo -e "\nScript log\n==================="
 		echo -e "\nScript log\n==================="
-		if [ ! "$(ls -A ${lgsmlogdir})" ]; then
+		if [ ! "$(ls -A "${lgsmlogdir}")" ]; then
 			echo "${lgsmlogdir} (NO LOG FILES)"
 			echo "${lgsmlogdir} (NO LOG FILES)"
 		elif [ ! -s "${lgsmlog}" ]; then
 		elif [ ! -s "${lgsmlog}" ]; then
 			echo "${lgsmlog} (LOG FILE IS EMPTY)"
 			echo "${lgsmlog} (LOG FILE IS EMPTY)"
@@ -492,7 +492,7 @@ fn_info_logs(){
 
 
 	if [ -n "${consolelog}" ]; then
 	if [ -n "${consolelog}" ]; then
 		echo -e "\nConsole log\n===================="
 		echo -e "\nConsole log\n===================="
-		if [ ! "$(ls -A ${consolelogdir})" ]; then
+		if [ ! "$(ls -A "${consolelogdir}")" ]; then
 			echo "${consolelogdir} (NO LOG FILES)"
 			echo "${consolelogdir} (NO LOG FILES)"
 		elif [ ! -s "${consolelog}" ]; then
 		elif [ ! -s "${consolelog}" ]; then
 			echo "${consolelog} (LOG FILE IS EMPTY)"
 			echo "${consolelog} (LOG FILE IS EMPTY)"
@@ -505,12 +505,12 @@ fn_info_logs(){
 
 
 	if [ -n "${gamelogdir}" ]; then
 	if [ -n "${gamelogdir}" ]; then
 		echo -e "\nServer log\n==================="
 		echo -e "\nServer log\n==================="
-		if [ ! "$(ls -A ${gamelogdir})" ]; then
+		if [ ! "$(ls -A "${gamelogdir}")" ]; then
 			echo "${gamelogdir} (NO LOG FILES)"
 			echo "${gamelogdir} (NO LOG FILES)"
 		else
 		else
 			echo "${gamelogdir}"
 			echo "${gamelogdir}"
 			# dos2unix sed 's/\r//'
 			# 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
 		fi
 		echo ""
 		echo ""
 	fi
 	fi
@@ -775,6 +775,17 @@ fn_info_message_refractor(){
 	} | column -s $'\t' -t
 	} | 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(){
 fn_info_message_rust(){
 	echo -e "netstat -atunp | grep Rust"
 	echo -e "netstat -atunp | grep Rust"
 	echo -e ""
 	echo -e ""
@@ -1109,6 +1120,8 @@ fn_info_message_select_engine(){
 		fn_info_message_mumble
 		fn_info_message_mumble
 	elif [ "${gamename}" == "Rust" ]; then
 	elif [ "${gamename}" == "Rust" ]; then
 		fn_info_message_rust
 		fn_info_message_rust
+	elif [ "${shortname}" == "rw" ]; then
+		fn_info_message_risingworld
 	elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
 	elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
 		fn_info_message_wolfensteinenemyterritory
 		fn_info_message_wolfensteinenemyterritory
 	elif [ "${engine}" == "refractor" ]; then
 	elif [ "${engine}" == "refractor" ]; then

+ 11 - 0
lgsm/functions/info_parms.sh

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

+ 11 - 11
lgsm/functions/install_config.sh

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

+ 1 - 1
lgsm/functions/install_dst_token.sh

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

+ 2 - 2
lgsm/functions/install_factorio_save.sh

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

+ 2 - 2
lgsm/functions/install_gslt.sh

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

+ 3 - 3
lgsm/functions/install_logs.sh

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

+ 1 - 1
lgsm/functions/install_minecraft_eula.sh

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

+ 2 - 3
lgsm/functions/install_server_dir.sh

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

+ 3 - 13
lgsm/functions/install_server_files.sh

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

+ 2 - 2
lgsm/functions/install_squad_license.sh

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

+ 1 - 1
lgsm/functions/install_steamcmd.sh

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

+ 6 - 6
lgsm/functions/install_ts3db.sh

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

+ 1 - 1
lgsm/functions/install_unreal_tournament_eula.sh

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

+ 2 - 2
lgsm/functions/install_ut2k4_key.sh

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

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

+ 15 - 15
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.
 	# 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
 	if [ ! -f "${serverfiles}/factorio-current.log" ]; then
 		fn_print_error "Checking for update: factorio.com"
 		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_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"
 		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_print_info_nl "Checking for update: factorio.com: Forcing server restart"
 		fn_script_log_info "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
 		exitbypass=1
 		command_stop.sh
 		command_stop.sh
 		exitbypass=1
 		exitbypass=1
 		command_start.sh
 		command_start.sh
-		sleep 1
+		sleep 0.5
 		# Check again and exit on failure.
 		# Check again and exit on failure.
 		if [ ! -f "${serverfiles}/factorio-current.log" ]; then
 		if [ ! -f "${serverfiles}/factorio-current.log" ]; then
 			fn_print_fail_nl "Checking for update: factorio.com: Still No logs with server version found"
 			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
 	fi
 
 
 	# Get current build from logs
 	# 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
 	if [ -z "${currentbuild}" ]; then
 		fn_print_error_nl "Checking for update: factorio.com: Current build version not found"
 		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"
 		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_print_info_nl "Checking for update: factorio.com: Forcing server restart"
 		fn_script_log_info "Checking for update: factorio.com: Forcing server restart"
 		fn_script_log_info "Checking for update: factorio.com: Forcing server restart"
 		exitbypass=1
 		exitbypass=1
 		command_stop.sh
 		command_stop.sh
 		exitbypass=1
 		exitbypass=1
 		command_start.sh
 		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
 		if [ -z "${currentbuild}" ]; then
 			fn_print_fail_nl "Checking for update: factorio.com: Current build version still not found"
 			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"
 			fn_script_log_fatal "Checking for update: factorio.com: Current build version still not found"
@@ -81,12 +81,12 @@ fn_update_factorio_availablebuild(){
 	else
 	else
 		availablebuild=$(${curlpath} -s https://www.factorio.com/download-headless | grep 'headless/linux64' | head -n 2 | tail -n 1 | grep -oP '(?<=get-download/).*?(?=/)')
 		availablebuild=$(${curlpath} -s https://www.factorio.com/download-headless | grep 'headless/linux64' | head -n 2 | tail -n 1 | grep -oP '(?<=get-download/).*?(?=/)')
 	fi
 	fi
-	sleep 1
+	sleep 0.5
 
 
 	# Checks if availablebuild variable has been set
 	# Checks if availablebuild variable has been set
 	if [ -z "${availablebuild}" ]; then
 	if [ -z "${availablebuild}" ]; then
 		fn_print_fail "Checking for update: factorio.com"
 		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_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"
 		fn_script_log_fatal "Failure! Checking for update: factorio.com: Not returning version info"
 		core_exit.sh
 		core_exit.sh
@@ -95,23 +95,23 @@ fn_update_factorio_availablebuild(){
 	else
 	else
 		fn_print_ok "Checking for update: factorio.com"
 		fn_print_ok "Checking for update: factorio.com"
 		fn_script_log_pass "Checking for update: factorio.com"
 		fn_script_log_pass "Checking for update: factorio.com"
-		sleep 1
+		sleep 0.5
 	fi
 	fi
 }
 }
 
 
 fn_update_factorio_compare(){
 fn_update_factorio_compare(){
 	# Removes dots so if can compare version numbers
 	# 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
 	if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then
 		echo -e "\n"
 		echo -e "\n"
 		echo -e "Update available:"
 		echo -e "Update available:"
-		sleep 1
+		sleep 0.5
 		echo -e "	Current build: ${red}${currentbuild} ${factorioarch} ${branch} ${default}"
 		echo -e "	Current build: ${red}${currentbuild} ${factorioarch} ${branch} ${default}"
 		echo -e "	Available build: ${green}${availablebuild} ${factorioarch} ${branch}${default}"
 		echo -e "	Available build: ${green}${availablebuild} ${factorioarch} ${branch}${default}"
 		echo -e ""
 		echo -e ""
-		sleep 1
+		sleep 0.5
 		echo ""
 		echo ""
 		echo -en "Applying update.\r"
 		echo -en "Applying update.\r"
 		sleep 1
 		sleep 1
@@ -163,7 +163,7 @@ else
 	# Checks for server update from factorio.com
 	# Checks for server update from factorio.com
 	fn_print_dots "Checking for update: factorio.com"
 	fn_print_dots "Checking for update: factorio.com"
 	fn_script_log_info "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_currentbuild
 	fn_update_factorio_availablebuild
 	fn_update_factorio_availablebuild
 	fn_update_factorio_compare
 	fn_update_factorio_compare

+ 10 - 10
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.
 	# 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
 	if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then
 		fn_print_error "Checking for update: mojang.com"
 		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_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"
 		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_print_info_nl "Checking for update: mojang.com: Forcing server restart"
 		fn_script_log_info "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
 		exitbypass=1
 		command_stop.sh
 		command_stop.sh
 		exitbypass=1
 		exitbypass=1
 		command_start.sh
 		command_start.sh
-		sleep 1
+		sleep 0.5
 		# Check again and exit on failure.
 		# Check again and exit on failure.
 		if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then
 		if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then
 			fn_print_fail_nl "Checking for update: mojang.com: Still No logs with server version found"
 			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
 	if [ -z "${currentbuild}" ]; then
 		fn_print_error_nl "Checking for update: mojang.com: Current build version not found"
 		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"
 		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_print_info_nl "Checking for update: mojang.com: Forcing server restart"
 		fn_script_log_info "Checking for update: mojang.com: Forcing server restart"
 		fn_script_log_info "Checking for update: mojang.com: Forcing server restart"
 		exitbypass=1
 		exitbypass=1
@@ -88,17 +88,17 @@ fn_update_availablebuild(){
 
 
 fn_update_compare(){
 fn_update_compare(){
 	# Removes dots so if can compare version numbers
 	# 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
 	if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then
 		echo -e "\n"
 		echo -e "\n"
 		echo -e "Update available:"
 		echo -e "Update available:"
-		sleep 1
+		sleep 0.5
 		echo -e "	Current build: ${red}${currentbuild}${default}"
 		echo -e "	Current build: ${red}${currentbuild}${default}"
 		echo -e "	Available build: ${green}${availablebuild}${default}"
 		echo -e "	Available build: ${green}${availablebuild}${default}"
 		echo -e ""
 		echo -e ""
-		sleep 1
+		sleep 0.5
 		echo ""
 		echo ""
 		echo -en "Applying update.\r"
 		echo -en "Applying update.\r"
 		sleep 1
 		sleep 1
@@ -149,7 +149,7 @@ else
 	# Checks for server update from mojang.com
 	# Checks for server update from mojang.com
 	fn_print_dots "Checking for update: mojang.com"
 	fn_print_dots "Checking for update: mojang.com"
 	fn_script_log_info "Checking for update: mojang.com"
 	fn_script_log_info "Checking for update: mojang.com"
-	sleep 1
+	sleep 0.5
 	fn_update_currentbuild
 	fn_update_currentbuild
 	fn_update_availablebuild
 	fn_update_availablebuild
 	fn_update_compare
 	fn_update_compare

+ 14 - 14
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.
 	# 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
 	if [ ! -f "${gamelogdir}"/server.log ]; then
 		fn_print_error "Checking for update: linux.mtasa.com"
 		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_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"
 		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_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"
 		fn_script_log_info "Checking for update: linux.mtasa.com: Forcing server restart"
-		sleep 1
+		sleep 0.5
 		exitbypass=1
 		exitbypass=1
 		command_stop.sh
 		command_stop.sh
 		exitbypass=1
 		exitbypass=1
 		command_start.sh
 		command_start.sh
-		sleep 1
+		sleep 0.5
 		# Check again and exit on failure.
 		# Check again and exit on failure.
 		if [ ! -f "${gamelogdir}"/server.log ]; then
 		if [ ! -f "${gamelogdir}"/server.log ]; then
 			fn_print_fail_nl "Checking for update: linux.mtasa.com: Still No logs with server version found"
 			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
 	fi
 
 
 	# Get current build from logs
 	# 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
 	if [ -z "${currentbuild}" ]; then
 		fn_print_error_nl "Checking for update: linux.mtasa.com: Current build version not found"
 		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"
 		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_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"
 		fn_script_log_info "Checking for update: linux.mtasa.com: Forcing server restart"
 		exitbypass=1
 		exitbypass=1
 		command_stop.sh
 		command_stop.sh
 		exitbypass=1
 		exitbypass=1
 		command_start.sh
 		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
 		if [ -z "${currentbuild}" ]; then
 			fn_print_fail_nl "Checking for update: linux.mtasa.com: Current build version still not found"
 			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"
 			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_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
 	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}"
 	numversion="${majorversion}${minorversion}${maintenanceversion}"
 	fullversion="${majorversion}.${minorversion}.${maintenanceversion}"
 	fullversion="${majorversion}.${minorversion}.${maintenanceversion}"
 	rm -f "${tmpdir}/version.h"
 	rm -f "${tmpdir}/version.h"
@@ -81,7 +81,7 @@ fn_mta_get_availablebuild(){
 
 
 fn_update_mta_compare(){
 fn_update_mta_compare(){
 	# Removes dots so if can compare version numbers
 	# 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 [ "${currentbuilddigit}" -ne "${numversion}" ]||[ "${forceupdate}" == "1" ]; then
 		if [ "${forceupdate}" == "1" ]; then
 		if [ "${forceupdate}" == "1" ]; then
 			# forceupdate bypasses checks, useful for small build changes
 			# forceupdate bypasses checks, useful for small build changes
@@ -91,11 +91,11 @@ fn_update_mta_compare(){
 		fi
 		fi
 		echo -e "\n"
 		echo -e "\n"
 		echo -e "Update ${mta_update_string}:"
 		echo -e "Update ${mta_update_string}:"
-		sleep 1
+		sleep 0.5
 		echo -e "       Current build: ${red}${currentbuild} ${default}"
 		echo -e "       Current build: ${red}${currentbuild} ${default}"
 		echo -e "       Available build: ${green}${fullversion} ${default}"
 		echo -e "       Available build: ${green}${fullversion} ${default}"
 		echo -e ""
 		echo -e ""
-		sleep 1
+		sleep 0.5
 		echo ""
 		echo ""
 		echo -en "Applying update.\r"
 		echo -en "Applying update.\r"
 		sleep 1
 		sleep 1
@@ -147,7 +147,7 @@ else
 	# Checks for server update from linux.mtasa.com using the github repo.
 	# Checks for server update from linux.mtasa.com using the github repo.
 	fn_print_dots "Checking for update: linux.mtasa.com"
 	fn_print_dots "Checking for update: linux.mtasa.com"
 	fn_script_log_info "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_update_mta_currentbuild
 	fn_mta_get_availablebuild
 	fn_mta_get_availablebuild
 	fn_update_mta_compare
 	fn_update_mta_compare

+ 13 - 13
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.
 	# 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
 	if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then
 		fn_print_error "Checking for update: GitHub"
 		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_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"
 		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_print_info_nl "Checking for update: GitHub: Forcing server restart"
 		fn_script_log_info "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
 		exitbypass=1
 		command_stop.sh
 		command_stop.sh
 		exitbypass=1
 		exitbypass=1
 		command_start.sh
 		command_start.sh
-		sleep 1
+		sleep 0.5
 		# Check again and exit on failure.
 		# Check again and exit on failure.
 		if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then
 		if [ ! -f "${consolelogdir}/${servicename}-console.log" ]; then
 			fn_print_fail_nl "Checking for update: GitHub: Still No logs with server version found"
 			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
 	if [ -z "${currentbuild}" ]; then
 		fn_print_error_nl "Checking for update: GitHub: Current build version not found"
 		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"
 		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_print_info_nl "Checking for update: GitHub: Forcing server restart"
 		fn_script_log_info "Checking for update: GitHub: Forcing server restart"
 		fn_script_log_info "Checking for update: GitHub: Forcing server restart"
 		exitbypass=1
 		exitbypass=1
@@ -77,12 +77,12 @@ fn_update_mumble_arch(){
 fn_update_mumble_availablebuild(){
 fn_update_mumble_availablebuild(){
 	# Gets latest build info.
 	# 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 }')
 	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
 	# Checks if availablebuild variable has been set
 	if [ -z "${availablebuild}" ]; then
 	if [ -z "${availablebuild}" ]; then
 		fn_print_fail "Checking for update: GitHub"
 		fn_print_fail "Checking for update: GitHub"
-		sleep 1
+		sleep 0.5
 		fn_print_fail "Checking for update: GitHub: Not returning version info"
 		fn_print_fail "Checking for update: GitHub: Not returning version info"
 		fn_script_log_fatal "Failure! Checking for update: GitHub: Not returning version info"
 		fn_script_log_fatal "Failure! Checking for update: GitHub: Not returning version info"
 		core_exit.sh
 		core_exit.sh
@@ -91,23 +91,23 @@ fn_update_mumble_availablebuild(){
 	else
 	else
 		fn_print_ok "Checking for update: GitHub"
 		fn_print_ok "Checking for update: GitHub"
 		fn_script_log_pass "Checking for update: GitHub"
 		fn_script_log_pass "Checking for update: GitHub"
-		sleep 1
+		sleep 0.5
 	fi
 	fi
 }
 }
 
 
 fn_update_mumble_compare(){
 fn_update_mumble_compare(){
 	# Removes dots so if can compare version numbers
 	# 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
 	if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then
 		echo -e "\n"
 		echo -e "\n"
 		echo -e "Update available:"
 		echo -e "Update available:"
-		sleep 1
+		sleep 0.5
 		echo -e "	Current build: ${red}${currentbuild} ${mumblearch}${default}"
 		echo -e "	Current build: ${red}${currentbuild} ${mumblearch}${default}"
 		echo -e "	Available build: ${green}${availablebuild} ${mumblearch}${default}"
 		echo -e "	Available build: ${green}${availablebuild} ${mumblearch}${default}"
 		echo -e ""
 		echo -e ""
-		sleep 1
+		sleep 0.5
 		echo ""
 		echo ""
 		echo -en "Applying update.\r"
 		echo -en "Applying update.\r"
 		sleep 1
 		sleep 1
@@ -159,7 +159,7 @@ else
 	# Checks for server update from github.com
 	# Checks for server update from github.com
 	fn_print_dots "Checking for update: github.com"
 	fn_print_dots "Checking for update: github.com"
 	fn_script_log_info "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_currentbuild
 	fn_update_mumble_availablebuild
 	fn_update_mumble_availablebuild
 	fn_update_mumble_compare
 	fn_update_mumble_compare

+ 24 - 24
lgsm/functions/update_steamcmd.sh

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

+ 13 - 13
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.
 	# 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
 	if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then
 		fn_print_error "Checking for update: teamspeak.com"
 		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_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"
 		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_print_info_nl "Checking for update: teamspeak.com: Forcing server restart"
 		fn_script_log_info "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
 		exitbypass=1
 		command_stop.sh
 		command_stop.sh
 		exitbypass=1
 		exitbypass=1
 		command_start.sh
 		command_start.sh
-		sleep 1
+		sleep 0.5
 		# Check again and exit on failure.
 		# Check again and exit on failure.
 		if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then
 		if [ -z "$(find ./* -name 'ts3server*_0.log')" ]; then
 			fn_print_fail_nl "Checking for update: teamspeak.com: Still No logs with server version found"
 			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
 	if [ -z "${currentbuild}" ]; then
 		fn_print_error_nl "Checking for update: teamspeak.com: Current build version not found"
 		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"
 		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_print_info_nl "Checking for update: teamspeak.com: Forcing server restart"
 		fn_script_log_info "Checking for update: teamspeak.com: Forcing server restart"
 		fn_script_log_info "Checking for update: teamspeak.com: Forcing server restart"
 		exitbypass=1
 		exitbypass=1
@@ -112,7 +112,7 @@ fn_update_ts3_availablebuild_legacy(){
 	# Gets latest build info.
 	# Gets latest build info.
 
 
 	# Grabs all version numbers but not in correct order.
 	# 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
 	# Sort version numbers
 	cat "${tmpdir}/.ts3_version_numbers_unsorted.tmp" | sort -r --version-sort -o "${tmpdir}/.ts3_version_numbers_sorted.tmp"
 	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
 	# Checks availablebuild info is available
 	if [ -z "${availablebuild}" ]; then
 	if [ -z "${availablebuild}" ]; then
 		fn_print_fail "Checking for update: teamspeak.com"
 		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_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"
 		fn_script_log_fatal "Failure! Checking for update: teamspeak.com: Not returning version info"
 		core_exit.sh
 		core_exit.sh
@@ -143,23 +143,23 @@ fn_update_ts3_availablebuild_legacy(){
 	else
 	else
 		fn_print_ok "Checking for update: teamspeak.com"
 		fn_print_ok "Checking for update: teamspeak.com"
 		fn_script_log_pass "Checking for update: teamspeak.com"
 		fn_script_log_pass "Checking for update: teamspeak.com"
-		sleep 1
+		sleep 0.5
 	fi
 	fi
 }
 }
 
 
 fn_update_ts3_compare(){
 fn_update_ts3_compare(){
 	# Removes dots so if can compare version numbers
 	# 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
 	if [ "${currentbuilddigit}" -ne "${availablebuilddigit}" ]; then
 		echo -e "\n"
 		echo -e "\n"
 		echo -e "Update available:"
 		echo -e "Update available:"
-		sleep 1
+		sleep 0.5
 		echo -e "	Current build: ${red}${currentbuild} ${ts3arch}${default}"
 		echo -e "	Current build: ${red}${currentbuild} ${ts3arch}${default}"
 		echo -e "	Available build: ${green}${availablebuild} ${ts3arch}${default}"
 		echo -e "	Available build: ${green}${availablebuild} ${ts3arch}${default}"
 		echo -e ""
 		echo -e ""
-		sleep 1
+		sleep 0.5
 		echo ""
 		echo ""
 		echo -en "Applying update.\r"
 		echo -en "Applying update.\r"
 		sleep 1
 		sleep 1
@@ -216,7 +216,7 @@ else
 	# Checks for server update from teamspeak.com using a mirror dl.4players.de.
 	# Checks for server update from teamspeak.com using a mirror dl.4players.de.
 	fn_print_dots "Checking for update: teamspeak.com"
 	fn_print_dots "Checking for update: teamspeak.com"
 	fn_script_log_info "Checking for update: teamspeak.com"
 	fn_script_log_info "Checking for update: teamspeak.com"
-	sleep 1
+	sleep 0.5
 	fn_update_ts3_currentbuild
 	fn_update_ts3_currentbuild
 	if [ "$(command -v jq >/dev/null 2>&1)" ]; then
 	if [ "$(command -v jq >/dev/null 2>&1)" ]; then
 		fn_update_ts3_availablebuild
 		fn_update_ts3_availablebuild

+ 10 - 10
linuxgsm.sh

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

+ 910 - 0
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

+ 76 - 63
tests/tests_jc2server.sh

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

この差分においてかなりの量のファイルが変更されているため、一部のファイルを表示していません