Ver Fonte

Release 180409

* Added new server Rising World
* Added new server ET: Legacy
* Added support for node-gamedig
* Updated Factorio to glibc 2.18
* Changed apt-get to apt
* Changed many sleep timers from 1 second to 0.5 to speed up LinuxGSM 
* Fix for issue #1784 Tmux closing wrong session
* Fixed dependency requirements for CoD 2 and CoD:UO #1866
* Discord now uses external IP over standard IP
* Code tidy/improvements with guidance from Shellcheck
* Added development command query-raw
* Added development command clear-functions
* Added development log dev-debug-function-order.log
* Added fctrserver to Travis CI tests
* Updates to GitHub Issues; Added bots and updated templated
* Fixed waffle.io button no longer working
* Corrected Query Port for UT3 (Query Port does not work btw)
Daniel Gibbs há 8 anos atrás
pai
commit
fff8e0a2f5
100 ficheiros alterados com 968 adições e 1733 exclusões
  1. 15 0
      .github/request-info.yml
  2. 15 0
      .github/support.yml
  3. 21 0
      .github/welcome.yml
  4. 2 0
      .travis.yml
  5. 13 4
      ISSUE_TEMPLATE.md
  6. 0 0
      README.md
  7. BIN
      images/icons/centos-icon-32.png
  8. BIN
      images/icons/debian-icon-32.png
  9. BIN
      images/icons/ubuntu-icon-32.png
  10. 0 3
      images/logo/README.md
  11. BIN
      images/logo/apple-touch-icon-precomposed.png
  12. BIN
      images/logo/assets/lgsm-font-pt_sans.zip
  13. BIN
      images/logo/assets/lgsm-font-source_code_pro.zip
  14. 0 238
      images/logo/assets/svg/linuxgsm_black_gradiant_vector.svg
  15. 0 304
      images/logo/assets/svg/linuxgsm_black_gradiant_vector_full.svg
  16. 0 286
      images/logo/assets/svg/linuxgsm_black_vector.svg
  17. 0 248
      images/logo/assets/svg/linuxgsm_white_vector.svg
  18. 0 324
      images/logo/assets/svg/linuxgsm_white_vector_full.svg
  19. BIN
      images/logo/facebook.png
  20. BIN
      images/logo/lgsm-dark-full.png
  21. BIN
      images/logo/lgsm-dark-square-114.png
  22. BIN
      images/logo/lgsm-dark-square-16.png
  23. BIN
      images/logo/lgsm-dark-square-184.png
  24. BIN
      images/logo/lgsm-dark-square-24.png
  25. BIN
      images/logo/lgsm-dark-square-512.png
  26. BIN
      images/logo/lgsm-dark-square-64.png
  27. BIN
      images/logo/lgsm-light-full.png
  28. BIN
      images/logo/lgsm_full.png
  29. BIN
      images/logo/lgsmbutton.png
  30. BIN
      images/wallpaper/LinuxGSM_wallpaper.png
  31. BIN
      images/wallpaper/LinuxGSM_wallpaper_2.png
  32. 104 0
      lgsm/config-default/config-lgsm/etlserver/_default.cfg
  33. 118 0
      lgsm/config-default/config-lgsm/rwserver/_default.cfg
  34. 1 1
      lgsm/config-default/config-lgsm/ut3server/_default.cfg
  35. 2 0
      lgsm/data/serverlist.csv
  36. 2 2
      lgsm/functions/alert.sh
  37. 2 2
      lgsm/functions/alert_discord.sh
  38. 1 1
      lgsm/functions/alert_ifttt.sh
  39. 1 1
      lgsm/functions/alert_mailgun.sh
  40. 3 3
      lgsm/functions/alert_pushover.sh
  41. 11 11
      lgsm/functions/check_deps.sh
  42. 7 6
      lgsm/functions/check_ip.sh
  43. 17 17
      lgsm/functions/check_permissions.sh
  44. 2 2
      lgsm/functions/check_status.sh
  45. 1 2
      lgsm/functions/check_steamcmd.sh
  46. 2 2
      lgsm/functions/check_system_requirements.sh
  47. 14 14
      lgsm/functions/command_backup.sh
  48. 4 4
      lgsm/functions/command_console.sh
  49. 6 6
      lgsm/functions/command_debug.sh
  50. 2 1
      lgsm/functions/command_details.sh
  51. 14 0
      lgsm/functions/command_dev_clear_functions.sh
  52. 3 3
      lgsm/functions/command_dev_detect_deps.sh
  53. 3 3
      lgsm/functions/command_dev_detect_glibc.sh
  54. 6 6
      lgsm/functions/command_dev_detect_ldd.sh
  55. 40 0
      lgsm/functions/command_dev_query_raw.sh
  56. 3 3
      lgsm/functions/command_fastdl.sh
  57. 2 2
      lgsm/functions/command_mods_install.sh
  58. 1 1
      lgsm/functions/command_mods_remove.sh
  59. 1 1
      lgsm/functions/command_mods_update.sh
  60. 137 64
      lgsm/functions/command_monitor.sh
  61. 2 2
      lgsm/functions/command_postdetails.sh
  62. 12 11
      lgsm/functions/command_start.sh
  63. 16 16
      lgsm/functions/command_stop.sh
  64. 1 1
      lgsm/functions/command_test_alert.sh
  65. 2 2
      lgsm/functions/command_ts3_server_pass.sh
  66. 4 4
      lgsm/functions/command_update_linuxgsm.sh
  67. 5 5
      lgsm/functions/command_validate.sh
  68. 10 10
      lgsm/functions/command_wipe.sh
  69. 1 1
      lgsm/functions/compress_ut99_maps.sh
  70. 2 2
      lgsm/functions/core_dl.sh
  71. 3 0
      lgsm/functions/core_exit.sh
  72. 31 10
      lgsm/functions/core_functions.sh
  73. 9 7
      lgsm/functions/core_getopt.sh
  74. 9 5
      lgsm/functions/fix.sh
  75. 4 4
      lgsm/functions/fix_kf.sh
  76. 1 1
      lgsm/functions/fix_kf2.sh
  77. 1 1
      lgsm/functions/fix_mta.sh
  78. 5 5
      lgsm/functions/fix_ro.sh
  79. 10 0
      lgsm/functions/fix_rw.sh
  80. 1 1
      lgsm/functions/fix_ut.sh
  81. 4 4
      lgsm/functions/fix_ut2k4.sh
  82. 20 0
      lgsm/functions/fix_ut3.sh
  83. 85 9
      lgsm/functions/info_config.sh
  84. 9 2
      lgsm/functions/info_distro.sh
  85. 8 1
      lgsm/functions/info_glibc.sh
  86. 76 15
      lgsm/functions/info_messages.sh
  87. 13 1
      lgsm/functions/info_parms.sh
  88. 20 11
      lgsm/functions/install_config.sh
  89. 1 1
      lgsm/functions/install_dst_token.sh
  90. 2 2
      lgsm/functions/install_factorio_save.sh
  91. 2 2
      lgsm/functions/install_gslt.sh
  92. 3 3
      lgsm/functions/install_logs.sh
  93. 1 1
      lgsm/functions/install_minecraft_eula.sh
  94. 2 3
      lgsm/functions/install_server_dir.sh
  95. 5 13
      lgsm/functions/install_server_files.sh
  96. 2 2
      lgsm/functions/install_squad_license.sh
  97. 1 1
      lgsm/functions/install_steamcmd.sh
  98. 6 6
      lgsm/functions/install_ts3db.sh
  99. 1 1
      lgsm/functions/install_unreal_tournament_eula.sh
  100. 2 2
      lgsm/functions/install_ut2k4_key.sh

+ 15 - 0
.github/request-info.yml

@@ -0,0 +1,15 @@
+# Configuration for request-info - https://github.com/behaviorbot/request-info
+
+# *Required* Comment to reply with
+requestInfoReplyComment: >
+  We require more information for this issue.
+  https://linuxgsm.com/support/#guide
+
+# *OPTIONAL* default titles to check against for lack of descriptiveness
+# MUST BE ALL LOWERCASE
+#requestInfoDefaultTitles:
+#  - update readme.md
+#  - updates
+
+# *OPTIONAL* Label to be added to Issues and Pull Requests with insufficient information given
+requestInfoLabelToAdd: Status: needs more info

+ 15 - 0
.github/support.yml

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

+ 21 - 0
.github/welcome.yml

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

+ 2 - 0
.travis.yml

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

+ 13 - 4
ISSUE_TEMPLATE.md

