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)
This commit is contained in:
Daniel Gibbs 2018-04-11 17:28:35 +01:00
parent add21a74bd
commit fff8e0a2f5
115 changed files with 2263 additions and 2073 deletions

15
.github/request-info.yml vendored Normal file
View File

@ -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
.github/support.yml vendored Normal file
View File

@ -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
.github/welcome.yml vendored Normal file
View File

@ -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

View File

@ -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

View File

@ -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.**

View File

@ -2,7 +2,7 @@
[![LinuxGSM](https://img.shields.io/badge/-LinuxGSM-2b2b2b.svg?logo=data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAACsAAABACAYAAACDbo5ZAAAGD0lEQVR4AcWYa2wUVRvHz75c2vJ2disXoUBEVIioRAx%2BMIFA1IRwUS6KCCiIKBrvhEYiiGm5iBgk8QOGEgUUDYTttmVZWFr2UmwURS6iYAoCtmisElSsdHdbkT7%2BTzoNy%2BGc2dm54C%2F5Rdkz85x%2FZ86ZOXOYXYhIg3Phx%2FA4PAcv6f%2Btg5vhHJjP3EcZsgsshufJHH%2FAJbDztQ7aG35J1vgCXn%2BtgvrgEbLHYei9FmE3kDOUuh10OGwjZ7gEh7kZ9gNyllK3gnrg7%2BQs56DHjbCDyB0GuRF2ArnDeDfCziF3mO1G2FfJHRa4EXYpuUOxG2GXkzuUuBH2TXKH5W6ELSV3eM%2BNsOUk5yQcAY8p2uvgSPitor3MjbB1UOQXOFBvHwpbhPYWOExvL4SNUOQ7p4P2JTlzhOPmCu0vCu1PQpE2WOhk2MdJjk9y7HNwP1wEPUJbAcmZ6WTYrYolnifbxZBiibnFySHQCkUaLdY7C0V4%2FT5OhF1JcuIW6%2B0lOcvsBi2Ezao3j8Ov7Quwj52w60jNKIs1R5GatVaDDoEXSU4D7GSxbidYT3IuwjusFK0mNUVMwaZNNbl%2B%2F87hoVCom0HthaQmnG3QB0lNPcxlCvz%2B0GtlZTuorCxYYlA%2FDzbY%2FnrAgV3hCVLzCDMgEAi9wMMi9IIM%2FUwnNXWwi5mwRaSmmmXA798xq%2F3Khp420VeE1LyS6eQeBhttSXgzywCCToIUCOyYZvKLOWWwkdfd6ORVpGYJM0F5efDe9mEQHGty2BWTmhVGO4PNBmOoKzMBxmo%2FhD25dWvljSbD5hjMkb9gT9lJq63Mzi1bKkbjloc7xBWtwiRrDASCVRi%2FRxA8if%2BvrawMTzYI%2FACpeUv2KFFtDcUyTKilCHcis8G1Ga7wHpLzG8wVFs1K7jaeUKHZfIxmkj9%2FM4S9x9RGiMEudo0QbCVu9Xqn5PWEwLUk5%2FP0iaXac53I0kAH9Sau4m54lo%2FdTMfyekLYKQZ7ub34AbMMlmw5irC2VYTN0fuVMYMf8JHxJ7L7YYXAlSRnI2%2F8RtH4siTsDMz%2BZ5yS15OEXUxyDjGD1%2BvEq8MG16CDzY6JepKwT6geYbzxb0XjGMl7vwGSgzZIwo4nOa1M8Yr9Afb%2Fj8L21%2FsXaeaNZ2A6KTiEASph%2F0vF80cn4tokqu79fzfCUk2vfF4%2FFdFGEjGPHvg2yWrsDG%2F4%2BqpZB8jPOiXjWk0y5iXdM3XhKUvxBTA9UvHuvNPh%2Bzb%2BWj10z6nwuHWBbQFMvNCjKnn7qd1jS%2Fnx9VX3b6jC%2BbwOr5eMe3%2B83IcW4%2F3qgT%2BUTbA9srGaiHsn8AKiF6Ld%2FxF%2FOx6eeAJXabvK78MTTornNMd6XJTVR7%2Fj9bBjhFxV%2FMc1kJOAy2AeA%2FgrV4mFVDZFCqm8rEJ6qysCAWqK9iaztRJRbWXa4moFTELOav7jY%2FqAvoXp0Gc9NX7bIZl17%2FZl0rC1wRLeno0NvP%2B0CTcYNnS8wW6CtzNANaxzKqo9hRNOQ8rGo7tmSsMe2zWdt2frqVRcm5s2fofCgawDNHRNxnyfqgsYez4y4ADCjRM9H73hsNWafILTQdaFiSTj%2BQ%2FxA6yH7d%2BCmR8XbYr0a7VTF2N4siSsb5qdos3R6%2FjGxpULFfw7EfORnbrI9TAToX0sD40%2F2ylcGdh2Rdhg%2BSf2gka9jRTqK9%2BGwgHz7RTfVbHxirDhivdthYUvMRX8aYAD9lstvi%2B0aDL2DUZ0eCBUNNVG0IP65FLTWqPdiqdC0koHTVXe7iyNRG23QotBEy1RbTAzQyrmnYUT2rLsoA13JpcB4eVC2daBM1g2JGLekmwf5On7EJfngfZTNnVSce8bFjaTmQdvs%2FXmO%2FJVpoXdx3RSUe9O00Fj3nUdy0RLgRHiHXOPGW1h2uKZ07c9rG%2Bxyefp23pQeyBIEQoavYlakrG8fnrY5yHn2fbxXzAgw7m8bT5zkkSk4C7cpmOK21esB%2FXAQ5DzFfTo43%2BF%2FDzf0eZ4wZ3MDSjMcvD6nIeOahGgia%2FyU3HforTPkWkwnakdn0cI9jqfbPjD%2FuQLJr6644snlgX%2FApOMoyd1R5%2FxAAAAAElFTkSuQmCC)](https://linuxgsm.com)
[![Build Status](https://travis-ci.org/GameServerManagers/LinuxGSM.svg?branch=master)](https://travis-ci.org/GameServerManagers/LinuxGSM)
[![Under Development](https://badge.waffle.io/GameServerManagers/LinuxGSM.svg?label=Under%20Development&title=Under%20Development)](http://waffle.io/GameServerManagers/LinuxGSM)
[![Under Development](https://badge.waffle.io/GameServerManagers/LinuxGSM.svg?label=Status:%20under%20development&title=Under%20Development)](http://waffle.io/GameServerManagers/LinuxGSM)
[![Discord](https://discordapp.com/api/guilds/127498813903601664/widget.png?style=shield)](https://linuxgsm.com/discord)
[![MIT Licence](https://badges.frapsoft.com/os/mit/mit.svg?v=103)](https://github.com/GameServerManagers/LinuxGSM/blob/master/LICENSE)
[![made-with-bash](https://img.shields.io/badge/-Made%20with%20Bash-1f425f.svg?logo=image%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyZpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw%2FeHBhY2tldCBiZWdpbj0i77u%2FIiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8%2BIDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXBNTTpJbnN0YW5jZUlEPSJ4bXAuaWlkOkE3MDg2QTAyQUZCMzExRTVBMkQxRDMzMkJDMUQ4RDk3IiB4bXBNTTpEb2N1bWVudElEPSJ4bXAuZGlkOkE3MDg2QTAzQUZCMzExRTVBMkQxRDMzMkJDMUQ4RDk3Ij4gPHhtcE1NOkRlcml2ZWRGcm9tIHN0UmVmOmluc3RhbmNlSUQ9InhtcC5paWQ6QTcwODZBMDBBRkIzMTFFNUEyRDFEMzMyQkMxRDhEOTciIHN0UmVmOmRvY3VtZW50SUQ9InhtcC5kaWQ6QTcwODZBMDFBRkIzMTFFNUEyRDFEMzMyQkMxRDhEOTciLz4gPC9yZGY6RGVzY3JpcHRpb24%2BIDwvcmRmOlJERj4gPC94OnhtcG1ldGE%2BIDw%2FeHBhY2tldCBlbmQ9InIiPz6lm45hAAADkklEQVR42qyVa0yTVxzGn7d9Wy03MS2ii8s%2BeokYNQSVhCzOjXZOFNF4jx%2BMRmPUMEUEqVG36jo2thizLSQSMd4N8ZoQ8RKjJtooaCpK6ZoCtRXKpRempbTv5ey83bhkAUphz8fznvP8znn%2B%2F3NeEEJgNBoRRSmz0ub%2FfuxEacBg%2FDmYtiCjgo5NG2mBXq%2BH5I1ogMRk9Zbd%2BQU2e1ML6VPLOyf5tvBQ8yT1lG10imxsABm7SLs898GTpyYynEzP60hO3trHDKvMigUwdeaceacqzp7nOI4n0SSIIjl36ao4Z356OV07fSQAk6xJ3XGg%2BLCr1d1OYlVHp4eUHPnerU79ZA%2F1kuv1JQMAg%2BE4O2P23EumF3VkvHprsZKMzKwbRUXFEyTvSIEmTVbrysp%2BWr8wfQHGK6WChVa3bKUmdWou%2BjpArdGkzZ41c1zG%2Fu5uGH4swzd561F%2BuhIT4%2BLnSuPsv9%2BJKIpjNr9dXYOyk7%2FBZrcjIT4eCnoKgedJP4BEqhG77E3NKP31FO7cfQA5K0dSYuLgz2TwCWJSOBzG6crzKK%2BohNfni%2Bx6OMUMMNe%2Fgf7ocbw0v0acKg6J8Ql0q%2BT%2FAXR5PNi5dz9c71upuQqCKFAD%2BYhrZLEAmpodaHO3Qy6TI3NhBpbrshGtOWKOSMYwYGQM8nJzoFJNxP2HjyIQho4PewK6hBktoDcUwtIln4PjOWzflQ%2Be5yl0yCCYgYikTclGlxadio%2BBQCSiW1UXoVGrKYwH4RgMrjU1HAB4vR6LzWYfFUCKxfS8Ftk5qxHoCUQAUkRJaSEokkV6Y%2F%2BJUOC4hn6A39NVXVBYeNP8piH6HeA4fPbpdBQV5KOx0QaL1YppX3Jgk0TwH2Vg6S3u%2BdB91%2B%2FpuNYPYFl5uP5V7ZqvsrX7jxqMXR6ff3gCQSTzFI0a1TX3wIs8ul%2Bq4HuWAAiM39vhOuR1O1fQ2gT%2F26Z8Z5vrl2OHi9OXZn995nLV9aFfS6UC9JeJPfuK0NBohWpCHMSAAsFe74WWP%2BvT25wtP9Bpob6uGqqyDnOtaeumjRu%2ByFu36VntK%2FPA5umTJeUtPWZSU9BCgud661odVp3DZtkc7AnYR33RRC708PrVi1larW7XwZIjLnd7R6SgSqWSNjU1B3F72pz5TZbXmX5vV81Yb7Lg7XT%2FUXriu8XLVqw6c6XqWnBKiiYU%2BMt3wWF7u7i91XlSEITwSAZ%2FCzAAHsJVbwXYFFEAAAAASUVORK5CYII%3D)](https://www.gnu.org/software/bash/)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

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

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

View File

@ -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>

Before

Width:  |  Height:  |  Size: 12 KiB

View File

@ -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>

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@ -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>

Before

Width:  |  Height:  |  Size: 18 KiB

View File

@ -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>

Before

Width:  |  Height:  |  Size: 13 KiB

View File

@ -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>

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 128 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 653 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1008 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

View File

@ -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"

View File

@ -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"

View File

@ -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"

View File

@ -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

1 arma3 arma3server ARMA 3
57 ro roserver Red Orchestra: Ostfront 41-45
58 ricochet ricochetserver Ricochet
59 rust rustserver Rust
60 rw rwserver Rising World
61 samp sampserver San Andreas Multiplayer
62 ss3 ss3server Serious Sam 3: BFE
63 sb sbserver Starbound
74 ut3 ut3server Unreal Tournament 3
75 ut99 ut99server Unreal Tournament 99
76 wet wetserver Wolfenstein: Enemy Territory
77 etl etlserver ET: Legacy
78 zps zpsserver Zombie Panic! Source

View File

@ -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(){

View File

@ -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}"

View File

@ -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}"

View File

@ -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}"

View File

@ -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}"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
}

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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"

View File

@ -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'

View File

@ -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}"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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}: "
fn_print_fail_eol_nl
fn_script_log_error "Checking session: ${ts3error}: FAIL"
failurereason="${ts3error}"
alert="restart"
alert.sh
fn_script_log_info "Monitor is starting ${servername}"
sleep 1
command_restart.sh
fi
}
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
fi
done
else
fn_print_error "Checking session: "
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: 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_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
# 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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
}

View File

@ -269,6 +269,11 @@ functionfile="${FUNCNAME}"
fn_fetch_function
}
command_dev_query_raw.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
# Fix
fix.sh(){
@ -306,12 +311,23 @@ 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_kf2.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_mta.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
@ -321,12 +337,22 @@ functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_kf.sh(){
fix_rust.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_kf2.sh(){
fix_rw.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_ut3.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_rust.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
@ -341,16 +367,6 @@ functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_rust.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
fix_mta.sh(){
functionfile="${FUNCNAME}"
fn_fetch_function
}
# Info
info_config.sh(){
@ -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
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

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

10
lgsm/functions/fix_rw.sh Normal file
View File

@ -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"

View File

@ -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

View File

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

20
lgsm/functions/fix_ut3.sh Normal file
View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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 )

View File

@ -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"

View File

@ -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"

View File

@ -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}."

View File

@ -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"

View File

@ -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"

View File

@ -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

View File

@ -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

View File

@ -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 ""

View File

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

View File

@ -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

View File

@ -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/"

View File

@ -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"

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