diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md index 6bcd96b1cc4..b184b097bcb 100644 --- a/.github/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -1,5 +1,7 @@ +All users are expected to review [/docs/CODE_OF_CONDUCT.md](/docs/CODE_OF_CONDUCT.md) before interacting with the repository or other users. + Baystation12 is licensed under the GNU Affero General Public License version 3, which can be found in full in LICENSE-AGPL3.txt. -Commits with a git authorship date prior to `1420675200 +0000` (2015/01/08 00:00) are licensed under the GNU General Public License version 3, which can be found in full in LICENSE-GPL3.txt. +Commits with a git authorship date prior to `1420675200 +0000` (2015/01/08 00:00 GMT) are licensed under the GNU General Public License version 3, which can be found in full in LICENSE-GPL3.txt. -All commits whose authorship dates are not prior to `1420675200 +0000` are assumed to be licensed under AGPL v3, if you wish to license under GPL v3 please make this clear in the commit message and any added files. +All commits whose authorship dates on or after `1420675200 +0000` are assumed to be licensed under AGPL v3, if you wish to license under GPL v3 please make this clear in the commit message and any added files. \ No newline at end of file diff --git a/.github/folder_note.md b/.github/folder_note.md new file mode 100644 index 00000000000..da68fea1ffa --- /dev/null +++ b/.github/folder_note.md @@ -0,0 +1,11 @@ +GitHub allows repositories to create files which activate certain presentation features on their website. +GitHub looks for these files placed in the root directory, [/docs](/docs), and [/.github](/.github). +Only one copy of a file is necessary in any of these folders. Do not place multiple copies. + +Files pertaining to GitHub presentation *only* should be placed in `/.github`. + +Procedural and documentative information should be placed in `/docs`. Current and active legal information, +as well as the primary README.md, should be kept in `root`. + +If any of these folder's contents conflict with terms and procedures defined in `root` or `/docs`, then `root` +or `/docs` will take precedence, in that order. \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 6452682250d..8c6c4726330 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,7 +6,7 @@ jdk: openjdk8 env: global: BYOND_MAJOR="512" - BYOND_MINOR="1472" + BYOND_MINOR="1479" # ALL MAPS MUST BE PRESENT HERE # IF THEY ARE NOT, YOUR BUILD WILL FAIL diff --git a/README.md b/README.md index e8141a808a6..5a197590b05 100644 --- a/README.md +++ b/README.md @@ -4,106 +4,36 @@ --- -### LICENSE -The code for Baystation12 is licensed under the [GNU Affero General Public License v3](http://www.gnu.org/licenses/agpl.html), which can be found in full in LICENSE. - -Code with a git authorship date prior to `1420675200 +0000` (2015/01/08 00:00) is licensed under the GNU General Public License version 3, which can be found in full in GPL3.txt. - -All code where the authorship dates are not prior to `1420675200 +0000` is assumed to be licensed under AGPL v3, if you wish to license under GPL v3 please make this clear in the commit message and any added files. - -If you wish to develop and host this codebase in a closed source manner you may use all commits prior to `1420675200 +0000`, which are licensed under GPL v3. The major change here is that if you host a server using any code licensed under AGPLv3 you are required to provide full source code for your servers users as well including addons and modifications you have made. - -See [here](https://www.gnu.org/licenses/why-affero-gpl.html) for more information. - -tgui clientside is licensed as a subproject under the MIT license. -Font Awesome font files, used by tgui, are licensed under the SIL Open Font License v1.1 -tgui assets are licensed under a [Creative Commons Attribution-ShareAlike 4.0 International License](http://creativecommons.org/licenses/by-sa/4.0/). - -See tgui/LICENSE.md for the MIT license. -See tgui/assets/fonts/SIL-OFL-1.1-LICENSE.md for the SIL Open Font License. - -All assets including icons and sound are under a [Creative Commons 3.0 BY-SA license](http://creativecommons.org/licenses/by-sa/3.0/) unless otherwise indicated. - -### GETTING THE CODE -The simplest way to obtain the code is using the github .zip feature. - -Click [here](https://github.com/Baystation12/Baystation12/archive/dev.zip) to get the latest code as a .zip file, then unzip it to wherever you want. - -The more complicated and easier to update method is using git. You'll need to download git or some client from [here](http://git-scm.com/). When that's installed, right click in any folder and click on "Git Bash". When that opens, type in: - - git clone https://github.com/Baystation12/Baystation12.git - -(hint: hold down ctrl and press insert to paste into git bash) - -This will take a while to download, but it provides an easier method for updating. - ---- +### CONTRIBUTING GUIDELINES -### INSTALLATION +**Please refrain from making non code related comments in pull requests on GitHub.** See the Code of Conduct on where you may provide feedback to users. -First-time installation should be fairly straightforward. First, you'll need BYOND installed. You can get it from [here](http://www.byond.com/). - -This is a sourcecode-only release, so the next step is to compile the server files. Open baystation12.dme by double-clicking it, open the Build menu, and click compile. This'll take a little while, and if everything's done right you'll get a message like this: - - saving baystation12.dmb (DEBUG mode) - - baystation12.dmb - 0 errors, 0 warnings - -If you see any errors or warnings, something has gone wrong - possibly a corrupt download or the files extracted wrong, or a code issue on the main repo. Ask on IRC. - -Once that's done, open up the config folder. You'll want to edit config.txt to set the probabilities for different gamemodes in Secret and to set your server location so that all your players don't get disconnected at the end of each round. It's recommended you don't turn on the gamemodes with probability 0, as they have various issues and aren't currently being tested, so they may have unknown and bizarre bugs. - -You'll also want to edit admins.txt to remove the default admins and add your own. "Game Master" is the highest level of access, and the other recommended admin levels for now are "Game Admin" and "Moderator". The format is: - - byondkey - Rank - -where the BYOND key must be in lowercase and the admin rank must be properly capitalised. There are a bunch more admin ranks, but these two should be enough for most servers, assuming you have trustworthy admins. - -Finally, to start the server, run Dream Daemon and enter the path to your compiled baystation12.dmb file. Make sure to set the port to the one you specified in the config.txt, and set the Security box to 'Trusted'. Then press GO and the server should start up and be ready to join. +All users are expected to review [/docs/CODE_OF_CONDUCT.md](/docs/CODE_OF_CONDUCT.md) before interacting with the repository or other users. --- -### WEBHOOKS - -If you wish to use Discord webhooks, which are a way of passing information from the server to a Discord channel, you will need to copy `webhooks.json` into `config/` from `config/example/` and add definitions pointing the desired event at the desired [Discord webhook URL](https://support.discordapp.com/hc/en-us/articles/228383668-Intro-to-Webhooks). Valid webhook IDs as of time of writing are as follows: -- webhook_roundend: The round has ended. Will include the mode name and summarize survivors and ghosts. -- webhook_roundstart: The master controller has finished initializing and the round will begin soon. -- webhook_submap_loaded: A submap has been loaded and placed, and is available for people to join. Includes the name of the submap. -- webhook_submap_vox: The vox submap specifically has been loaded and placed. This is distinct for the purposes of tagging vox players with a @mention. -- webhook_submap_skrell: The Skrell submap specifically has been loaded and placed. This is distinct for the purposes of tagging Skrell players with a @mention. -- webhook_custom_event: The custom event text for the round has been set or changed. - -Each definition can optionally include an array of roles to mention when the webhook is called. Roles must be provided using the role ID (ex. `<@&555231866735689749>`), which can be obtained by writing `\@somerole` into the chat, in order for pinging to work correctly. +### SECURITY -Webhooks additionally require a HTTP POST library called [byhttp](https://github.com/Lohikar/byhttp). The compiled lib, `byhttp.dll` on Windows or `libbyhttp.so` on Linux, must be placed in the lib directory by default in order for webhooks to function. The DLL location can be customized by supplying `WINDOWS_HTTP_POST_DLL_LOCATION` `UNIX_HTTP_POST_DLL_LOCATION`, or `HTTP_POST_DLL_LOCATION` as preprocessor macros containing the desired path. +Please see [/docs/SECURITY.md](/docs/SECURITY.md) for this repository's security policy, and how to report security issues. --- -### UPDATING - -To update an existing installation, first back up your /config and /data folders -as these store your server configuration, player preferences and banlist. - -If you used the zip method, you'll need to download the zip file again and unzip it somewhere else, and then copy the /config and /data folders over. - -If you used the git method, you simply need to type this in to git bash: +### LICENSE - git pull +The code for Baystation12 is licensed under the [GNU Affero General Public License v3](http://www.gnu.org/licenses/agpl.html), which can be found in full in [/LICENSE](/LICENSE). -When this completes, copy over your /data and /config folders again, just in case. +Code with a git authorship date prior to `1420675200 +0000` (2015/01/08 00:00 GMT) is licensed under the GNU General Public License version 3, which can be found in full in [/docs/GPL3.txt](/docs/GPL3.txt) -When you have done this, you'll need to recompile the code, but then it should work fine. +All code where the authorship dates on or after `1420675200 +0000` is assumed to be licensed under AGPL v3, if you wish to license under GPL v3 please make this clear in the commit message and any added files. ---- +If you wish to develop and host this codebase in a closed source manner you may use all commits prior to `1420675200 +0000`, which are licensed under GPL v3. The major change here is that if you host a server using any code licensed under AGPLv3 you are required to provide full source code for your servers users as well including addons and modifications you have made. -### Configuration +See [here](https://www.gnu.org/licenses/why-affero-gpl.html) for more information. -For a basic setup, simply copy every file from config/example to config. +All assets including icons and sound are under a [Creative Commons 3.0 BY-SA license](http://creativecommons.org/licenses/by-sa/3.0/) unless otherwise indicated. --- -### SQL Setup - -The SQL backend for the library/stats and bans requires a MySQL server. Your server details go in config/dbconfig.txt. +### GETTING THE CODE AND INSTALLING -For initial setup and migrations refer to sql/README.md +Please see [/docs/installation.md](/docs/installation.md) for instructions on obtaining, installing, updating, and running this code. diff --git a/.github/CODE_OF_CONDUCT.md b/docs/CODE_OF_CONDUCT.md similarity index 100% rename from .github/CODE_OF_CONDUCT.md rename to docs/CODE_OF_CONDUCT.md diff --git a/GPL3.txt b/docs/GPL3.txt similarity index 100% rename from GPL3.txt rename to docs/GPL3.txt diff --git a/SECURITY.md b/docs/SECURITY.md similarity index 100% rename from SECURITY.md rename to docs/SECURITY.md diff --git a/docs/folder_note.md b/docs/folder_note.md new file mode 100644 index 00000000000..da68fea1ffa --- /dev/null +++ b/docs/folder_note.md @@ -0,0 +1,11 @@ +GitHub allows repositories to create files which activate certain presentation features on their website. +GitHub looks for these files placed in the root directory, [/docs](/docs), and [/.github](/.github). +Only one copy of a file is necessary in any of these folders. Do not place multiple copies. + +Files pertaining to GitHub presentation *only* should be placed in `/.github`. + +Procedural and documentative information should be placed in `/docs`. Current and active legal information, +as well as the primary README.md, should be kept in `root`. + +If any of these folder's contents conflict with terms and procedures defined in `root` or `/docs`, then `root` +or `/docs` will take precedence, in that order. \ No newline at end of file diff --git a/docs/installation.md b/docs/installation.md new file mode 100644 index 00000000000..8fbfd6ddc0b --- /dev/null +++ b/docs/installation.md @@ -0,0 +1,84 @@ +### GETTING THE CODE + +The simplest way to obtain the code is using Github's .zip feature. + +Click [here](https://github.com/Baystation12/Baystation12/archive/dev.zip) to get the latest code as a .zip file, then unzip it to wherever you want. + +The more complicated and easier to update method is using git. You'll need to download git or some client from [here](http://git-scm.com/). When that's installed, right click in any folder and click on "Git Bash". When that opens, type in: + + git clone https://github.com/Baystation12/Baystation12.git + +(hint: hold down ctrl and press insert to paste into git bash) + +This will take a while to download, but it provides an easier method for updating. + +--- + +### INSTALLATION + +First-time installation should be fairly straightforward. First, you'll need BYOND installed. You can get it from [here](http://www.byond.com/). + +This is a sourcecode-only release, so the next step is to compile the server files. Open `baystation12.dme` by double-clicking it, open the Build menu, and click compile. This'll take a little while, and if everything's done right you'll get a message like this: + + saving baystation12.dmb (DEBUG mode) + + baystation12.dmb - 0 errors, 0 warnings + +If you see any errors or warnings, something has gone wrong - possibly a corrupt download or the files extracted wrong, or a code issue on the main repo. Ask on IRC or discord. + +--- + +### CONFIGURATION + +Copy the contents of the `/config/examples` folder into `/config`. You will now work with everthing contained within `/config`. + +Edit `config.txt` to set the probabilities for different gamemodes in Secret and to set your server location so that all your players don't get disconnected at the end of each round. It's recommended you don't turn on the gamemodes with probability 0, as they have various issues and aren't currently being tested, they may have unknown and bizarre bugs. + +Edit `admins.txt` to remove the default admins and add your own. "Game Master" is the highest level of access, and the other recommended admin levels for now are "Game Admin" and "Moderator". The format is: + + byondkey - Rank + +where the BYOND key must be in lowercase and the admin rank must be properly capitalised. There are a bunch more admin ranks, but these two should be enough for most servers, assuming you have trustworthy admins. + +To start the server, run Dream Daemon and enter the path to your compiled `baystation12.dmb` file. Make sure to set the port to the one you specified in the `config.txt`, and set the Security box to 'Trusted' so you don't have to confirm access to every single configuration and storage file for the server. Then press GO and the server should start up and be ready to join. + +--- + +### WEBHOOKS + +If you wish to use Discord webhooks, which are a way of passing information from the server to a Discord channel, you will need to copy `webhooks.json` into `config/` from `config/example/` and add definitions pointing the desired event at the desired [Discord webhook URL](https://support.discordapp.com/hc/en-us/articles/228383668-Intro-to-Webhooks). Valid webhook IDs as of time of writing are as follows: +- webhook_roundend: The round has ended. Will include the mode name and summarize survivors and ghosts. +- webhook_roundstart: The master controller has finished initializing and the round will begin soon. +- webhook_submap_loaded: A submap has been loaded and placed, and is available for people to join. Includes the name of the submap. +- webhook_submap_vox: The vox submap specifically has been loaded and placed. This is distinct for the purposes of tagging vox players with a @mention. +- webhook_submap_skrell: The Skrell submap specifically has been loaded and placed. This is distinct for the purposes of tagging Skrell players with a @mention. +- webhook_custom_event: The custom event text for the round has been set or changed. + +Each definition can optionally include an array of roles to mention when the webhook is called. Roles must be provided using the role ID (ex. `<@&555231866735689749>`), which can be obtained by writing `\@somerole` into the chat, in order for pinging to work correctly. + +Webhooks additionally require a HTTP POST library called [byhttp](https://github.com/Lohikar/byhttp). The compiled lib, `byhttp.dll` on Windows or `libbyhttp.so` on Linux, must be placed in the lib directory by default in order for webhooks to function. The DLL location can be customized by supplying `WINDOWS_HTTP_POST_DLL_LOCATION` `UNIX_HTTP_POST_DLL_LOCATION`, or `HTTP_POST_DLL_LOCATION` as preprocessor macros containing the desired path. + +--- + +### UPDATING + +To update an existing installation, first back up your `/config` and `/data` folders +as these store your server configuration, player preferences and banlist. + +If you used the zip method, you'll need to download the zip file again and unzip it somewhere else, and then copy the `/config` and `/data` folders over. + +If you used the git method, you simply need to type this in to git bash: + + git pull + +When this completes, copy over your `/data` and `/config` folders again, just in case. + +When you have done this, you'll need to recompile the code, but then it should work fine. + +--- + +### SQL Setup + +The SQL backend for the `/library/stats` and bans requires a MySQL server. Your server details go in `/config/dbconfig.txt`. + +For initial setup and migrations refer to `/sql/README.md`