@@ -1,8 +1,17 @@
 Please select the "Preview" tab above to view this message correctly.
 
-Please note that this is an issue tracker for **LinuxGSM** related bugs and feature requests and **not** for the games themselves.
+Follow **[this guide](https://linuxgsm.com/support/#guide)** to make sure you post the correct info.
+For general support visit the **[steam group](https://linuxgsm.com/steam)**
 
-**Therefore personal server issues on GitHub will be closed without a kiss.**
+GitHub is **ONLY** for:
+* LinuxGSM bugs
+* feature suggestions
+* code contributions
 
-Please follow **[this article](https://github.com/GameServerManagers/LinuxGSM/wiki/Support)** for optimal assistance
-and do not forget to remove this text before opening the issue.
+GitHub is **NOT** for:
+* General support
+* Specific game server issues (e.g CS:GO, TF2)
+* Dedicated server issues (e.g Ubuntu, CentOS)
+* Anything not directly related to LinuxGSM development
+
+**Any general support issues on GitHub will be closed.**

Diff do ficheiro suprimidas por serem muito extensas
+ 0 - 0
README.md


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


+ 104 - 0
lgsm/config-default/config-lgsm/etlserver/_default.cfg

@@ -0,0 +1,104 @@
+##################################
+######## 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 Command | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters#additional-parameters
+fn_parms(){
+	parms="+set net_strict 1 +set fs_homepath ${serverfiles} +exec ${servercfg}"
+}
+
+#### 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=""
+
+## 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 ####
+
+## LinuxGSM Server Details
+# Do not edit
+gamename="ET: Legacy"
+engine="idtech3"
+
+#### Directories ####
+# Edit with care
+
+## Server Specific Directories
+systemdir="${serverfiles}"
+executabledir="${systemdir}"
+executable="./etlded"
+servercfg="${servicename}.cfg"
+servercfgdefault="server.cfg"
+servercfgdir="${systemdir}/etmain"
+servercfgfullpath="${servercfgdir}/${servercfg}"
+
+## Backup Directory
+backupdir="${rootdir}/backups"
+
+## Logging Directories
+logdir="${rootdir}/log"
+gamelogdir="${serverfiles}/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"

+ 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 - 1
lgsm/config-default/config-lgsm/ut3server/_default.cfg

@@ -11,7 +11,7 @@
 ## Server Start Settings | https://github.com/GameServerManagers/LinuxGSM/wiki/Start-Parameters
 ip="0.0.0.0"
 port="7777"
-queryport="25300"
+queryport="6500"
 defaultmap="VCTF-Suspense"
 game="UTGameContent.UTVehicleCTFGame_Content"
 mutators="" #"UTGame.UTMutator_Instagib,UTGame.UTMutator_LowGrav"

+ 2 - 0
lgsm/data/serverlist.csv

@@ -57,6 +57,7 @@ qw,qwserver,Quake World
 ro,roserver,Red Orchestra: Ostfront 41-45
 ricochet,ricochetserver,Ricochet
 rust,rustserver,Rust
+rw,rwserver, Rising World
 samp,sampserver,San Andreas Multiplayer
 ss3,ss3server,Serious Sam 3: BFE
 sb,sbserver,Starbound
@@ -73,4 +74,5 @@ ut2k4,ut2k4server,Unreal Tournament 2004
 ut3,ut3server,Unreal Tournament 3
 ut99,ut99server,Unreal Tournament 99
 wet,wetserver,Wolfenstein: Enemy Territory
+etl,etlserver,ET: Legacy
 zps,zpsserver,Zombie Panic! Source

+ 2 - 2
lgsm/functions/alert.sh

@@ -45,12 +45,12 @@ fn_alert_restart(){
 }
 
 fn_alert_restart_query(){
-	fn_script_log_info "Sending alert: Restarted: ${gsquerycmd}"
+	fn_script_log_info "Sending alert: Restarted: ${servicename}"
 	alertsubject="Alert - ${servicename} - Restarted"
 	alertemoji="🚨"
 	alertsound="2"
 	alerturl="not enabled"
-	alertbody="gsquery.py failed to query: ${gsquerycmd}"
+	alertbody="Unable to query: ${servicename}"
 }
 
 fn_alert_update(){

+ 2 - 2
lgsm/functions/alert_discord.sh

@@ -39,7 +39,7 @@ json=$(cat <<EOF
 			},
 			{
 				"name": "Server IP",
-				"value": "[${ip}:${port}](https://www.gametracker.com/server_info/${ip}:${port})"
+				"value": "[${extip:-$ip}:${port}](https://www.gametracker.com/server_info/${extip:-$ip}:${port})"
 			},
 			{
 				"name": "More info",
@@ -53,7 +53,7 @@ EOF
 
 fn_print_dots "Sending Discord alert"
 sleep 0.5
-discordsend=$(${curlpath} -sSL -H "Content-Type: application/json" -X POST -d """${json}""" ${discordwebhook})
+discordsend=$(${curlpath} -sSL -H "Content-Type: application/json" -X POST -d """${json}""" "${discordwebhook}")
 
 if [ -n "${discordsend}" ]; then
 	fn_print_fail_nl "Sending Discord alert: ${discordsend}"

+ 1 - 1
lgsm/functions/alert_ifttt.sh

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

+ 1 - 1
lgsm/functions/alert_mailgun.sh

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

+ 3 - 3
lgsm/functions/alert_pushover.sh

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

+ 11 - 11
lgsm/functions/check_deps.sh

@@ -18,11 +18,11 @@ fn_deps_detector(){
 		depstatus=0
 		deptocheck="${javaversion}"
 		unset javacheck
-	elif [ -n "$(command -v apt-get 2>/dev/null)" ]; then
-		dpkg-query -W -f='${Status}' ${deptocheck} 2>/dev/null | grep -q -P '^install ok installed'
+	elif [ -n "$(command -v apt 2>/dev/null)" ]; then
+		dpkg-query -W -f='${Status}' "${deptocheck}" 2>/dev/null | grep -q -P '^install ok installed'
 		depstatus=$?
 	elif [ -n "$(command -v yum 2>/dev/null)" ]; then
-		yum -q list installed ${deptocheck} > /dev/null 2>&1
+		yum -q list installed "${deptocheck}" > /dev/null 2>&1
 		depstatus=$?
 	fi
 
@@ -77,7 +77,7 @@ fn_found_missing_deps(){
 		sleep 0.5
 		fn_print_error_nl "Checking dependencies: missing: ${red}${array_deps_missing[@]}${default}"
 		fn_script_log_error "Checking dependencies: missing: ${array_deps_missing[@]}"
-		sleep 1
+		sleep 0.5
 		sudo -v > /dev/null 2>&1
 		if [ $? -eq 0 ]; then
 			fn_print_information_nl "Automatically installing missing dependencies."
@@ -90,11 +90,11 @@ fn_found_missing_deps(){
 			sleep 1
 			echo -en "   \r"
 			if [ -n "$(command -v dpkg-query 2>/dev/null)" ]; then
-				cmd="sudo dpkg --add-architecture i386; sudo apt-get update; sudo apt-get -y install ${array_deps_missing[@]}"
-				eval ${cmd}
+				cmd="sudo dpkg --add-architecture i386; sudo apt update; sudo apt -y install ${array_deps_missing[@]}"
+				eval "${cmd}"
 			elif [ -n "$(command -v yum 2>/dev/null)" ]; then
 				cmd="sudo yum -y install ${array_deps_missing[@]}"
-				eval ${cmd}
+				eval "${cmd}"
 			fi
 			if [ $? != 0 ]; then
 				fn_print_failure_nl "Unable to install dependencies"
@@ -108,7 +108,7 @@ fn_found_missing_deps(){
 			fn_print_warning_nl "$(whoami) does not have sudo access. Manually install dependencies."
 			fn_script_log_warn "$(whoami) does not have sudo access. Manually install dependencies."
 			if [ -n "$(command -v dpkg-query 2>/dev/null)" ]; then
-				echo "	sudo dpkg --add-architecture i386; sudo apt-get update; sudo apt-get install ${array_deps_missing[@]}"
+				echo "	sudo dpkg --add-architecture i386; sudo apt update; sudo apt install ${array_deps_missing[@]}"
 			elif [ -n "$(command -v yum 2>/dev/null)" ]; then
 				echo "	sudo yum install ${array_deps_missing[@]}"
 			fi
@@ -139,7 +139,7 @@ if [ "${function_selfname}" == "command_install.sh" ]; then
 	echo "================================="
 fi
 
-# Check will only run if using apt-get or yum
+# Check will only run if using apt or yum
 if [ -n "$(command -v dpkg-query 2>/dev/null)" ]; then
 	# Generate array of missing deps
 	array_deps_missing=()
@@ -193,7 +193,7 @@ if [ -n "$(command -v dpkg-query 2>/dev/null)" ]; then
 	elif [ "${gamename}" == "Battlefield: 1942" ]; then
 		array_deps_required+=( libncurses5:i386 )
 	# Call of Duty
-	elif [ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty 2" ]; then
+	elif [ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]; then
 		array_deps_required+=( libstdc++5:i386 )
 	# Factorio
 	elif [ "${gamename}" == "Factorio" ]; then
@@ -286,7 +286,7 @@ elif [ -n "$(command -v yum 2>/dev/null)" ]; then
 	elif [ "${gamename}" == "Battlefield: 1942" ]; then
 		array_deps_required+=( ncurses-libs.i686 )
 	# Call of Duty
-	elif [ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty 2" ]; then
+	elif [ "${gamename}" == "Call of Duty" ]||[ "${gamename}" == "Call of Duty: United Offensive" ]||[ "${gamename}" == "Call of Duty 2" ]; then
 		array_deps_required+=( compat-libstdc++-33.i686 )
 	# Factorio
 	elif [ "${gamename}" == "Factorio" ]; then

+ 7 - 6
lgsm/functions/check_ip.sh

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

+ 17 - 17
lgsm/functions/check_permissions.sh

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

+ 2 - 2
lgsm/functions/check_status.sh

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

+ 1 - 2
lgsm/functions/check_steamcmd.sh

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

+ 2 - 2
lgsm/functions/check_system_requirements.sh

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

+ 14 - 14
lgsm/functions/command_backup.sh

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

+ 4 - 4
lgsm/functions/command_console.sh

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

+ 6 - 6
lgsm/functions/command_debug.sh

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

+ 2 - 1
lgsm/functions/command_details.sh

@@ -12,10 +12,11 @@ local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 # Run checks and gathers details to display.
 check.sh
 info_config.sh
+info_parms.sh
 info_distro.sh
 info_glibc.sh
-info_parms.sh
 info_messages.sh
+query_gamedig.sh
 fn_info_message_distro
 fn_info_message_performance
 fn_info_message_disk

+ 14 - 0
lgsm/functions/command_dev_clear_functions.sh

@@ -0,0 +1,14 @@
+#!/bin/bash
+# command_dev_clear_functions.sh function
+# Author: Daniel Gibbs
+# Website: https://linuxgsm.com
+# Description: Deletes the contents of the functions dir.
+
+echo "================================="
+echo "Clear Functions"
+echo "================================="
+echo ""
+if fn_prompt_yn "Do you want to delete all functions?" Y; then
+	rm -rfv "${functionsdir}/*"
+fi
+core_exit.sh

+ 3 - 3
lgsm/functions/command_dev_detect_deps.sh

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

+ 3 - 3
lgsm/functions/command_dev_detect_glibc.sh

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

+ 6 - 6
lgsm/functions/command_dev_detect_ldd.sh

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

+ 40 - 0
lgsm/functions/command_dev_query_raw.sh

@@ -0,0 +1,40 @@
+#!/bin/bash
+# command_dev_query_raw.sh function
+# Author: Daniel Gibbs
+# Website: https://gameservermanagers.com
+# Description: Raw gamedig output of the server.
+
+echo "================================="
+echo "Gamedig Raw Output"
+echo "================================="
+echo""
+if [ ! "$(command -v gamedig 2>/dev/null)" ]; then
+	fn_print_failure_nl "gamedig not installed"
+fi
+if [ ! "$(command -v jq 2>/dev/null)" ]; then
+	fn_print_failure_nl "jq not installed"
+fi
+
+
+info_config.sh
+info_parms.sh
+if [ "${engine}" == "idtech3_ql" ]; then
+	local engine="quakelive"
+elif [ "${gamename}" == "Killing Floor 2" ]; then
+	local engine="unreal4"
+fi
+
+query_gamedig.sh
+echo "gamedig --type \"${gamedigengine}\" --host \"${ip}\" --port \"${port}\"|jq"
+echo""
+echo "${gamedigraw}" | jq
+echo""
+echo "================================="
+echo "gsquery Raw Output"
+echo "================================="
+echo""
+echo "./query_gsquery.py -a \"${ip}\" -p \"${port}\" -e \"${engine}\""
+if [ ! -f "${functionsdir}/query_gsquery.py" ]; then
+	fn_fetch_file_github "lgsm/functions" "query_gsquery.py" "${functionsdir}" "chmodx" "norun" "noforce" "nomd5"
+fi
+"${functionsdir}"/query_gsquery.py -a "${ip}" -p "${port}" -e "${engine}"

+ 3 - 3
lgsm/functions/command_fastdl.sh

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

+ 2 - 2
lgsm/functions/command_mods_install.sh

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

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

+ 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)"
 	fi
 done
-sleep 1
+sleep 0.5
 
 ## Update
 # List all installed mods and apply update

+ 137 - 64
lgsm/functions/command_monitor.sh

@@ -4,12 +4,82 @@
 # Contributor: UltimateByte
 # Website: https://linuxgsm.com
 # Description: Monitors server by checking for running processes.
-# then passes to monitor_gsquery.sh.
+# then passes to gamedig and gsquery.
 
 local commandname="MONITOR"
 local commandaction="Monitor"
 local function_selfname="$(basename "$(readlink -f "${BASH_SOURCE[0]}")")"
 
+fn_monitor_loop(){
+# Will query up to 5 times every 15 seconds.
+# Query will wait up to 60 seconds to confirm server is down giving server time if changing map.
+for queryattempt in {1..5}; do
+	fn_print_dots "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: "
+	fn_print_querying_eol
+	fn_script_log_info "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt} : QUERYING"
+	sleep 0.5
+	if [ "${querymethod}" ==  "gamedig" ]; then
+		query_gamedig.sh
+	elif [ "${querymethod}" ==  "gsquery" ]; then
+		if [ ! -f "${functionsdir}/query_gsquery.py" ]; then
+			fn_fetch_file_github "lgsm/functions" "query_gsquery.py" "${functionsdir}" "chmodx" "norun" "noforce" "nomd5"
+		fi
+		"${functionsdir}"/query_gsquery.py -a "${ip}" -p "${queryport}" -e "${engine}" > /dev/null 2>&1
+		querystatus="$?"
+	elif [ "${querymethod}" ==  "telnet" ]; then
+		bash -c 'exec 3<> /dev/tcp/'${ip}'/'${queryport}''
+		querystatus="$?"
+	fi
+
+	if [ "${querystatus}" == "0" ]; then
+		# Server query OK
+		sleep 0.5
+		fn_print_ok "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: "
+		fn_print_ok_eol_nl
+		fn_script_log_pass "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt}: OK"
+		exitcode=0
+		monitorpass=1
+		core_exit.sh
+	else
+		# Server query 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_eol
+		sleep 0.5
+		# monitor try gamedig first then gsquery before restarting
+		if [ "${querymethod}" ==  "gsquery" ]; then
+			if [ "${totalseconds}" -ge "59" ]; then
+				# Server query FAIL for over 59 seconds reboot server
+				fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: "
+				fn_print_fail_eol_nl
+				fn_script_log_error "Querying port: ${querymethod}: ${ip}:${queryport} : ${queryattempt}: FAIL"
+				sleep 0.5
+
+				# Send alert if enabled
+				alert="restartquery"
+				alert.sh
+				command_restart.sh
+				core_exit.sh
+			fi
+		elif [ "${querymethod}" ==  "gamedig" ]; then
+			if [ "${totalseconds}" -ge "29" ]; then
+				break
+			fi
+		fi
+
+		# Seconds counter
+		for seconds in {1..15}; do
+			fn_print_fail "Querying port: ${querymethod}: ${ip}:${queryport} : ${totalseconds}/${queryattempt}: WAIT"
+			totalseconds=$((totalseconds + 1))
+			sleep 1
+			if [ "${seconds}" == "15" ]; then
+				break
+			fi
+		done
+	fi
+done
+}
+
 fn_monitor_check_lockfile(){
 	# Monitor does not run it lockfile is not found
 	if [ ! -f "${rootdir}/${lockselfname}" ]; then
@@ -22,102 +92,105 @@ fn_monitor_check_lockfile(){
 
 fn_monitor_check_update(){
 	# Monitor will not check if update is running.
-	if [ "$(ps -ef|grep "${selfname} update"|grep -v grep|wc -l)" != "0" ]; then
+	if [ "$(ps -ef | grep "${selfname} update" | grep -v grep | wc -l)" != "0" ]; then
 		fn_print_error_nl "SteamCMD is currently checking for updates"
 		fn_script_log_error "SteamCMD is currently checking for updates"
-		sleep 1
+		sleep 0.5
 		core_exit.sh
 	fi
 }
 
-fn_monitor_msg_checking(){
+fn_monitor_check_session(){
 	fn_print_dots "Checking session: "
 	fn_print_checking_eol
 	fn_script_log_info "Checking session: CHECKING"
-	sleep 1
-}
-
-fn_monitor_teamspeak3(){
+	sleep 0.5
 	if [ "${status}" != "0" ]; then
 		fn_print_ok "Checking session: "
 		fn_print_ok_eol_nl
 		fn_script_log_pass "Checking session: OK"
 	else
-		fn_print_error "Checking session: ${ts3error}: "
+		if [ "${gamename}" == "TeamSpeak 3" ]; then
+			fn_print_error "Checking session: ${ts3error}: "
+		elif [ "${gamename}" == "Mumble" ]; then
+			fn_print_error "Checking session: Not listening to port ${queryport}"
+		else
+			fn_print_error "Checking session: "
+		fi
 		fn_print_fail_eol_nl
-		fn_script_log_error "Checking session: ${ts3error}: FAIL"
-		failurereason="${ts3error}"
+		fn_script_log_error "Checking session: FAIL"
 		alert="restart"
 		alert.sh
 		fn_script_log_info "Monitor is starting ${servername}"
-		sleep 1
+		sleep 0.5
 		command_restart.sh
 	fi
+	sleep 0.5
 }
 
-fn_monitor_mumble(){
-	if [ "${status}" != "0" ]; then
-		fn_print_ok "Checking session: "
-		fn_print_ok_eol_nl
-		fn_script_log_pass "Checking session: OK"
-	else
-		fn_print_error "Checking session: Not listening to port ${port}"
-		fn_print_fail_eol_nl
-		fn_script_log_error "Checking session: Not listening to port ${port}"
-		failurereason="Checking session: Not listening to port ${port}"
-		alert="restart"
-		alert.sh
-		fn_script_log_info "Monitor is starting ${servername}"
-		sleep 1
-		command_restart.sh
-	fi
-}
-fn_monitor_tmux(){
-	# checks that tmux session is running
-	if [ "${status}" != "0" ]; then
-		fn_print_ok "Checking session: "
-		fn_print_ok_eol_nl
-		fn_script_log_pass "Checking session: OK"
-		# runs gsquery check on game with specific engines.
-		local allowed_engines_array=( avalanche2.0 avalanche3.0 goldsource idtech2 idtech3 idtech3_ql iw2.0 iw3.0 madness quake refractor realvirtuality source spark starbound unity3d unreal unreal2 unreal4 )
-		for allowed_engine in "${allowed_engines_array[@]}"
-		do
-			if [ "${allowed_engine}" == "starbound" ]; then
-				info_config.sh
-				if [ "${queryenabled}" == "true" ]; then
-					monitor_gsquery.sh
-				fi
-			elif [ "${allowed_engine}" == "${engine}" ]; then
-				monitor_gsquery.sh
+fn_monitor_query(){
+	fn_script_log_info "Querying port: query enabled"
+	# engines that work with query
+	local allowed_engines_array=( avalanche2.0 avalanche3.0 goldsource idtech2 idtech3 idtech3_ql iw2.0 iw3.0 madness quake refractor realvirtuality source spark starbound unity3d unreal unreal2 unreal4 )
+	for allowed_engine in "${allowed_engines_array[@]}"
+	do
+		if [ "${allowed_engine}" == "${engine}" ]; then
+			if [ "${engine}" == "idtech3_ql" ]; then
+				local engine="quakelive"
+			elif [ "${gamename}" == "Killing Floor 2" ]; then
+				local engine="unreal4"
 			fi
-		done
-	else
-		fn_print_error "Checking session: "
-		fn_print_fail_eol_nl
-		fn_script_log_error "Checking session: FAIL"
-		alert="restart"
-		alert.sh
-		fn_script_log_info "Monitor is starting ${servername}"
-		sleep 1
-		command_restart.sh
-	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
+						if [ -z "${monitorpass}" ]; then
+							querymethod="${query_method}"
+							fn_monitor_loop
+						fi
+					fi
+				else
+					if [ -z "${monitorpass}" ]; then
+						querymethod="${query_method}"
+						fn_monitor_loop
+					fi
+				fi
+			done
+		fi
+	done
+}
+
+fn_monitor_query_telnet(){
+	querymethod="telnet"
+	fn_monitor_loop
 }
 
 monitorflag=1
 fn_print_dots "${servername}"
-sleep 1
+sleep 0.5
 check.sh
 logs.sh
 info_config.sh
+info_parms.sh
 
 fn_monitor_check_lockfile
 fn_monitor_check_update
-fn_monitor_msg_checking
-if [ "${gamename}" == "TeamSpeak 3" ]; then
-	fn_monitor_teamspeak3
-elif [ "${gamename}" == "Mumble" ]; then
-	fn_monitor_mumble
+fn_monitor_check_session
+# Query has to be enabled in starbound config
+if [ "${gamename}" == "starbound" ]; then
+	if [ "${queryenabled}" == "true" ]; then
+		fn_monitor_query
+	fi
+elif [ "${gamename}" == "TeamSpeak 3" ]; then
+	fn_monitor_query_telnet
 else
-	fn_monitor_tmux
+	fn_monitor_query
 fi
+
 core_exit.sh
+

+ 2 - 2
lgsm/functions/command_postdetails.sh

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

+ 12 - 11
lgsm/functions/command_start.sh

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

+ 16 - 16
lgsm/functions/command_stop.sh

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

+ 1 - 1
lgsm/functions/command_test_alert.sh

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

+ 2 - 2
lgsm/functions/command_ts3_server_pass.sh

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

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

+ 5 - 5
lgsm/functions/command_validate.sh

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

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

+ 1 - 1
lgsm/functions/compress_ut99_maps.sh

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

+ 2 - 2
lgsm/functions/core_dl.sh

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

+ 3 - 0
lgsm/functions/core_exit.sh

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

+ 31 - 10
lgsm/functions/core_functions.sh

@@ -269,6 +269,11 @@ functionfile="${FUNCNAME}"
 fn_fetch_function
 }
 
+command_dev_query_raw.sh(){
+functionfile="${FUNCNAME}"
+fn_fetch_function
+}
+
 # Fix
 
 fix.sh(){
@@ -306,37 +311,43 @@ functionfile="${FUNCNAME}"
 fn_fetch_function
 }
 
-fix_steamcmd.sh(){
+fix_glibc.sh(){
 functionfile="${FUNCNAME}"
 fn_fetch_function
 }
 
-fix_glibc.sh(){
+
+fix_kf.sh(){
 functionfile="${FUNCNAME}"
 fn_fetch_function
 }
 
-fix_ro.sh(){
+fix_kf2.sh(){
 functionfile="${FUNCNAME}"
 fn_fetch_function
 }
 
-fix_kf.sh(){
+fix_mta.sh(){
 functionfile="${FUNCNAME}"
 fn_fetch_function
 }
 
-fix_kf2.sh(){
+fix_ro.sh(){
 functionfile="${FUNCNAME}"
 fn_fetch_function
 }
 
-fix_ut2k4.sh(){
+fix_rust.sh(){
 functionfile="${FUNCNAME}"
 fn_fetch_function
 }
 
-fix_ut.sh(){
+fix_rw.sh(){
+functionfile="${FUNCNAME}"
+fn_fetch_function
+}
+
+fix_ut3.sh(){
 functionfile="${FUNCNAME}"
 fn_fetch_function
 }
@@ -346,7 +357,12 @@ functionfile="${FUNCNAME}"
 fn_fetch_function
 }
 
-fix_mta.sh(){
+fix_ut2k4.sh(){
+functionfile="${FUNCNAME}"
+fn_fetch_function
+}
+
+fix_ut.sh(){
 functionfile="${FUNCNAME}"
 fn_fetch_function
 }
@@ -363,6 +379,11 @@ functionfile="${FUNCNAME}"
 fn_fetch_function
 }
 
+info_gamedig.sh(){
+functionfile="${FUNCNAME}"
+fn_fetch_function
+}
+
 info_glibc.sh(){
 functionfile="${FUNCNAME}"
 fn_fetch_function
@@ -426,9 +447,9 @@ functionfile="${FUNCNAME}"
 fn_fetch_function
 }
 
-# Monitor
+# Query
 
-monitor_gsquery.sh(){
+query_gamedig.sh(){
 functionfile="${FUNCNAME}"
 fn_fetch_function
 }

+ 9 - 7
lgsm/functions/core_getopt.sh

@@ -47,6 +47,8 @@ cmd_dev_debug=( "dev;developer" "command_dev_debug.sh" "Enable developer Mode."
 cmd_dev_detect_deps=( "dd;detect-deps" "command_dev_detect_deps.sh" "Detect required dependencies." )
 cmd_dev_detect_glibc=( "dg;detect-glibc" "command_dev_detect_glibc.sh" "Detect required glibc." )
 cmd_dev_detect_ldd=( "dl;detect-ldd" "command_dev_detect_ldd.sh" "Detect required dynamic dependencies." )
+cmd_dev_query_raw=( "qr;query-raw" "command_dev_query_raw.sh" "The raw output of gamedig and gsquery." )
+cmd_dev_clear_functions=( "cf;clear-functions" "command_dev_clear_functions.sh" "Delete the contents of the functions dir." )
 
 ### Set specific opt here ###
 
@@ -59,7 +61,7 @@ currentopt+=( "${cmd_update_linuxgsm[@]}" )
 if [ "${gamename}" != "Battlefield: 1942" ]&&[ "${engine}" != "quake" ]&&[ "${engine}" != "idtech2" ]&&[ "${engine}" != "idtech3" ]&&[ "${engine}" != "iw2.0" ]&&[ "${engine}" != "iw3.0" ]&&[ "${gamename}" != "San Andreas Multiplayer" ]; then
 	currentopt+=( "${cmd_update[@]}" )
 	# force update for SteamCMD only or MTA
-	if [ -n "${appid}" ] || [ "${gamename}" == "Multi Theft Auto" ]; then
+	if [ -n "${appid}" ]||[ "${gamename}" == "Multi Theft Auto" ]; then
 		currentopt+=( "${cmd_force_update[@]}" )
 	fi
 fi
@@ -130,16 +132,16 @@ currentopt+=( "${cmd_install[@]}" "${cmd_auto_install[@]}" )
 ## Developer commands
 currentopt+=( "${cmd_dev_debug[@]}" )
 if [ -f ".dev-debug" ]; then
-	currentopt+=(  "${cmd_dev_detect_deps[@]}" "${cmd_dev_detect_glibc[@]}" "${cmd_dev_detect_ldd[@]}" )
+	currentopt+=( "${cmd_dev_detect_deps[@]}" "${cmd_dev_detect_glibc[@]}" "${cmd_dev_detect_ldd[@]}" "${cmd_dev_query_raw[@]}" )
 fi
 
 ### Build list of available commands
 optcommands=()
 index="0"
 for ((index="0"; index < ${#currentopt[@]}; index+=3)); do
-	cmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')"
+	cmdamount="$(echo "${currentopt[index]}" | awk -F ';' '{ print NF }')"
 	for ((cmdindex=1; cmdindex <= ${cmdamount}; cmdindex++)); do
-		optcommands+=( "$(echo "${currentopt[index]}"| awk -F ';' -v x=${cmdindex} '{ print $x }')" )
+		optcommands+=( "$(echo "${currentopt[index]}" | awk -F ';' -v x=${cmdindex} '{ print $x }')" )
 	done
 done
 
@@ -174,11 +176,11 @@ for i in "${optcommands[@]}"; do
 		# Seek and run command
 		index="0"
 		for ((index="0"; index < ${#currentopt[@]}; index+=3)); do
-			currcmdamount="$(echo "${currentopt[index]}"| awk -F ';' '{ print NF }')"
+			currcmdamount="$(echo "${currentopt[index]}" | awk -F ';' '{ print NF }')"
 			for ((currcmdindex=1; currcmdindex <= ${currcmdamount}; currcmdindex++)); do
-				if [ "$(echo "${currentopt[index]}"| awk -F ';' -v x=${currcmdindex} '{ print $x }')" == "${getopt}" ]; then
+				if [ "$(echo "${currentopt[index]}" | awk -F ';' -v x=${currcmdindex} '{ print $x }')" == "${getopt}" ]; then
 					# Run command
-					eval ${currentopt[index+1]}
+					eval "${currentopt[index+1]}"
 					core_exit.sh
 					break
 				fi

+ 9 - 5
lgsm/functions/fix.sh

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

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

+ 1 - 1
lgsm/functions/fix_kf2.sh

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

+ 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
 	fixname="libmysqlclient16"
 	fn_fix_msg_start_nl
-	sleep 1
+	sleep 0.5
 	fn_fetch_file "https://nightly.mtasa.com/files/modules/64/libmysqlclient.so.16" "${lgsmdir}/lib" "libmysqlclient.so.16" "chmodx" "norun" "noforce" "6c188e0f8fb5d7a29f4bc413b9fed6c2"
 	fn_fix_msg_end
 fi

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

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

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

+ 85 - 9
lgsm/functions/info_config.sh

@@ -20,13 +20,14 @@ fn_info_config_justcause2(){
 		serverpassword="${unavailable}"
 		maxplayers="${zero}"
 		port="${zero}"
+		queryport="${zero}"
 	else
 		servername=$(grep "Name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/Name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		serverdescription=$(grep "Description" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/Description//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		serverpassword=$(grep "Password" "${servercfgfullpath}" | sed -e 's/^ *//g' -e '/^--/d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		maxplayers=$(grep "MaxPlayers" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]')
 		port=$(grep "BindPort" "${servercfgfullpath}" | grep -v "\--" | tr -cd '[:digit:]')
-
+		queryport="${port}"
 		ip=$(grep "BindIP" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/BindIP//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		ipsetinconfig=1
 		ipinconfigvar="BindIP"
@@ -36,6 +37,7 @@ fn_info_config_justcause2(){
 		serverpassword=${serverpassword:-"NOT SET"}
 		maxplayers=${maxplayers:-"0"}
 		port=${port:-"0"}
+		queryport=${queryport:-"0"}
 	fi
 }
 
@@ -364,7 +366,7 @@ fn_info_config_quakeworld(){
 		rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		servername=$(grep "hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set hostname//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		maxplayers=$(grep "maxclients" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
-		port=
+
 		# Not Set
 		rconpassword=${rconpassword:-"NOT SET"}
 		servername=${servername:-"NOT SET"}
@@ -417,6 +419,7 @@ fn_info_config_quakelive(){
 		serverpassword="${unavailable}"
 		maxplayers="${zero}"
 		port="${zero}"
+		queryport="${zero}"
 		rconport="${zero}"
 		statsport="${zero}"
 	else
@@ -425,6 +428,7 @@ fn_info_config_quakelive(){
 		serverpassword=$(grep "g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		maxplayers=$(grep "sv_maxClients" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
 		port=$(grep "net_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
+		queryport="${port}"
 		rconport=$(grep "zmq_rcon_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
 		statsport=$(grep "zmq_stats_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
 
@@ -438,6 +442,7 @@ fn_info_config_quakelive(){
 		serverpassword=${serverpassword:-"NOT SET"}
 		maxplayers=${maxplayers:-"0"}
 		port=${port:-"0"}
+		queryport=${queryport:-"0"}
 		rconport=${rconport:-"0"}
 		statsport=${statsport:-"0"}
 	fi
@@ -463,6 +468,40 @@ fn_info_config_realvirtuality(){
 	fi
 }
 
+fn_info_config_risingworld(){
+	if [ ! -f "${servercfgfullpath}" ]; then
+		servername="${unavailable}"
+		rconpassword="${unavailable}"
+		rconport="${zero}"
+		maxplayers="${zero}"
+		port="${zero}"
+		gamemode="${unavailable}"
+		gameworld="${unavailable}"
+	else
+		servername=$(grep "server_name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+		serverpassword=$(grep "server_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+		rconpassword=$(grep "rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/rcon_password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+		rconport=$(grep "rcon_port" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
+		maxplayers=$(grep "settings_max_players" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
+		port=$(grep "server_port" "${servercfgfullpath}" | grep -v "database_mysql_server_port" | grep -v "#" | tr -cd '[:digit:]')
+		gamemode=$(grep "gamemode" "${servercfgfullpath}" | grep -v "#" | tr -cd '[:digit:]')
+		gameworld=$(grep "server_world_name" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server_world_name//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+		javaram=$(grep "server_memory" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/server_memory//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+		ip=$(grep "server_ip" "${servercfgfullpath}" | grep -v "database_mysql_server_ip" | sed -e 's/^[ \t]*//g' -e '/^--/d' -e 's/server_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+		ipsetinconfig=1
+		ipinconfigvar="server-ip"
+
+		# Not Set
+		servername=${servername:-"NOT SET"}
+		rconpassword=${rconpassword:-"NOT SET"}
+		rconport=${rconport:-"NOT SET"}
+		maxplayers=${maxplayers:-"NOT SET"}
+		port=${port:-"NOT SET"}
+		gamemode=${gamemode:-"NOT SET"}
+		gameworld=${gameworld:-"NOT SET"}
+	fi
+}
+
 fn_info_config_seriousengine35(){
 	if [ ! -f "${servercfgfullpath}" ]; then
 		servername="${unavailable}"
@@ -704,7 +743,6 @@ fn_info_config_unreal3(){
 		servername="${unavailable}"
 		serverpassword="${unavailable}"
 		adminpassword="${unavailable}"
-		port="${unavailable}"
 		webadminenabled="${unavailable}"
 		webadminport="${zero}"
 		webadminuser="${unavailable}"
@@ -712,7 +750,6 @@ fn_info_config_unreal3(){
 	else
 		servername=$(grep "ServerName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		adminpassword=$(grep "AdminPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-		port=$(grep "Port" "${servercfgdir}/UTEngine.ini" | sed -e 's/^[ \t]*//g' | grep "^Port" | grep -v "#" | tr -cd '[:digit:]')
 		webadminenabled=$(grep "bEnabled" "${servercfgdir}/UTWeb.ini" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/bEnabled//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		webadminport=$(grep "ListenPort" "${servercfgdir}/UTWeb.ini" | grep -v "#" | tr -cd '[:digit:]')
 		webadminuser="Admin"
@@ -736,13 +773,13 @@ fn_info_config_kf2(){
 		serverpassword="${unavailable}"
 		adminpassword="${unavailable}"
 		port="${unavailable}"
+		queryport="${unavailable}"
 		webadminenabled="${unavailable}"
 		webadminport="${zero}"
 		webadminuser="${unavailable}"
 		webadminpass="${unavailable}"
 	else
 		servername=$(grep "ServerName" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
-		# Not in UT3
 		serverpassword=$(grep "GamePassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/GamePassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		adminpassword=$(grep "AdminPassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/AdminPassword//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		port=$(grep "Port" "${servercfgdir}/LinuxServer-KFEngine.ini" | sed -e 's/^[ \t]*//g' | grep "^Port" | grep -v "#" | tr -cd '[:digit:]')
@@ -858,8 +895,10 @@ fn_info_config_wolfensteinenemyterritory(){
 		serverpassword="${unavailable}"
 		maxplayers="${zero}"
 		port="${zero}"
+		queryport="${zero}"
 	else
 		port=$(grep "set net_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
+		queryport="${port}"
 		rconpassword=$(grep "set zmq_rcon_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set zmq_rcon_password //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//g' -e '/^\//d' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		servername=$(grep "set sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 		serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
@@ -875,24 +914,56 @@ fn_info_config_wolfensteinenemyterritory(){
 		serverpassword=${serverpassword:-"NOT SET"}
 		maxplayers=${maxplayers:-"0"}
 		port=${port:-"27960"}
+		queryport=${queryport:-"27960"}
 	fi
 }
 
+fn_info_config_etlegacy(){
+	if [ ! -f "${servercfgfullpath}" ]; then
+		rconpassword="${unavailable}"
+		servername="${unavailable}"
+		serverpassword="${unavailable}"
+		maxplayers="${zero}"
+		port="${zero}"
+		queryport="${zero}"
+	else
+		port=$(grep "set net_port" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
+		queryport="${port}"
+		rconpassword=$(grep "set rconpassword" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set rconpassword //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//g' -e '/^\//d' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+		servername=$(grep "set sv_hostname" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set sv_hostname //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+		serverpassword=$(grep "set g_password" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set g_password //g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+		maxplayers=$(grep "set sv_maxclients" "${servercfgfullpath}" | grep -v "//" | tr -cd '[:digit:]')
+
+		ip=$(grep "set net_ip" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/set net_ip//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+		ipsetinconfig=1
+		ipinconfigvar="set net_ip"
+
+		# Not Set
+		rconpassword=${rconpassword:-"NOT SET"}
+		servername=${servername:-"NOT SET"}
+		serverpassword=${serverpassword:-"NOT SET"}
+		maxplayers=${maxplayers:-"0"}
+		port=${port:-"27960"}
+		queryport=${queryport:-"27960"}
+	fi
+}
+
+
 fn_info_config_squad(){
 	if [ ! -f "${servercfgfullpath}" ]; then
 		servername="${unavailable}"
 		maxplayers="${unavailable}"
 	else
-		servername="$(cat ${servercfgfullpath} | grep "ServerName=" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')"
-		maxplayers="$(cat ${servercfgfullpath} | grep "MaxPlayers=" | tr -cd '[:digit:]')"
+		servername="$(grep "ServerName=" "${servercfgfullpath}" | sed -e 's/^[ \t]*//g' -e '/^#/d' -e 's/ServerName//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')"
+		maxplayers="$(grep "MaxPlayers=" "${servercfgfullpath}" | tr -cd '[:digit:]')"
 	fi
 
 	if [ ! -f "${servercfgdir}/Rcon.cfg" ]; then
 		rconport=${unavailable}
 		rconpassword=${unavailable}
 	else
-		rconport=$(cat ${servercfgdir}/Rcon.cfg | grep "Port=" | tr -cd '[:digit:]')
-		rconpassword=$(cat ${servercfgdir}/Rcon.cfg | grep "Password=" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
+		rconport=$(grep "Port=" "${servercfgdir}/Rcon.cfg" | tr -cd '[:digit:]')
+		rconpassword=$(grep "Password=" "${servercfgdir}/Rcon.cfg" | sed -e 's/^[ \t]*//g' -e '/^\//d' -e 's/Password//g' | tr -d '=\";,:' | sed -e 's/^[ \t]*//' -e 's/[ \t]*$//')
 	fi
 
 	rconport=${rconport:-"0"}
@@ -987,6 +1058,9 @@ elif [ "${engine}" == "projectzomboid" ]; then
 # ARMA 3
 elif [ "${engine}" == "realvirtuality" ]; then
 	fn_info_config_realvirtuality
+# Rising World
+elif [ "${shortname}" == "rw" ]; then
+	fn_info_config_risingworld
 # Serious Sam
 elif [ "${engine}" == "seriousengine35" ]; then
 	fn_info_config_seriousengine35
@@ -1025,6 +1099,8 @@ elif [ "${gamename}" == "7 Days To Die" ]; then
 	fn_info_config_sdtd
 elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
 	fn_info_config_wolfensteinenemyterritory
+elif [ "${gamename}" == "ET: Legacy" ]; then
+	fn_info_config_etlegacy
 elif [ "${gamename}" == "Multi Theft Auto" ]; then
 	fn_info_config_mta
 elif [ "${gamename}" == "Squad" ]; then

+ 9 - 2
lgsm/functions/info_distro.sh

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

+ 8 - 1
lgsm/functions/info_glibc.sh

@@ -26,6 +26,7 @@ elif [ "${gamename}" == "Blade Symphony" ]; then
 	glibcfix="yes"
 elif [ "${gamename}" == "BrainBread 2" ]; then
 	glibcrequired="2.17"
+	glibcfix="no"
 elif [ "${gamename}" == "Call of Duty" ]; then
 	glibcrequired="2.1"
 	glibcfix="no"
@@ -57,7 +58,7 @@ elif [ "${gamename}" == "Empires Mod" ]; then
 	glibcrequired="2.15"
 	glibcfix="yes"
 elif [ "${gamename}" == "Factorio" ]; then
-	glibcrequired="2.15"
+	glibcrequired="2.18"
 	glibcfix="yes"
 elif [ "${gamename}" == "Fistful of Frags" ]; then
 	glibcrequired="2.15"
@@ -95,6 +96,9 @@ elif [ "${gamename}" == "Quake 3: Arena" ]; then
 elif [ "${gamename}" == "Quake Live" ]; then
 	glibcrequired="2.15"
 	glibcfix="no"
+elif [ "${shortname}" == "rw" ]; then
+	glibcrequired="2.14"
+	glibcfix="no"
 elif [ "${gamename}" == "San Andreas Multiplayer" ]; then
 	glibcrequired="2.3"
 	glibcfix="no"
@@ -182,6 +186,9 @@ elif [ "${engine}" == "refractor" ]; then
 elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
 	glibcrequired="2.2.4"
 	glibcfix="no"
+elif [ "${gamename}" == "ET: Legacy" ]; then
+	glibcrequired="2.7"
+	glibcfix="no"
 elif [ "${gamename}" == "Multi Theft Auto" ]; then
 	glibcrequired="2.7"
 	glibcfix="no"

+ 76 - 15
lgsm/functions/info_messages.sh

@@ -2,7 +2,7 @@
 # LinuxGSM info_messages.sh function
 # Author: Daniel Gibbs
 # Website: https://linuxgsm.com
-# Description: Defines server info messages for details, alerts.
+# Description: Defines server info messages for details and alerts.
 
 # Standard Details
 # This applies to all engines
@@ -122,7 +122,9 @@ fn_info_message_gameserver(){
 	fn_messages_separator
 	{
 		# Server name
-		if [ -n "${servername}" ]; then
+		if [ -n "${gdname}" ]; then
+			echo -e "${blue}Server name:\t${default}${gdname}"
+		elif [ -n "${servername}" ]; then
 			echo -e "${blue}Server name:\t${default}${servername}"
 		fi
 
@@ -181,9 +183,43 @@ fn_info_message_gameserver(){
 			echo -e "${blue}Stats password:\t${default}${statspassword}"
 		fi
 
-		# Maxplayers
-		if [ -n "${maxplayers}" ]; then
-			echo -e "${blue}Maxplayers:\t${default}${maxplayers}"
+		# Players
+
+		if [ "${querystatus}" != "0" ]; then
+			if [ -n "${maxplayers}" ]; then
+				echo -e "${blue}Maxplayers:\t${default}${maxplayers}"
+			fi
+		else
+			if [ -n "${gdplayers}" ]&&[ -n "${gdmaxplayers}" ]; then
+				echo -e "${blue}Players:\t${default}${gdplayers}/${gdmaxplayers}"
+
+			elif [ -n "${gdplayers}" ]&&[ -n "${maxplayers}" ]; then
+				echo -e "${blue}Players:\t${default}${gdplayers}/${maxplayers}"
+
+			elif [ -z "${gdplayers}" ]&&[ -n "${gdmaxplayers}" ]; then
+				echo -e "${blue}Players:\t${default}0/${gdmaxplayers}"
+
+			elif [ -n "${gdplayers}" ]&&[ -z "${gdmaxplayers}" ]; then
+				echo -e "${blue}Players:\t${default}${gdplayers}|∞"
+
+			elif [ -z "${gdplayers}" ]&&[ -z "${gdmaxplayers}" ]&&[ -n "${maxplayers}" ]; then
+				echo -e "${blue}Maxplayers:\t${default}${maxplayers}"
+			fi
+		fi
+
+		# Bots
+		if [ -n "${gdbots}" ]; then
+			echo -e "${blue}Bots:\t${default}${gdbots}"
+		fi
+
+		# Current Map
+		if [ -n "${gdmap}" ]; then
+			echo -e "${blue}Current Map:\t${default}${gdmap}"
+		fi
+
+		# Default Map
+		if [ -n "${defaultmap}" ]; then
+			echo -e "${blue}Default Map:\t${default}${defaultmap}"
 		fi
 
 		# Game mode
@@ -406,19 +442,19 @@ fn_info_message_ports(){
 	for port_edit in "${ports_edit_array[@]}"
 	do
 		if [ "${shortname}" == "ut3" ]; then
-			parmslocation="${servercfgdir}/UTEngine.ini\n${servercfgdir}/UTWeb.ini"
+			parmslocation="${servercfgdir}/UTWeb.ini"
 		elif [ "${shortname}" == "kf2" ]; then
 			parmslocation="${servercfgdir}/LinuxServer-KFEngine.ini\n${servercfgdir}/KFWeb.ini"
 		elif [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then
 			parmslocation="${servercfgfullpath}"
 		fi
 	done
-	# engines/games that require editing in the script file
+	# engines/games that require editing the parms
 	local ports_edit_array=( "goldsource" "Factorio" "Hurtworld" "iw3.0" "Rust" "spark" "source" "starbound" "unreal4" "realvirtuality")
 	for port_edit in "${ports_edit_array[@]}"
 	do
 		if [ "${engine}" == "${port_edit}" ]||[ "${gamename}" == "${port_edit}" ]; then
-			parmslocation="${selfname}"
+			parmslocation="${configdirserver}"
 		fi
 	done
 	echo -e "${parmslocation}"
@@ -443,7 +479,7 @@ fn_info_logs(){
 
 	if [ -n "${lgsmlog}" ]; then
 		echo -e "\nScript log\n==================="
-		if [ ! "$(ls -A ${lgsmlogdir})" ]; then
+		if [ ! "$(ls -A "${lgsmlogdir}")" ]; then
 			echo "${lgsmlogdir} (NO LOG FILES)"
 		elif [ ! -s "${lgsmlog}" ]; then
 			echo "${lgsmlog} (LOG FILE IS EMPTY)"
@@ -456,7 +492,7 @@ fn_info_logs(){
 
 	if [ -n "${consolelog}" ]; then
 		echo -e "\nConsole log\n===================="
-		if [ ! "$(ls -A ${consolelogdir})" ]; then
+		if [ ! "$(ls -A "${consolelogdir}")" ]; then
 			echo "${consolelogdir} (NO LOG FILES)"
 		elif [ ! -s "${consolelog}" ]; then
 			echo "${consolelog} (LOG FILE IS EMPTY)"
@@ -469,12 +505,12 @@ fn_info_logs(){
 
 	if [ -n "${gamelogdir}" ]; then
 		echo -e "\nServer log\n==================="
-		if [ ! "$(ls -A ${gamelogdir})" ]; then
+		if [ ! "$(ls -A "${gamelogdir}")" ]; then
 			echo "${gamelogdir} (NO LOG FILES)"
 		else
 			echo "${gamelogdir}"
 			# dos2unix sed 's/\r//'
-			tail "${gamelogdir}"/* 2>/dev/null | grep -v "==>" | sed '/^$/d' | sed 's/\r//'| tail -25
+			tail "${gamelogdir}"/* 2>/dev/null | grep -v "==>" | sed '/^$/d' | sed 's/\r//' | tail -25
 		fi
 		echo ""
 	fi
@@ -739,6 +775,17 @@ fn_info_message_refractor(){
 	} | column -s $'\t' -t
 }
 
+fn_info_message_risingworld(){
+	echo -e "netstat -atunp | grep java"
+	echo -e ""
+	{
+		echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
+		echo -e "> Game/Query\tINBOUND\t${port}\ttcp/udp"
+		echo -e "> http query\tINBOUND\t${httpqueryport}\ttcp"
+		echo -e "> RCON\tINBOUND\t${rconport}\ttcp"
+	} | column -s $'\t' -t
+}
+
 fn_info_message_rust(){
 	echo -e "netstat -atunp | grep Rust"
 	echo -e ""
@@ -948,7 +995,8 @@ fn_info_message_unreal3(){
 	echo -e ""
 	{
 		echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
-		echo -e "> Game/Query\tINBOUND\t${port}\ttcp/udp"
+		echo -e "> Game\tINBOUND\t${port}\tudp"
+		echo -e "> Query\tINBOUND\t${queryport}\tudp"
 		echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp\tListenPort=${webadminport}"
 	} | column -s $'\t' -t
 	echo -e ""
@@ -967,8 +1015,8 @@ fn_info_message_kf2(){
 	echo -e ""
 	{
 		echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
-		echo -e "> Game\tINBOUND\t${port}\ttcp"
-		echo -e "> Query\tINBOUND\t${queryport}\ttcp/udp"
+		echo -e "> Game\tINBOUND\t${port}\ttcp\tPort=${port}"
+		echo -e "> Query\tINBOUND\t${queryport}\tudp"
 		echo -e "> Steam\tINBOUND\t20560\tudp"
 		echo -e "> WebAdmin\tINBOUND\t${webadminport}\ttcp\tListenPort=${webadminport}"
 	} | column -s $'\t' -t
@@ -992,6 +1040,15 @@ fn_info_message_wolfensteinenemyterritory(){
 	} | column -s $'\t' -t
 }
 
+fn_info_message_etlegacy(){
+	echo -e "netstat -atunp | grep etlded"
+	echo -e ""
+	{
+		echo -e "DESCRIPTION\tDIRECTION\tPORT\tPROTOCOL"
+		echo -e "> Game/Query\tINBOUND\t${port}\tudp"
+	} | column -s $'\t' -t
+}
+
 fn_info_message_mta(){
 	echo -e "netstat -atunp | grep mta-server64"
 	echo -e ""
@@ -1025,6 +1082,8 @@ fn_info_message_select_engine(){
 		fn_info_message_cod4
 	elif [ "${gamename}" == "Call of Duty: World at War" ]; then
 		fn_info_message_codwaw
+	elif [ "${gamename}" == "ET: Legacy" ]; then
+		fn_info_message_etlegacy
 	elif [ "${gamename}" == "Factorio" ]; then
 		fn_info_message_factorio
 	elif [ "${gamename}" == "Hurtworld" ]; then
@@ -1061,6 +1120,8 @@ fn_info_message_select_engine(){
 		fn_info_message_mumble
 	elif [ "${gamename}" == "Rust" ]; then
 		fn_info_message_rust
+	elif [ "${shortname}" == "rw" ]; then
+		fn_info_message_risingworld
 	elif [ "${gamename}" == "Wolfenstein: Enemy Territory" ]; then
 		fn_info_message_wolfensteinenemyterritory
 	elif [ "${engine}" == "refractor" ]; then

+ 13 - 1
lgsm/functions/info_parms.sh

@@ -24,6 +24,7 @@ fn_info_parms_ark(){
 
 fn_info_parms_realvirtuality(){
 	port=${port:-"0"}
+	queryport=$((port + 1))
 }
 
 fn_info_parms_cod(){
@@ -68,6 +69,14 @@ fn_info_parms_quake2(){
 	defaultmap=${defaultmap:-"NOT SET"}
 }
 
+fn_info_parms_risingworld(){
+	servername=${servername:-"NOT SET"}
+	port=${port:-"0"}
+	queryport=${port}
+	httpqueryport=$((port - 1))
+
+}
+
 fn_info_parms_rust(){
 	servername=${servername:-"NOT SET"}
 	port=${port:-"0"}
@@ -145,6 +154,9 @@ elif [ "${gamename}" == "Quake 2" ]||[ "${gamename}" == "Quake 3: Arena" ]; then
 # Rust
 elif [ "${gamename}" == "Rust" ]; then
 	fn_info_parms_rust
+# Rising World
+elif [ "${shortname}" == "rw" ]; then
+	fn_info_parms_risingworld
 # Serious Sam
 elif [ "${engine}" == "seriousengine35" ]; then
 	fn_info_config_seriousengine35
@@ -158,7 +170,7 @@ elif [ "${gamename}" == "Tower Unite" ]; then
 # Unreal/Unreal 2 engine
 elif [ "${engine}" == "unreal" ]||[ "${engine}" == "unreal2" ]; then
 	fn_info_parms_unreal
-# Unreal/Unreal 2 engine
+# Unreal 3 engine
 elif [ "${engine}" == "unreal3" ]; then
 	fn_info_parms_unreal3
 fi

+ 20 - 11
lgsm/functions/install_config.sh

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

+ 1 - 1
lgsm/functions/install_dst_token.sh

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

+ 2 - 2
lgsm/functions/install_factorio_save.sh

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

+ 2 - 2
lgsm/functions/install_gslt.sh

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

+ 3 - 3
lgsm/functions/install_logs.sh

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

+ 1 - 1
lgsm/functions/install_minecraft_eula.sh

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

+ 2 - 3
lgsm/functions/install_server_dir.sh

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

+ 5 - 13
lgsm/functions/install_server_files.sh

@@ -21,6 +21,8 @@ fn_install_server_files(){
 		remote_fileurl="http://files.linuxgsm.com/CallOfDuty4/cod4x18_dedrun.tar.bz2"; local_filedir="${tmpdir}"; local_filename="cod4x18_dedrun.tar.bz2"; chmodx="nochmodx" run="norun"; force="noforce"; md5="bebdfc1755626462bdaad49f6f926c08"
 	elif [ "${gamename}" == "Call of Duty: World at War" ]; then
 		remote_fileurl="http://files.linuxgsm.com/CallOfDutyWorldAtWar/codwaw-lnxded-1.7-full.tar.bz2"; local_filedir="${tmpdir}"; local_filename="codwaw-lnxded-1.7-full.tar.bz2"; chmodx="nochmodx" run="norun"; force="noforce"; md5="0489697ff3bf678c109bfb377d1b7895"
+	elif [ "${shortname}" == "etl" ]; then
+		remote_fileurl="http://files.linuxgsm.com/WolfensteinEnemyTerritory/etlegacy-v2.75-i386-et-260b.tar.bz2"; local_filedir="${tmpdir}"; local_filename="etlegacy-v2.75-i386-et-260b.tar.bz2"; chmodx="nochmodx" run="norun"; force="noforce"; md5="92d7d4c26e0a295daed78cef623eeabb"
 	elif [ "${gamename}" == "GoldenEye: Source" ]; then
 		remote_fileurl="http://files.linuxgsm.com/GoldenEyeSource/GoldenEye_Source_v5.0.6_full_server.tar.bz2"; local_filedir="${tmpdir}"; local_filename="GoldenEye_Source_v5.0.6_full_server.tar.bz2"; chmodx="nochmodx" run="norun"; force="noforce"; md5="c45c16293096706e8b5e2cd64a6f2931"
 	elif [ "${gamename}" == "Quake 2" ]; then
@@ -65,7 +67,7 @@ fn_install_server_files_steamcmd(){
 
 			if [ "${counter}" -ge "7" ]; then
 				echo "Removing $(find ${serverfiles} -type d -print0 | grep -Ez '[^/]{30}$')"
-				find ${serverfiles} -type d -print0 | grep -Ez '[^/]{30}$' | xargs -0 rm -rf
+				find "${serverfiles}" -type d -print0 | grep -Ez '[^/]{30}$' | xargs -0 rm -rf
 			fi
 			if [ "${counter}" -ge "9" ]; then
 				rm -rf "${steamcmddir}"
@@ -74,7 +76,7 @@ fn_install_server_files_steamcmd(){
 
 			# Detects if unbuffer command is available for 32 bit distributions only.
 			info_distro.sh
-			if [ $(command -v stdbuf 2>/dev/null) ]&&[ "${arch}" != "x86_64" ]; then
+			if [ "$(command -v stdbuf 2>/dev/null)" ]&&[ "${arch}" != "x86_64" ]; then
 				unbuffer="stdbuf -i0 -o0 -e0"
 			fi
 
@@ -85,11 +87,6 @@ fn_install_server_files_steamcmd(){
 				else
 					${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" ${branch} +quit
 					local exitcode=$?
-
-					if [ "${gamename}" == "Classic Offensive" ]; then
-						${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid_co}" ${branch} +quit
-						local exitcode=$?
-					fi
 				fi
 			elif [ "${counter}" -ge "5" ]; then
 				if [ "${engine}" == "goldsource" ]; then
@@ -98,11 +95,6 @@ fn_install_server_files_steamcmd(){
 				else
 					${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid}" ${branch} validate +quit
 					local exitcode=$?
-
-					if [ "${gamename}" == "Classic Offensive" ]; then
-						${unbuffer} ./steamcmd.sh +login "${steamuser}" "${steampass}" +force_install_dir "${serverfiles}" +app_update "${appid_co}" ${branch} -validate +quit
-						local exitcode=$?
-					fi
 				fi
 			fi
 		elif [ "${counter}" -ge "11" ]; then
@@ -128,7 +120,7 @@ fn_install_server_files_steamcmd(){
 echo ""
 echo "Installing ${gamename} Server"
 echo "================================="
-sleep 1
+sleep 0.5
 
 if [ -n "${appid}" ]; then
 	fn_install_server_files_steamcmd

+ 2 - 2
lgsm/functions/install_squad_license.sh

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

+ 1 - 1
lgsm/functions/install_steamcmd.sh

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

+ 6 - 6
lgsm/functions/install_ts3db.sh

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

+ 1 - 1
lgsm/functions/install_unreal_tournament_eula.sh

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

+ 2 - 2
lgsm/functions/install_ut2k4_key.sh

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

Alguns ficheiros não foram mostrados porque muitos ficheiros mudaram neste diff