From 8fecd3b67fbb8dc0967cc2c6d752ca1f4fae8b4e Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Tue, 31 May 2022 18:58:42 +1000 Subject: [PATCH 01/52] Update rights.md to match fosscord-server/pulls/760 --- docs/api/rights.md | 106 +++++++++++++++++++++++++++++---------------- 1 file changed, 68 insertions(+), 38 deletions(-) diff --git a/docs/api/rights.md b/docs/api/rights.md index 3b3755e..b2ea158 100644 --- a/docs/api/rights.md +++ b/docs/api/rights.md @@ -5,43 +5,73 @@ User rights are instance-wide per-user permission toggle that affects instance-wide permissions of users, such as the ability to edit one's own messages. - !!! warning The default rights of a user is **no rights whatsoever**, make sure you grant users your desired set of rights. +You may modify a users rights by editing the `rights` column in the `users` table. +See [Database](/server/database) and [Configuration](/server/configuration) for more information. -| Right | Value | Grants when it's 1 | -| ---------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| `OPERATOR` | 1 << 0 | All rights | -| `MANAGE_APPLICATIONS` | 1 << 1 | Ability to alter or remove others' applications | -| `MANAGE_GUILDS` | 1 << 2 | Same as the per-guild `MANAGE_GUILD` permission, but applies to all guilds and DM channels, can join any guild without invite | -| `MANAGE_MESSAGES` | 1 << 3 | Can delete or edit any message they can read | -| `MANAGE_RATE_LIMITS` | 1 << 4 | Add, change, define rate limits of other users, can also grant others `BYPASS_RATE_LIMITS` when combined with `BYPASS_RATE_LIMITS` and `MANAGE_USERS` | -| `MANAGE_ROUTING` | 1 << 5 | Create, alter, enable, disable custom message routing rules in any channel/guild | -| `MANAGE_TICKETS` | 1 << 6 | Respond to or resolve other users' support tickets | -| `MANAGE_USERS` | 1 << 7 | Create, alter, remove, ban users; create, modify, remove user groups | -| `ADD_MEMBERS` | 1 << 8 | Can manually add members into their guilds and group DMs | -| `BYPASS_RATE_LIMITS` | 1 << 9 | Makes the user exempt from all rate limits | -| `CREATE_APPLICATIONS` | 1 << 10 | Can create, edit, remove own applications | -| `CREATE_CHANNELS` | 1 << 11 | Can create guild channels and custom channels | -| `CREATE_DMS` | 1 << 12 | Can create 1:1 DMs (a user without `SEND_MESSAGES` cannot be added however) | -| `CREATE_DM_GROUPS` | 1 << 13 | Can create group DMs (a user without `SEND_MESSAGES` cannot be added however) | -| `CREATE_GUILDS` | 1 << 14 | Can create mass invites in the guilds that they have `CREATE_INSTANT_INVITE` | -| `CREATE_GUILDS` | 1 << 15 | Can create guilds | -| `CREATE_ROLES` | 1 << 16 | Can create roles and per-guild or per-channel permission overrides in the guilds that they have permissions | -| `CREATE_TEMPLATES` | 1 << 17 | Can create templates for guilds, custom channels and channels with custom routing | -| `CREATE_WEBHOOKS` | 1 << 18 | Can create webhooks in the guilds that they have permissions | -| `JOIN_GUILDS` | 1 << 19 | Can join guilds by using invites or vanity names | -| `PIN_MESSAGES` | 1 << 20 | Can modify the pinned messages in the guilds that they have permission | -| `SELF_ADD_REACTIONS` | 1 << 21 | Can react to messages, subject to permissions | -| `SELF_DELETE_MESSAGES` | 1 << 22 | Can delete own messages | -| `SELF_EDIT_MESSAGES` | 1 << 23 | Can edit own messages | -| `SELF_EDIT_NAME` | 1 << 24 | Can edit own username, nickname and avatar | -| `SEND_MESSAGES` | 1 << 25 | Can send messages in the channels that they have permissions | -| `USE_ACTIVITIES` | 1 << 26 | Can use voice activities, such as watch together or whiteboard | -| `USE_VIDEO` | 1 << 27 | Can use video and screenshare in guilds/channels that they have permissions | -| `USE_VOICE` | 1 << 28 | Can use voice in guilds/channels that they have permissions | -| `INVITE_USERS` | 1 << 29 | Can create user-specific invites in the guilds that they have `INVITE_USERS` | -| `SELF_DELETE_DISABLE` | 1 << 30 | Can delete/disable own account | -| `DEBTABLE` | 1 << 31 | Can use pay-to-use features once paid | -| `CREDITABLE` | 1 << 32 | Can earn money using monetization features in the guilds that have `MONETIZATION_ENABLED` | +The rights value is a bitfield string, and to grant multiple rights you must add their values together. +For example, to grant `CREATE_GUILDS` and `SEND_MESSAGES`, grant the user(s) +`(1 << 15) = 32768` + +`(1 << 25) = 33554432` = +`33587200` -Those individual right bits are combined to create the overall rights. Those rights may be granted to individual users -as well as to user groups. +The default user rights are `648540059648`, granding rights for: + +| Default Rights | | | +|---------------------|-------------------------|---------------------------| +| `CREATE_CHANNELS` | `SELF_DELETE_MESSAGES` | `USE_ACHIEVEMENTS` | +| `CREATE_DMS` | `SELF_EDIT_MESSAGES` | `SELF_ADD_DISCOVERABLE` | +| `CREATE_DM_GROUPS` | `SELF_EDIT_NAME` | `SELF_LEAVE_GROUPS` | +| `CREATE_GUILDS` | `SEND_MESSAGES` | `KICK_BAN_MEMBERS` | +| `CREATE_INVITES` | `USE_ACTIVITIES` | `SELF_ADD_REACTIONS` | +| `CREATE_ROLES` | `USE_VIDEO` | `DEBTABLE` | +| `CREATE_TEMPLATES` | `USE_VOICE` | `PIN_MESSAGES` | +| `CREATE_WEBHOOKS` | `INVITE_USERS` | `SELF_DELETE_DISABLE` | +| `JOIN_GUILDS` | | | + +Below is a list of all available rights + +| Right | Value | Grants when it's 1 | +| --------------------------| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `OPERATOR` | 1 << 0 | All rights | +| `MANAGE_APPLICATIONS` | 1 << 1 | Ability to alter or remove others' applications | +| `MANAGE_GUILDS` | 1 << 2 | Same as the per-guild `MANAGE_GUILD` permission, but applies to all guilds and DM channels, can join any guild without invite | +| `MANAGE_MESSAGES` | 1 << 3 | Can delete or edit any message they can read | +| `MANAGE_RATE_LIMITS` | 1 << 4 | Add, change, define rate limits of other users, can also grant others `BYPASS_RATE_LIMITS` when combined with `BYPASS_RATE_LIMITS` and `MANAGE_USERS` | +| `MANAGE_ROUTING` | 1 << 5 | Create, alter, enable, disable custom message routing rules in any channel/guild | +| `MANAGE_TICKETS` | 1 << 6 | Respond to or resolve other users' support tickets | +| `MANAGE_USERS` | 1 << 7 | Create, alter, remove, ban users; create, modify, remove user groups | +| `ADD_MEMBERS` | 1 << 8 | Can manually add members into their guilds and group DMs | +| `BYPASS_RATE_LIMITS` | 1 << 9 | Makes the user exempt from all rate limits | +| `CREATE_APPLICATIONS` | 1 << 10 | Can create, edit, remove own applications | +| `CREATE_CHANNELS` | 1 << 11 | Can create guild channels and custom channels | +| `CREATE_DMS` | 1 << 12 | Can create 1:1 DMs (a user without `SEND_MESSAGES` cannot be added however) | +| `CREATE_DM_GROUPS` | 1 << 13 | Can create group DMs (a user without `SEND_MESSAGES` cannot be added however) | +| `CREATE_GUILDS` | 1 << 14 | Can create guilds | +| `CREATE_INVITES` | 1 << 15 | Can create mass invites in the guilds that they have `CREATE_INSTANT_INVITE` | +| `CREATE_ROLES` | 1 << 16 | Can create roles and per-guild or per-channel permission overrides in the guilds that they have permissions | +| `CREATE_TEMPLATES` | 1 << 17 | Can create templates for guilds, custom channels and channels with custom routing | +| `CREATE_WEBHOOKS` | 1 << 18 | Can create webhooks in the guilds that they have permissions | +| `JOIN_GUILDS` | 1 << 19 | Can join guilds by using invites or vanity names | +| `PIN_MESSAGES` | 1 << 20 | Can modify the pinned messages in the guilds that they have permission | +| `SELF_ADD_REACTIONS` | 1 << 21 | Can react to messages, subject to permissions | +| `SELF_DELETE_MESSAGES` | 1 << 22 | Can delete own messages | +| `SELF_EDIT_MESSAGES` | 1 << 23 | Can edit own messages | +| `SELF_EDIT_NAME` | 1 << 24 | Can edit own username, nickname and avatar | +| `SEND_MESSAGES` | 1 << 25 | Can send messages in the channels that they have permissions | +| `USE_ACTIVITIES` | 1 << 26 | Can use voice activities, such as watch together or whiteboard | +| `USE_VIDEO` | 1 << 27 | Can use video and screenshare in guilds/channels that they have permissions | +| `USE_VOICE` | 1 << 28 | Can use voice in guilds/channels that they have permissions | +| `INVITE_USERS` | 1 << 29 | Can create user-specific invites in the guilds that they have `INVITE_USERS` | +| `SELF_DELETE_DISABLE` | 1 << 30 | Can delete/disable own account | +| `DEBTABLE` | 1 << 31 | Can use pay-to-use features once paid | +| `CREDITABLE` | 1 << 32 | Can earn money using monetization features in the guilds that have `MONETIZATION_ENABLED` | +| `KICK_BAN_MEMBERS` | 1 << 33 | Can kick or ban guild or group DM members in the guilds/groups that they have KICK_MEMBERS, or BAN_MEMBERS | +| `SELF_LEAVE_GROUPS` | 1 << 34 | Can leave the guilds or group DMs that they joined on their own (one can always leave a guild or group DMs they have been force-added) | +| `PRESENCE` | 1 << 35 | Inverts the presence confidentiality default (OPERATOR's presence is not routed by default, others' are) for a given user | +| `SELF_ADD_DISCOVERABLE` | 1 << 36 | Can mark discoverable guilds that they have permissions to mark as discoverable | +| `MANAGE_GUILD_DIRECTORY` | 1 << 37| Can change anything in the primary guild directory | +| `POGGERS` | 1 << 38 | Can send confetti, screenshake, random user mention (@someone) | +| `USE_ACHIEVEMENTS` | 1 << 39 | Can use achievements and cheers | +| `INITIATE_INTERACTIONS` | 1 << 40 | Can initiate interactions | +| `RESPOND_TO_INTERACTIONS` |1 << 41| Can respond to interactions | +| `SEND_BACKDATED_EVENTS` | 1 << 42 | Can send backdated events | \ No newline at end of file From 0279947d6b58f8ce57d4ee1c5d0e544d74111074 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:00:04 +1000 Subject: [PATCH 02/52] Update to remove default rights as original PR was not accepted --- docs/api/rights.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/docs/api/rights.md b/docs/api/rights.md index b2ea158..764387a 100644 --- a/docs/api/rights.md +++ b/docs/api/rights.md @@ -14,20 +14,6 @@ For example, to grant `CREATE_GUILDS` and `SEND_MESSAGES`, grant the user(s) `(1 << 25) = 33554432` = `33587200` -The default user rights are `648540059648`, granding rights for: - -| Default Rights | | | -|---------------------|-------------------------|---------------------------| -| `CREATE_CHANNELS` | `SELF_DELETE_MESSAGES` | `USE_ACHIEVEMENTS` | -| `CREATE_DMS` | `SELF_EDIT_MESSAGES` | `SELF_ADD_DISCOVERABLE` | -| `CREATE_DM_GROUPS` | `SELF_EDIT_NAME` | `SELF_LEAVE_GROUPS` | -| `CREATE_GUILDS` | `SEND_MESSAGES` | `KICK_BAN_MEMBERS` | -| `CREATE_INVITES` | `USE_ACTIVITIES` | `SELF_ADD_REACTIONS` | -| `CREATE_ROLES` | `USE_VIDEO` | `DEBTABLE` | -| `CREATE_TEMPLATES` | `USE_VOICE` | `PIN_MESSAGES` | -| `CREATE_WEBHOOKS` | `INVITE_USERS` | `SELF_DELETE_DISABLE` | -| `JOIN_GUILDS` | | | - Below is a list of all available rights | Right | Value | Grants when it's 1 | From ec9f43ec0ed754dc2f5b7ce8a23a5a620a1c940e Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:25:56 +1000 Subject: [PATCH 03/52] Brought back the previously removed table to show which rights would emulate discord.com. Also added a warning against setting rights to 1. --- docs/api/rights.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/api/rights.md b/docs/api/rights.md index 764387a..fa8d65f 100644 --- a/docs/api/rights.md +++ b/docs/api/rights.md @@ -14,6 +14,22 @@ For example, to grant `CREATE_GUILDS` and `SEND_MESSAGES`, grant the user(s) `(1 << 25) = 33554432` = `33587200` +!!! warning "The default rights are current `0`. ***NEVER*** set default rights to `1` ( `OPERATOR` ), as this allows ANY USER to perform ANY ACTION including shutting down the server. ONLY EVER GIVE YOURSELF `OPERATOR` RIGHTS." + +The rights value `648540060672` emulates the rights of users on Discord.com, granting: + +| Default Rights | | | +|---------------------|-------------------------|---------------------------| +| `CREATE_CHANNELS` | `SELF_DELETE_MESSAGES` | `USE_ACHIEVEMENTS` | +| `CREATE_DMS` | `SELF_EDIT_MESSAGES` | `SELF_ADD_DISCOVERABLE` | +| `CREATE_DM_GROUPS` | `SELF_EDIT_NAME` | `SELF_LEAVE_GROUPS` | +| `CREATE_GUILDS` | `SEND_MESSAGES` | `KICK_BAN_MEMBERS` | +| `CREATE_INVITES` | `USE_ACTIVITIES` | `SELF_ADD_REACTIONS` | +| `CREATE_ROLES` | `USE_VIDEO` | `DEBTABLE` | +| `CREATE_TEMPLATES` | `USE_VOICE` | `PIN_MESSAGES` | +| `CREATE_WEBHOOKS` | `INVITE_USERS` | `SELF_DELETE_DISABLE` | +| `JOIN_GUILDS` | `CREATE_APPLICATIONS` | | + Below is a list of all available rights | Right | Value | Grants when it's 1 | From 78aa838d8e7f3571c9ae75fdd930e6a643eb2929 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Wed, 1 Jun 2022 00:39:05 +1000 Subject: [PATCH 04/52] Removed DEBTABLE right from the emulated value --- docs/api/rights.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/api/rights.md b/docs/api/rights.md index fa8d65f..767aeca 100644 --- a/docs/api/rights.md +++ b/docs/api/rights.md @@ -16,7 +16,7 @@ For example, to grant `CREATE_GUILDS` and `SEND_MESSAGES`, grant the user(s) !!! warning "The default rights are current `0`. ***NEVER*** set default rights to `1` ( `OPERATOR` ), as this allows ANY USER to perform ANY ACTION including shutting down the server. ONLY EVER GIVE YOURSELF `OPERATOR` RIGHTS." -The rights value `648540060672` emulates the rights of users on Discord.com, granting: +The rights value `646392577024` emulates the rights of users on Discord.com, granting: | Default Rights | | | |---------------------|-------------------------|---------------------------| @@ -25,10 +25,10 @@ The rights value `648540060672` emulates the rights of users on Discord.com, gra | `CREATE_DM_GROUPS` | `SELF_EDIT_NAME` | `SELF_LEAVE_GROUPS` | | `CREATE_GUILDS` | `SEND_MESSAGES` | `KICK_BAN_MEMBERS` | | `CREATE_INVITES` | `USE_ACTIVITIES` | `SELF_ADD_REACTIONS` | -| `CREATE_ROLES` | `USE_VIDEO` | `DEBTABLE` | -| `CREATE_TEMPLATES` | `USE_VOICE` | `PIN_MESSAGES` | -| `CREATE_WEBHOOKS` | `INVITE_USERS` | `SELF_DELETE_DISABLE` | -| `JOIN_GUILDS` | `CREATE_APPLICATIONS` | | +| `CREATE_ROLES` | `USE_VIDEO` | `PIN_MESSAGES` | +| `CREATE_TEMPLATES` | `USE_VOICE` | `SELF_DELETE_DISABLE` | +| `CREATE_WEBHOOKS` | `INVITE_USERS` | `CREATE_APPLICATIONS` | +| `JOIN_GUILDS` | | | Below is a list of all available rights From 1e43aeaed64aee69038edefaa3e21deafdbcf16c Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Tue, 20 Dec 2022 23:29:35 +1100 Subject: [PATCH 05/52] Rewrite for maddy/refactor branch --- .github/workflows/build.yml | 36 +- README.md | 34 +- docs/api/encryption.md | 17 - docs/api/index.md | 5 - docs/api/rights.md | 79 ---- docs/assets/architecture.png | Bin 693663 -> 0 bytes docs/assets/banner.png | Bin 0 -> 195078 bytes docs/bots/index.md | 3 - docs/bots/setup.md | 79 ---- docs/client/connect.md | 53 --- docs/client/index.md | 5 - docs/client/plugins.md | 29 -- docs/client/themes.md | 11 - docs/contributing/conduct.md | 48 +++ docs/contributing/index.md | 65 +-- docs/contributing/server.md | 392 ------------------ docs/contributing/ui.md | 57 --- docs/faq.md | 26 -- docs/index.md | 63 +-- docs/resources.md | 46 -- docs/{api => }/routes.md | 2 +- docs/server/configuration.md | 64 --- docs/server/database.md | 23 - docs/server/env.md | 38 -- docs/server/hosting.md | 43 -- docs/server/index.md | 6 - docs/server/setup.md | 66 --- docs/server/ssl.md | 29 -- docs/server/systemd.md | 21 - docs/setup/bots/index.md | 61 +++ docs/setup/index.md | 0 docs/setup/server/configuration/env.md | 19 + .../server/configuration/guildFeatures.md | 8 + docs/setup/server/configuration/index.md | 11 + docs/setup/server/configuration/userFlags.md | 8 + docs/setup/server/database.md | 12 + docs/setup/server/imagor.md | 41 ++ docs/setup/server/index.md | 53 +++ docs/setup/server/reverseProxy.md | 51 +++ docs/setup/server/security/captcha.md | 0 docs/setup/server/security/index.md | 11 + docs/setup/server/security/limits.md | 1 + docs/setup/server/security/regTokens.md | 1 + docs/setup/server/security/rights.md | 69 +++ docs/setup/server/theming/index.md | 10 + mkdocs.yml | 55 +-- 46 files changed, 493 insertions(+), 1258 deletions(-) delete mode 100644 docs/api/encryption.md delete mode 100644 docs/api/index.md delete mode 100644 docs/api/rights.md delete mode 100644 docs/assets/architecture.png create mode 100644 docs/assets/banner.png delete mode 100644 docs/bots/index.md delete mode 100644 docs/bots/setup.md delete mode 100644 docs/client/connect.md delete mode 100644 docs/client/index.md delete mode 100644 docs/client/plugins.md delete mode 100644 docs/client/themes.md create mode 100644 docs/contributing/conduct.md delete mode 100644 docs/contributing/server.md delete mode 100644 docs/contributing/ui.md delete mode 100644 docs/faq.md delete mode 100644 docs/resources.md rename docs/{api => }/routes.md (89%) delete mode 100644 docs/server/configuration.md delete mode 100644 docs/server/database.md delete mode 100644 docs/server/env.md delete mode 100644 docs/server/hosting.md delete mode 100644 docs/server/index.md delete mode 100644 docs/server/setup.md delete mode 100644 docs/server/ssl.md delete mode 100644 docs/server/systemd.md create mode 100644 docs/setup/bots/index.md create mode 100644 docs/setup/index.md create mode 100644 docs/setup/server/configuration/env.md create mode 100644 docs/setup/server/configuration/guildFeatures.md create mode 100644 docs/setup/server/configuration/index.md create mode 100644 docs/setup/server/configuration/userFlags.md create mode 100644 docs/setup/server/database.md create mode 100644 docs/setup/server/imagor.md create mode 100644 docs/setup/server/index.md create mode 100644 docs/setup/server/reverseProxy.md create mode 100644 docs/setup/server/security/captcha.md create mode 100644 docs/setup/server/security/index.md create mode 100644 docs/setup/server/security/limits.md create mode 100644 docs/setup/server/security/regTokens.md create mode 100644 docs/setup/server/security/rights.md create mode 100644 docs/setup/server/theming/index.md diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9eeb77b..64bb3e0 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,22 +1,22 @@ name: Build to GitHub Pages on: - push: - branches: - - master + push: + branches: + - master jobs: - deploy: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 - with: - python-version: 3.x - - run: python3 -m pip install mkdocs-material mkdocs-render-swagger-plugin mkdocs-section-index - - run: mkdocs build - - run: echo docs.fosscord.com >> site/CNAME - - name: Deploy 🚀 - uses: JamesIves/github-pages-deploy-action@4.1.3 - with: - branch: gh-pages # The branch the action should deploy to. - folder: site # The folder the action should deploy. + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-python@v2 + with: + python-version: 3.x + - run: python3 -m pip install mkdocs-material mkdocs-render-swagger-plugin mkdocs-section-index + - run: mkdocs build + - run: echo docs.fosscord.com >> site/CNAME + - name: Deploy 🚀 + uses: JamesIves/github-pages-deploy-action@4.1.3 + with: + branch: gh-pages # The branch the action should deploy to. + folder: site # The folder the action should deploy. diff --git a/README.md b/README.md index 71b5aef..9fa5cf6 100644 --- a/README.md +++ b/README.md @@ -7,37 +7,37 @@ 1. Fork this repository. 2. Clone the forked repository. - ```bash - git clone https://github.com//fosscord-docs - ``` + ```bash + git clone https://github.com//fosscord-docs + ``` 3. Install dependencies. - ```bash - python3 -m pip install mkdocs-material mkdocs-render-swagger-plugin mkdocs-section-index - ``` + ```bash + python3 -m pip install mkdocs-material mkdocs-render-swagger-plugin mkdocs-section-index + ``` 4. Edit documents(s). - - Format document(s). + - Format document(s). - fosscord uses [prettier](https://prettier.io) formatter to consistently format our documents. Instructions to install and use prettier can be found [here](https://prettier.io/docs/en/install.html). + fosscord uses [prettier](https://prettier.io) formatter to consistently format our documents. Instructions to install and use prettier can be found [here](https://prettier.io/docs/en/install.html). - If you are using vscode, install the [prettier extension](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) to automatically format documents on save. + If you are using vscode, install the [prettier extension](https://marketplace.visualstudio.com/items?itemName=esbenp.prettier-vscode) to automatically format documents on save. 5. Test locally. - - Serve in http://127.0.0.1:8000 with hot reload: + - Serve in http://127.0.0.1:8000 with hot reload: - ```bash - python3 -m mkdocs serve - ``` + ```bash + python3 -m mkdocs serve + ``` - - Build for production: + - Build for production: - ```bash - python3 -m mkdocs build - ``` + ```bash + python3 -m mkdocs build + ``` 6. Commit changes with good commit messages. 7. Create a pull request. diff --git a/docs/api/encryption.md b/docs/api/encryption.md deleted file mode 100644 index d29702a..0000000 --- a/docs/api/encryption.md +++ /dev/null @@ -1,17 +0,0 @@ -# Encryption - -Note: End-to-end encryption is currently in the planning stage. Once MLS stabilises, we will start the implementation - -## Philosophy for the planned implementation - -Everything should be end-to-end encrypted by default. - -Everything should be configurable by the user/admin to their security needs. - -Once encryption is enabled you will not be able to disable it anymore. _(Plain text channels need be created as such)_ - -End to end encryption should also be possible on unsupported servers e.g. discord.com. _(through special formatted messages)_ - -Based on the concept that the server cannot be trusted and could be compromised. - -_more coming soon_ diff --git a/docs/api/index.md b/docs/api/index.md deleted file mode 100644 index cbc5649..0000000 --- a/docs/api/index.md +++ /dev/null @@ -1,5 +0,0 @@ -# API - -## [Routes](routes/) - -## [User rights](rights/) diff --git a/docs/api/rights.md b/docs/api/rights.md deleted file mode 100644 index 767aeca..0000000 --- a/docs/api/rights.md +++ /dev/null @@ -1,79 +0,0 @@ -# User rights - -## Introduction - -User rights are instance-wide per-user permission toggle that affects instance-wide permissions of users, -such as the ability to edit one's own messages. - -You may modify a users rights by editing the `rights` column in the `users` table. -See [Database](/server/database) and [Configuration](/server/configuration) for more information. - -The rights value is a bitfield string, and to grant multiple rights you must add their values together. -For example, to grant `CREATE_GUILDS` and `SEND_MESSAGES`, grant the user(s) -`(1 << 15) = 32768` + -`(1 << 25) = 33554432` = -`33587200` - -!!! warning "The default rights are current `0`. ***NEVER*** set default rights to `1` ( `OPERATOR` ), as this allows ANY USER to perform ANY ACTION including shutting down the server. ONLY EVER GIVE YOURSELF `OPERATOR` RIGHTS." - -The rights value `646392577024` emulates the rights of users on Discord.com, granting: - -| Default Rights | | | -|---------------------|-------------------------|---------------------------| -| `CREATE_CHANNELS` | `SELF_DELETE_MESSAGES` | `USE_ACHIEVEMENTS` | -| `CREATE_DMS` | `SELF_EDIT_MESSAGES` | `SELF_ADD_DISCOVERABLE` | -| `CREATE_DM_GROUPS` | `SELF_EDIT_NAME` | `SELF_LEAVE_GROUPS` | -| `CREATE_GUILDS` | `SEND_MESSAGES` | `KICK_BAN_MEMBERS` | -| `CREATE_INVITES` | `USE_ACTIVITIES` | `SELF_ADD_REACTIONS` | -| `CREATE_ROLES` | `USE_VIDEO` | `PIN_MESSAGES` | -| `CREATE_TEMPLATES` | `USE_VOICE` | `SELF_DELETE_DISABLE` | -| `CREATE_WEBHOOKS` | `INVITE_USERS` | `CREATE_APPLICATIONS` | -| `JOIN_GUILDS` | | | - -Below is a list of all available rights - -| Right | Value | Grants when it's 1 | -| --------------------------| ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | -| `OPERATOR` | 1 << 0 | All rights | -| `MANAGE_APPLICATIONS` | 1 << 1 | Ability to alter or remove others' applications | -| `MANAGE_GUILDS` | 1 << 2 | Same as the per-guild `MANAGE_GUILD` permission, but applies to all guilds and DM channels, can join any guild without invite | -| `MANAGE_MESSAGES` | 1 << 3 | Can delete or edit any message they can read | -| `MANAGE_RATE_LIMITS` | 1 << 4 | Add, change, define rate limits of other users, can also grant others `BYPASS_RATE_LIMITS` when combined with `BYPASS_RATE_LIMITS` and `MANAGE_USERS` | -| `MANAGE_ROUTING` | 1 << 5 | Create, alter, enable, disable custom message routing rules in any channel/guild | -| `MANAGE_TICKETS` | 1 << 6 | Respond to or resolve other users' support tickets | -| `MANAGE_USERS` | 1 << 7 | Create, alter, remove, ban users; create, modify, remove user groups | -| `ADD_MEMBERS` | 1 << 8 | Can manually add members into their guilds and group DMs | -| `BYPASS_RATE_LIMITS` | 1 << 9 | Makes the user exempt from all rate limits | -| `CREATE_APPLICATIONS` | 1 << 10 | Can create, edit, remove own applications | -| `CREATE_CHANNELS` | 1 << 11 | Can create guild channels and custom channels | -| `CREATE_DMS` | 1 << 12 | Can create 1:1 DMs (a user without `SEND_MESSAGES` cannot be added however) | -| `CREATE_DM_GROUPS` | 1 << 13 | Can create group DMs (a user without `SEND_MESSAGES` cannot be added however) | -| `CREATE_GUILDS` | 1 << 14 | Can create guilds | -| `CREATE_INVITES` | 1 << 15 | Can create mass invites in the guilds that they have `CREATE_INSTANT_INVITE` | -| `CREATE_ROLES` | 1 << 16 | Can create roles and per-guild or per-channel permission overrides in the guilds that they have permissions | -| `CREATE_TEMPLATES` | 1 << 17 | Can create templates for guilds, custom channels and channels with custom routing | -| `CREATE_WEBHOOKS` | 1 << 18 | Can create webhooks in the guilds that they have permissions | -| `JOIN_GUILDS` | 1 << 19 | Can join guilds by using invites or vanity names | -| `PIN_MESSAGES` | 1 << 20 | Can modify the pinned messages in the guilds that they have permission | -| `SELF_ADD_REACTIONS` | 1 << 21 | Can react to messages, subject to permissions | -| `SELF_DELETE_MESSAGES` | 1 << 22 | Can delete own messages | -| `SELF_EDIT_MESSAGES` | 1 << 23 | Can edit own messages | -| `SELF_EDIT_NAME` | 1 << 24 | Can edit own username, nickname and avatar | -| `SEND_MESSAGES` | 1 << 25 | Can send messages in the channels that they have permissions | -| `USE_ACTIVITIES` | 1 << 26 | Can use voice activities, such as watch together or whiteboard | -| `USE_VIDEO` | 1 << 27 | Can use video and screenshare in guilds/channels that they have permissions | -| `USE_VOICE` | 1 << 28 | Can use voice in guilds/channels that they have permissions | -| `INVITE_USERS` | 1 << 29 | Can create user-specific invites in the guilds that they have `INVITE_USERS` | -| `SELF_DELETE_DISABLE` | 1 << 30 | Can delete/disable own account | -| `DEBTABLE` | 1 << 31 | Can use pay-to-use features once paid | -| `CREDITABLE` | 1 << 32 | Can earn money using monetization features in the guilds that have `MONETIZATION_ENABLED` | -| `KICK_BAN_MEMBERS` | 1 << 33 | Can kick or ban guild or group DM members in the guilds/groups that they have KICK_MEMBERS, or BAN_MEMBERS | -| `SELF_LEAVE_GROUPS` | 1 << 34 | Can leave the guilds or group DMs that they joined on their own (one can always leave a guild or group DMs they have been force-added) | -| `PRESENCE` | 1 << 35 | Inverts the presence confidentiality default (OPERATOR's presence is not routed by default, others' are) for a given user | -| `SELF_ADD_DISCOVERABLE` | 1 << 36 | Can mark discoverable guilds that they have permissions to mark as discoverable | -| `MANAGE_GUILD_DIRECTORY` | 1 << 37| Can change anything in the primary guild directory | -| `POGGERS` | 1 << 38 | Can send confetti, screenshake, random user mention (@someone) | -| `USE_ACHIEVEMENTS` | 1 << 39 | Can use achievements and cheers | -| `INITIATE_INTERACTIONS` | 1 << 40 | Can initiate interactions | -| `RESPOND_TO_INTERACTIONS` |1 << 41| Can respond to interactions | -| `SEND_BACKDATED_EVENTS` | 1 << 42 | Can send backdated events | \ No newline at end of file diff --git a/docs/assets/architecture.png b/docs/assets/architecture.png deleted file mode 100644 index 80b1a215eefddcd3abee9c54ab068e07eda3e20f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 693663 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 z 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 z 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

!ze@seGxFFm~7BO5_y?nM~o|zg%ax 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 diff --git a/docs/assets/banner.png b/docs/assets/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..666405ebc82b4aecf4c993dd2b7b80d50b4058a5 GIT binary patch literal 195078 zcmXtI;49+1nKVX?%aiC&$~Ro z>-}%xaCY}%&dhw~p8FgAK~v1&tO53;COiP^J(Rl;

eh$4~01O8kA#VzH|fQ-Gpq*x9;W5Wlv}9IU5}Yj5!>akVdPzQ2y|?A2uZ zim6B0Vi6-)BheLy_6Hnraj(6(n^~~+VCB!E%}qdc<>Nh8c@Q&%79n5n-~P%9+}|>t z9NNA_NCHN}=zCkH3peo=ed^vv%?#O?&`J3^6^O53!DpV2!r2XotU=OQ$l<}Hh1-E8 z%I-gF5yTn&Fl5j|X4@82WUK|iPJ6O!4E{X4A5k)PWUcvTQXPXqC=uaO6`UVQF!uNf-5Unk3@$l6S z@+$w!(Zi|XVs6J@2!sm?#5XB<{~BT-24EhQ!gChn2hVSm1QAJhb`1t8?FF-z?E<5*J>uMw9Ubu5YhaMcG+7>HB!DC+`fsgYvV~L{04Cic+vcVp4vxm?-2&-&uK@4e`OTHM~|y(ZoSG`fnvX! z4{<_VZRa^2aTj?ErI~XIxk2l1>s??H!QWqf6gyuImq3BQ=n1uetEZhAbOnZn^L$oA z6HiL;NCP5P6XZZ3%V2q0g=_}pqWK*g+fXeSFv0k76%1|j%NB{Q3;ZmX5WqfY{bQ+M zU1#fCaJLXQg$6W8l$vvq+g`?eh}0SHdXI2??YP^+t`mBYuqU}+@YWmk=Tg6vlT?Qx z?!RXTKJL%f+H=OGoW1^1t*ImiHWY3s$Yk%ex?`O!`F~tZiNWb5@QL{qxn&#zp3y0U z=dV>ez&ToETvIPs7vBXpF3x`Kgw}WSji$rpVFjW%N41*wU(ddyDY`g2Fw)c!s$1oL z2Z|)64_hy6w3Gcda}I5&07>4qc~a5(FNnpoDYtP(8MkyA49|T9f=q|&PQz0aaSzjD z_~uB!vm1kMwS)`arg0ba|Ocn6%22aqz<24)cJq%ffB&8g>ZlEJDD0V^z&Wcr#5J^Fg^ z=vS^?NF|UnZ+XvWC1>Zii#?kHHmqca^AH8<(>4VAJ#3hqX>I^k4JbpWD79~B(Wh7J z1Lm>K)60$k-5VgQLcsdu_{B}D0|L^Tgtb$PemDra0H{j73wJg-ov(_UZYx!?$!6f^ z|6L1lh5CtfDyxm5JjD$6PkezB@}`bp8k3`#W?6mUue|wRH{aN-_dU}5xH_cQJlZPn z0-dtJE@e%%6a67C?w*o;;*E=H@8TmsF?KKQ-1{S)5FAHoEU-Z}Fcr?E-}U?18#75f zSxE?=D!MEM^W9VZ;a6V4nsdGBE`P7ht;#2?QYJc`Y#!LG1L{~ zJn74l_Gu`qw=PM!tMkWQ;nu?ukcW67eDxr(x!$_U|7_K4|56oy7Z`e#D*W=8GoM%w z;zD5Rbh`kvx_!C5eaH*KIXmWAkh<0(UTZZXDJQ?EI(Ux?tcs9h;~9(AAmA=k$>*m* zFI~KTg5dXjy4OIY3Og2efIU#wU}|z{<+RS*uXZ5~0L1Z0 z=j<(f?(QBunIpBA~_%M0t$Om*Y~aE977e&A~1Yw{o4A@6M}dsIuyVBs%M%NKkNUyrt9xQwr1m21mb9O1%?7{0)XOPe98IZ8iycE+>y;Scze zqN5!mT>P1QFDz#j_v|jk8qru42>Zt~e|pyi;=s<{SBLG^wsC~9pT`aci;*iLOeENY zHr#e0TO{yJ{o(pEo(qM&U$gbi$0#QEDyjVf!bW58>24v%BWz#}^>d{r9K88Gq30(d z^JuL0X3joiO4^U^r0^faZS%jg+OBtU3N;77snfJ3G{_3@7}^r~F2ih`+O(aECL=WQ z+IkS2wMpRu?9YictoyQ)c2zSP*$#jqYn-w5iM%J7RUF9sKp*{EUp^L$6LQ{2;+8a( z7K~JAX#JVVERZwz*-FCCYp1b{Pq|V49RPV_jy}zgY%TP^yXL(wM|0RV!A>}xqhBjS z9@|WYLGxySm($!`3is@G{WZXG55VZ$lgz3-XEe`ps_7IFR@hlXVO^X@+?2EjOu!x@ zYH2T|kllpaQqL&_cTev*Cm|X?I$bRNH!Bm-7gpN9Rh$v|VqP>C84oov$uR!s*!A4# zLT-jGY36{eo|e9Eb35)Rsb8?a*b#H~zU%?NiZPOkZj72mQ{%IMJO0j+-YPUjm0`840PGcnQMPm8$%1gAiQxN!tg`c>_tHUwn>5|v zx2*ASleB7gi6b*3%*XnV?9Dxp23QNqxS^=I?uYA0@TbiyXHvvyl!ksLRYfo43kM!F zht5^{_h2Mfvyt#)_W-qeTbf_P6IRLKz}HM|Le#?xCKQ+8hfTHH&I^vS*uka33k?`BQh*rATLk1vylw$+gB-mp0=_^J+9GYx^JsU5yaFnJ8 ztR%#SFbc5rT{8{?Tk0w!!-d~@j{P~{D0o`ar=Mg^@G|zRG7Bh6+uoLW4h8+4vz_x-BUpYRrYaJbf0Tl?4zX-pfa6BfLzHlF=M+0EHCx z^HKDfQn(Abr-Y{;cP?qb!_dJsQ7S(6{Q$U_M(inHKUgpO&{7=Y+{6cXCI=LxZ2%XZ z;zRqEJR<{NF@UD`WoM_s(;TGNP~zhc;{XqgG=TM!sptNa&i%0aLC9Dk32+*u4c4d; zxwLkBtkC=n*uG;VLl=H6hkYO(7b;-=M}C|)JaSYC4t5akoL~~rGxGkHS+_v(_}42> zaI=Ru9RIs>#S!_rL*ETZsuKMq9wX@Eq7*0_p{0bpCp!lH5IebfUJH3 zd{q{exgXR8`mDG|^+;x&9P;XtC%0v43nL85E?jVI38nsk#>MUMH-kQ96t_*f>yYn) zUB!occfp1BHz?ddBjGlZux_!rji{=6A3=zwL8zPO;o3{0ag{s&vztCCfN5870k(Wb zki9P!j@rylgBDS{-%B5K8<>+Gh5a7`;*4|RPD3lCNbk{jZbo?o9O17qv zH!*sJ_4;^-`}|>;i>erLE)!5DZ_Sc8ShvseE1_OIl6ysDqw9cS#U)gR|CuLqpj$w- zI@dr7ggtB)okkEVSBSkU>6JgZyt)=u;Z`r%2YkJHt7lMweDW&?FD?2{TWTmB;;I&% zJciio)ms|4MnwhPFWuI=4jfi%2Hzv&|^yPjys#e?JNt+s}NkTs=3vJ|+u*8BN3FRdx3G;?Hf2`Cf3hmk^_ z#RH%Tu|Kcl`PYHy{wH-A!Y_q0fdRy-$$Dpg_@~FTL(W|;v8XFWcq#u-xy4UJTQO-X zLy>p{PUA)o-32M${!KbxjXD0<4}=wVo@k5E41*>Tl;HO$7en8ta1E=FAk{j3vzaX4 zU(U`c@hm0eHsKMjtWr?J?s68w;GZ!OWbK?=t2~&-^r$X(dC|KJ`|d1=^C+vQ|3w); zz-ROoE*^zDs%zs-4)_-XGO6vyj#=Dl%kW$OM8vx71FeOfy@RItF!_tY27q<^gT{uI0Myva-> ziY-3y0|}UTrSVV|^JR67Z;8e$saLRjQO(UBGD+;b)Hb?yzVm?kO)@QZrV0ze=@u;giwLojwjn!7`8W6emsNF)LJdKH zZlbB18LLg$Tg16FM?(@D;=E%SNokJGr@fb>7J9vqob$Hk;@UxIe#859clRel+qh!i z1Ff{HJdl|yO!Mp}1B@_u60dEU+%w}i3Ugj z9_YV&ML|Rey>`U|?hHHfFs|6XpCqz@zc6M4qRd6YOcDxpBfN_2Ve+ z^V_#toFr&^;6DN*?rmEt>7*Hf{4rnzBy+D=vt1CsIZL5{s=eLCAA3=s#YMXm%uQWi zBnysPvLL|jW5;=PMACInYxeU2k9+s-bqzYhRl*GhznpQLR3Rb6NF6_QliMfMIvgWI zx_9dS`9nw|bDygUC;LHTQ}0YyDSL8HZbw-!SMk#C)rqX?-0lYLJiyhwOR9aQt!jfgWGCl6mQ`l(2ghF>L5K{#~BZkeLn4ROaU_ z?jU~b#+Km*+OlM*rM6cURve zTW4d!FD1(VsDFTwv`;`GD@nDb4$a$;j?cz-;SsVN|V6m#1 z2+l7tc9nwc?b={JSi)9Tx&?gp24KBy);DC0oFrbQLXgcryEwI?yx#^M%D=pE@_07X z-)<_3e%KA-a47+HyAEtbYd;QvH7H2oqo=NedCP&S_^l@dfL>MU*=fpNOUG>b17PSY z7)6XX3|HmN;yUbxyeN7LfW#=RL@C0KR}Q%G#Bpu$0O?Ay2gqvcVO1J7@^%H|G!+aQ zX{|h+Y#crP4RH;7HXGQVO^-Chy2Rr7E51xw>5J#SU;5lki_r(3;;4`J^M{*ilk&aR zQZbWVATlKO=k476x2JOHU|-V9#xB73Y>4s``rARqq*v@D&H-GNog!tz{2g0kEU?Vd zIlXnKdw0GT0;G@<*epIWF{Ix7JGd{{iO_rLr&k7fd{L@do@miqmjui*0Fg|yKKQQ1 zu!GvFVEJS77?U1-A^$L_b@I@U}11+2J{0fylW;Lfx5R)iiSCAyr$FsOLHAH=sbo`3jC;04LLeW;eo|=#_n- zi5?{cM9kDmtKIkEF!KZh7}!M$b_?x={-(~uh@7F9CpE0$RTPgCJg&}hdDT92GJG}< zSe>U%Mw4-v8`x1jkDVBj?Jbv9=sA!5`K>Jg-uR(qHJ57UFbhXW_wEG?Iba(TCTJ

W>EBkjYo9TSdIwYEn$A}UW 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

  • QZAq> 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

    nO=8l}B{1qbiY;w>HX7Zg+qlbU5)ubI#C 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 z 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 Inspect`). -5. Open the network tab inside of DevTools -6. Enable the xhr/fetch request filter -7. Execute any kind of action (navigate to a channel, send a message) -8. Click on any (api) request -9. Inside of "Request Headers" copy the value of the `authorization` header. - -![Retrieve user token](https://user-images.githubusercontent.com/34555296/136654084-73c2c2a2-0a54-46f3-b10d-ff20cd64c656.jpg) - -**Done**: You now can use this copied token to login with your bot libary or authorize any api request by putting it inside the authorization header. - -**Notice**: Currently you can but don't need to prefix the token with "`Bot`". - -## Libraries - -Change `https://api.fosscord.com` to your desired endpoint. - -Replace `your token here` with your copied token. - -### Discord.js - -Inside the client option you can specify the api endpoint: - -```js -const { Client } = require('discord.js') - -const client = new Client({ - http: { - version: 9, - api: 'https://api.fosscord.com', - cdn: 'https://cdn.fosscord.com', - invite: 'https://fosscord.com/invite' - } -}) - -client.login('your token here') -``` - -### Discord.py - -```py -import discord - -discord.http.Route.BASE = "https://api.fosscord.com" -client = discord.Client() - -client.run('your token here') -``` - -### JDA - -```java -import java.lang.reflect.*; -import net.dv8tion.jda.internal.requests.*; - -public static void main(String[] args) { - JDA jda = JDABuilder.createDefault("your token here").build(); - - Field field = Requester.class.getDeclaredField("DISCORD_API_PREFIX") - field.setAccessible(true); - - Field modifiers = Field.class.getDeclaredField("modifiers"); - modifiers.setAccessible(true); - modifiers.setString(field, field.getModifiers() & ~Modifier.FINAL); - - field.set(null, "https://api.fosscord.com"); -} -``` diff --git a/docs/client/connect.md b/docs/client/connect.md deleted file mode 100644 index f7f6171..0000000 --- a/docs/client/connect.md +++ /dev/null @@ -1,53 +0,0 @@ -# Client - -## Use your Discord client for your instance - -In order to set your **ENDPOINT** follow these simple steps - -- Go to `%appdata%/yourdiscord_client` (Example: `%appdata%/discordptb`) - -- There is a file called `settings.json`. It should look like: (`Contents can be different depending on your Discord's client settings`) - -```js -{ - "IS_MAXIMIZED": true, - "IS_MINIMIZED": false, - "WINDOW_BOUNDS": { - "x": 335, - "y": 86, - "width": 940, - "height": 600 - }, - "BACKGROUND_COLOR": "#202225" -} -``` - -- Add this line to `settings.json` - -```js -"WEBAPP_ENDPOINT" : "https://your_fosscord_instance_url" -``` - -- It should look like this after you add the line: - -```js -{ - "IS_MAXIMIZED": true, - "IS_MINIMIZED": false, - "WINDOW_BOUNDS": { - "x": 335, - "y": 86, - "width": 940, - "height": 600 - }, - "BACKGROUND_COLOR": "#202225", - "WEBAPP_ENDPOINT" : "https://your_fosscord_instance_url" -} -``` -- Note: If you are the instance owner make sure to install `@yukikaze-bot/erlpack` using `npm i @yukikaze-bot/erlpack` in order for Electron clients being able to connect to your instance by changing the endpoint - -- After this quit your Discord client, reopen it and you are all done! - -// Made by ImAaronFR -// Added to PR and specific folder by AToska21 -// Edited by Z3naero diff --git a/docs/client/index.md b/docs/client/index.md deleted file mode 100644 index d8ab606..0000000 --- a/docs/client/index.md +++ /dev/null @@ -1,5 +0,0 @@ -# Client - -## [Plugins](plugins/) - -## [Themes](themes/) diff --git a/docs/client/plugins.md b/docs/client/plugins.md deleted file mode 100644 index 3ef894e..0000000 --- a/docs/client/plugins.md +++ /dev/null @@ -1,29 +0,0 @@ -# Plugins - -## Philosophy - -- Plugins are executed in their environment to prevent security issues. -- Plugins can create their own UI and loaded in a separate view _(similar to vscode extensions)_. -- Plugins can access the component Api and therefore extend the client UI. -- Plugins can access the WebSocket Connection/Rest API and intercept/transform events. -- Plugins are restricted and can only do actions with the corresponding permission. -- Plugins should be accessible through a store that needs to verify the plugins (with dev options to load plugins/add other stores). - -## Permissions - -- Can't access the user's token (token plugins should rather be directly integrated into the client (e.g. account switcher)). -- All permissions must meet the purpose of the plugin and must justify why they need the certain permission to be approved. -- Shouldn't be able to make any request, except if it: - - - Requests permission to access the api of the network. - - Requests permission to access a specific domain (e.g. plugins backend). - - Requests permission to access all domains. - -- Shouldn't be able to intercept events, except if it: - - - Requests permission to a specific event(s). - - Requests permission to all events. - -- Needs to request permission to be able to extend the client's UI. - -**_more coming soon_** diff --git a/docs/client/themes.md b/docs/client/themes.md deleted file mode 100644 index 2f7909c..0000000 --- a/docs/client/themes.md +++ /dev/null @@ -1,11 +0,0 @@ -# Themes - -## Philosophy - -- Themes should look the same on all platforms. -- Themes should be made with an visual theme editor to easily create and edit your own themes. -- Themes should be combinable to use multiple themes at once. -- Themes should be installed and submitted through a theme store with voting options. -- Guilds should be able to specify their own themes for compatible clients. - -**_more coming soon_** diff --git a/docs/contributing/conduct.md b/docs/contributing/conduct.md new file mode 100644 index 0000000..f6e8bcc --- /dev/null +++ b/docs/contributing/conduct.md @@ -0,0 +1,48 @@ +# Code of Conduct + +By contributing to or interacting with Fosscord or Fosscord community spaces, you accept the code of conduct. + +This code of conduct is based on the Artemis Lena Code of Conduct by FantasyCookie17. As it is licensed under CC0, it may be used by other communities in modified or unmodified form without permission from the author. Its purpose is to ensure a civilised, tolerant, compassionate, help, pluralistic, and peaceful style of communication. + +Fosscord community spaces includes Fosscord github repositories and Fosscord development guilds (be it on Discord.com or Fosscord instances mananged by the Fosscord maintainers group). + +By contributing to any Fosscord projects (for example, through pull request) you guarantee that you have the rights to resign all rights to Fosscord under the AGPLV3 license. + +### Desirable Behaviour + +- If possible, provide assistance with Fosscord projects to other users. +- Be respectful toward other's opinions and viewpoints. +- Accepting responsibility and apoligising to those affected for our mistakes. + +### Prohibited Behaviour + +- Sharing leaked, proprietary source code from Discord Inc +- Homophobia, transphobia, etc, misgendering, deadnaming, assuming gender. You should use singular they/them when in doubt. +- Threats of violence +- Harassment +- Spreading hateful, violent, or discriminatory ideologies or conspiracy theories, via media or text (including avatars and nicknames) +- Trolling. Intentionally derailing conversations or producing discussions on non-issues. +- Doxing. Disclosing other's private information without their consent. +- Spamming. This includes sending advertisements, repeatedly sending meaningless content, sending server invites unrequested. +- Sharing media that may cause harm or be triggering to others, such as flashing imagery or gore. +- Undesired automation of services that may lead to a reduction in service quality. For example, API spam of a Fosscord instance. +- Ban evasion. Creation of additional accounts used to join a community after being banned from that community. +- Posting content that is illegal to publish or distribute in Germany. +- Abusing loopholes in this code of conduct, or being in conflict with the goals of this code of conduct. + +### Consequences of Violation + +- Written warnings, followed by kicks or bans if repeated. +- If a violation is particularly egregious, an immediate kick or ban may be issued. +- Offending content may be removed +- Kicks and bans apply to all communities administered by the Fosscord maintainers group. + +### Reporting problems + +You may report any violation of this code of conduct to the Fosscord community team directly through Discord, private message or otherwise. + +If you believe us to be in violation of this code of conduct, please report it to someone in a higher position, or to many people on the team. Make sure to provide a direct quote from here to be as effective as possible. + +### Changes to this document + +This code of conduct may be changed in order to enhance clarity and precision at any time. **Notification should be provided** diff --git a/docs/contributing/index.md b/docs/contributing/index.md index a400f01..a73cb14 100644 --- a/docs/contributing/index.md +++ b/docs/contributing/index.md @@ -1,63 +1,12 @@ # Contributing -By contributing you accept the code of conduct. +!!! info "[Have you read the Code of Conduct?](conduct.md)" -## Code of conduct +## Structure -This is the code of conduct for the Fosscord developer community. It is based on Artemis Lena Code of Conduct by FantasyCookie17. As it is licensed CC0, it may also be used in modified or non-modified form by other communities without permission by the author. Its purpose is to ensure a civilized, tolerant, compassionate, helpful, pluralistic and peaceful style of communication. +Fosscord is written in Typescript and is comprised of 4 main parts: -Fosscord developer community includes Fosscord Github repositories and Fosscord development guild. -Fosscord developers community is administered by the Fosscord maintainers group. - -If you contribute to the project in any form (for example through code by a pull request) you guarantee that you have the rights to resign all rights to Fosscord under the AGPLV3 license. - -### Desirable behavior - -- If possible, providing help with issues other users may have. If it suits the topic of the community, answer it in there, if it does not, try to link to a community where it is more on topic. -- Accepting other opinions, even if you disagree. This does not exclude the possibility to provide arguments for your own opinion. -- Pinging moderators by mentioning their names in chat in the case of rule violations, especially trolling or spamming. While doing so, do not quote or reply to the violator to prevent extra attention by non-moderators. - -In order to have your questions resolved more quickly and efficiently, see also: The XY problem, Don't ask to ask, No Hello and How to Ask Smart Questions - -### Undesirable behavior - -- Talking about things that do not suit the topic of the community. Communities exempt from this rule will mention that in their descriptions. -- Attacking people rather than attacking their arguments (a.k.a. ad hominem). -- Bringing extra attention by people who are not moderators to trolls and spammers. -- Self-censorship for reasons of politeness or similar. As long as you keep it civil and free of insults, it is desirable to discuss issues you have with people directly, rather than letting it build up and later creating drama. It is in the interest of the moderators to make the rooms feel comfortable for a large amount of people, this includes changing their own behavior where necessary and reasonable. If you feel it is better to discuss in a smaller group, ask the person you have an issue with and/or a moderator whether it is fine to invite them to a private chat. -- Making other users feel uncomfortable, for example by nagging them with questions they have stated they do not want to answer. -- Misgendering, deadnaming and assuming gender. Use the singular they/them and inclusive language where possible. -- Not liking the community. If you do, why don't you just leave? You would be causing discomfort to everyone else as well if you did not. - -### Prohibited behavior - -- Spreading hateful, violent or discriminatory ideologies or conspiracy theories, via images and other media (including avatars) or text (including nicknames), as well as discriminating against any group or person. This includes the use of slurs. -- Spamming. This includes adverts, large amounts of repetitive messages, sending invites to users without asking (invite spam), etc. -- Trolling; intentionally derailing conversations or producing discussions on non-issues. -- Doxing: The disclosure of others' private information without their consent. -- Sharing leaked proprietary source code from Discord Inc.: It is forbidden to share leaked proprietary source code from Discord Inc. Violation may lead to ban and legal consequences. -- Posting media that may cause harm or be triggering to other people. For example, people with photosensitive epilepsy may experience seizures from animations with rapidly changing or flashing colours. -- Actively suppressing opinions of other users. -- Being an undesired bot (bots are undesired if not approved by moderation), or adding an undesired bot to a community. -- Ban evasion (creation of additional accounts to join a community after having been banned from that room). -- If you are a moderator or otherwise have permissions above those of normal users: abusing your permissions for personal motives not compatible with this code of conduct. -- Continued harassment of other users. -- Posting explicit imagery (sexual content, displays of violence, etc.) or unwanted sexual or romantic advances towards other users. -- Posting content that is illegal to publish or illegal to distribute without permission in Germany. The reason is that in certain cases, especially when it comes to copyright, the service provider (who might be us, the fosscord founders), may be held liable, and we do not wish to get into legal trouble. -- Abusing loopholes in this code of conduct, for example doing something that is not explicitly covered by the prohibited behavior, yet is in conflict with the general idea of desirable behavior. - -### Consequences of violation - -- Undesirable behavior will lead to warnings, and later on, if repeated too often, kicks or bans. -- Prohibited behavior will, in most cases, directly lead to a kick or ban. -- Any kind of violation can lead to removal of the offending content. -- Kicks and bans apply to all communities administrated by Fosscord maintainers group. - -If a moderator violates the code of conduct, make sure to point it out to us. This can lead to warnings and demotion of the moderator. - -If we violate the code of conduct, no such possibility exists. Thus, it is important to call us out, or make one of our friends call us out. Further steps will then be discussed ad hoc. - -### Changes to this code of conduct - -This code of conduct may be changed in order to enhance clarity and precision at any time, typically without notification. -// edited by Xenorio and AToska21 +- REST HTTP API server +- Websocket Gateway server for realtime communication with clients +- HTTP CDN server for storing user file content. +- `utils` module to separate our database models, schemas, and other things from the above 3 components. diff --git a/docs/contributing/server.md b/docs/contributing/server.md deleted file mode 100644 index a2ba49d..0000000 --- a/docs/contributing/server.md +++ /dev/null @@ -1,392 +0,0 @@ -# Server - -## Requirements - -Accept the [code of conduct](/contributing/) and follow the server [setup guide](/server/setup/) to setup the development environment. - -## Gateway - -The Gateway is a WebSocket server that is responsible for listening and emitting events. - -For documentation, head over to the [Discord docs](https://discord.dev) as our own documentation is not written yet. - -If you want to work on a feature, please comment on the corresponding issue or open a issue so so nobody implements something twice. - -For the WebSocket, we use the [ws](https://www.npmjs.com/package/ws) package and we'll write our own packet handler for the individual opcodes and events. - -## API - -The API is a HTTP REST server that process requests and manipulates the database. - -You can find the api documentation [here](/api/). - -You can find the Roadmap overview [here](https://github.com/fosscord/fosscord-server/issues/140). - -Every route has its own [issue](https://github.com/fosscord/fosscord-api/issues?q=is%3Aopen+is%3Aissue+label%3ARoute). - -If you want to work on a feature please comment on the corresponding issue or write us on our [development server](https://discord.gg/ZrnGQP6p3d) so we can assign and discuss it and nobody implements something twice. - -### Structure - -You can find the [API directory](https://github.com/fosscord/fosscord-server/tree/master/api) in the [fosscord-server](https://github.com/fosscord/fosscord-server) Github repository. - -Inside it you can find: - -#### Translation - -We use [i18next](https://www.i18next.com/) to manage translation/localization in _some_ API Responses. - -The `.json` language files are located in `/api/locales/` and are separated by namespaces. - -#### Source code - -We use [TypeScript](https://www.typescriptlang.org/) (JavaScript with types). -The `.ts` source files are located in [`/api/src/`](https://github.com/fosscord/fosscord-server/tree/master/api/src) and will be compiled to `.js` in the `/api/dist/` directory. - -#### Middlewares - -All Express [Middlewares](http://expressjs.com/en/guide/writing-middleware.html) are in [`/api/src/middlewares/`](https://github.com/fosscord/fosscord-server/tree/master/api/src/middlewares) and need to be manually loaded by [`/api/src/Server.ts`](https://github.com/fosscord/fosscord-server/blob/master/api/src/Server.ts). - -#### Routes - -All Express [Router](http://expressjs.com/en/4x/api.html#router) routes are in [`/api/src/routes/`](https://github.com/fosscord/fosscord-server/tree/master/api/src/routes) and are automatically registered based on the file structure. - -#### Models - -All database TypeORM entities are located in [`/util/src/entities`](https://github.com/fosscord/fosscord-server/tree/master/util/src/entities) - -#### Util - -All Utility functions are in the directory `/src/util/` and in [`@fosscord/util`](https://github.com/fosscord/fosscord-server/tree/master/util) - -## Configuration - -### Philosophy - -Every fosscord server instance should be completely configurable in every way, without the need to change the source code. - -The config should have reasonable defaults similar to discord. - -Only in special cases it should require a third party config value. - -The config should be changeable over the [admin dashboard](https://github.com/fosscord/fosscord-server/tree/master/dashboard) and update in realtime without the need to restart the servers. - -The very first time the server starts, it saves to default config in the database. The next start it will load the config from the database. - -### Example - -You **should not** `get()` the Config in the root of your file and it instead load the config every time you access a value. - -Import `Config` from fosscord-server-util: - -```js -// at the top of the file import the Config file from /src/util/Config.ts -import { Config } from "@fosscord-server-util"; -``` - -Access the Config in your route: - -```js -router.get("/", (req: Request, res: Response) => { - // call Config.get() to get the whole config object and then just access the property you want - const { allowNewRegistration } = Config.get().register; -}); -``` - -`Config.get()` returns the current config object and is not expensive at all - -### Extending - -The default Config is located in [server-util `/src/util/Config.ts`](https://github.com/fosscord/fosscord-server/blob/master/util/src/util/Config.ts) and exports a `interface DefaultOptions` and a `const DefaultOptions` object with reasonable default values. - -To add your own values to the config, add the properties to the `interface` with corresponding types and add default values to `const DefaultOptions`. - -Also you don't need to worry about updating "old config versions", because new values will automatically be synced with the database. - -Note, however, that if the database already has a default value it won't update it. - -## Routes - -All routes are located in the directory `/src/routes/` and are loaded on start by a the [lambert-server](https://www.npmjs.com/package/lambert-server) package. - -The HTTP API path is generated automatically based on the folder structure, so it is important that you name your files accordingly. - -If you want to use URL Params like `:id` in e.g. `/users/:id` you need to use `#` instead of `:` for the folder/filename, because of file naming issues on windows. - -`index.ts` files **won't** serve `/api/index` and instead alias the parent folder e.g. `/api/` - -Your file needs to default export a [express.Router()](https://expressjs.com/de/4x/api.html#router): - -```ts -import { Router } from express; -const router = Router(); -export default router; -``` - -Now you can just use any regular express function on the router variable e.g: - -```ts -router.get("/", (req, res) => {}); -router.post("/", (req, res) => {}); -router.get("/members", (req, res) => {}); -``` - -### Authentication - -Every request must contain the authorization header except the `/login` and `/register` route. - -You can add additional non-auth routes in [`/src/middlewares/Authentication.ts`](https://github.com/fosscord/fosscord-server/blob/master/api/src/middlewares/Authentication.ts#L5) - -To access the user id for the current request use `req.user_id` - -### Body Validation - -We use a custom body validation logic from lambert-server to check if the JSON body is valid. - -To import the function from `/src/util/instanceOf.ts` use: - -```ts -import { check } from "/src/util/instanceOf"; -``` - -Now you can use the [middleware](http://expressjs.com/en/guide/using-middleware.html) `check` for your routes by calling check with your Body Schema. - -```ts -router.post("/", check(...), (req,res) => {}); -``` - -#### Schema - -A Schema is a Object Structure with key-value objects that checks if the supplied body is an instance of the specified class. - -```ts -{ id: String, roles: [String] } -``` - -_Notice if you use e.g. BigInt even if you can't supply it with JSON, it will automatically convert the supplied JSON number/string to a BigInt._ - -_Also if you want to check for an array of, just put the type inside `[]`._ - -#### Optional Parameter - -You can specify optional parameters if you prefix the key with a `$` (dollar sign) e.g.: `{ $captcha: String }`, this will make the captcha property in the body optional. - -#### Limit String length - -Additionally import the class `Length` from instanceOf and specify the type by making a new `Length` Object taking following parameters: - -```ts -import { Length } from "/src/util/instanceOf"; -const min = 2; -const max = 32; -const type = String; - -{ - username: new Length(min, max, type); -} -``` - -this will limit the maximum string/number/array length to the `min` and `max` value. - -#### Example - -```ts -import { check, Length } from "/src/util/instanceOf"; -const SCHEMA = { - username: new Length(2, 32, String), - age: Number, - $posts: [{ title: String }], -}; -app.post("/", check(SCHEMA), (req, res) => {}); -``` - -#### Throw Errors - -If the body validation fails it will automatically throw an error. - -The `errors` structure is a key-value Object describing what field contained the error: - -```json -{ - "code": 50035, - "message": "Invalid Form Body", - "errors": { - "email": { - "_errors": [ - { - "message": "Email is already registered", - "code": "EMAIL_ALREADY_REGISTERED" - } - ] - }, - "username": { - "_errors": [ - { - "message": "Must be between 2 - 32 in length", - "code": "BASE_TYPE_BAD_LENGTH" - } - ] - } - } -} -``` - -To manually throw a `FieldError` import `FieldErrors` - -```ts -import { FieldErrors } from /src/iltu / instanceOf; -``` - -To make sure your errors are understood in all languages translate it with [i18next](https://www.i18next.com/translation-function/essentials) and `req.t`. - -So after you have checked the field is invalid throw the `FieldErrors`. - -```ts -throw FieldErrors(( login: { message: req.t("auth:login.INVALID_LOGIN"), code: "INVALID_LOGIN" }}); -``` - -## Database - -### Philosophy - -The instance hoster should be able to use any database they want for their specific size and purpose. - -That is why we use [typeorm](https://typeorm.io/) for database entities (models) for every data structure we use, because typeorm supports many different database engines. - -We use strings for all ids and bitfields (Tho when working with bitfields we convert it to BigInts and pass it to the utility `BitField` class). - -### General - -Have a look at the [typeorm documentation](https://typeorm.io/) to get familiar with it or watch this [tutorial](https://youtu.be/Paz0gnODPE0). - -TypeORM supports MySQL, MariaDB, Postgres, CockroachDB, SQLite, Microsoft SQL Server, Oracle, SAP Hana, sql.js. - -### Getting Started - -Import the entity you want to select, manipulate, delete or insert from `@fosscord/util` - -[List of all entities](https://github.com/fosscord/fosscord-server/blob/master/util/src/entities/index.ts): `Application, Attachment, AuditLog, Ban, BaseClass, Channel, Config, ConnectedAccount, Emoji, Guild, Invite, Member, Message, RateLimit, ReadState, Recipient, Relationship, Role, Sticker, Team, TeamMember, Template, User, VoiceState, Webhook` - -### Example database query - -```ts -import { Guild } from "fosscord-server-util"; - -await new Guild({ ... }).save(); // inserts a new guild or updates it if it already exists - -const guild = await Guild.findOne({ id: "23948723947932" }).exec(); // searches for a guild - -await Guild.delete({ owner_id: "34975309473" }) // deletes all guilds of the specific owner -``` - -### Entities - -The typeorm database entities are located in [`util/src/entities/`](https://github.com/fosscord/fosscord-server/tree/master/util/src/entities). - -To add your own database entity, create a new file, export the model and import/export it in [`util/src/entities/index.ts`](https://github.com/fosscord/fosscord-server/tree/master/util/src/entities/index.ts). - -#### Example entity - -```ts -@Entity("users") -export class User extends BaseClass { - // id column is automatically added by BaseClass - - @Column() - username: string; - - @JoinColumn({ name: "connected_account_ids" }) - @OneToMany( - () => ConnectedAccount, - (account: ConnectedAccount) => account.user - ) - connected_accounts: ConnectedAccount[]; - - static async getPublicUser(user_id: string, opts?: FindOneOptions) { - return await User.findOneOrFail( - { id: user_id }, - { - ...opts, - select: [...PublicUserProjection, ...(opts?.select || [])], - } - ); - } -} -``` - -## Emit Events - -Most Routes modify the database and therefore need to inform the clients with events for data changes. - -Events are either stored locally if the server was started through the bundle or in RabbitMQ and are distributed to the gateway servers. - -You can find all events on the [discord docs page](https://discord.com/developers/docs/topics/gateway#commands-and-events) and in [`util/src/interfaces/Event.ts`](https://github.com/fosscord/fosscord-server/blob/master/util/src/interfaces/Event.ts). - -To emit an event import the `emitEvent` function from `@fosscord/util` - -```ts -import { emitEvent } from "../../../util/Event"; -``` - -You need to specify whom you want to send the event to, to do that either pass `guild_id`, `user_id` or `channel_id`. -Additionally you need to set the [eventname](https://github.com/fosscord/fosscord-server/blob/master/util/src/interfaces/Event.ts#L539) e.g. `GUILD_DELETE`. - -```ts -{ - guild_id?: bigint; // specify this if this event should be sent to all guild members - channel_id?: bigint; // specify this if this event should be sent to all channel members - user_id?: bigint; // specify this if this event should be sent to the specific user - event: string; // the EVENTNAME, you can find all gateway event names in the @fosscord/util Events file - data?: any; // event payload data -} -``` - -For easy intellisense, annotate the parameter with the corresponding [Event interface](https://github.com/fosscord/fosscord-server/blob/master/util/src/interfaces/Event.ts) from `@fosscord/util`: - -```ts -import { GuildDeleteEvent } from "@fosscord/util"; - -emitEvent({...} as GuildDeleteEvent); -``` - -### Example - -Putting it all together: - -```ts -await emitEvent({ - user_id: "3297349345345874", - event: "GUILD_DELETE", - data: { - id: "96784598743975349", - }, -} as GuildDeleteEvent); -``` - -## Permissions - -To get the permission for a guild member import the `getPermission` from `fosscord-server-util`. - -```ts -import { getPermission } from "fosscord-server-util"; -``` - -The first argument is the user_id the second the guild_id and the third an optional channel_id. - -```ts -const permissions = await getPermission(user_id: string, guild_id: string, channel_id?: string) - -const permissions = await getPermission("106142653265366125", "4061326832657368175") -``` - -### Example - -```ts -const perms = await getPermission(req.userid, guild_id); -// preferred method: Use this if you want to check if a user lacks a certain permission and abort the operation -perms.hasThrow("MANAGE_GUILD") // will throw an error if the users lacks the permission - -if (perms.has("MANAGE_GUILD")) { - ... -} -``` diff --git a/docs/contributing/ui.md b/docs/contributing/ui.md deleted file mode 100644 index eaf9170..0000000 --- a/docs/contributing/ui.md +++ /dev/null @@ -1,57 +0,0 @@ -# UI Framework - -- see: [@fosscord/ui](https://www.npmjs.com/package/@fosscord/ui) - -## Requirements - -You should be familiar with: - -- [Git](https://git-scm.com/) -- [NodeJS](https://nodejs.org/) -- [SCSS](https://sass-lang.com/) - -## Getting Started - -```bash -git clone https://github.com/fosscord/fosscord-ui -cd fosscord-ui -``` - -```bash -npm install -npm run scss -``` - -_Open `./test/index.html` to see the test page._ - -## Writing a component - -> text inside of <> has to be replaced by the corresponding values - -1. create a file named like the component you're creating in - `test/.html` and `scss/.scss` - -2. copy the content of `test/template.html` to `test/.html` and - replace the `

    ` content with the components name - -3. source the created `test/.html>` in `test/index.html` as follows: - _append the following to `scss/index.scss` to the div with the class - `"grid"`_ - -```html - - - - -``` - -4. source the created `scss/.scss` in `scss/index.scss` as follows: - _append the following to `scss/index.scss`_ - -```scss -... -@import ".scss"; -``` diff --git a/docs/faq.md b/docs/faq.md deleted file mode 100644 index f9a5174..0000000 --- a/docs/faq.md +++ /dev/null @@ -1,26 +0,0 @@ -# Frequently Asked Questions - -## Can I get free Nitro? - -We Fosscord developers and server administrators can't grant you free nitro at discord.com. -A Fosscord instance administrator may choose to grant you free nitro or its equivalent powers in its own instance. -Do not beg for free Nitro in Fosscord Github repository, or in Fosscord Official Development Guild. - -## Why are we reimplementing and extending the Discord protocol? - -1. Despite its API complexity, underlying working principle of the protocol is quite simple. No complex conflict resolution like, say, Matrix. -2. People want persistent decentralised chats. Also to speak, Discord's event ordering is strictly linear, which again simplifies server, client and bot development. -3. Discord protocol has event authorisation finality, which simplifies the server design. -4. The server does most of the heavy lifting, which allows for more easy client and bot development. -5. There are many bots for Discord that can be modified to use a Fosscord instance. -6. We love free software. Hence our server is licensed under Affero GPLv3, and some other parts are licensed under GPLv3. -7. We embrace and love third party clients. The more clients there are, the harder for Discord Inc. to shut down this project. -8. Discord's security model is based on the enforcement of well-formedness throughout the protocol. And this is great for achieving security without an extensive lock-in. - -## By when will the version/feature X have been available? - -As always, we don't give ETAs; because users tend to reinterpret ETAs as committed due dates. - -## When is the next stable version going to be released? - -When it's ready. diff --git a/docs/index.md b/docs/index.md index 00b3bca..a747829 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,53 +1,26 @@ # Home -Just wanna get to setup instructions? Click [here](server/setup.md)! +!!! info "Want to skip to the server installation guide? [Click here](setup/server)" -### What is Fosscord? +!!! info "Interested in contributing? We'd love to have you on board! [Click here](contributing)" -Fosscord is a free open source self-hostable discord compatible chat, voice and video platform. +## What is Fosscord? -## Philosophy +Fosscord is a Discord.com server implementation and extension, +with the goal of complete feature parity with Discord.com, +all while adding some additional goodies, security, privacy, and configuration options. -Fosscord aims to be a full one-on-one clone of Discord, adding more features -that can be used as a replacement for the official client and still connect to -discord.com and host private Fosscord server instances. +Fosscord allows you to host a complete, Discord.com-compatible chat service +with complete control over it's content, usage, security, configuration, and featureset. +Being Discord.com-compatible, all existing clients, bots, and applications written for +Discord.com can be used on any Fosscord instance, which we believe will be immensely useful +in any transition process between services. -Fosscord aims to give the best possible user experience, while being backwards -compatible to Discord's features and adding new ones/improving old ones while -maintaining the user privacy with end-to-end encryption support. +As Fosscord is an entirely separate service from Discord.com, it means a Fosscord server by itself **cannot** +access private data controlled by Discord.com. You **cannot** use a Fosscord server to chat with your friends on Discord.com. +You also **cannot** use a Fosscord server to grant premium ("Nitro") features to a Discord.com account (although you can grant these to a Fosscord account). -The client can connect to multiple server instances without the need to open it -multiple times. - -The client should be extensible through a secure Plugin and Theme System with -own store. - -The server should be extensible through bots, just like discord without the need -to change anything except the api endpoint. - -The project is open source so everyone can have a look what's going on under the -hood and can be maintained and expanded by the community. - -Everything is configurable in the server config and everyone can add their own -features, so that it is not opinionated. - -### Concept - -Architecture - -### Why backwards compatible to Discord? - -- Benefit from the large user base of discord -> more users, making the switch - easier for new users & keeping workflows intact and easily migrating existing discord bots -- No disadvantage for the users who use fosscord, so that they can still - communicate with all their peers who use discord -- Discord has already built a great and stable protocol _(don't reinvent the - wheel)_ -- The community can extend and customize their clients and servers by - self-hosting them and developing and installing addons - -## Support - -[Discord server](https://discord.gg/ZrnGQP6p3d) - -Once we are finished, we'll host our own instance to host the support server. +Our goal is to achieve complete feature parity with Discord.com, as well as +implement additional security, privacy, and other useful features serverside. +In addition to our server software, we aim to create Fosscord-aware clients that can be used to connect +to multiple Fosscord-compatible instances - including Discord.com - with rich theming and plugin support. diff --git a/docs/resources.md b/docs/resources.md deleted file mode 100644 index 76273cc..0000000 --- a/docs/resources.md +++ /dev/null @@ -1,46 +0,0 @@ -## Links - -- [Documentation](https://docs.fosscord.com) -- [Roadmap](https://fosscord.notion.site/2c7fe9e73f9842d3bab3a4912dedd091) (Notion to-do board synced with GitHub issues) -- [Status](https://status.fosscord.com/) (Status page of the official fosscord instance) -- [GitHub](https://github.com/fosscord/) (GitHub organization) -- [OpenCollective](https://opencollective.com/fosscord) (Financially support the project to cover server costs and other expenses) -- [Discord server](https://discord.gg/ZrnGQP6p3d) (for support & organization (If we are finished we'll host our own support server)) -- [Tor Hidden Service](http://7jexqzsbqndcsh6y7hybtaf5us5vt7mya7hi4fbi2tid6zazno3h44qd.onion/) (Official Fosscord instance on TOR) - -## Project structure - -Fosscord consists of many repositories, which together make up the client and server: - -### Server - -- **[fosscord-server](https://github.com/fosscord/fosscord-api) is the complete Fosscord Server** and it - -Contains: - -- [api](https://github.com/fosscord/fosscord-server/tree/master/api) a HTTP REST server -- [gateway](https://github.com/fosscord/fosscord-server/tree/master/gateway) a WebSocket Gateway server -- [rtc](https://github.com/fosscord/fosscord-server/tree/master/rtc) a _C++_ webRTC server for voice and video sharing. -- [webRTC-server](https://github.com/fosscord/fosscord-server/tree/master/webrtc-server) a _javascript_ webRTC server for voice and video communication -- [dashboard](https://github.com/fosscord/fosscord-server/tree/master/dashboard) An admin dashboard for the server (analytics, settings, administration, trust & safety) -- [util](https://github.com/fosscord/fosscord-server/tree/master/util) contains all shared logic like Database Models, Utility functions... -- [cdn](https://github.com/fosscord/fosscord-server/tree/master/cdn) is the content-delivery-content (CDN) that stores user uploaded images. - -### Client - -- [fosscord-ui](https://github.com/fosscord/fosscord-ui) is a user interface framework in the style of discord. -- [fosscord-themes](https://github.com/fosscord/fosscord-themes) contains all the official themes for the client. -- [fosscord-plugins](https://github.com/fosscord/fosscord-plugins) contains all the official plugins for the client. -- [fosscord-client](https://github.com/fosscord/fosscord-client) is the official (react)-native Fosscord client. -- ~~[fosscord-web-client](https://github.com/fosscord/fosscord-web-client) was an effort to develop a fosscord web client.~~ (Discontinued) -- ~~[react-native-withcss](https://github.com/fosscord/react-native-withcss) CSS support for react native~~ (Discontinued) -- ~~[css-mediaquery](https://github.com/fosscord/css-mediaquery) CSS media query support for react native~~ (Discontinued) - -#### Others - -- [fosscord-docs](https://github.com/fosscord/fosscord-docs) Documentation of Fosscord -- [fosscord-landingpage](https://github.com/fosscord/fosscord-landingpage) represents and explains the project. -- [fosscord.js](https://github.com/fosscord/fosscord.js) A powerful JavaScript library for interacting with the Fosscord API -- [fosscord.js-builders](https://github.com/fosscord/fosscord.js-builders) A collection of builders that you can use when creating your bot. -- [fosscord.py](https://github.com/fosscord/fosscord.py) An API wrapper for Fosscord written in Python. -- [docker](https://github.com/fosscord/docker) 🐳 Fosscord's Docker images and composing diff --git a/docs/api/routes.md b/docs/routes.md similarity index 89% rename from docs/api/routes.md rename to docs/routes.md index 372ef3d..3a871ee 100644 --- a/docs/api/routes.md +++ b/docs/routes.md @@ -1,3 +1,3 @@ -# Routes +# API Routes !!swagger-http https://raw.githubusercontent.com/fosscord/fosscord-server/master/api/assets/openapi.json!! diff --git a/docs/server/configuration.md b/docs/server/configuration.md deleted file mode 100644 index 4739353..0000000 --- a/docs/server/configuration.md +++ /dev/null @@ -1,64 +0,0 @@ -# Configuration - -The configuration of Fosscord is located inside the database, under the ``config`` table. Some configuration is also done via [environment variables](env.md) - -## Editing - -In order to edit your configuration, you will need to manually open your database with special tools. - -### Tools - -#### Sqlite -- [DBeaver](https://dbeaver.io) -- [SqliteBrowser](https://sqlitebrowser.org) - -#### PostgreSQL -- [DBeaver](https://dbeaver.io) -- [pgAdmin](https://www.pgadmin.org) - -#### MySQL/Mariadb -- [DBeaver](https://dbeaver.io) - -## Options - -This list may be incomplete. - -| Name | Type | Default | Description | -| --- | --- | --- | --- | -| gateway_endpointClient | string | null | The gateway endpoint that gets delivered to the client | -| gateway_endpointPrivate | string | null | The gateway endpoint that is used internally to communicate between gateway servers | -| gateway_endpointPublic | string | null | The gateway endpoint that is publicly used by bots | -| cdn_endpointPublic | string | "/" | The cdn endpoint that is served in message attachments | -| cdn_endpointClient | string | null | The cdn endpoint that is used by clients | -| cdn_endpointPrivate | string | "http://localhost:3001" | The cdn endpoint that is used internally to upload images from the api to the cdn. | -| general_instanceId | string | _auto generated_ | Unique identifier for the Fosscord instance | -| limits_user_maxGuilds | number | 100 | Maximum number of guilds the user is allowed to create and join | -| limits_user_maxUsername | number | 32 | Maximum number of characters for a username | -| limits_user_maxFriends | number | 1000 | Maximum number of friends a user can have | -| limits_guild_maxRoles | number | 250 | Maximum number of roles a guild can have | -| limits_guild_maxEmojis | number | 50 | Maximum number of custom emojis a guild can have | -| limits_guild_maxMembers | number | 250000 | Maximum number of members a guild can have | -| limits_guild_maxChannels | number | 50 | Maximum number of channels a guild can have | -| limits_guild_maxChannelsInCategory | number | 50 | Maximum number of channels a category can contain | -| limits_guild_hideOfflineMember | number | 1000 | Amount of members when a guild is considered large and offline members are hidden | -| limits_message_maxCharacters | number | 2000 | Maximum length of characters a message can have | -| limits_message_maxTTSCharacters | number | 200 | Maximum length of characters a text to speech message can have | -| limits_message_maxReactions | number | 20 | Maximum number of reactions a message can have | -| limits_message_maxAttachmentSize | number | 8388608 | Maximum size a message attachment can have in bytes | -| limits_message_maxBulkDelete | number | 100 | Maximum amount of messages that can be deleted per bulk delete command | -| limits_channel_maxPins | number | 50 | Maximum amount of pinned messages a channel can have | -| limits_channel_maxTopic | number | 1024 | Maximum amount of characters a channel topic description can have | -| limits_channel_maxWebhooks | number | 10 | Maximum amount of webhooks a channel can have | -| limits_rate_disabled | boolean | false | Check to enable rate limits | -| limits*rate* | | _TODO_ | | -| security_autoUpdate | boolean | true | Check if updates should automatically be searched for and non destructively be installed | -| security_requestSignature | string | _auto generated_ | Request signature that is used internally to sign requests | -| security_jwtSecret | string | _auto generated_ | JSON web token secret to sign and verify jwt tokens | -| security_forwardedFor | string | null | Header name that is used to retrieve the real ip of a request e.g. X-Forwarded-For or CF-Connecting-IP | -| security_captcha_enabled | boolean | false | Check to enable captchas | -| security_captcha_service | string | null | Captcha provider, one of: "recaptcha", "hcaptcha" | -| security_captcha_sitekey | string | null | Captcha provider site key | -| security_captcha_secret | string | null | Captcha provider secret to check if the user supplied captcha result is correct | -| security_ipdataApiKey | string | _public key_ | IPdata.co api key to check if a register ip address is using proxies | -| login_requireCaptcha | boolean | false | Check to require captchas to login | - diff --git a/docs/server/database.md b/docs/server/database.md deleted file mode 100644 index 1a9eaa5..0000000 --- a/docs/server/database.md +++ /dev/null @@ -1,23 +0,0 @@ -# Database - -By default, Fosscord uses Sqlite as its database. But doing this in a production environment is highly discouraged for performance reasons. - -You can change the database Fosscord uses by editing the ``DATABASE`` environment variable. This is further explained [here](env.md) - -## Connection URL - -The connection URL you need to specify looks like this: - -``` -[type]://[username]:[password]@[address]/[dbname] -``` - -Replace the variables marked with ``[]`` with the following: - -| Name | Description | -| --- | --- | -| [type] | The type of database to use, either ``mariadb`` or ``postgres`` | -| [username] | The name of a user with access to the database | -| [password] | The password for the user | -| [address] | The network address the database is located at, most likely ``localhost`` | -| [dbname] | The name of the database to use | \ No newline at end of file diff --git a/docs/server/env.md b/docs/server/env.md deleted file mode 100644 index de7b771..0000000 --- a/docs/server/env.md +++ /dev/null @@ -1,38 +0,0 @@ -# Environment Variables - -Some configuration is done via environment variables. If you can't find what you're looking for here, try [database configuration](configuration.md) - -## Editing - -In order to edit environment variables, just create a file called ``.env`` in ``bundle/``. In there, you can declare variables in the format ``VARIABLE=value``. - -If you want to globally assign variables, use `export` on Linux or `set` on Windows. -For example: `export THREADS=8`. - -Note that this only sets variables for the current shell. To make them run by default on opening any shell, add your commands to ``/etc/profile`` on Linux or use ``setx`` instead of ``set`` on Windows. - -## Options - -This list may be incomplete. - -| Name | Description | -| --- | --- | -| THREADS | Amount of threads/workers to use | -| DATABASE | Connection URL of the database | - -## Example - -This list may be incomplete. - -| Name | Description | -| --- | --- | -| WORK_DIR | /srv/fosscord-server | -| DEV_MODE | 0 | -| THREADS | 8 | -| DATABASE | db://username:password@db/dbname | -| STORAGE_LOCATION | /srv/fosscord-server/data/files/ | -| HTTP_PORT | 3001 | -| WS_PORT | 3002 | -| CDN_PORT | 3003 | -| RTC_PORT | 3004 | -| ADMIN_PORT | 3005 | diff --git a/docs/server/hosting.md b/docs/server/hosting.md deleted file mode 100644 index 41ca9b9..0000000 --- a/docs/server/hosting.md +++ /dev/null @@ -1,43 +0,0 @@ -# Hosting - -Many users are confused on where to host their Fosscord instances. This guide will show you multiple hosting methods, and tell you what works and what does not. - -As a rule of thumb: Free hosting methods generally do not work! - -## Recommended Methods - -### Dedicated Servers -A dedicated server is the most classic hosting solution. It is an actual, physical machine that you get completely for yourself. They are more expensive than a typical VPS for example, but give you the most control, down to what exact hardware you want to use. - -| Pro | Contra | -|---|---| -| Full Control | More expensive | -| You get the full potential of your server | No dynamic resources | - -**Recommended providers:** [ServerBlaze](https://serverblaze.eu/) (Sponsor), [Hetzner](https://hetzner.com) - -### Virtual Private Servers -A Virtual Private Server, or VPS for short, is a virtual machine that runs on a larger dedicated server. This makes a VPS cheaper than a dedicated server, as providers can rent out multiple VPS's per server. It also allows you to dynamically change the resources your server is getting, if your provider supports that. - -| Pro | Contra | -|---|---| -| Affordable | Virtualized | -| Dynamic Resources | Hardware is shared with others | - -**Recommended providers:** [Google Cloud](https://cloud.google.com/), [AWS](https://aws.amazon.com/), [Azure](https://azure.microsoft.com) - -### Selfhosting -Depending on your electricity prices, this may be the cheapest option. Just use any machine that you don't actively need as a server, and run it at home! This could be an old PC, a [Raspberry Pi](https://www.raspberrypi.org/), actual server hardware, or technically even a phone. This gives you the most control possible, and also allows you to breathe some life into old devices! - -**Note:** Publicly hosting a service from your internet connection reveals your IP address to the public. If you do not want that, you can look into services like [Cloudflare](https://www.cloudflare.com/). - -| Pro | Contra | -|---|---| -| The most control | A lot of work | -| Repurpose old devices | Risk of DDOS attacks etc | - -## Unsupported Methods - -- Specialized website hosting services, that don't give you root access to a server -- Online code collaboration sites like [**replit**](https://replit.com) or [**glitch**](https://glitch.com) -- Hosting with ngrok - you will not be able to use attachments (send files/images) as you do not have a static domain name diff --git a/docs/server/index.md b/docs/server/index.md deleted file mode 100644 index 72efb9a..0000000 --- a/docs/server/index.md +++ /dev/null @@ -1,6 +0,0 @@ -# Server - -## [Setup](setup.md) -## [Configuration](configuration.md) -## [Environment Variables](env.md) -## [Reverse Proxy/SSL](ssl.md) \ No newline at end of file diff --git a/docs/server/setup.md b/docs/server/setup.md deleted file mode 100644 index 8cd2ced..0000000 --- a/docs/server/setup.md +++ /dev/null @@ -1,66 +0,0 @@ -# Setup - - - -### With Terminal - -This is the latest bleeding edge version of fosscord-server, which may have bugs. - -#### Requirements - -- [NodeJS](https://nodejs.org) v14+ -- [Python](https://python.org) 3 -- (Only on Linux) ``gcc`` and ``g++`` | Packaged with `build-essential` on Debian/Ubuntu and `base-devel` on Arch -- (Only on Windows) [Visual Studio](https://visualstudio.microsoft.com/) with the C++ package - -!!! info "Make sure python can be executed by just running `python`" - -#### Setup - -Open a shell/terminal and execute these commands: - -``` -git clone https://github.com/fosscord/fosscord-server -cd fosscord-server -cd bundle -npm run setup -npm run start:bundle -``` - -You can now access Fosscord on [http://localhost:3001](http://localhost:3001) - -#### Updating - -To update Fosscord, execute these commands: - -!!! warning "This reverts any edited files" - -``` -git reset --hard HEAD -git pull -npm run setup -npm run start:bundle -``` - -### With Docker - -!!! failure "Not Supported Currently" -Avoid using Docker build until further notice. The current build is faulty and will not build correctly. Instead, install using the terminal in the section "With Terminal". - -Optionally, if you want to use Docker: - -``` -git clone https://github.com/fosscord/fosscord-server -cd fosscord-server -docker-compose up -d -``` - -You can now access Fosscord on [http://localhost:3001](http://localhost:3001) \ No newline at end of file diff --git a/docs/server/ssl.md b/docs/server/ssl.md deleted file mode 100644 index fec8cd2..0000000 --- a/docs/server/ssl.md +++ /dev/null @@ -1,29 +0,0 @@ -# Reverse Proxy/SSL - -If you're running a production instance of Fosscord, it is **strongly** recommended to use SSL (better known as https), which you can achieve by using a reverse proxy. - -A reverse proxy not only gives your instance SSL support, but also allows you to run it alongside other web services behind the same port! - -## Proxies - -There are multiple reverse proxies you can use, the most popular being [Nginx](https://nginx.org) and [Traefik](https://traefik.io/traefik/). - -Another popular solution that allows easy management via a webinterface and is based on Nginx is [NginxProxyManager](https://nginxproxymanager.com/). - -## Setup - -Choose your preferred reverse proxy, and install it using the respective setup instructions. - -Then, configure it to forward traffic from your domain (or a subdomain) to the port your Fosscord instance runs on (3001 by default). - -To be able to use SSL, you will need an SSL certificate. If you're using NginxProxyManager, you just need to enable SSL support and your proxy will automatically generate and set up certificates for you. Otherwise, you will need to set up [Certbot](https://certbot.eff.org). - -## Guides - -[Nginx](https://www.nginx.com/resources/wiki/start/topics/tutorials/install/) - -[NginxProxyManager](https://nginxproxymanager.com/guide/#quick-setup) - -[Traefik](https://doc.traefik.io/traefik/getting-started/install-traefik/) - -[Certbot](https://certbot.eff.org/instructions) \ No newline at end of file diff --git a/docs/server/systemd.md b/docs/server/systemd.md deleted file mode 100644 index 01d1b50..0000000 --- a/docs/server/systemd.md +++ /dev/null @@ -1,21 +0,0 @@ -# Systemd Service - -If you want to run Fosscord as a systemd service, simply put this in ``/etc/systemd/system/fosscord.service``: - -``` -[Unit] -Description= - -[Service] -User= -WorkingDirectory= -ExecStart=npm run start:bundle -Restart=always - -[Install] -WantedBy=multi-user.target -``` - -Then, execute ``sudo systemctl start fosscord`` from your terminal. - -If you want to automatically run Fosscord on boot, execute ``sudo systemctl enable fosscord`` \ No newline at end of file diff --git a/docs/setup/bots/index.md b/docs/setup/bots/index.md new file mode 100644 index 0000000..bec3e7f --- /dev/null +++ b/docs/setup/bots/index.md @@ -0,0 +1,61 @@ +# Bots and Applications + +Fosscord is backwards-compatibile with Discord.com, and so all +existing bots and applications designed for Discord.com should work with relatively easily +when connected to a Fosscord instance instead. + +The Discord Developer Panel is available at /developers, and allows you all the same functionality +to create bots and applications on a Fosscord instance as Discord.com. + +## Bot Libraries + +### Discord.js + +The `Client` class constructor accepts a `http` object, which you can use to change +the endpoints used. + +```js +const { Client } = require("discord.js"); + +const client = new Client({ + http: { + version: 9, + api: "https://api.fosscord.com", + cdn: "https://cdn.fosscord.com", + invite: "https://fosscord.com/invite", + }, +}); + +client.login("your token here"); +``` + +### Discord.py + +```py +import discord + +discord.http.Route.BASE = "https://api.fosscord.com" +client = discord.Client() + +client.run('your token here') +``` + +### JDA + +```java +import java.lang.reflect.*; +import net.dv8tion.jda.internal.requests.*; + +public static void main(String[] args) { + JDA jda = JDABuilder.createDefault("your token here").build(); + + Field field = Requester.class.getDeclaredField("DISCORD_API_PREFIX") + field.setAccessible(true); + + Field modifiers = Field.class.getDeclaredField("modifiers"); + modifiers.setAccessible(true); + modifiers.setString(field, field.getModifiers() & ~Modifier.FINAL); + + field.set(null, "https://api.fosscord.com"); +} +``` diff --git a/docs/setup/index.md b/docs/setup/index.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/setup/server/configuration/env.md b/docs/setup/server/configuration/env.md new file mode 100644 index 0000000..eac1d9c --- /dev/null +++ b/docs/setup/server/configuration/env.md @@ -0,0 +1,19 @@ +# Environment Variables + +Below is a list of environment variables used by Fosscord. +You can set environment variables easily by creating an `.env` file +in the `fosscord-server` folder, with the format `NAME=VALUE` with each on new lines. + +| Name | Value | Description | +| ---------------- | -------------- | -------------------------------------------------------------------------------------------------------------------- | +| THREADS | number | Number of threads to run Fosscord on when using bundle. Make sure you've enabled RabbitMQ if using more than one | +| PORT | number | Port to listen on. Used by all components, including bundle. If using bundle, all components run under the same port | +| DATABASE | string | Database connection string. Defaults to SQlite3 at project root | +| CONFIG_PATH | string | File path for JSON config, if not using `config` db table | +| WS_LOGEVENTS | boolean | If set, log websocket events from gateway | +| CDN | string | Lowest priority value for public CDN annoucements | +| GATEWAY | string | Lowest priority value for public gateway annoucements | +| STORAGE_LOCATION | string | CDN storage location. File path or S3 bucktet | +| STORAGE_PROVIDER | "s3" or "file" | CDN storage provider | +| STORAGE_BUCKET | string | S3 bucket name | +| STORAGE_REGION | string | S3 storage region | diff --git a/docs/setup/server/configuration/guildFeatures.md b/docs/setup/server/configuration/guildFeatures.md new file mode 100644 index 0000000..2953c91 --- /dev/null +++ b/docs/setup/server/configuration/guildFeatures.md @@ -0,0 +1,8 @@ +# Guild Features + +Guild features as special modifiers assigned to guilds for additional functionality. + +In Fosscord, guild features are stored in the `features` column of the `guilds` table as a comma separated list, with no spaces. +For example, `ANIMATED_ICON,BANNER,DISCOVERABLE`. + +A list of all available guild features is available [here](https://gist.github.com/Techy/ecc60b12e94f8fc8185f09b82aa91dd2) diff --git a/docs/setup/server/configuration/index.md b/docs/setup/server/configuration/index.md new file mode 100644 index 0000000..ea864b9 --- /dev/null +++ b/docs/setup/server/configuration/index.md @@ -0,0 +1,11 @@ +# Configuration + +Fosscord's configuration is done through the `config` table of your database. +The table schema consists of two columns `key` and `value`, where `value` is a JSON value. +For now, you can update this through SQL manually or a GUI database editor such as +[DBeaver](https://dbeaver.io/) or [SQLite Browser](https://sqlitebrowser.org/) if using SQLite. + +The available configuration options, as 20/12/22 are listed below. +If a key is prepended by `?`, it is optional. The `?` is not a part of the key name. + +TODO: All available config options. diff --git a/docs/setup/server/configuration/userFlags.md b/docs/setup/server/configuration/userFlags.md new file mode 100644 index 0000000..50b13a0 --- /dev/null +++ b/docs/setup/server/configuration/userFlags.md @@ -0,0 +1,8 @@ +# User Flags + +User flags describe special properties of users, including whether they are staff, a verified bot, a bug hunter, etc. + +You can change a user's flags by setting the `public_flags` value in the `users` table. +You can assign multiple flags by simply summing the respective values. + +A list of all user flags is available [here](https://github.com/Delitefully/DiscordLists/blob/master/flags.md) diff --git a/docs/setup/server/database.md b/docs/setup/server/database.md new file mode 100644 index 0000000..b0ac8a2 --- /dev/null +++ b/docs/setup/server/database.md @@ -0,0 +1,12 @@ +# Database + +By default, Fosscord will use SQLite. SQLite is nice for testing or development, +but if you plan to run an instance with any sort of demand, you'd best set up a more Proper™ database +such as MariaDB or Postresql, which are both popular choices within the community. + +We won't go into the setup of these servers here, given the scope of our documentation, +but to configure Fosscord to use your new, shiny database, simply set the `DATABASE` [environment variable](configuration/env.md) +to your new database connection string. + +Usually, such a string will look something like +`type://username:password@your-IP/databaseName` diff --git a/docs/setup/server/imagor.md b/docs/setup/server/imagor.md new file mode 100644 index 0000000..3674019 --- /dev/null +++ b/docs/setup/server/imagor.md @@ -0,0 +1,41 @@ +# Imagor + +[Imagor](https://github.com/cshum/imagor) is a "fast, secure image processing server" +used by Fosscord for external image resizing, primarily by embeds from other websites when linked in a message. +If left unused, Fosscord will simply not provide a proxy_url for clients, which may leave external images unavailable +or cause the client to download directly from the image host. + +## Dependencies + +- [Docker](https://www.docker.com/) + +## Setup + +To setup Imagor for Fosscord, first grab the `security_requestSignature` config value from Fosscord's database, +and create a `imagor.env` file somewhere safe, with the following content. + +``` +IMAGOR_SECRET=[security_requestSignature value] +``` + +You can now start Imagor with + +```bash +docker run --env-file ./imagor.env -p 8000:8000 shumc/imagor +``` + +`8000` here is our port. Make sure that it'd available to people outside your network. +If you're using a reverse proxy such as Nginx for Fosscord already, you could add this to your config's `server` block + +```nginx +location /media { + proxy_pass http://127.0.0.1:8000; +} +``` + +Along with any additional config you already have, of course. +Alternative (and perhaps the better choice) would be to create a new domain, say `media.whatever.com` specifically for Imagor. + +Our last step is to simply tell Fosscord about Imagor. Just set the `cdn_imagorServerUrl` config value to your public endpoint for Imagor, wrapped in quotes. + +Congrats! After a restart, you've now got Imagor resizing your images! diff --git a/docs/setup/server/index.md b/docs/setup/server/index.md new file mode 100644 index 0000000..09bae56 --- /dev/null +++ b/docs/setup/server/index.md @@ -0,0 +1,53 @@ +# Server Setup + +Fosscord-server setup ranges in difficulty depending on how you want to configure your system. +This page provides a minimal setup guide to get you up and running, +you should check out the other pages on this site to take your instance to the next level. + +For this guide, we assume you're familar with the terminal. + +We do **not** recommend or support running Fosscord using services such as Ngrok, Heroku or other 'free' hosting providers. +You **must** have access to a terminal for this guide. + +## Dependencies + +- [Git](https://git-scm.com/) +- [NodeJS](https://nodejs.org). Version 16+ +- [Python](https://www.python.org/). Version 3+. Make sure this is executable via `python` in your terminal. +- On Linux: `gcc`/`g++`. Packaged with `build-essential` on Debian/Ubuntu and `base-devel` on Arch. +- On Windows: [Visual Studio](https://visualstudio.microsoft.com/) (**NOT** VSCode) with the C++ development package. + +## Setup + +In your terminal: + +```bash +# Download Fosscord +git clone https://github.com/fosscord/fosscord-server.git + +# Navigate to project root +cd fosscord-server + +# Install javascript packages +npm i + +# Build and generate schema. Separately, they are `build` and `generate:schema`. +npm run setup + +# Syncronise database. Be careful running this on existing databases, +# as you may incur dataloss. +npm run sync:db + +# Start the bundle server ( API, CDN, Gateway in one ) +npm run start +``` + +If all went according to plan, you can now access your new Fosscord instance at [http://localhost:3001](http://localhost:3001)! Congrats! + +## Now what? + +Well, now you can configure Fosscord to your liking! + +- [Skip to server configuration](configuration) +- [Skip to reverse proxy / SSL](reverseProxy.md) +- [Skip to security](security.md) diff --git a/docs/setup/server/reverseProxy.md b/docs/setup/server/reverseProxy.md new file mode 100644 index 0000000..8a78bba --- /dev/null +++ b/docs/setup/server/reverseProxy.md @@ -0,0 +1,51 @@ +# Reverse Proxy + +## NGINX + +Generally, our community sets up Fosscord instances behind NGINX, a powerful reverse proxy. + +Below is an example NGINX config. On Ubuntu, you can put this in `/etc/nginx/sites-available/fosscord`, +and enable it with `ln -s /etc/nginx/sites-available/fosscord /etc/nginx/sites-enabled/` and `systemctl restart nginx` + +```nginx +server { + # Change server_name + server_name fosscord.example.com; + listen 80; + + location / { + # do NOT change this + proxy_pass http://127.0.0.1:3001; + proxy_set_header Host $host; + proxy_pass_request_headers on; + add_header Last-Modified $date_gmt; + add_header Cache-Control 'no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0'; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-Proto https; + proxy_set_header X-Forwarded-For $remote_addr; + proxy_set_header X-Forwarded-Host $remote_addr; + proxy_no_cache 1; + proxy_cache_bypass 1; + + # This is important. It allows Websocket connections through NGINX. + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + } +} +``` + +## SSL + +After you've set up NGINX, it's very simple to also set up SSL using `certbot`. +On Ubuntu: + +```bash +sudo apt install certbot python3-certbot-nginx +certbot --nginx +``` + +You should be asked various questions, such as which site you want to enable SSL for. +Afterwhich, you should now have a SSL secured Fosscord instance! + +But wait! There's more, actually. If you have changed your `gateway_endpointPublic` +or `cdn_endpointPublic` addresses, you'll probably have to update those to use the new protocol (`https` or `wss`). diff --git a/docs/setup/server/security/captcha.md b/docs/setup/server/security/captcha.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/setup/server/security/index.md b/docs/setup/server/security/index.md new file mode 100644 index 0000000..2525592 --- /dev/null +++ b/docs/setup/server/security/index.md @@ -0,0 +1,11 @@ +# Security + +There are various security measures available to instance owners. + +## [Rights](rights.md) + +## [Captchas](captcha.md) + +## [Registration Tokens](regTokens.md) + +## [Rate Limits](limits.md) diff --git a/docs/setup/server/security/limits.md b/docs/setup/server/security/limits.md new file mode 100644 index 0000000..3616ab3 --- /dev/null +++ b/docs/setup/server/security/limits.md @@ -0,0 +1 @@ +# Rate Limiting diff --git a/docs/setup/server/security/regTokens.md b/docs/setup/server/security/regTokens.md new file mode 100644 index 0000000..6bed57a --- /dev/null +++ b/docs/setup/server/security/regTokens.md @@ -0,0 +1 @@ +# Registration Tokens diff --git a/docs/setup/server/security/rights.md b/docs/setup/server/security/rights.md new file mode 100644 index 0000000..ff3a3fa --- /dev/null +++ b/docs/setup/server/security/rights.md @@ -0,0 +1,69 @@ +# Rights + +Rights are instance-wide, per-user permissions for everything you may perform on the instance, +such as sending messages, editing messages, or shutting down the server. + +You may modify a users rights by editing the `rights` column in the `users` table. + +The rights value is a bitfield string. To grant multiple rights you must add their values together. +For example, to grant `CREATE_GUILDS` and `SEND_MESSAGES`, set their `rights` to +`(1 << 15) = 32768` + +`(1 << 25) = 33554432` = +`33587200` + +The default rights value given to users (set through the `register_defaultRights` config value) +is generated through the `npm run generate:rights` script. + +Below is a list of all available rights + +| Right | Value | When enabled | +| ------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `OPERATOR` | 1 << 0 | All rights | +| `MANAGE_APPLICATIONS` | 1 << 1 | Ability to alter or remove others' applications | +| `MANAGE_GUILDS` | 1 << 2 | Same as the per-guild `MANAGE_GUILD` permission, but applies to all guilds and DM channels, can join any guild without invite | +| `MANAGE_MESSAGES` | 1 << 3 | Can delete or edit any message they can read | +| `MANAGE_RATE_LIMITS` | 1 << 4 | Add, change, define rate limits of other users, can also grant others `BYPASS_RATE_LIMITS` when combined with `BYPASS_RATE_LIMITS` and `MANAGE_USERS` | +| `MANAGE_ROUTING` | 1 << 5 | Create, alter, enable, disable custom message routing rules in any channel/guild | +| `MANAGE_TICKETS` | 1 << 6 | Respond to or resolve other users' support tickets | +| `MANAGE_USERS` | 1 << 7 | Create, alter, remove, ban users; create, modify, remove user groups | +| `ADD_MEMBERS` | 1 << 8 | Can manually add members into their guilds and group DMs | +| `BYPASS_RATE_LIMITS` | 1 << 9 | Makes the user exempt from all rate limits | +| `CREATE_APPLICATIONS` | 1 << 10 | Can create, edit, remove own applications | +| `CREATE_CHANNELS` | 1 << 11 | Can create guild channels and custom channels | +| `CREATE_DMS` | 1 << 12 | Can create 1:1 DMs (a user without `SEND_MESSAGES` cannot be added however) | +| `CREATE_DM_GROUPS` | 1 << 13 | Can create group DMs (a user without `SEND_MESSAGES` cannot be added however) | +| `CREATE_GUILDS` | 1 << 14 | Can create guilds | +| `CREATE_INVITES` | 1 << 15 | Can create mass invites in the guilds that they have `CREATE_INSTANT_INVITE` | +| `CREATE_ROLES` | 1 << 16 | Can create roles and per-guild or per-channel permission overrides in the guilds that they have permissions | +| `CREATE_TEMPLATES` | 1 << 17 | Can create templates for guilds, custom channels and channels with custom routing | +| `CREATE_WEBHOOKS` | 1 << 18 | Can create webhooks in the guilds that they have permissions | +| `JOIN_GUILDS` | 1 << 19 | Can join guilds by using invites or vanity names | +| `PIN_MESSAGES` | 1 << 20 | Can modify the pinned messages in the guilds that they have permission | +| `SELF_ADD_REACTIONS` | 1 << 21 | Can react to messages, subject to permissions | +| `SELF_DELETE_MESSAGES` | 1 << 22 | Can delete own messages | +| `SELF_EDIT_MESSAGES` | 1 << 23 | Can edit own messages | +| `SELF_EDIT_NAME` | 1 << 24 | Can edit own username, nickname and avatar | +| `SEND_MESSAGES` | 1 << 25 | Can send messages in the channels that they have permissions | +| `USE_ACTIVITIES` | 1 << 26 | Can use voice activities, such as watch together or whiteboard | +| `USE_VIDEO` | 1 << 27 | Can use video and screenshare in guilds/channels that they have permissions | +| `USE_VOICE` | 1 << 28 | Can use voice in guilds/channels that they have permissions | +| `INVITE_USERS` | 1 << 29 | Can create user-specific invites in guilds that they have `INVITE_USERS` | +| `SELF_DELETE_DISABLE` | 1 << 30 | Can delete/disable own account | +| `DEBTABLE` | 1 << 31 | Can use pay-to-use features once paid | +| `CREDITABLE` | 1 << 32 | Can earn money using monetization features in guilds that have `MONETIZATION_ENABLED` | +| `KICK_BAN_MEMBERS` | 1 << 33 | Can kick or ban guild or group DM members in the guilds/groups that they have KICK_MEMBERS, or BAN_MEMBERS | +| `SELF_LEAVE_GROUPS` | 1 << 34 | Can leave the guilds or group DMs that they joined on their own (one can always leave a guild or group DMs they have been force-added) | +| `PRESENCE` | 1 << 35 | Inverts the presence confidentiality default (OPERATOR's presence is not routed by default, others' are) for a given user | +| `SELF_ADD_DISCOVERABLE` | 1 << 36 | Can mark discoverable guilds that they have permissions to mark as discoverable | +| `MANAGE_GUILD_DIRECTORY` | 1 << 37 | Can change anything in the primary guild directory | +| `POGGERS` | 1 << 38 | Can send confetti, screenshake, random user mention (@someone) | +| `USE_ACHIEVEMENTS` | 1 << 39 | Can use achievements and cheers | +| `INITIATE_INTERACTIONS` | 1 << 40 | Can initiate interactions | +| `RESPOND_TO_INTERACTIONS` | 1 << 41 | Can respond to interactions | +| `SEND_BACKDATED_EVENTS` | 1 << 42 | Can send backdated events | +| `USE_MASS_INVITES` | 1 << 43 | Can accept mass (guild) invites | +| `ACCEPT_INVITES` | 1 << 44 | Can accept user-specific invites and DM requests | +| `SELF_EDIT_FLAGS` | 1 << 45 | Can modify own flags | +| `EDIT_FLAGS` | 1 << 46 | Can modify other's flags | +| `MANAGE_GROUPS` | 1 << 47 | Can manage other's groups | +| `VIEW_SERVER_STATS` | 1 << 48 | Can view server stats /api/policies/stats | diff --git a/docs/setup/server/theming/index.md b/docs/setup/server/theming/index.md new file mode 100644 index 0000000..f7f2256 --- /dev/null +++ b/docs/setup/server/theming/index.md @@ -0,0 +1,10 @@ +# Theming + +'Theming' here refers to the theming of the Discord.com web client used for testing. +Fosscord can inject additional CSS into the client to allow you to change quite a lot about it's appearence. + +There's three different CSS files injected into the client, in `/assets/public`, including `fosscord-login.css`, `fosscord.css`, and `user.css`. +Fosscord developers may make changes to `fosscord.css` occasionally, so it's best to not touch this. +`user.css` and `fosscord.css` are applied to all routes in the client, while `fosscord-login.css` is only applied to the login/register routes. + +You can essentially throw any BetterDiscord/Replugged CSS theme into the `users.css` file and, given it was designed for the same client version, it'll work. diff --git a/mkdocs.yml b/mkdocs.yml index 932c877..5e90573 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -3,32 +3,33 @@ repo_url: https://github.com/fosscord/fosscord edit_uri: https://github.com/fosscord/fosscord-docs/edit/master/docs/ site_description: Documentation of Fosscord a free open source selfhostable chat, voice and video discord-compatible platform plugins: - - section-index - - search - - render_swagger + - section-index + - search + - render_swagger theme: - name: material - logo: assets/logo.svg - favicon: assets/logo.svg - font: Open Sans - palette: - - scheme: default - toggle: - icon: material/lightbulb-outline - name: Switch to dark mode - - scheme: slate - toggle: - icon: material/lightbulb - name: Switch to light mode - features: - - navigation.expand - - navigation.instant - - navigation.tracking - - navigation.sections - - navigation.indexes - - navigation.top + name: material + logo: assets/logo.svg + favicon: assets/logo.svg + font: Open Sans + palette: + - scheme: default + toggle: + icon: material/lightbulb-outline + name: Switch to dark mode + - scheme: slate + toggle: + icon: material/lightbulb + name: Switch to light mode + features: + - navigation.expand + - navigation.instant + - navigation.tracking + - navigation.sections + - navigation.indexes + - navigation.top markdown_extensions: - - admonition - - pymdownx.details - - pymdownx.highlight - - pymdownx.superfences + - admonition + - pymdownx.details + - pymdownx.highlight + - pymdownx.inlinehilite + - pymdownx.superfences From 3eaf5af2b8e6687bb2ca0212e037b4b8441bfb3c Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Thu, 22 Dec 2022 21:53:24 +1100 Subject: [PATCH 06/52] npm scripts and available config options --- docs/assets/extra.css | 7 + docs/concepts/guildTemplates.md | 0 docs/setup/server/configuration/embeds.md | 0 docs/setup/server/configuration/index.md | 137 +++++++++++++++++++- docs/setup/server/configuration/rabbitmq.md | 0 docs/setup/server/index.md | 2 +- docs/setup/server/npmScripts.md | 60 +++++++++ mkdocs.yml | 1 + 8 files changed, 203 insertions(+), 4 deletions(-) create mode 100644 docs/assets/extra.css create mode 100644 docs/concepts/guildTemplates.md create mode 100644 docs/setup/server/configuration/embeds.md create mode 100644 docs/setup/server/configuration/rabbitmq.md create mode 100644 docs/setup/server/npmScripts.md diff --git a/docs/assets/extra.css b/docs/assets/extra.css new file mode 100644 index 0000000..9b9b1d6 --- /dev/null +++ b/docs/assets/extra.css @@ -0,0 +1,7 @@ +.md-typeset__table { + min-width: 100%; +} + +.md-typeset table:not([class]) { + display: table; +} diff --git a/docs/concepts/guildTemplates.md b/docs/concepts/guildTemplates.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/setup/server/configuration/embeds.md b/docs/setup/server/configuration/embeds.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/setup/server/configuration/index.md b/docs/setup/server/configuration/index.md index ea864b9..ab2dd2b 100644 --- a/docs/setup/server/configuration/index.md +++ b/docs/setup/server/configuration/index.md @@ -5,7 +5,138 @@ The table schema consists of two columns `key` and `value`, where `value` is a J For now, you can update this through SQL manually or a GUI database editor such as [DBeaver](https://dbeaver.io/) or [SQLite Browser](https://sqlitebrowser.org/) if using SQLite. -The available configuration options, as 20/12/22 are listed below. -If a key is prepended by `?`, it is optional. The `?` is not a part of the key name. +## Array Types -TODO: All available config options. +Arrays are represented by \_[number] in a config key. For example, multiple `guild_defaultFeatures` may be assigned such as + +| key | value | +| ------------------------- | --------------- | +| `guild_defaultFeatures_0` | `DISCOVERABLE` | +| `guild_defaultFeatures_1` | `ANIMATED_ICON` | +| etc | etc | + +## Available Configuration Options + +| key | default | type | description | +| -------------------------------------------------- | -------------------------------------------------------- | ---------------------- | --------------------------------------------------------------------- | +| gateway_endpointClient | null | string | Injected into index.html if available | +| gateway_endpointPrivate | null | string | Used for internal communication with gateway | +| gateway_endpointPublic | null | string | Publicly announced gateway endpoint | +| cdn_endpointClient | null | string | See gateway_endpointClient | +| cdn_endpointPrivate | http://localhost:3001 | string | See gateway_endpointPrivate | +| cdn_endpointPublic | http://localhost:3001 | string | See gateway_endpointPublic | +| cdn_resizeHeightMax | 1000 | number | Maximum image resize height for embeds. | +| cdn_resizeWidthMax | 1000 | number | Maximum image resize width for embeds. | +| [cdn_imagorServerUrl](../imagor.md) | null | string | Imagor instance endpoint for external image resizing. | +| api_defaultVersion | 9 | string | API version to use when not specified | +| api_activeVersions_0 | 6, 7, 8, 9 | string[] | Allowed API version numbers. [Array](#array-types). | +| general_instanceName | Fosscord Instance | string | Announced instance name | +| general_instanceDescription | This is a Fosscord instance made in the pre-release days | string | Announced instance description | +| general_frontPage | null | string | Announced instance front page | +| general_tosPage | null | string | Announced instance TOS page | +| general_correspondenceEmail | null | string | Announced instance correspondence email | +| general_correspondenceUserID | null | string | Announced instance correspondence ID (from this instance) | +| general_image | null | string | Announced instance image URL | +| general_instanceId | Snowflake of instance creation date | Snowflake | Announced instance ID | +| limits_user_maxGuilds | 1048576 | number | Maxmimum guilds a user can join | +| limits_user_maxUsername | 127 | number | Maximum username length | +| limits_user_maxFriends | 5000 | number | Maximum number of friends per user | +| limits_guild_maxRoles | 1000 | number | Maximum number of roles in a guild | +| limits_guild_maxEmojis | 2000 | number | Maximum number of emojis in a guild | +| limits_guild_maxMembers | 25000000 | number | Maximum number of members in a guild | +| limits_guild_maxChannels | 65535 | number | Maximum number of channels in a guild | +| limits_guild_maxChannelsInCategory | 65535 | number | Maximum number of channels per category in a guild | +| limits_message_maxCharacters | 1048576 | number | Maximum character count per message | +| limits_message_maxTTSCharacters | 160 | number | Maximum character count per text to speech messages | +| limits_message_maxReactions | 2048 | number | Maximum number of reactions per message | +| limits_message_maxAttachmentSize | 1073741824 | number | Maximum total attachment size per message | +| limits_message_maxBulkDelete | 1000 | number | Maximum number of messages deletable through bulk delete | +| limits_message_maxEmbedDownloadSize | 5242880 | number | Maximum download size of external embeddable content | +| limits_channel_maxPins | 500 | number | Maximum number of pins per channel | +| limits_channel_maxTopic | 1024 | number | Maximum channel topic character length | +| limits_channel_maxWebhooks | 100 | number | Maximum number of webhooks per channel | +| limits_rate_enabled | true | boolean | Whether rate limits are enabled | +| limits_rate_ip_count | 500 | number | Allowed number of requests per IP within window | +| limits_rate_ip_window | 5 | number | IP rate limit window, in seconds | +| limits_rate_global_count | 250 | number | Allowed number of requests globally within window | +| limits_rate_global_window | 5 | number | Global rate limit window, in seconds | +| limits_rate_error_count | 10 | number | Number of allowed errors per user within window | +| limits_rate_error_window | 5 | number | User error rate limit window, in seconds | +| limits_rate_routes_guild_count | 5 | number | Allowed number of /guild\* requests per user within window | +| limits_rate_routes_guild_window | 5 | number | User /guild\* rate limit window, in seconds | +| limits_rate_routes_webhook_count | 10 | number | Allowed number of /webhooks\* requests per user within window | +| limits_rate_routes_webhook_window | 5 | number | User /webhooks\* rate limit window, in seconds | +| limits_rate_routes_channel_count | 10 | number | Allowed number of /channel\* requests per user within window | +| limits_rate_routes_channel_window | 5 | number | User /channel\* rate limit window, in seconds | +| limits_rate_routes_auth_login_count | 5 | number | Allowed number of IP /login requests within window | +| limits_rate_routes_auth_login_window | 60 | number | IP /login rate limit window, in seconds | +| limits_rate_routes_auth_register_count | 2 | number | Allowed number of IP /register requests within window | +| limits_rate_routes_auth_register_window | 43200 | number | IP /register rate limit window, in seconds | +| limits_absoluteRate_register_limit | 25 | number | Absolute number of registrations globally per window | +| limits_absoluteRate_register_window | 3600000 | number | Global /register rate limit window, in seconds | +| limits_absoluteRate_register_enabled | true | boolean | Whether absolute register rate limits are enabled | +| limits_absoluteRate_sendMessage_limit | 200 | number | Absolute number of messages globally per window | +| limits_absoluteRate_sendMessage_window | 60000 | number | Global sendMessage window, in seconds | +| limits_absoluteRate_sendMessage_enabled | true | boolean | Whether absolute message sending rate limits are enabled | +| [security_captcha_enabled](../security/captcha.md) | false | boolean | Whether to enable captchas for login/register | +| security_captcha_service | null | "recaptcha"/"hcaptcha" | Which captcha service to use | +| security_captcha_sitekey | null | string | Captcha service sitekey | +| security_captcha_secret | null | string | Captcha service secret | +| security_twoFactor_generateBackupCodes | true | boolean | Whether to generate backup codes for MFA users | +| security_requestSignature | Secret secret | string | The signature required for CDN or [Imagor](../imagor.md) usage | +| security_jwtSecret | Secure secret | string | The secret used for user token generation | +| [security_forwadedFor](../reverseProxy.md) | null | string | HTTP header for user's real IP. | +| security_ipdataApiKey | Fosscord IPdata key | string | API key used for IP geolocation and proxy detection | +| security_mfaBackupCodeCount | 10 | number | Number of MFA backup codes to generate | +| security_statsWorldReadable | true | boolean | Whether instance stats are publically accessible or require right | +| security_defaultRegistrationTokenExpiration | 604800000 | number | Seconds for [registration tokens](../security/regTokens.md) to expire | +| login_requireCaptcha | false | boolean | Whether login requires captcha verification | +| register_email_required | false | boolean | Whether an email is required for registration | +| register_email_allowlist | false | boolean | Whether `register_email_domains` is an allowlist | +| register_email_blocklist | true | boolean | Whether `register_email_domains` is a blocklist | +| register_email_domains | [] | string[] | The email domains list to use as a block/allow list | +| register_dateOfBirth_required | true | boolean | Whether a date of birth is required for registration | +| register_dateOfBirth_minimum | 13 | number | The minimum age of registration | +| register_password_required | false | boolean | Whether a password is required for registration | +| register_password_minLength | 8 | number | Minimum password length | +| register_password_minNumbers | 2 | number | Minimum number of number characters in passwords | +| register_password_minUpperCase | 2 | number | Minimum number of uppercase characters in passwords | +| register_password_minSymbols | 0 | number | Minimum number of symbols in passwords | +| register_disabled | false | boolean | Whether registration is disabled | +| register_requireCaptcha | true | boolean | Whether registration requires captcha verification | +| register_requireInvite | false | boolean | Whether registration requires a guild invite | +| register_guestsRequireInvite | true | boolean | Whether guests accounts require a guild invite | +| register_allowMultipleAccounts | true | boolean | Allow multiple accounts with the same client fingerprint | +| register_blockProxies | true | boolean | Whether proxies are blocked from registration | +| register_incrementingDiscriminators | false | boolean | Whether discriminators are random or incrementing | +| [register_defaultRights](../security/rights.md) | 30644591655940 | string | The rights assigned to users _upon registration_ | +| regions_default | fosscord | string | The default voice region to use | +| regions_useDefaultAsOptimal | true | boolean | Whether to calculate closest or use default as optimal voice region | +| regions_available_0_id | fosscord | string[] | The available voice region IDs | +| regions_available_0_name | Fosscord | string[] | The available voice region names | +| regions_available_0_endpoint | 127.0.0.1:3004 | string[] | The available voice region endpoint URLs | +| regions_available_0_vip | false | boolean[] | Whether this voice region is VIP exclusive | +| regions_available_0_custom | false | boolean[] | Whether this is a custom voice region (used for events/etc) | +| regions_available_0_deprecated | false | boolean[] | Whether this is a deprecated voice region (clients avoid these) | +| guild_discovery_showAllGuilds | false | boolean | Whether guild discovery should show all guilds | +| guild_discovery_limit | 24 | number | Maximum number of guild discovery elements per page | +| guild_autoJoin_enabled | true | boolean | Whether users auto join guild(s) on registration | +| guild_autoJoin_canLeave | true | boolean | Whether users can leave the auto-joined guild(s) | +| [guild_defaultFeatures_0](guildFeatures.md) | null | string | Features automatically granted to guilds upon creation | +| gif_enabled | true | boolean | Whether GIF features are enabled | +| gif_provider | tenor | "tenor" | Which GIF service to use | +| gif_apiKey | LIVDSRZULELA | string | GIF service API key | +| [rabbitmq_host](rabbitmq.md) | null | string | RabbitMQ connection string | +| templates_enabled | true | boolean | Whether guild templates are enabled | +| templates_allowTemplateCreation | true | boolean | Whether new guild templates can be created | +| templates_allowDiscordTemplates | true | boolean | Whether guild templates from Discord.com can be fetched | +| [templates_allowRaws](/concepts/guildTemplates.md) | true | boolean | Whether raw guild templates are allowed | +| client_useTestClient | false | boolean | Whether the Discord.com test client is enabled | +| sentry_enabled | false | boolean | Whether server-side Sentry analytics is enabled | +| sentry_endpoint | Fosscord sentry endpoint | string | Sentry endpoint | +| sentry_traceSampleRate | 1 | number | Sentry sample rate (1 means all requests) | +| sentry_environment | The | string | Sentry environment name | +| defaults_user_premium | false | boolean | Whether users are given premium upon registration | +| defaults_user_premium_type | 2 | number | The premium type given to users upon registration | +| defaults_user_verified | true | boolean | Whether users get verified email upon registration | +| [external_twitter](embeds.md) | null | string | Twitter API key used for Twitter embeds | diff --git a/docs/setup/server/configuration/rabbitmq.md b/docs/setup/server/configuration/rabbitmq.md new file mode 100644 index 0000000..e69de29 diff --git a/docs/setup/server/index.md b/docs/setup/server/index.md index 09bae56..0690387 100644 --- a/docs/setup/server/index.md +++ b/docs/setup/server/index.md @@ -35,7 +35,7 @@ npm i npm run setup # Syncronise database. Be careful running this on existing databases, -# as you may incur dataloss. +# as you may incur dataloss. You only need to run this once. npm run sync:db # Start the bundle server ( API, CDN, Gateway in one ) diff --git a/docs/setup/server/npmScripts.md b/docs/setup/server/npmScripts.md new file mode 100644 index 0000000..fea8d69 --- /dev/null +++ b/docs/setup/server/npmScripts.md @@ -0,0 +1,60 @@ +# NPM scripts + +Can be executed using `npm run {script name}` + +## `setup` + +Shorthand for `build` and `generate:schema` + +## `sync:db` + +Syncronise the database schema between Fosscord source code and your database. +**May incur dataloss**. You should only run this once, for new installs. + +## `build` + +Builds the Fosscord source code + +## `start` + +Starts the bundled server. API, Gateway, and CDN run under the same process when using bundle, using the same port. + +## `start:api`, `start:gateway`, `start:cdn` + +Starts the respective component. + +## `generate:client` + +Downloads a (mostly) complete discord.com web client and runs some basic patches: + +- Replaces all mentions of "Server" -> "Guild" +- Replaces "Discord" -> "Fosscord" +- "Nitro" -> "Premium" +- Replaces the Discord logo home button with a Fosscord logo +- Prevents `localStorage` deletion (for [plugins](plugins.md)) +- Adds `fast-identify` support + +The script can only search for all javascript client files, +as it is difficult to determine the filetype of other assets. +Instead, it uses a `cacheMisses` file in `fosscord-server/assets` +generated at server runtime. + +### fast-identify + +Essentially, it's a small mod to the fast-connect script Discord clients already use, +which sends a small `IDENTIFY` payload to the server, which speeds up how fast we receive `READY`. +Without the client patch however, the `READY` payload received will just be ignored by the client, +and it'll attempt to re-auth after a few seconds. + +## `generate:rights` + +Generates a Discord.com-like rights value for use as a default right. +Also displays the 'all rights' value, which `1` is a placeholder for. + +## `generate:changelog` + +Injects the changelog at `fosscord-server/assets/changelog.txt` into the Discord.com client. + +## `generate:schema` + +Recreates the `fosscord-server/assets/schema.json` file, which is used for API and Gateway request validation. diff --git a/mkdocs.yml b/mkdocs.yml index 5e90573..36343d7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -33,3 +33,4 @@ markdown_extensions: - pymdownx.highlight - pymdownx.inlinehilite - pymdownx.superfences +extra_css: [assets/extra.css] From 4acda61971bde79ab5058813c713ef35649df803 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Thu, 22 Dec 2022 22:55:32 +1100 Subject: [PATCH 07/52] Add note to imagor docs about the [] --- docs/setup/server/imagor.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/setup/server/imagor.md b/docs/setup/server/imagor.md index 3674019..4a7be0c 100644 --- a/docs/setup/server/imagor.md +++ b/docs/setup/server/imagor.md @@ -12,7 +12,7 @@ or cause the client to download directly from the image host. ## Setup To setup Imagor for Fosscord, first grab the `security_requestSignature` config value from Fosscord's database, -and create a `imagor.env` file somewhere safe, with the following content. +and create a `imagor.env` file somewhere safe, with the following content (do not include the `[]`) ``` IMAGOR_SECRET=[security_requestSignature value] From bc08ac85cf5ea129e62948600b7301dc2f3965d5 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Fri, 23 Dec 2022 23:31:21 +1100 Subject: [PATCH 08/52] Fix random "the" --- docs/setup/server/configuration/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/setup/server/configuration/index.md b/docs/setup/server/configuration/index.md index ab2dd2b..0a9d367 100644 --- a/docs/setup/server/configuration/index.md +++ b/docs/setup/server/configuration/index.md @@ -135,7 +135,7 @@ Arrays are represented by \_[number] in a config key. For example, multiple `gui | sentry_enabled | false | boolean | Whether server-side Sentry analytics is enabled | | sentry_endpoint | Fosscord sentry endpoint | string | Sentry endpoint | | sentry_traceSampleRate | 1 | number | Sentry sample rate (1 means all requests) | -| sentry_environment | The | string | Sentry environment name | +| sentry_environment | System hostname | string | Sentry environment name | | defaults_user_premium | false | boolean | Whether users are given premium upon registration | | defaults_user_premium_type | 2 | number | The premium type given to users upon registration | | defaults_user_verified | true | boolean | Whether users get verified email upon registration | From e09b63efb9a2b5350763b71e98878c8e0a58ca48 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Tue, 27 Dec 2022 13:55:13 +1100 Subject: [PATCH 09/52] Add an updating guide --- docs/setup/server/updating.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 docs/setup/server/updating.md diff --git a/docs/setup/server/updating.md b/docs/setup/server/updating.md new file mode 100644 index 0000000..6af1985 --- /dev/null +++ b/docs/setup/server/updating.md @@ -0,0 +1,21 @@ +If you had followed the [setup guide](index.md), you'll have installed Fosscord using [Git](https://git-scm.com/). +Thus, you can update the server by running `git pull`. + +If you had made any changes locally, you may run into merge conflicts, +where the Fosscord team has made changes to the same code you changed. If it's not important to you, you can simply run `git reset --hard HEAD` +*which will delete all your changes*. If you want to keep them, you'll have to go through each conflict and resolve them. + +After downloading the new version, go through the setup guide as normal again: + +!!! error "Do not run `npm run sync:db` with existing databases! You may suffer dataloss!" + +```bash +# Install any new javascript packages +npm i + +# Build and generate schema +npm run setup + +# Start the server +npm run start +``` \ No newline at end of file From 9d43d77c2b5ed2e6f8168b765eec819651fcd4b8 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Wed, 28 Dec 2022 20:52:35 +1100 Subject: [PATCH 10/52] Rights calculator widget --- docs/setup/server/security/rights.md | 106 ++++++++++++++++++++++++++- 1 file changed, 104 insertions(+), 2 deletions(-) diff --git a/docs/setup/server/security/rights.md b/docs/setup/server/security/rights.md index ff3a3fa..ccf6d50 100644 --- a/docs/setup/server/security/rights.md +++ b/docs/setup/server/security/rights.md @@ -1,4 +1,4 @@ -# Rights +## About Rights are instance-wide, per-user permissions for everything you may perform on the instance, such as sending messages, editing messages, or shutting down the server. @@ -14,7 +14,7 @@ For example, to grant `CREATE_GUILDS` and `SEND_MESSAGES`, set their `rights` to The default rights value given to users (set through the `register_defaultRights` config value) is generated through the `npm run generate:rights` script. -Below is a list of all available rights +## Available rights | Right | Value | When enabled | | ------------------------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -67,3 +67,105 @@ Below is a list of all available rights | `EDIT_FLAGS` | 1 << 46 | Can modify other's flags | | `MANAGE_GROUPS` | 1 << 47 | Can manage other's groups | | `VIEW_SERVER_STATS` | 1 << 48 | Can view server stats /api/policies/stats | + +## Calculator + + + +
    +
    +
    +

    Rights:

    +
    +
    + + \ No newline at end of file From b1a13d18bbc3cfd1ea78091844df45f9574dfd1b Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Wed, 28 Dec 2022 21:14:23 +1100 Subject: [PATCH 11/52] Fix rights calculator not loading on first page load ( not reload ) --- docs/assets/js/rightsCalculator.js | 65 +++++++++++++++++++++++++++ docs/setup/server/security/rights.md | 66 +--------------------------- 2 files changed, 66 insertions(+), 65 deletions(-) create mode 100644 docs/assets/js/rightsCalculator.js diff --git a/docs/assets/js/rightsCalculator.js b/docs/assets/js/rightsCalculator.js new file mode 100644 index 0000000..2b2cefa --- /dev/null +++ b/docs/assets/js/rightsCalculator.js @@ -0,0 +1,65 @@ +(() => { + const NUM_COLUMNS = 3; + + // Grab it from the above markdown table and parse it. Simply don't have multiple tables in the page lol + const rights = + // grab the table data elements + [...document.querySelectorAll("td")] + .map(x => x.innerText) // get their content + .map((x, i) => + x.indexOf("<<") == 2 // if this column is the `value` column + ? x.split(" ").reverse()[0] // get the value we shift by + : x); // otherwise dont do anything + const mount = document.getElementById("rights-container"); + const outputMount = document.getElementById("rights-output"); + var calculated = 0n; + + for (var i = 0; i < rights.length; i += NUM_COLUMNS) { + const name = rights[i]; + const shift = rights[i + 1]; + const desc = rights[i + 2]; + + const div = document.createElement("div"); + const input = document.createElement("input"); + input.setAttribute("type", "checkbox"); + input.setAttribute("id", shift); + const label = document.createElement("label"); + label.setAttribute("for", label.id); + label.innerText = name.toUpperCase(); + + div.appendChild(input); + div.appendChild(label); + + mount.append(div); + + input.addEventListener("click", (event) => { + const value = 1n << BigInt(event.target.getAttribute("id")); + + // bit messy, oh well + if (value == 1n) { + if (event.target.checked) { + for (var elem of mount.children) { + elem.children[0].setAttribute("disabled", true); + } + event.target.removeAttribute("disabled"); + + outputMount.innerText = "1"; + return; + } + else { + for (var elem of mount.children) { + elem.children[0].removeAttribute("disabled"); + } + outputMount.innerText = calculated; + return; + } + } + + calculated = event.target.checked + ? calculated + value + : calculated - value; + + outputMount.innerText = calculated; + }); + } +})(); \ No newline at end of file diff --git a/docs/setup/server/security/rights.md b/docs/setup/server/security/rights.md index ccf6d50..4992856 100644 --- a/docs/setup/server/security/rights.md +++ b/docs/setup/server/security/rights.md @@ -104,68 +104,4 @@ is generated through the `npm run generate:rights` script. - \ No newline at end of file + \ No newline at end of file From 47141ea4073a97bd5d3e4741e6cae43b79a80b30 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Wed, 28 Dec 2022 21:15:39 +1100 Subject: [PATCH 12/52] Typo plus setup/index.md --- docs/setup/bots/index.md | 2 +- docs/setup/index.md | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/setup/bots/index.md b/docs/setup/bots/index.md index bec3e7f..8304bed 100644 --- a/docs/setup/bots/index.md +++ b/docs/setup/bots/index.md @@ -1,7 +1,7 @@ # Bots and Applications Fosscord is backwards-compatibile with Discord.com, and so all -existing bots and applications designed for Discord.com should work with relatively easily +existing bots and applications designed for Discord.com should work relatively easily when connected to a Fosscord instance instead. The Discord Developer Panel is available at /developers, and allows you all the same functionality diff --git a/docs/setup/index.md b/docs/setup/index.md index e69de29..fb24ca0 100644 --- a/docs/setup/index.md +++ b/docs/setup/index.md @@ -0,0 +1,3 @@ +## [Server](server) + +## [Bots](bots) \ No newline at end of file From be1968e576393a8fa6264c64bf29b5c617a6af83 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Thu, 29 Dec 2022 17:28:30 +1100 Subject: [PATCH 13/52] test client, client plugins (vencord), embeds (twitter), and rabbitmq docs --- docs/assets/js/rightsCalculator.js | 108 +++++++++--------- docs/setup/index.md | 2 +- docs/setup/server/Test Client/index.md | 20 ++++ docs/setup/server/Test Client/plugins.md | 7 ++ .../index.md => Test Client/theming.md} | 0 docs/setup/server/configuration/embeds.md | 11 ++ docs/setup/server/configuration/rabbitmq.md | 14 +++ docs/setup/server/index.md | 2 +- docs/setup/server/npmScripts.md | 2 +- docs/setup/server/security/rights.md | 2 +- docs/setup/server/updating.md | 6 +- mkdocs.yml | 2 + 12 files changed, 115 insertions(+), 61 deletions(-) create mode 100644 docs/setup/server/Test Client/index.md create mode 100644 docs/setup/server/Test Client/plugins.md rename docs/setup/server/{theming/index.md => Test Client/theming.md} (100%) diff --git a/docs/assets/js/rightsCalculator.js b/docs/assets/js/rightsCalculator.js index 2b2cefa..fae259d 100644 --- a/docs/assets/js/rightsCalculator.js +++ b/docs/assets/js/rightsCalculator.js @@ -1,65 +1,65 @@ (() => { - const NUM_COLUMNS = 3; + const NUM_COLUMNS = 3; - // Grab it from the above markdown table and parse it. Simply don't have multiple tables in the page lol - const rights = - // grab the table data elements - [...document.querySelectorAll("td")] - .map(x => x.innerText) // get their content - .map((x, i) => - x.indexOf("<<") == 2 // if this column is the `value` column - ? x.split(" ").reverse()[0] // get the value we shift by - : x); // otherwise dont do anything - const mount = document.getElementById("rights-container"); - const outputMount = document.getElementById("rights-output"); - var calculated = 0n; + // Grab it from the above markdown table and parse it. Simply don't have multiple tables in the page lol + const rights = + // grab the table data elements + [...document.querySelectorAll("td")] + .map((x) => x.innerText) // get their content + .map((x, i) => + x.indexOf("<<") == 2 // if this column is the `value` column + ? x.split(" ").reverse()[0] // get the value we shift by + : x + ); // otherwise dont do anything + const mount = document.getElementById("rights-container"); + const outputMount = document.getElementById("rights-output"); + var calculated = 0n; - for (var i = 0; i < rights.length; i += NUM_COLUMNS) { - const name = rights[i]; - const shift = rights[i + 1]; - const desc = rights[i + 2]; + for (var i = 0; i < rights.length; i += NUM_COLUMNS) { + const name = rights[i]; + const shift = rights[i + 1]; + const desc = rights[i + 2]; - const div = document.createElement("div"); - const input = document.createElement("input"); - input.setAttribute("type", "checkbox"); - input.setAttribute("id", shift); - const label = document.createElement("label"); - label.setAttribute("for", label.id); - label.innerText = name.toUpperCase(); + const div = document.createElement("div"); + const input = document.createElement("input"); + input.setAttribute("type", "checkbox"); + input.setAttribute("id", shift); + const label = document.createElement("label"); + label.setAttribute("for", label.id); + label.innerText = name.toUpperCase(); - div.appendChild(input); - div.appendChild(label); + div.appendChild(input); + div.appendChild(label); - mount.append(div); + mount.append(div); - input.addEventListener("click", (event) => { - const value = 1n << BigInt(event.target.getAttribute("id")); + input.addEventListener("click", (event) => { + const value = 1n << BigInt(event.target.getAttribute("id")); - // bit messy, oh well - if (value == 1n) { - if (event.target.checked) { - for (var elem of mount.children) { - elem.children[0].setAttribute("disabled", true); - } - event.target.removeAttribute("disabled"); + // bit messy, oh well + if (value == 1n) { + if (event.target.checked) { + for (var elem of mount.children) { + elem.children[0].setAttribute("disabled", true); + } + event.target.removeAttribute("disabled"); - outputMount.innerText = "1"; - return; - } - else { - for (var elem of mount.children) { - elem.children[0].removeAttribute("disabled"); - } - outputMount.innerText = calculated; - return; - } - } + outputMount.innerText = "1"; + return; + } else { + for (var elem of mount.children) { + elem.children[0].removeAttribute("disabled"); + } + outputMount.innerText = calculated; + return; + } + } - calculated = event.target.checked - ? calculated + value - : calculated - value; + calculated = event.target.checked + ? calculated + value + : calculated - value; - outputMount.innerText = calculated; - }); - } -})(); \ No newline at end of file + outputMount.innerText = calculated; + }); + } +})(); diff --git a/docs/setup/index.md b/docs/setup/index.md index fb24ca0..e23f9b7 100644 --- a/docs/setup/index.md +++ b/docs/setup/index.md @@ -1,3 +1,3 @@ ## [Server](server) -## [Bots](bots) \ No newline at end of file +## [Bots](bots) diff --git a/docs/setup/server/Test Client/index.md b/docs/setup/server/Test Client/index.md new file mode 100644 index 0000000..3bda3c9 --- /dev/null +++ b/docs/setup/server/Test Client/index.md @@ -0,0 +1,20 @@ +# Test Client + +!!! warning "The test client included with fosscord-server is deprecated and will be removed in favour of [Dicord-Client-Proxy](http://github.com/fosscord/Discord-Client-Proxy) in the future" + +The test client is a proxy to the Discord.com client used for development purposes. +You can enable the test client by setting the `client_useTestClient` [config](../configuration/index.md) value. + +By editing the `GLOBAL_ENV` variable used by the client, we can trick it into sending requests to the API/Gateway/CDN/etc to us, +instead of Discord.com. + +## Updating + +To update the client version served, edit the 4 ` \ No newline at end of file + diff --git a/docs/setup/server/updating.md b/docs/setup/server/updating.md index 6af1985..43b118d 100644 --- a/docs/setup/server/updating.md +++ b/docs/setup/server/updating.md @@ -1,9 +1,9 @@ If you had followed the [setup guide](index.md), you'll have installed Fosscord using [Git](https://git-scm.com/). -Thus, you can update the server by running `git pull`. +Thus, you can update the server by running `git pull`. If you had made any changes locally, you may run into merge conflicts, where the Fosscord team has made changes to the same code you changed. If it's not important to you, you can simply run `git reset --hard HEAD` -*which will delete all your changes*. If you want to keep them, you'll have to go through each conflict and resolve them. +_which will delete all your changes_. If you want to keep them, you'll have to go through each conflict and resolve them. After downloading the new version, go through the setup guide as normal again: @@ -18,4 +18,4 @@ npm run setup # Start the server npm run start -``` \ No newline at end of file +``` diff --git a/mkdocs.yml b/mkdocs.yml index 36343d7..78c3494 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -33,4 +33,6 @@ markdown_extensions: - pymdownx.highlight - pymdownx.inlinehilite - pymdownx.superfences + - pymdownx.tabbed: + alternate_style: true extra_css: [assets/extra.css] From 42d1e1bbca78e6e4da0bd0ac1884adc0319e20cc Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sat, 31 Dec 2022 18:55:21 +1100 Subject: [PATCH 14/52] Add an FAQ --- docs/faq.md | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++ docs/index.md | 2 ++ 2 files changed, 89 insertions(+) create mode 100644 docs/faq.md diff --git a/docs/faq.md b/docs/faq.md new file mode 100644 index 0000000..0edfbd3 --- /dev/null +++ b/docs/faq.md @@ -0,0 +1,87 @@ +# Frequently Asked Questions + +??? info "Voice/Video when???" + + Currently there is no voice or video support in any Fosscord instance. + This is a very difficult feature to get working, especially given that + we must implement it the exact same way as Discord.com for client compatibility. + [We would be incredibly thankful for any assistance.](/contributing) + +??? info "Free Nitro???" + + Please do not use Discord trademarks to refer to anything regarding Fosscord. + As an instance owner, you can grant yourself or others *premium* features which may be used to determine your abilities + *client-side*. However, Fosscord-server currently does not have any distinction between premium and free users. + All users can access all features, given they have the [right](security/rights.md) to do so. + + You cannot give yourself premium features on Discord.com using a Fosscord instance. + +??? info "Can I log in with my Discord account?" + + No. Fosscord and Discord are entirely separate services, with their own separate databases + and authentication. Fosscord cannot access any private data from Discord.com. + As always, you should not provide login credentials for Discord.com, or any other service, + to others. + +??? info "Does Fosscord use the same servers as Discord?" + + No. Discord servers, as in the bare-metal running the service, are completely inaccessible + to people, outside of course the Discord.com service provided. It is impossible for us to use their + infrastructure. Fosscord is hosted entirely by you, the instance owner (or whoever is the owner of your instance). + + If you mean Discord 'server' as in a *guild*, also no. Fosscord is not a proxy for + Discord guilds. Fosscord does not create Discord.com accounts, or ask for your own, at any time + (outside of a Discord.com account connection for your Fosscord user, which is still not us asking for your credentials). + If Fosscord was to try this, Discord's automated spam filters would surely block your instance. + + Lastly, you can simply view [our codebase](https://github.com/fosscord/fosscord-server). + A simple proxy would not need to be this complex or large. + We implement the entire Discord.com API, Gateway, among others. + None of this would be necessary if we were simply abusing Discord.com. + +??? info "Do you use Discord.com code?" + + Absolutely not. If a potential contributor makes any indication of being a Discord employee, + or to have access to leaked Discord.com code, we take measures in line with our [Code of Conduct](/contributing/conduct.md) + to ensure the Fosscord codebase is free of any proprietary code. We want absolutely nothing to do with it. + +??? info "What about the test client? That's just the Discord.com one!" + + Yes, this is true. However, this is purely for testing and development purposes. + Fosscord is first and foremost a *backend* server implementation, and we simply use Discord.com's client + to achieve our goals. Efforts are being made to move away from this with our own client, but as you may have guessed, + building a Discord-compatible client is difficult. + + You can read more about the test client [here](Test%20Client/index.md) + +??? info "Is this illegal?" + + The person writing this does not believe it to be illegal, no. + The only aspect of Fosscord that is not entirely written by us is the test client which we simply proxy from Discord.com, + and we take measures to show that the client is purely for development and research purposes. + +??? info "Why are you doing this, anyway?" + + Personally, it's because it's fun. But if you ask 'Officially': + + 1. We love free, open source software. + 2. There are many existing bots, applications, users, features, and ideas surrounding Discord.com. + 3. Fosscord allows these users and developers to maintain a familiar ecosystem with minimal friction. + 4. Reimplementing allows us to extend the Discord protocol in ways Discord.com may not deem feasible, economical, whateverical. + 5. This includes privacy features, such as end to end encryption for example. + 6. The reverse engineering effort by our team may be useful to outside developers looking to understand how similar services work. + 7. The Discord protocol despite it's API complexity is quite simple and linear, which makes this project more feasible. + +??? info "Editing the database is annoying, is there a graphical interface for this?" + + Currently no, there is no graphical interface for managing your Fosscord instance. + An admin dashboard is planned, but we currently have higher priorities right now. + +??? info "When will this feature be available?" + + We do not provide ETAs. Users tend to take them as deadlines, and for a small team of <5 maintainers + who do not get payment for their work, this is unreasonable. + +??? info "It's pretty funny how you have a Discord.com guild for support." + + We know. Also that's not a question. \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index a747829..dbd8281 100644 --- a/docs/index.md +++ b/docs/index.md @@ -4,6 +4,8 @@ !!! info "Interested in contributing? We'd love to have you on board! [Click here](contributing)" +!!! info "Have a question? It might be in [here](faq.md)" + ## What is Fosscord? Fosscord is a Discord.com server implementation and extension, From 9f5e853d0421dfb9de46a69869c260b8277154bd Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sat, 31 Dec 2022 19:17:16 +1100 Subject: [PATCH 15/52] Add desktop client setup docs --- docs/setup/clients/index.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 docs/setup/clients/index.md diff --git a/docs/setup/clients/index.md b/docs/setup/clients/index.md new file mode 100644 index 0000000..ff6d8e8 --- /dev/null +++ b/docs/setup/clients/index.md @@ -0,0 +1,32 @@ +## Using your Discord.com desktop client with a Fosscord instance + +There are 3 options, all of which require the Fosscord server have [erlpack](https://npmjs.com/package/@yukikaze-bot/erlpack) installed. + +1. The simpler one is to set the `DISCORD_WEBAPP_ENDPOINT` environment variable on the machine running the client +to the Fosscord web app URL. This assumes the Fosscord instance has the [test client](../server/Test%20Client/index.md) enabled. + +1. You may edit your desktop client's `settings.json` file at +`%appdata%/discord/settings.json`, +adding the following line +```json +"WEBAPP_ENDPOINT" : "https://your_fosscord_instance_url" +``` +such that it looks like this, as an example +```json +{ + "IS_MAXIMIZED": true, + "IS_MINIMIZED": false, + "WINDOW_BOUNDS": { + "x": 335, + "y": 86, + "width": 940, + "height": 600 + }, + "BACKGROUND_COLOR": "#202225", + "WEBAPP_ENDPOINT" : "https://your_fosscord_instance_url" +} +``` +This also assumes the Fosscord instance has enabled the test client. + +1. If an instance does not have the test client enabled, you can [host the proxy yourself](https://github.com/fosscord/Discord-Client-Proxy), +and simply set it to use your desired Fosscord instance. \ No newline at end of file From de41ac6b840d93f05dcc0c075c51df1ab2a9496d Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sat, 31 Dec 2022 19:17:32 +1100 Subject: [PATCH 16/52] Don't hire me to write technical documentation. --- docs/contributing/index.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/contributing/index.md b/docs/contributing/index.md index a73cb14..c9c6b6f 100644 --- a/docs/contributing/index.md +++ b/docs/contributing/index.md @@ -2,6 +2,12 @@ !!! info "[Have you read the Code of Conduct?](conduct.md)" +## Notable Technologies +* Typescript +* [Typeorm](https://www.npmjs.com/package/typeorm) +* [WS](https://www.npmjs.com/package/ws) +* [Express](https://www.npmjs.com/package/express) + ## Structure Fosscord is written in Typescript and is comprised of 4 main parts: @@ -10,3 +16,15 @@ Fosscord is written in Typescript and is comprised of 4 main parts: - Websocket Gateway server for realtime communication with clients - HTTP CDN server for storing user file content. - `utils` module to separate our database models, schemas, and other things from the above 3 components. + +### Gateway + +The Gateway is a WebSocket server that is responsible for listening and emitting events to/from connected clients. + +### API + +The API is a HTTP REST server which does the bulk of the database reads/writes. + +## Documentation + +Unfortunately writing documentation is quite annoying. There's tons of comments in the codebase tho, so don't worry :) \ No newline at end of file From 40d172986257093beac6e79cd654aa3c4b4cbaf3 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sat, 31 Dec 2022 19:32:28 +1100 Subject: [PATCH 17/52] Theming --- docs/assets/logo.svg | 11 ++--------- mkdocs.yml | 10 +++++++--- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/docs/assets/logo.svg b/docs/assets/logo.svg index 1f379b2..67d3fdf 100644 --- a/docs/assets/logo.svg +++ b/docs/assets/logo.svg @@ -1,10 +1,3 @@ - - - - - - - - - + + \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 78c3494..08bdfa2 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,4 +1,4 @@ -site_name: Fosscord Docs +site_name: Fosscord Documentation repo_url: https://github.com/fosscord/fosscord edit_uri: https://github.com/fosscord/fosscord-docs/edit/master/docs/ site_description: Documentation of Fosscord a free open source selfhostable chat, voice and video discord-compatible platform @@ -12,11 +12,15 @@ theme: favicon: assets/logo.svg font: Open Sans palette: - - scheme: default + - media: "(prefers-color-scheme: light)" + primary: deep-orange + scheme: default toggle: icon: material/lightbulb-outline name: Switch to dark mode - - scheme: slate + - media: "(prefers-color-scheme: dark)" + primary: deep-orange + scheme: slate toggle: icon: material/lightbulb name: Switch to light mode From 365556a6cd2609938fad2501c3ab144cb192b7d5 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sun, 1 Jan 2023 12:50:44 +1100 Subject: [PATCH 18/52] Add systemd example service --- .../server/{ => configuration}/imagor.md | 0 docs/setup/server/index.md | 5 +-- docs/setup/server/systemd.md | 32 +++++++++++++++++++ 3 files changed, 35 insertions(+), 2 deletions(-) rename docs/setup/server/{ => configuration}/imagor.md (100%) create mode 100644 docs/setup/server/systemd.md diff --git a/docs/setup/server/imagor.md b/docs/setup/server/configuration/imagor.md similarity index 100% rename from docs/setup/server/imagor.md rename to docs/setup/server/configuration/imagor.md diff --git a/docs/setup/server/index.md b/docs/setup/server/index.md index 175e435..904c809 100644 --- a/docs/setup/server/index.md +++ b/docs/setup/server/index.md @@ -13,9 +13,10 @@ You **must** have access to a terminal for this guide. - [Git](https://git-scm.com/) - [NodeJS](https://nodejs.org). Version 16+ -- [Python](https://www.python.org/). Version 3+. Make sure this is executable via `python` in your terminal. +- [Python](https://www.python.org/). Version 3+. Make sure this is executable via `python` in your terminal. + (See: `python-is-python3` package) - On Linux: `gcc`/`g++`. Packaged with `build-essential` on Debian/Ubuntu and `base-devel` on Arch. -- On Windows: [Visual Studio](https://visualstudio.microsoft.com/) (**NOT** VSCode) with the C++ development package. +- On Windows: [Visual Studio](https://visualstudio.microsoft.com/) (**NOT** VSCode) with the `Desktop development with C++` package. ## Setup diff --git a/docs/setup/server/systemd.md b/docs/setup/server/systemd.md new file mode 100644 index 0000000..34f2049 --- /dev/null +++ b/docs/setup/server/systemd.md @@ -0,0 +1,32 @@ +# Systemd + +Below is an example Systemd service for running Fosscord. +Save it in `/etc/systemd/system/fosscord.service`. + +```ini +[Unit] +Description=Fosscord, for better and secure communication + +[Service] +User= +WorkingDirectory= +ExecStart=npm run start +Restart=always +StandardError=journal +StandardOutput=journal + +[Install] +WantedBy=multi-user.target +``` + +Make sure to edit the file as needed, such as replacing the user. +It is a good idea to create a new user on your system to run Fosscord. +If you would like to run the API, CDN or Gateway separately, +you can edit the `ExecStart` command used in line with the [npm script](npmScripts.md). +Also be sure to run [RabbitMQ](configuration/rabbitmq.md) in that case. + +You can now start Fosscord using `sudo systemctl start fosscord`. + +To automatically run Fosscord on boot, use `sudo systemctl enable fosscord`. + +To view the server logs, you may use `journalctl -u fosscord.service`, or with `-f` to view them as they come. \ No newline at end of file From 6536f2e1fe1613759716c49bb449fdfa7909dbb2 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Mon, 2 Jan 2023 20:09:21 +1100 Subject: [PATCH 19/52] WS_VERBOSE docs --- docs/setup/server/configuration/env.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/setup/server/configuration/env.md b/docs/setup/server/configuration/env.md index eac1d9c..1d09111 100644 --- a/docs/setup/server/configuration/env.md +++ b/docs/setup/server/configuration/env.md @@ -10,7 +10,8 @@ in the `fosscord-server` folder, with the format `NAME=VALUE` with each on new l | PORT | number | Port to listen on. Used by all components, including bundle. If using bundle, all components run under the same port | | DATABASE | string | Database connection string. Defaults to SQlite3 at project root | | CONFIG_PATH | string | File path for JSON config, if not using `config` db table | -| WS_LOGEVENTS | boolean | If set, log websocket events from gateway | +| WS_LOGEVENTS | boolean | If set, log websocket events except messages from gateway | +| WS_VERBOSE | boolean | If set, log websocket messages received by gateway | | CDN | string | Lowest priority value for public CDN annoucements | | GATEWAY | string | Lowest priority value for public gateway annoucements | | STORAGE_LOCATION | string | CDN storage location. File path or S3 bucktet | From 779dc55dd80abec3fe8a5722475ddac6a663aa4e Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Mon, 2 Jan 2023 20:13:12 +1100 Subject: [PATCH 20/52] prettier --- .prettierrc | 10 ++- .vscode/settings.json | 14 ++-- docs/assets/extra.css | 4 +- docs/assets/js/rightsCalculator.js | 106 ++++++++++++++--------------- docs/contributing/index.md | 11 +-- docs/faq.md | 96 +++++++++++++------------- docs/setup/bots/index.md | 12 ++-- docs/setup/clients/index.md | 31 +++++---- 8 files changed, 148 insertions(+), 136 deletions(-) diff --git a/.prettierrc b/.prettierrc index 0a02bce..7f0d7f2 100644 --- a/.prettierrc +++ b/.prettierrc @@ -1,3 +1,11 @@ { - "tabWidth": 4 + "trailingComma": "all", + "tabWidth": 4, + "semi": true, + "arrowParens": "always", + "bracketSameLine": false, + "bracketSpacing": true, + "quoteProps": "as-needed", + "useTabs": true, + "singleQuote": false } diff --git a/.vscode/settings.json b/.vscode/settings.json index c280c9a..4a7669d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,9 +1,9 @@ { - "cSpell.words": [ - "Fosscord", - "landingpage", - "Middlewares", - "Roadmap", - "screenshare" - ] + "cSpell.words": [ + "Fosscord", + "landingpage", + "Middlewares", + "Roadmap", + "screenshare" + ] } diff --git a/docs/assets/extra.css b/docs/assets/extra.css index 9b9b1d6..8131c66 100644 --- a/docs/assets/extra.css +++ b/docs/assets/extra.css @@ -1,7 +1,7 @@ .md-typeset__table { - min-width: 100%; + min-width: 100%; } .md-typeset table:not([class]) { - display: table; + display: table; } diff --git a/docs/assets/js/rightsCalculator.js b/docs/assets/js/rightsCalculator.js index fae259d..66c53bb 100644 --- a/docs/assets/js/rightsCalculator.js +++ b/docs/assets/js/rightsCalculator.js @@ -1,65 +1,65 @@ (() => { - const NUM_COLUMNS = 3; + const NUM_COLUMNS = 3; - // Grab it from the above markdown table and parse it. Simply don't have multiple tables in the page lol - const rights = - // grab the table data elements - [...document.querySelectorAll("td")] - .map((x) => x.innerText) // get their content - .map((x, i) => - x.indexOf("<<") == 2 // if this column is the `value` column - ? x.split(" ").reverse()[0] // get the value we shift by - : x - ); // otherwise dont do anything - const mount = document.getElementById("rights-container"); - const outputMount = document.getElementById("rights-output"); - var calculated = 0n; + // Grab it from the above markdown table and parse it. Simply don't have multiple tables in the page lol + const rights = + // grab the table data elements + [...document.querySelectorAll("td")] + .map((x) => x.innerText) // get their content + .map((x, i) => + x.indexOf("<<") == 2 // if this column is the `value` column + ? x.split(" ").reverse()[0] // get the value we shift by + : x, + ); // otherwise dont do anything + const mount = document.getElementById("rights-container"); + const outputMount = document.getElementById("rights-output"); + var calculated = 0n; - for (var i = 0; i < rights.length; i += NUM_COLUMNS) { - const name = rights[i]; - const shift = rights[i + 1]; - const desc = rights[i + 2]; + for (var i = 0; i < rights.length; i += NUM_COLUMNS) { + const name = rights[i]; + const shift = rights[i + 1]; + const desc = rights[i + 2]; - const div = document.createElement("div"); - const input = document.createElement("input"); - input.setAttribute("type", "checkbox"); - input.setAttribute("id", shift); - const label = document.createElement("label"); - label.setAttribute("for", label.id); - label.innerText = name.toUpperCase(); + const div = document.createElement("div"); + const input = document.createElement("input"); + input.setAttribute("type", "checkbox"); + input.setAttribute("id", shift); + const label = document.createElement("label"); + label.setAttribute("for", label.id); + label.innerText = name.toUpperCase(); - div.appendChild(input); - div.appendChild(label); + div.appendChild(input); + div.appendChild(label); - mount.append(div); + mount.append(div); - input.addEventListener("click", (event) => { - const value = 1n << BigInt(event.target.getAttribute("id")); + input.addEventListener("click", (event) => { + const value = 1n << BigInt(event.target.getAttribute("id")); - // bit messy, oh well - if (value == 1n) { - if (event.target.checked) { - for (var elem of mount.children) { - elem.children[0].setAttribute("disabled", true); - } - event.target.removeAttribute("disabled"); + // bit messy, oh well + if (value == 1n) { + if (event.target.checked) { + for (var elem of mount.children) { + elem.children[0].setAttribute("disabled", true); + } + event.target.removeAttribute("disabled"); - outputMount.innerText = "1"; - return; - } else { - for (var elem of mount.children) { - elem.children[0].removeAttribute("disabled"); - } - outputMount.innerText = calculated; - return; - } - } + outputMount.innerText = "1"; + return; + } else { + for (var elem of mount.children) { + elem.children[0].removeAttribute("disabled"); + } + outputMount.innerText = calculated; + return; + } + } - calculated = event.target.checked - ? calculated + value - : calculated - value; + calculated = event.target.checked + ? calculated + value + : calculated - value; - outputMount.innerText = calculated; - }); - } + outputMount.innerText = calculated; + }); + } })(); diff --git a/docs/contributing/index.md b/docs/contributing/index.md index c9c6b6f..4e8884f 100644 --- a/docs/contributing/index.md +++ b/docs/contributing/index.md @@ -3,10 +3,11 @@ !!! info "[Have you read the Code of Conduct?](conduct.md)" ## Notable Technologies -* Typescript -* [Typeorm](https://www.npmjs.com/package/typeorm) -* [WS](https://www.npmjs.com/package/ws) -* [Express](https://www.npmjs.com/package/express) + +- Typescript +- [Typeorm](https://www.npmjs.com/package/typeorm) +- [WS](https://www.npmjs.com/package/ws) +- [Express](https://www.npmjs.com/package/express) ## Structure @@ -27,4 +28,4 @@ The API is a HTTP REST server which does the bulk of the database reads/writes. ## Documentation -Unfortunately writing documentation is quite annoying. There's tons of comments in the codebase tho, so don't worry :) \ No newline at end of file +Unfortunately writing documentation is quite annoying. There's tons of comments in the codebase tho, so don't worry :) diff --git a/docs/faq.md b/docs/faq.md index 0edfbd3..70c14e0 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -2,86 +2,86 @@ ??? info "Voice/Video when???" - Currently there is no voice or video support in any Fosscord instance. - This is a very difficult feature to get working, especially given that - we must implement it the exact same way as Discord.com for client compatibility. - [We would be incredibly thankful for any assistance.](/contributing) + Currently there is no voice or video support in any Fosscord instance. + This is a very difficult feature to get working, especially given that + we must implement it the exact same way as Discord.com for client compatibility. + [We would be incredibly thankful for any assistance.](/contributing) ??? info "Free Nitro???" - Please do not use Discord trademarks to refer to anything regarding Fosscord. - As an instance owner, you can grant yourself or others *premium* features which may be used to determine your abilities - *client-side*. However, Fosscord-server currently does not have any distinction between premium and free users. - All users can access all features, given they have the [right](security/rights.md) to do so. + Please do not use Discord trademarks to refer to anything regarding Fosscord. + As an instance owner, you can grant yourself or others *premium* features which may be used to determine your abilities + *client-side*. However, Fosscord-server currently does not have any distinction between premium and free users. + All users can access all features, given they have the [right](security/rights.md) to do so. - You cannot give yourself premium features on Discord.com using a Fosscord instance. + You cannot give yourself premium features on Discord.com using a Fosscord instance. ??? info "Can I log in with my Discord account?" - No. Fosscord and Discord are entirely separate services, with their own separate databases - and authentication. Fosscord cannot access any private data from Discord.com. - As always, you should not provide login credentials for Discord.com, or any other service, - to others. + No. Fosscord and Discord are entirely separate services, with their own separate databases + and authentication. Fosscord cannot access any private data from Discord.com. + As always, you should not provide login credentials for Discord.com, or any other service, + to others. ??? info "Does Fosscord use the same servers as Discord?" - No. Discord servers, as in the bare-metal running the service, are completely inaccessible - to people, outside of course the Discord.com service provided. It is impossible for us to use their - infrastructure. Fosscord is hosted entirely by you, the instance owner (or whoever is the owner of your instance). + No. Discord servers, as in the bare-metal running the service, are completely inaccessible + to people, outside of course the Discord.com service provided. It is impossible for us to use their + infrastructure. Fosscord is hosted entirely by you, the instance owner (or whoever is the owner of your instance). - If you mean Discord 'server' as in a *guild*, also no. Fosscord is not a proxy for - Discord guilds. Fosscord does not create Discord.com accounts, or ask for your own, at any time - (outside of a Discord.com account connection for your Fosscord user, which is still not us asking for your credentials). - If Fosscord was to try this, Discord's automated spam filters would surely block your instance. + If you mean Discord 'server' as in a *guild*, also no. Fosscord is not a proxy for + Discord guilds. Fosscord does not create Discord.com accounts, or ask for your own, at any time + (outside of a Discord.com account connection for your Fosscord user, which is still not us asking for your credentials). + If Fosscord was to try this, Discord's automated spam filters would surely block your instance. - Lastly, you can simply view [our codebase](https://github.com/fosscord/fosscord-server). - A simple proxy would not need to be this complex or large. - We implement the entire Discord.com API, Gateway, among others. - None of this would be necessary if we were simply abusing Discord.com. + Lastly, you can simply view [our codebase](https://github.com/fosscord/fosscord-server). + A simple proxy would not need to be this complex or large. + We implement the entire Discord.com API, Gateway, among others. + None of this would be necessary if we were simply abusing Discord.com. ??? info "Do you use Discord.com code?" - Absolutely not. If a potential contributor makes any indication of being a Discord employee, - or to have access to leaked Discord.com code, we take measures in line with our [Code of Conduct](/contributing/conduct.md) - to ensure the Fosscord codebase is free of any proprietary code. We want absolutely nothing to do with it. + Absolutely not. If a potential contributor makes any indication of being a Discord employee, + or to have access to leaked Discord.com code, we take measures in line with our [Code of Conduct](/contributing/conduct.md) + to ensure the Fosscord codebase is free of any proprietary code. We want absolutely nothing to do with it. ??? info "What about the test client? That's just the Discord.com one!" - Yes, this is true. However, this is purely for testing and development purposes. - Fosscord is first and foremost a *backend* server implementation, and we simply use Discord.com's client - to achieve our goals. Efforts are being made to move away from this with our own client, but as you may have guessed, - building a Discord-compatible client is difficult. + Yes, this is true. However, this is purely for testing and development purposes. + Fosscord is first and foremost a *backend* server implementation, and we simply use Discord.com's client + to achieve our goals. Efforts are being made to move away from this with our own client, but as you may have guessed, + building a Discord-compatible client is difficult. - You can read more about the test client [here](Test%20Client/index.md) + You can read more about the test client [here](Test%20Client/index.md) ??? info "Is this illegal?" - The person writing this does not believe it to be illegal, no. - The only aspect of Fosscord that is not entirely written by us is the test client which we simply proxy from Discord.com, - and we take measures to show that the client is purely for development and research purposes. + The person writing this does not believe it to be illegal, no. + The only aspect of Fosscord that is not entirely written by us is the test client which we simply proxy from Discord.com, + and we take measures to show that the client is purely for development and research purposes. ??? info "Why are you doing this, anyway?" - Personally, it's because it's fun. But if you ask 'Officially': + Personally, it's because it's fun. But if you ask 'Officially': - 1. We love free, open source software. - 2. There are many existing bots, applications, users, features, and ideas surrounding Discord.com. - 3. Fosscord allows these users and developers to maintain a familiar ecosystem with minimal friction. - 4. Reimplementing allows us to extend the Discord protocol in ways Discord.com may not deem feasible, economical, whateverical. - 5. This includes privacy features, such as end to end encryption for example. - 6. The reverse engineering effort by our team may be useful to outside developers looking to understand how similar services work. - 7. The Discord protocol despite it's API complexity is quite simple and linear, which makes this project more feasible. + 1. We love free, open source software. + 2. There are many existing bots, applications, users, features, and ideas surrounding Discord.com. + 3. Fosscord allows these users and developers to maintain a familiar ecosystem with minimal friction. + 4. Reimplementing allows us to extend the Discord protocol in ways Discord.com may not deem feasible, economical, whateverical. + 5. This includes privacy features, such as end to end encryption for example. + 6. The reverse engineering effort by our team may be useful to outside developers looking to understand how similar services work. + 7. The Discord protocol despite it's API complexity is quite simple and linear, which makes this project more feasible. ??? info "Editing the database is annoying, is there a graphical interface for this?" - Currently no, there is no graphical interface for managing your Fosscord instance. - An admin dashboard is planned, but we currently have higher priorities right now. + Currently no, there is no graphical interface for managing your Fosscord instance. + An admin dashboard is planned, but we currently have higher priorities right now. ??? info "When will this feature be available?" - We do not provide ETAs. Users tend to take them as deadlines, and for a small team of <5 maintainers - who do not get payment for their work, this is unreasonable. + We do not provide ETAs. Users tend to take them as deadlines, and for a small team of <5 maintainers + who do not get payment for their work, this is unreasonable. ??? info "It's pretty funny how you have a Discord.com guild for support." - We know. Also that's not a question. \ No newline at end of file + We know. Also that's not a question. diff --git a/docs/setup/bots/index.md b/docs/setup/bots/index.md index 8304bed..f291657 100644 --- a/docs/setup/bots/index.md +++ b/docs/setup/bots/index.md @@ -18,12 +18,12 @@ the endpoints used. const { Client } = require("discord.js"); const client = new Client({ - http: { - version: 9, - api: "https://api.fosscord.com", - cdn: "https://cdn.fosscord.com", - invite: "https://fosscord.com/invite", - }, + http: { + version: 9, + api: "https://api.fosscord.com", + cdn: "https://cdn.fosscord.com", + invite: "https://fosscord.com/invite", + }, }); client.login("your token here"); diff --git a/docs/setup/clients/index.md b/docs/setup/clients/index.md index ff6d8e8..9c7af0d 100644 --- a/docs/setup/clients/index.md +++ b/docs/setup/clients/index.md @@ -3,30 +3,33 @@ There are 3 options, all of which require the Fosscord server have [erlpack](https://npmjs.com/package/@yukikaze-bot/erlpack) installed. 1. The simpler one is to set the `DISCORD_WEBAPP_ENDPOINT` environment variable on the machine running the client -to the Fosscord web app URL. This assumes the Fosscord instance has the [test client](../server/Test%20Client/index.md) enabled. + to the Fosscord web app URL. This assumes the Fosscord instance has the [test client](../server/Test%20Client/index.md) enabled. 1. You may edit your desktop client's `settings.json` file at -`%appdata%/discord/settings.json`, -adding the following line + `%appdata%/discord/settings.json`, adding the following line + ```json "WEBAPP_ENDPOINT" : "https://your_fosscord_instance_url" ``` + such that it looks like this, as an example + ```json { - "IS_MAXIMIZED": true, - "IS_MINIMIZED": false, - "WINDOW_BOUNDS": { - "x": 335, - "y": 86, - "width": 940, - "height": 600 - }, - "BACKGROUND_COLOR": "#202225", - "WEBAPP_ENDPOINT" : "https://your_fosscord_instance_url" + "IS_MAXIMIZED": true, + "IS_MINIMIZED": false, + "WINDOW_BOUNDS": { + "x": 335, + "y": 86, + "width": 940, + "height": 600 + }, + "BACKGROUND_COLOR": "#202225", + "WEBAPP_ENDPOINT": "https://your_fosscord_instance_url" } ``` + This also assumes the Fosscord instance has enabled the test client. 1. If an instance does not have the test client enabled, you can [host the proxy yourself](https://github.com/fosscord/Discord-Client-Proxy), -and simply set it to use your desired Fosscord instance. \ No newline at end of file + and simply set it to use your desired Fosscord instance. From 259c1b4979f98df4ff5e8ab4ff2b7f9b192cb9e1 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Thu, 5 Jan 2023 17:02:09 +1100 Subject: [PATCH 21/52] Migration guide --- docs/setup/server/migatingFromStaging.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 docs/setup/server/migatingFromStaging.md diff --git a/docs/setup/server/migatingFromStaging.md b/docs/setup/server/migatingFromStaging.md new file mode 100644 index 0000000..7041a79 --- /dev/null +++ b/docs/setup/server/migatingFromStaging.md @@ -0,0 +1,16 @@ +# Migrating from Staging + +'Staging' refers to [this branch](https://github.com/fosscord/fosscord-server/tree/staging) of fosscord-server, +which is deprecated in favour of [this branch](https://github.com/fosscord/fosscord-server/tree/maddy/refactor) (if this is a 404, its just become the main branch now). + +!!! warn "If you were using SQLite, you will be unable to migrate to the new version. SQLite is primarily for testing and development purposes, and it should not be used for production." + +To migrate from Staging: + +1. Download the new version of fosscord-server + `git clone https://github.com/fosscord/fosscord-server.git` +2. Copy your `.env` file from your previous installation to the new `fosscord-server` folder. +3. `npm i` in new installation +4. `npm run setup` +5. `npm run migrate-from-staging` to run the migrations on your database +6. `npm run start` to start the server \ No newline at end of file From 52ede06c861000ab18e28725f0b9377d46d4afdb Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Thu, 5 Jan 2023 17:02:40 +1100 Subject: [PATCH 22/52] remove npm run sync:db step from setup --- docs/setup/server/index.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/docs/setup/server/index.md b/docs/setup/server/index.md index 904c809..67470fe 100644 --- a/docs/setup/server/index.md +++ b/docs/setup/server/index.md @@ -35,10 +35,6 @@ npm i # Build and generate schema. Separately, they are `build` and `generate:schema`. npm run setup -# Syncronise database. Be careful running this on existing databases, -# as you may incur dataloss. You only need to run this once. -npm run sync:db - # Start the bundle server ( API, CDN, Gateway in one ) npm run start ``` From d2e6d2d1ca41b1a8229ffe4c27fac3449b855795 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Fri, 6 Jan 2023 13:45:21 +1100 Subject: [PATCH 23/52] review --- docs/faq.md | 23 +++-- docs/index.md | 8 +- docs/setup/clients/index.md | 84 +++++++++++++------ docs/setup/index.md | 2 + docs/setup/server/Test Client/plugins.md | 12 ++- docs/setup/server/Test Client/theming.md | 2 +- docs/setup/server/configuration/embeds.md | 8 ++ .../server/configuration/guildFeatures.md | 4 +- docs/setup/server/configuration/imagor.md | 29 ++++++- docs/setup/server/configuration/index.md | 8 +- docs/setup/server/database.md | 2 +- docs/setup/server/index.md | 7 +- docs/setup/server/migatingFromStaging.md | 16 ++-- docs/setup/server/npmScripts.md | 2 +- docs/setup/server/reverseProxy.md | 41 +++++++-- docs/setup/server/systemd.md | 13 ++- docs/setup/server/updating.md | 2 - 17 files changed, 187 insertions(+), 76 deletions(-) diff --git a/docs/faq.md b/docs/faq.md index 70c14e0..dd6dee5 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -1,18 +1,18 @@ # Frequently Asked Questions -??? info "Voice/Video when???" +??? info "Voice/Video when?" Currently there is no voice or video support in any Fosscord instance. This is a very difficult feature to get working, especially given that we must implement it the exact same way as Discord.com for client compatibility. [We would be incredibly thankful for any assistance.](/contributing) -??? info "Free Nitro???" +??? info "Free Nitro?" Please do not use Discord trademarks to refer to anything regarding Fosscord. As an instance owner, you can grant yourself or others *premium* features which may be used to determine your abilities *client-side*. However, Fosscord-server currently does not have any distinction between premium and free users. - All users can access all features, given they have the [right](security/rights.md) to do so. + All users can access all features, given they have the [rights](security/rights.md) to do so. You cannot give yourself premium features on Discord.com using a Fosscord instance. @@ -27,12 +27,13 @@ No. Discord servers, as in the bare-metal running the service, are completely inaccessible to people, outside of course the Discord.com service provided. It is impossible for us to use their - infrastructure. Fosscord is hosted entirely by you, the instance owner (or whoever is the owner of your instance). + infrastructure. Fosscord instances are hosted entirely by their owner(s). If you mean Discord 'server' as in a *guild*, also no. Fosscord is not a proxy for - Discord guilds. Fosscord does not create Discord.com accounts, or ask for your own, at any time - (outside of a Discord.com account connection for your Fosscord user, which is still not us asking for your credentials). - If Fosscord was to try this, Discord's automated spam filters would surely block your instance. + Discord guilds. Fosscord does not create Discord.com accounts or ask for your own at any time + (outside of OAuth features provided by the instance such as account connections or 'login with' buttons) + If Fosscord was to try this, Discord's automated spam filters would surely block your instance, + and ban any offending accounts. Lastly, you can simply view [our codebase](https://github.com/fosscord/fosscord-server). A simple proxy would not need to be this complex or large. @@ -49,28 +50,26 @@ Yes, this is true. However, this is purely for testing and development purposes. Fosscord is first and foremost a *backend* server implementation, and we simply use Discord.com's client - to achieve our goals. Efforts are being made to move away from this with our own client, but as you may have guessed, + to verify our work as correct. Efforts are being made to move away from this with our own client, but as you may have guessed, building a Discord-compatible client is difficult. You can read more about the test client [here](Test%20Client/index.md) ??? info "Is this illegal?" - The person writing this does not believe it to be illegal, no. + The Fosscord maintainers do not believe it to be, no. See: [Oracle v. Google](https://en.wikipedia.org/wiki/Google_LLC_v._Oracle_America,_Inc.). The only aspect of Fosscord that is not entirely written by us is the test client which we simply proxy from Discord.com, and we take measures to show that the client is purely for development and research purposes. ??? info "Why are you doing this, anyway?" - Personally, it's because it's fun. But if you ask 'Officially': - 1. We love free, open source software. 2. There are many existing bots, applications, users, features, and ideas surrounding Discord.com. 3. Fosscord allows these users and developers to maintain a familiar ecosystem with minimal friction. 4. Reimplementing allows us to extend the Discord protocol in ways Discord.com may not deem feasible, economical, whateverical. 5. This includes privacy features, such as end to end encryption for example. 6. The reverse engineering effort by our team may be useful to outside developers looking to understand how similar services work. - 7. The Discord protocol despite it's API complexity is quite simple and linear, which makes this project more feasible. + 7. The Discord protocol, despite its API complexity, is quite simple and linear. No complex conflict resolution like Matrix, for example. ??? info "Editing the database is annoying, is there a graphical interface for this?" diff --git a/docs/index.md b/docs/index.md index dbd8281..7ac748d 100644 --- a/docs/index.md +++ b/docs/index.md @@ -14,9 +14,9 @@ all while adding some additional goodies, security, privacy, and configuration o Fosscord allows you to host a complete, Discord.com-compatible chat service with complete control over it's content, usage, security, configuration, and featureset. -Being Discord.com-compatible, all existing clients, bots, and applications written for -Discord.com can be used on any Fosscord instance, which we believe will be immensely useful -in any transition process between services. +Being Discord.com-compatible will allow all existing clients, bots, and applications written for +Discord.com to be used on any Fosscord instance, which we believe will be immensely useful +for any transition process between services. As Fosscord is an entirely separate service from Discord.com, it means a Fosscord server by itself **cannot** access private data controlled by Discord.com. You **cannot** use a Fosscord server to chat with your friends on Discord.com. @@ -25,4 +25,4 @@ You also **cannot** use a Fosscord server to grant premium ("Nitro") features to Our goal is to achieve complete feature parity with Discord.com, as well as implement additional security, privacy, and other useful features serverside. In addition to our server software, we aim to create Fosscord-aware clients that can be used to connect -to multiple Fosscord-compatible instances - including Discord.com - with rich theming and plugin support. +to multiple Fosscord-compatible instances with rich theming and plugin support. diff --git a/docs/setup/clients/index.md b/docs/setup/clients/index.md index 9c7af0d..41358de 100644 --- a/docs/setup/clients/index.md +++ b/docs/setup/clients/index.md @@ -1,35 +1,67 @@ ## Using your Discord.com desktop client with a Fosscord instance -There are 3 options, all of which require the Fosscord server have [erlpack](https://npmjs.com/package/@yukikaze-bot/erlpack) installed. +=== "Environment Variables" -1. The simpler one is to set the `DISCORD_WEBAPP_ENDPOINT` environment variable on the machine running the client - to the Fosscord web app URL. This assumes the Fosscord instance has the [test client](../server/Test%20Client/index.md) enabled. + This assumes your Fosscord instance has the [Test Client](../server/Test%20Client/) enabled, and [erlpack](https://npmjs.com/package/@yukikaze-bot/erlpack) installed. -1. You may edit your desktop client's `settings.json` file at - `%appdata%/discord/settings.json`, adding the following line + Set the `DISCORD_WEBAPP_ENDPOINT` environment variable on the machine running the client to the Fosscord web app URL, for example `https://staging.fosscord.com`. -```json -"WEBAPP_ENDPOINT" : "https://your_fosscord_instance_url" -``` + On Windows: -such that it looks like this, as an example + 1. Open the start menu and search for "Environment variables" + 2. Click "Environment Variables" at the bottom of this new window, titled "System Properties" + 3. Add a new user variable + 4. Set the name to `DISCORD_WEBAPP_ENDPOINT`, and the value to your instance URL. -```json -{ - "IS_MAXIMIZED": true, - "IS_MINIMIZED": false, - "WINDOW_BOUNDS": { - "x": 335, - "y": 86, - "width": 940, - "height": 600 - }, - "BACKGROUND_COLOR": "#202225", - "WEBAPP_ENDPOINT": "https://your_fosscord_instance_url" -} -``` + On Linux, you can: -This also assumes the Fosscord instance has enabled the test client. + * run `DISCORD_WEBAPP_ENDPOINT=instance url discord` on the CLI + * edit the `discord.desktop` file to include the above + * add `EXPORT DISCORD_WEBAPP_ENDPOINT=url` to your bash/zsh/etc profile (`~/.bashrc` for example) + * and probably lots more -1. If an instance does not have the test client enabled, you can [host the proxy yourself](https://github.com/fosscord/Discord-Client-Proxy), - and simply set it to use your desired Fosscord instance. +=== "settings.json" + + This assumes your Fosscord instance has the [Test Client](../server/Test%20Client/) enabled, and [erlpack](https://npmjs.com/package/@yukikaze-bot/erlpack) installed. + + You may edit your desktop client's `settings.json` file at + `%appdata%/discord/settings.json` on Windows and typically + `~/.config/discord/settings.json` on Linux, + adding the following line + + ```json + "WEBAPP_ENDPOINT" : "https://your_fosscord_instance_url" + ``` + + such that it looks like this, as an example + + ```json + { + "IS_MAXIMIZED": true, + "IS_MINIMIZED": false, + "WINDOW_BOUNDS": { + "x": 335, + "y": 86, + "width": 940, + "height": 600 + }, + "BACKGROUND_COLOR": "#202225", + "WEBAPP_ENDPOINT": "https://your_fosscord_instance_url" + } + ``` + +=== "Webcord" + + This assumes your Fosscord instance has the [Test Client](../server/Test%20Client/) enabled. + + Webcord does not currently allow specifcying custom instance URLs. + The available instances with Webcord are [https://app.freecord.ir](Freecord) and + [staging.fosscord.com](https://staging.fosscord.com). + + 1. Download and install [Webcord](https://github.com/SpacingBat3/WebCord) + 2. In the top bar, "File" -> "Settings" + 3. Scroll down to "Discord Instance" and select a Fosscord instance you would like to use + +=== "Host the proxy yourself" + + If an instance does not have the test client enabled, you can [host the proxy yourself](https://github.com/fosscord/Discord-Client-Proxy), and simply set it to use your desired Fosscord instance. diff --git a/docs/setup/index.md b/docs/setup/index.md index e23f9b7..26eba62 100644 --- a/docs/setup/index.md +++ b/docs/setup/index.md @@ -1,3 +1,5 @@ ## [Server](server) ## [Bots](bots) + +## [Clients](clients) diff --git a/docs/setup/server/Test Client/plugins.md b/docs/setup/server/Test Client/plugins.md index efcee77..e7fa606 100644 --- a/docs/setup/server/Test Client/plugins.md +++ b/docs/setup/server/Test Client/plugins.md @@ -3,5 +3,15 @@ You cannot install BetterDiscord, Powercord/Replugged, or other client mod plugi However, you _can_ install [Vencord](https://github.com/Vendicated/Vencord) quite easily with only slight modifications to the [user script](https://github.com/Vendicated/Vencord#installing-on-browser). -Simply find and replace all mentions of `GM_xmlhttpRequest` with `new XMLHttpRequest`, and `unsafeWindow` with `window`. + +For instances you control, simply find and replace all mentions of `GM_xmlhttpRequest` with `new XMLHttpRequest`, and `unsafeWindow` with `window`. Throw the edited file into the `assets/preload-plugins` directory, restart the server, and you now have Vencord installed instance-wide! + +If you want to install Vencord on instances you do not control, do not perform any of the above steps, and simply modify +the `@match` line at the top to include the instance(s). For [staging.fosscord.com](https://staging.fosscord.com): + +```js +// @match *://*.staging.fosscord.com/* +``` + + You may now install the modified user script in your favourite user script browser extension, such as [Tampermonkey](https://www.tampermonkey.net/) diff --git a/docs/setup/server/Test Client/theming.md b/docs/setup/server/Test Client/theming.md index f7f2256..8ccfaf0 100644 --- a/docs/setup/server/Test Client/theming.md +++ b/docs/setup/server/Test Client/theming.md @@ -1,6 +1,6 @@ # Theming -'Theming' here refers to the theming of the Discord.com web client used for testing. +'Theming' here refers to the theming of the [test client](index.md). Fosscord can inject additional CSS into the client to allow you to change quite a lot about it's appearence. There's three different CSS files injected into the client, in `/assets/public`, including `fosscord-login.css`, `fosscord.css`, and `user.css`. diff --git a/docs/setup/server/configuration/embeds.md b/docs/setup/server/configuration/embeds.md index d5d4cf8..7b618b9 100644 --- a/docs/setup/server/configuration/embeds.md +++ b/docs/setup/server/configuration/embeds.md @@ -4,8 +4,16 @@ Embeds in Fosscord are external content that is displayed within your messages w Fosscord tries its best to fetch content from these external sites, but sometimes we require an API key or other authentication with the site to display their content (or nicer looking embeds). +For external images, it's best to set up [Imagor](imagor.md) for image resizing. +The client may or may not fetch images directly from their source if this is not set up, +and as such some users may not see all images. +In the case where a client does fetch an image from it's source, without Imagor an attacker +may be able to learn the IP addresses of users. + ## Twitter Go to the [Twitter developer portal](https://developer.twitter.com/) and sign up for developer access. +You must have a phone number attached to your account to sign up. Create an application for use with the Twitter API (We don't need to post messages to Twitter itself). +Make sure to create a bearer token for authentication. Once you have your API key, set the `external_twitter` [config](index.md) value to your API key, wrapped in quotes. diff --git a/docs/setup/server/configuration/guildFeatures.md b/docs/setup/server/configuration/guildFeatures.md index 2953c91..1c491bd 100644 --- a/docs/setup/server/configuration/guildFeatures.md +++ b/docs/setup/server/configuration/guildFeatures.md @@ -1,8 +1,8 @@ # Guild Features -Guild features as special modifiers assigned to guilds for additional functionality. +Guild features are special modifiers assigned to guilds for additional functionality. In Fosscord, guild features are stored in the `features` column of the `guilds` table as a comma separated list, with no spaces. For example, `ANIMATED_ICON,BANNER,DISCOVERABLE`. -A list of all available guild features is available [here](https://gist.github.com/Techy/ecc60b12e94f8fc8185f09b82aa91dd2) +A list of all guild features is available [here](https://github.com/Delitefully/DiscordLists#guild-feature-glossary) diff --git a/docs/setup/server/configuration/imagor.md b/docs/setup/server/configuration/imagor.md index 4a7be0c..ddd7e9e 100644 --- a/docs/setup/server/configuration/imagor.md +++ b/docs/setup/server/configuration/imagor.md @@ -3,7 +3,8 @@ [Imagor](https://github.com/cshum/imagor) is a "fast, secure image processing server" used by Fosscord for external image resizing, primarily by embeds from other websites when linked in a message. If left unused, Fosscord will simply not provide a proxy_url for clients, which may leave external images unavailable -or cause the client to download directly from the image host. +or cause the client to download directly from the image host. Downloading images directly from the host may lead to +privacy concerns, as an attacker may be able to learn users IP addresses. ## Dependencies @@ -16,6 +17,7 @@ and create a `imagor.env` file somewhere safe, with the following content (do no ``` IMAGOR_SECRET=[security_requestSignature value] +PORT=8000 ``` You can now start Imagor with @@ -25,10 +27,14 @@ docker run --env-file ./imagor.env -p 8000:8000 shumc/imagor ``` `8000` here is our port. Make sure that it'd available to people outside your network. -If you're using a reverse proxy such as Nginx for Fosscord already, you could add this to your config's `server` block +If you would like to change the port Imagor listens on, be sure to change both the PORT value in `imagor.env`, +and the `-p` value used in docker. + +If you're using a [reverse proxy](../reverseProxy.md) such as Nginx for Fosscord already, you could add this to your config's `server` block ```nginx location /media { + # If you changed the port, be sure to change it here too proxy_pass http://127.0.0.1:8000; } ``` @@ -36,6 +42,25 @@ location /media { Along with any additional config you already have, of course. Alternative (and perhaps the better choice) would be to create a new domain, say `media.whatever.com` specifically for Imagor. +??? "Example config for `media.whatever.com` site" + + ```nginx + server { + # Change the server_name to reflect your true domain + server_name media.whatever.com + + add_header Last-Modified $date_gmt; + proxy_set_header Host $host; + proxy_pass_request_headers on; + proxy_set_header X-Forwarded-For $remote_addr; + + location / { + # If you had changed the port, change it here as well + proxy_pass http://127.0.0.1:8000; + } + } + ``` + Our last step is to simply tell Fosscord about Imagor. Just set the `cdn_imagorServerUrl` config value to your public endpoint for Imagor, wrapped in quotes. Congrats! After a restart, you've now got Imagor resizing your images! diff --git a/docs/setup/server/configuration/index.md b/docs/setup/server/configuration/index.md index 0a9d367..b5ed456 100644 --- a/docs/setup/server/configuration/index.md +++ b/docs/setup/server/configuration/index.md @@ -3,7 +3,9 @@ Fosscord's configuration is done through the `config` table of your database. The table schema consists of two columns `key` and `value`, where `value` is a JSON value. For now, you can update this through SQL manually or a GUI database editor such as -[DBeaver](https://dbeaver.io/) or [SQLite Browser](https://sqlitebrowser.org/) if using SQLite. +[DBeaver](https://dbeaver.io/). + +!!! note "The `CONFIG_PATH` [environment variable](env.md) can be set to make Fosscord use a JSON file instead of a database table." ## Array Types @@ -72,10 +74,10 @@ Arrays are represented by \_[number] in a config key. For example, multiple `gui | limits_rate_routes_auth_login_window | 60 | number | IP /login rate limit window, in seconds | | limits_rate_routes_auth_register_count | 2 | number | Allowed number of IP /register requests within window | | limits_rate_routes_auth_register_window | 43200 | number | IP /register rate limit window, in seconds | -| limits_absoluteRate_register_limit | 25 | number | Absolute number of registrations globally per window | +| limits_absoluteRate_register_limit | 25 | number | Absolute number of registrations instance-wide per window | | limits_absoluteRate_register_window | 3600000 | number | Global /register rate limit window, in seconds | | limits_absoluteRate_register_enabled | true | boolean | Whether absolute register rate limits are enabled | -| limits_absoluteRate_sendMessage_limit | 200 | number | Absolute number of messages globally per window | +| limits_absoluteRate_sendMessage_limit | 200 | number | Absolute number of messages instance-wide per window | | limits_absoluteRate_sendMessage_window | 60000 | number | Global sendMessage window, in seconds | | limits_absoluteRate_sendMessage_enabled | true | boolean | Whether absolute message sending rate limits are enabled | | [security_captcha_enabled](../security/captcha.md) | false | boolean | Whether to enable captchas for login/register | diff --git a/docs/setup/server/database.md b/docs/setup/server/database.md index b0ac8a2..4ead9f2 100644 --- a/docs/setup/server/database.md +++ b/docs/setup/server/database.md @@ -2,7 +2,7 @@ By default, Fosscord will use SQLite. SQLite is nice for testing or development, but if you plan to run an instance with any sort of demand, you'd best set up a more Proper™ database -such as MariaDB or Postresql, which are both popular choices within the community. +such as MariaDB or PostreSQL, which are both popular choices within the community. We won't go into the setup of these servers here, given the scope of our documentation, but to configure Fosscord to use your new, shiny database, simply set the `DATABASE` [environment variable](configuration/env.md) diff --git a/docs/setup/server/index.md b/docs/setup/server/index.md index 67470fe..4589e9d 100644 --- a/docs/setup/server/index.md +++ b/docs/setup/server/index.md @@ -6,17 +6,20 @@ you should check out the other pages on this site to take your instance to the n For this guide, we assume you're familar with the terminal. -We do **not** recommend or support running Fosscord using services such as Ngrok, Heroku or other 'free' hosting providers. +We do **not** recommend or support running Fosscord using services such as Ngrok or Heroku. You **must** have access to a terminal for this guide. +We do not recommend using Windows to run Fosscord. + ## Dependencies - [Git](https://git-scm.com/) - [NodeJS](https://nodejs.org). Version 16+ - [Python](https://www.python.org/). Version 3+. Make sure this is executable via `python` in your terminal. - (See: `python-is-python3` package) + (See: `python-is-python3` package) - On Linux: `gcc`/`g++`. Packaged with `build-essential` on Debian/Ubuntu and `base-devel` on Arch. - On Windows: [Visual Studio](https://visualstudio.microsoft.com/) (**NOT** VSCode) with the `Desktop development with C++` package. + You do not need the full Visual Studio install, the build tools are fine. ## Setup diff --git a/docs/setup/server/migatingFromStaging.md b/docs/setup/server/migatingFromStaging.md index 7041a79..54e8ee9 100644 --- a/docs/setup/server/migatingFromStaging.md +++ b/docs/setup/server/migatingFromStaging.md @@ -1,16 +1,20 @@ # Migrating from Staging 'Staging' refers to [this branch](https://github.com/fosscord/fosscord-server/tree/staging) of fosscord-server, -which is deprecated in favour of [this branch](https://github.com/fosscord/fosscord-server/tree/maddy/refactor) (if this is a 404, its just become the main branch now). +which is deprecated in favour of [the refactor branch](https://github.com/fosscord/fosscord-server/tree/maddy/refactor) (if this is a 404, its just become the main branch now). !!! warn "If you were using SQLite, you will be unable to migrate to the new version. SQLite is primarily for testing and development purposes, and it should not be used for production." To migrate from Staging: 1. Download the new version of fosscord-server - `git clone https://github.com/fosscord/fosscord-server.git` + `git clone https://github.com/fosscord/fosscord-server.git` 2. Copy your `.env` file from your previous installation to the new `fosscord-server` folder. -3. `npm i` in new installation -4. `npm run setup` -5. `npm run migrate-from-staging` to run the migrations on your database -6. `npm run start` to start the server \ No newline at end of file +3. Copy any user data, specifically the `files` directory, to the new project root. +4. `npm i` in new installation +5. `npm run setup` +6. `npm run migrate-from-staging` to run the migrations on your database +7. `npm run start` to start the server + +Make sure you modify any existing scripts of yours to use the new path, +or just rename the old one and move the new one in its place. diff --git a/docs/setup/server/npmScripts.md b/docs/setup/server/npmScripts.md index 206b694..30e2e65 100644 --- a/docs/setup/server/npmScripts.md +++ b/docs/setup/server/npmScripts.md @@ -9,7 +9,7 @@ Shorthand for `build` and `generate:schema` ## `sync:db` Syncronise the database schema between Fosscord source code and your database. -**May incur dataloss**. You should only run this once, for new installs. +**May incur data loss**. ## `build` diff --git a/docs/setup/server/reverseProxy.md b/docs/setup/server/reverseProxy.md index 8a78bba..bef0e0a 100644 --- a/docs/setup/server/reverseProxy.md +++ b/docs/setup/server/reverseProxy.md @@ -7,6 +7,8 @@ Generally, our community sets up Fosscord instances behind NGINX, a powerful rev Below is an example NGINX config. On Ubuntu, you can put this in `/etc/nginx/sites-available/fosscord`, and enable it with `ln -s /etc/nginx/sites-available/fosscord /etc/nginx/sites-enabled/` and `systemctl restart nginx` +!!! info "Other distros and Windows may not have a `sites-available`, `sites-enabled` directory structure. You may need to edit the `/etc/nginx/nginx.conf` file instead, or place new files in a `conf.d` directory, for example." + ```nginx server { # Change server_name @@ -14,7 +16,7 @@ server { listen 80; location / { - # do NOT change this + # Only change this if Nginx and Fosscord are not on the same machine. proxy_pass http://127.0.0.1:3001; proxy_set_header Host $host; proxy_pass_request_headers on; @@ -31,21 +33,42 @@ server { proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; } + + # Uncomment this if using Imagor: + #location /media { + # # If you changed the port, be sure to change it here too + # proxy_pass http://127.0.0.1:8000; + #} +} } ``` ## SSL -After you've set up NGINX, it's very simple to also set up SSL using `certbot`. -On Ubuntu: +[SSL](https://en.wikipedia.org/wiki/Secure_Sockets_Layer) is a technology used to keep your website secure. +Put very simply, it's the padlock next to the URL in your browser. -```bash -sudo apt install certbot python3-certbot-nginx -certbot --nginx -``` +After you've set up NGINX, it's very simple to also set up SSL using `certbot`. +=== "Ubuntu" + + ```sh + sudo apt install certbot python3-certbot-nginx + sudo certbot --nginx + ``` + +=== "Arch" + + ```sh + sudo pacman -Syu certbot certbot-nginx + sudo certbot --nginx + ``` + +=== "Other Distros" + + Please refer to [Certbots documentation](https://certbot.eff.org/) You should be asked various questions, such as which site you want to enable SSL for. -Afterwhich, you should now have a SSL secured Fosscord instance! +After which, you should now have a SSL secured Fosscord instance! -But wait! There's more, actually. If you have changed your `gateway_endpointPublic` +But wait, there's more! If you have changed your `gateway_endpointPublic` or `cdn_endpointPublic` addresses, you'll probably have to update those to use the new protocol (`https` or `wss`). diff --git a/docs/setup/server/systemd.md b/docs/setup/server/systemd.md index 34f2049..d4f586f 100644 --- a/docs/setup/server/systemd.md +++ b/docs/setup/server/systemd.md @@ -1,9 +1,9 @@ -# Systemd +# SystemD -Below is an example Systemd service for running Fosscord. +Below is an example SystemD service for running Fosscord. Save it in `/etc/systemd/system/fosscord.service`. -```ini +```toml [Unit] Description=Fosscord, for better and secure communication @@ -19,6 +19,8 @@ StandardOutput=journal WantedBy=multi-user.target ``` +!!! error "Do not run Fosscord as the root user. This is a security risk to your system." + Make sure to edit the file as needed, such as replacing the user. It is a good idea to create a new user on your system to run Fosscord. If you would like to run the API, CDN or Gateway separately, @@ -29,4 +31,7 @@ You can now start Fosscord using `sudo systemctl start fosscord`. To automatically run Fosscord on boot, use `sudo systemctl enable fosscord`. -To view the server logs, you may use `journalctl -u fosscord.service`, or with `-f` to view them as they come. \ No newline at end of file +To view the server logs, you may use `journalctl -u fosscord`, or with `-f` to view them as they come. + +You may also use the `lnav` package to get nice, colourised and scrolling output: +`journalctl -xefu fosscord | lnav` diff --git a/docs/setup/server/updating.md b/docs/setup/server/updating.md index 43b118d..d4e8e82 100644 --- a/docs/setup/server/updating.md +++ b/docs/setup/server/updating.md @@ -7,8 +7,6 @@ _which will delete all your changes_. If you want to keep them, you'll have to g After downloading the new version, go through the setup guide as normal again: -!!! error "Do not run `npm run sync:db` with existing databases! You may suffer dataloss!" - ```bash # Install any new javascript packages npm i From d076a0270976c66bb776317f605c13d26eaebea7 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Fri, 6 Jan 2023 13:46:09 +1100 Subject: [PATCH 24/52] Update docs/setup/server/updating.md Co-authored-by: Puyodead1 --- docs/setup/server/updating.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/setup/server/updating.md b/docs/setup/server/updating.md index d4e8e82..d9fc83e 100644 --- a/docs/setup/server/updating.md +++ b/docs/setup/server/updating.md @@ -1,5 +1,5 @@ If you had followed the [setup guide](index.md), you'll have installed Fosscord using [Git](https://git-scm.com/). -Thus, you can update the server by running `git pull`. +Thus, you can update the server by running `git pull` in the `fosscord-server` directory. If you had made any changes locally, you may run into merge conflicts, where the Fosscord team has made changes to the same code you changed. If it's not important to you, you can simply run `git reset --hard HEAD` From 5823b02f13737611a765c299469acf213eb38d67 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Fri, 6 Jan 2023 13:46:20 +1100 Subject: [PATCH 25/52] Update docs/contributing/conduct.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Erkin Alp Güney --- docs/contributing/conduct.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/contributing/conduct.md b/docs/contributing/conduct.md index f6e8bcc..d603675 100644 --- a/docs/contributing/conduct.md +++ b/docs/contributing/conduct.md @@ -6,7 +6,7 @@ This code of conduct is based on the Artemis Lena Code of Conduct by FantasyCook Fosscord community spaces includes Fosscord github repositories and Fosscord development guilds (be it on Discord.com or Fosscord instances mananged by the Fosscord maintainers group). -By contributing to any Fosscord projects (for example, through pull request) you guarantee that you have the rights to resign all rights to Fosscord under the AGPLV3 license. +By contributing to any Fosscord projects (for example, through pull request) you guarantee that you have the requisite rights to grant Fosscord a AGPLV3 licence. If your work is legally in the public domain (through a legally accepted waiver or a mandate (such as the national government works of United States, People's Republic of China and Israel)), you **must** declare this. ### Desirable Behaviour From df604a0e0bf389c9f5a909b5fd32cb6389c7b0b0 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Fri, 6 Jan 2023 13:46:32 +1100 Subject: [PATCH 26/52] Update docs/contributing/conduct.md Co-authored-by: Puyodead1 --- docs/contributing/conduct.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/contributing/conduct.md b/docs/contributing/conduct.md index d603675..e21fbd6 100644 --- a/docs/contributing/conduct.md +++ b/docs/contributing/conduct.md @@ -12,7 +12,7 @@ By contributing to any Fosscord projects (for example, through pull request) you - If possible, provide assistance with Fosscord projects to other users. - Be respectful toward other's opinions and viewpoints. -- Accepting responsibility and apoligising to those affected for our mistakes. +- Accepting responsibility and apologizing to those affected for our mistakes. ### Prohibited Behaviour From 1b9c1c31966df3d5e795ff808ecbf643c7d9732d Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Fri, 6 Jan 2023 13:46:41 +1100 Subject: [PATCH 27/52] Update docs/setup/server/database.md Co-authored-by: Puyodead1 --- docs/setup/server/database.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/setup/server/database.md b/docs/setup/server/database.md index 4ead9f2..d26c6fb 100644 --- a/docs/setup/server/database.md +++ b/docs/setup/server/database.md @@ -5,7 +5,7 @@ but if you plan to run an instance with any sort of demand, you'd best set up a such as MariaDB or PostreSQL, which are both popular choices within the community. We won't go into the setup of these servers here, given the scope of our documentation, -but to configure Fosscord to use your new, shiny database, simply set the `DATABASE` [environment variable](configuration/env.md) +but to configure Fosscord to use your shiny new database, simply set the `DATABASE` [environment variable](configuration/env.md) to your new database connection string. Usually, such a string will look something like From b0eef87cf26c4d0ce732ab72a41e462598591166 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Fri, 6 Jan 2023 19:27:06 +1100 Subject: [PATCH 28/52] swagger api stuff --- docs/assets/extra.css | 4 ++++ docs/assets/favicon.svg | 4 ++++ docs/assets/logo.svg | 5 +++-- docs/assets/swagger.css | 3 +++ docs/routes.md | 9 ++++++++- mkdocs.yml | 7 +++++-- 6 files changed, 27 insertions(+), 5 deletions(-) create mode 100644 docs/assets/favicon.svg create mode 100644 docs/assets/swagger.css diff --git a/docs/assets/extra.css b/docs/assets/extra.css index 8131c66..1ccd399 100644 --- a/docs/assets/extra.css +++ b/docs/assets/extra.css @@ -5,3 +5,7 @@ .md-typeset table:not([class]) { display: table; } + +.md-grid { + max-width: 65rem; +} \ No newline at end of file diff --git a/docs/assets/favicon.svg b/docs/assets/favicon.svg new file mode 100644 index 0000000..bcce639 --- /dev/null +++ b/docs/assets/favicon.svg @@ -0,0 +1,4 @@ + + + \ No newline at end of file diff --git a/docs/assets/logo.svg b/docs/assets/logo.svg index 67d3fdf..9e046c9 100644 --- a/docs/assets/logo.svg +++ b/docs/assets/logo.svg @@ -1,3 +1,4 @@ - - + + \ No newline at end of file diff --git a/docs/assets/swagger.css b/docs/assets/swagger.css new file mode 100644 index 0000000..c7eb935 --- /dev/null +++ b/docs/assets/swagger.css @@ -0,0 +1,3 @@ +html { + overflow-y: auto !important; +} \ No newline at end of file diff --git a/docs/routes.md b/docs/routes.md index 3a871ee..7ab4331 100644 --- a/docs/routes.md +++ b/docs/routes.md @@ -1,3 +1,10 @@ # API Routes -!!swagger-http https://raw.githubusercontent.com/fosscord/fosscord-server/master/api/assets/openapi.json!! + + + + diff --git a/mkdocs.yml b/mkdocs.yml index 08bdfa2..67acaf9 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -5,11 +5,14 @@ site_description: Documentation of Fosscord a free open source selfhostable chat plugins: - section-index - search - - render_swagger + - swagger-ui-tag: + extra_css: [assets/swagger.css] + docExpansion: none + filter: true theme: name: material logo: assets/logo.svg - favicon: assets/logo.svg + favicon: assets/favicon.svg font: Open Sans palette: - media: "(prefers-color-scheme: light)" From 586e611ee84b292103d9e1b27caf9ec6f184e6fd Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sat, 7 Jan 2023 12:59:46 +1100 Subject: [PATCH 29/52] Forgot to update readme --- README.md | 2 +- docs/concepts/guildTemplates.md | 0 docs/routes.md | 4 ++-- 3 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 docs/concepts/guildTemplates.md diff --git a/README.md b/README.md index 9fa5cf6..0d0aa7e 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ 3. Install dependencies. ```bash - python3 -m pip install mkdocs-material mkdocs-render-swagger-plugin mkdocs-section-index + python3 -m pip install mkdocs-material mkdocs-swagger-ui-tag mkdocs-section-index ``` 4. Edit documents(s). diff --git a/docs/concepts/guildTemplates.md b/docs/concepts/guildTemplates.md deleted file mode 100644 index e69de29..0000000 diff --git a/docs/routes.md b/docs/routes.md index 7ab4331..c1a451f 100644 --- a/docs/routes.md +++ b/docs/routes.md @@ -6,5 +6,5 @@ } - - + + From 8e770e544ca47b2f9497549d8c2480bdca379c3e Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sat, 7 Jan 2023 21:30:39 +1100 Subject: [PATCH 30/52] Reg token docs --- docs/setup/server/security/regTokens.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/setup/server/security/regTokens.md b/docs/setup/server/security/regTokens.md index 6bed57a..5e26b62 100644 --- a/docs/setup/server/security/regTokens.md +++ b/docs/setup/server/security/regTokens.md @@ -1 +1,19 @@ # Registration Tokens + +Registration tokens are a one-time use token for allowing a new user registration to bypass various restrictions: + +* Bypass `register_allowNewRegistrations = false` +* Bypass `register_disabled = true` +* Bypass [captchas](captcha.md) +* Bypass `register_allowMultipleAccounts = false` +* Bypass `register_blockProxies = true` +* Bypass `register_requireInvite = true` +* Bypass `register_guestsRequireInvite = true` +* Bypass [absolute register rate limits](limits.md) + +To create a registration token, send a GET request to `/auth/generate-registration-tokens/` as an account with `OPERATOR` [rights](rights.md) + +To use a registration token, append `?token={your registration token}` to the register route. For example +``` +https://staging.fosscord.com/register?token=some token +``` \ No newline at end of file From 74c62e2a777446c1a4d5b5faa4ffd344bb8fe585 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sat, 7 Jan 2023 21:44:08 +1100 Subject: [PATCH 31/52] Captcha docs --- docs/setup/server/security/captcha.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/setup/server/security/captcha.md b/docs/setup/server/security/captcha.md index e69de29..46b2e78 100644 --- a/docs/setup/server/security/captcha.md +++ b/docs/setup/server/security/captcha.md @@ -0,0 +1,25 @@ +# CAPTCHAs + +Fosscord currently supports two CAPTCHA providers; reCAPTCHA and hCaptcha. + +=== "hCaptcha" + + 1. Navigate to [https://www.hcaptcha.com/](https://www.hcaptcha.com/) + 2. Create an account - `Add hCaptcha for Publishers to my website or app` + 3. Copy your `sitekey` to the [config](../configuration/index.md) `security_captcha_sitekey` value, wrapped in quotes + 4. Copy your `secret` to the config `security_captcha_secret` value, wrapped in quotes + 5. Set the config `security_captcha_service` value to `"hcaptcha"` + 6. Set the `security_captcha_enabled` value to `true`, *not* wrapped in quotes. + +=== "reCAPTCHA" + + 1. Navigate to [https://www.google.com/u/1/recaptcha/admin/create](https://www.google.com/u/1/recaptcha/admin/create) + 2. Fill in your websites details + 3. Select `reCAPTCHA v2` -> `"I'm not a robot" Checkbox` + 4. Add your domain. For example, `staging.fosscord.com`. Go to the next screen. + 5. Copy your `sitekey` to the [config](../configuration/index.md) `security_captcha_sitekey` value, wrapped in quotes + 6. Copy your `secret` to the config `security_captcha_secret` value, wrapped in quotes + 7. Set the config `security_captcha_service` value to `"recaptcha"` + 8. Set the `security_captcha_enabled` value to `true`, *not* wrapped in quotes. + + reCAPTCHA v3 and other v2 types may or may not work. \ No newline at end of file From ca52290e167dadb3491b49d8702084ac8e95ecea Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sat, 7 Jan 2023 22:21:12 +1100 Subject: [PATCH 32/52] Ratelimit docs --- docs/setup/server/security/limits.md | 41 ++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/docs/setup/server/security/limits.md b/docs/setup/server/security/limits.md index 3616ab3..2181201 100644 --- a/docs/setup/server/security/limits.md +++ b/docs/setup/server/security/limits.md @@ -1 +1,42 @@ # Rate Limiting + +Fosscord has various forms of rate limiting built in. If you are logged in, you can bypass these with the `BYPASS_RATE_LIMITS` [right](rights.md) + +* Absolute rate limits, which effect all requests to a route regardless of source (`limits_absoluteRate_*`) +* User or IP specific rate limits (`limits_rate_*`) + +## Absolute ratelimiting + +There are currently two types of absolute rate limiting: + +* `limits_absoluteRate_register_*` - Controls the absolute count of registrations allowed within a window. Useful for mitigating registration spam, in addition to [captchas](captcha.md) +* `limits_absoluteRate_sendMessage_*` - Controls the absolute count of messages allowed to be sent within a window. + +Absolute rate limits do not consider the source of the request, only the total number of requests instance-wide. + +Both of the above are individually enabled. + +## User/IP specific ratelimiting + +These rate limits are enabled with a single toggle (`limits_rate_enabled`) + +* `limits_rate_ip_*` - Controls the count of requests to any endpoint from a single IP over some window. +* `limits_rate_global_*` - Number of requests to any endpoint for the same user and IP +* `limits_rate_error_*` - Number of errors allowed per window for an IP +* `limits_rate_routes_guild_*` - Guild related requests for same user and IP +* `limits_rate_routes_webhook_*` - Webhook related requests for same user and IP +* `limits_rate_routes_channel_*` - Channel related requests for same user and IP +* `limits_rate_routes_auth_login_*` - Login requests for same user and IP +* `limits_rate_routes_auth_register_*` - Register requests (successful only) for same IP + +## What do you mean by window and count? + +Each ratelimiter accepts a `window` and `count`. The rate limiter tracks the number of requests to an endpoint within a `window`, in seconds. +If number of requests within the last `window` seconds exceeds the `count` set, it will block the request. + +For example, setting: +``` +limits_rate_ip_count = 10 +limits_rate_ip_window = 1 +``` +will prevent all requests to any API endpoints from an IP if they exceed 10 requests in 1 second. \ No newline at end of file From 95cd64ebd2db67e88799aa17a61cbe96998092d9 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sat, 7 Jan 2023 22:22:35 +1100 Subject: [PATCH 33/52] add note to sync:db script about not needing to run it, usually --- docs/setup/server/npmScripts.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/setup/server/npmScripts.md b/docs/setup/server/npmScripts.md index 30e2e65..470a2a7 100644 --- a/docs/setup/server/npmScripts.md +++ b/docs/setup/server/npmScripts.md @@ -9,7 +9,7 @@ Shorthand for `build` and `generate:schema` ## `sync:db` Syncronise the database schema between Fosscord source code and your database. -**May incur data loss**. +**May incur data loss**. You do not normally need to run this script, as Fosscord-server will perform it when necessary. ## `build` From c581cfd2dd84f42fc570735dce410026121c7eb7 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sat, 7 Jan 2023 22:23:08 +1100 Subject: [PATCH 34/52] Prettier --- docs/assets/extra.css | 2 +- docs/assets/swagger.css | 2 +- docs/setup/server/security/captcha.md | 30 ++++++++++++------------- docs/setup/server/security/limits.md | 28 ++++++++++++----------- docs/setup/server/security/regTokens.md | 19 ++++++++-------- 5 files changed, 42 insertions(+), 39 deletions(-) diff --git a/docs/assets/extra.css b/docs/assets/extra.css index 1ccd399..53bb3ee 100644 --- a/docs/assets/extra.css +++ b/docs/assets/extra.css @@ -8,4 +8,4 @@ .md-grid { max-width: 65rem; -} \ No newline at end of file +} diff --git a/docs/assets/swagger.css b/docs/assets/swagger.css index c7eb935..c9dadae 100644 --- a/docs/assets/swagger.css +++ b/docs/assets/swagger.css @@ -1,3 +1,3 @@ html { overflow-y: auto !important; -} \ No newline at end of file +} diff --git a/docs/setup/server/security/captcha.md b/docs/setup/server/security/captcha.md index 46b2e78..85d2b76 100644 --- a/docs/setup/server/security/captcha.md +++ b/docs/setup/server/security/captcha.md @@ -4,22 +4,22 @@ Fosscord currently supports two CAPTCHA providers; reCAPTCHA and hCaptcha. === "hCaptcha" - 1. Navigate to [https://www.hcaptcha.com/](https://www.hcaptcha.com/) - 2. Create an account - `Add hCaptcha for Publishers to my website or app` - 3. Copy your `sitekey` to the [config](../configuration/index.md) `security_captcha_sitekey` value, wrapped in quotes - 4. Copy your `secret` to the config `security_captcha_secret` value, wrapped in quotes - 5. Set the config `security_captcha_service` value to `"hcaptcha"` - 6. Set the `security_captcha_enabled` value to `true`, *not* wrapped in quotes. + 1. Navigate to [https://www.hcaptcha.com/](https://www.hcaptcha.com/) + 2. Create an account - `Add hCaptcha for Publishers to my website or app` + 3. Copy your `sitekey` to the [config](../configuration/index.md) `security_captcha_sitekey` value, wrapped in quotes + 4. Copy your `secret` to the config `security_captcha_secret` value, wrapped in quotes + 5. Set the config `security_captcha_service` value to `"hcaptcha"` + 6. Set the `security_captcha_enabled` value to `true`, *not* wrapped in quotes. === "reCAPTCHA" - 1. Navigate to [https://www.google.com/u/1/recaptcha/admin/create](https://www.google.com/u/1/recaptcha/admin/create) - 2. Fill in your websites details - 3. Select `reCAPTCHA v2` -> `"I'm not a robot" Checkbox` - 4. Add your domain. For example, `staging.fosscord.com`. Go to the next screen. - 5. Copy your `sitekey` to the [config](../configuration/index.md) `security_captcha_sitekey` value, wrapped in quotes - 6. Copy your `secret` to the config `security_captcha_secret` value, wrapped in quotes - 7. Set the config `security_captcha_service` value to `"recaptcha"` - 8. Set the `security_captcha_enabled` value to `true`, *not* wrapped in quotes. + 1. Navigate to [https://www.google.com/u/1/recaptcha/admin/create](https://www.google.com/u/1/recaptcha/admin/create) + 2. Fill in your websites details + 3. Select `reCAPTCHA v2` -> `"I'm not a robot" Checkbox` + 4. Add your domain. For example, `staging.fosscord.com`. Go to the next screen. + 5. Copy your `sitekey` to the [config](../configuration/index.md) `security_captcha_sitekey` value, wrapped in quotes + 6. Copy your `secret` to the config `security_captcha_secret` value, wrapped in quotes + 7. Set the config `security_captcha_service` value to `"recaptcha"` + 8. Set the `security_captcha_enabled` value to `true`, *not* wrapped in quotes. - reCAPTCHA v3 and other v2 types may or may not work. \ No newline at end of file + reCAPTCHA v3 and other v2 types may or may not work. diff --git a/docs/setup/server/security/limits.md b/docs/setup/server/security/limits.md index 2181201..3679c70 100644 --- a/docs/setup/server/security/limits.md +++ b/docs/setup/server/security/limits.md @@ -2,15 +2,15 @@ Fosscord has various forms of rate limiting built in. If you are logged in, you can bypass these with the `BYPASS_RATE_LIMITS` [right](rights.md) -* Absolute rate limits, which effect all requests to a route regardless of source (`limits_absoluteRate_*`) -* User or IP specific rate limits (`limits_rate_*`) +- Absolute rate limits, which effect all requests to a route regardless of source (`limits_absoluteRate_*`) +- User or IP specific rate limits (`limits_rate_*`) ## Absolute ratelimiting There are currently two types of absolute rate limiting: -* `limits_absoluteRate_register_*` - Controls the absolute count of registrations allowed within a window. Useful for mitigating registration spam, in addition to [captchas](captcha.md) -* `limits_absoluteRate_sendMessage_*` - Controls the absolute count of messages allowed to be sent within a window. +- `limits_absoluteRate_register_*` - Controls the absolute count of registrations allowed within a window. Useful for mitigating registration spam, in addition to [captchas](captcha.md) +- `limits_absoluteRate_sendMessage_*` - Controls the absolute count of messages allowed to be sent within a window. Absolute rate limits do not consider the source of the request, only the total number of requests instance-wide. @@ -20,14 +20,14 @@ Both of the above are individually enabled. These rate limits are enabled with a single toggle (`limits_rate_enabled`) -* `limits_rate_ip_*` - Controls the count of requests to any endpoint from a single IP over some window. -* `limits_rate_global_*` - Number of requests to any endpoint for the same user and IP -* `limits_rate_error_*` - Number of errors allowed per window for an IP -* `limits_rate_routes_guild_*` - Guild related requests for same user and IP -* `limits_rate_routes_webhook_*` - Webhook related requests for same user and IP -* `limits_rate_routes_channel_*` - Channel related requests for same user and IP -* `limits_rate_routes_auth_login_*` - Login requests for same user and IP -* `limits_rate_routes_auth_register_*` - Register requests (successful only) for same IP +- `limits_rate_ip_*` - Controls the count of requests to any endpoint from a single IP over some window. +- `limits_rate_global_*` - Number of requests to any endpoint for the same user and IP +- `limits_rate_error_*` - Number of errors allowed per window for an IP +- `limits_rate_routes_guild_*` - Guild related requests for same user and IP +- `limits_rate_routes_webhook_*` - Webhook related requests for same user and IP +- `limits_rate_routes_channel_*` - Channel related requests for same user and IP +- `limits_rate_routes_auth_login_*` - Login requests for same user and IP +- `limits_rate_routes_auth_register_*` - Register requests (successful only) for same IP ## What do you mean by window and count? @@ -35,8 +35,10 @@ Each ratelimiter accepts a `window` and `count`. The rate limiter tracks the num If number of requests within the last `window` seconds exceeds the `count` set, it will block the request. For example, setting: + ``` limits_rate_ip_count = 10 limits_rate_ip_window = 1 ``` -will prevent all requests to any API endpoints from an IP if they exceed 10 requests in 1 second. \ No newline at end of file + +will prevent all requests to any API endpoints from an IP if they exceed 10 requests in 1 second. diff --git a/docs/setup/server/security/regTokens.md b/docs/setup/server/security/regTokens.md index 5e26b62..5523d9e 100644 --- a/docs/setup/server/security/regTokens.md +++ b/docs/setup/server/security/regTokens.md @@ -2,18 +2,19 @@ Registration tokens are a one-time use token for allowing a new user registration to bypass various restrictions: -* Bypass `register_allowNewRegistrations = false` -* Bypass `register_disabled = true` -* Bypass [captchas](captcha.md) -* Bypass `register_allowMultipleAccounts = false` -* Bypass `register_blockProxies = true` -* Bypass `register_requireInvite = true` -* Bypass `register_guestsRequireInvite = true` -* Bypass [absolute register rate limits](limits.md) +- Bypass `register_allowNewRegistrations = false` +- Bypass `register_disabled = true` +- Bypass [captchas](captcha.md) +- Bypass `register_allowMultipleAccounts = false` +- Bypass `register_blockProxies = true` +- Bypass `register_requireInvite = true` +- Bypass `register_guestsRequireInvite = true` +- Bypass [absolute register rate limits](limits.md) To create a registration token, send a GET request to `/auth/generate-registration-tokens/` as an account with `OPERATOR` [rights](rights.md) To use a registration token, append `?token={your registration token}` to the register route. For example + ``` https://staging.fosscord.com/register?token=some token -``` \ No newline at end of file +``` From 4c62262f71470f17c2099f779b8a8487d2914f98 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sat, 7 Jan 2023 22:29:35 +1100 Subject: [PATCH 35/52] Add note about operator rights and rearrange rights doc --- docs/setup/server/security/rights.md | 81 +++++++++++++++------------- 1 file changed, 45 insertions(+), 36 deletions(-) diff --git a/docs/setup/server/security/rights.md b/docs/setup/server/security/rights.md index 646b089..fab3d9f 100644 --- a/docs/setup/server/security/rights.md +++ b/docs/setup/server/security/rights.md @@ -14,6 +14,51 @@ For example, to grant `CREATE_GUILDS` and `SEND_MESSAGES`, set their `rights` to The default rights value given to users (set through the `register_defaultRights` config value) is generated through the `npm run generate:rights` script. +## OPERATOR Rights + +!!! error "It is EXTREMELY DISCOURAGED to give OPERATOR rights to all users, or to set the default rights to OPERATOR. If your rights value is an odd number, that includes operator." + +Operator rights currently grants access to the following, in addition to all rights: + +- Server shutdown through GET `/api/stop` +- [Registration token creation](regTokens.md) through GET `/api/auth/generate-registration-tokens` + +## Calculator + + + +
    +
    +
    +

    Rights:

    +
    +
    + ## Available rights | Right | Value | When enabled | @@ -68,40 +113,4 @@ is generated through the `npm run generate:rights` script. | `MANAGE_GROUPS` | 1 << 47 | Can manage other's groups | | `VIEW_SERVER_STATS` | 1 << 48 | Can view server stats /api/policies/stats | -## Calculator - - - -
    -
    -
    -

    Rights:

    -
    -
    - From 2c97e6f2b084f22c733ffa4fae30c5503b5501e3 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sat, 7 Jan 2023 23:36:48 +1100 Subject: [PATCH 36/52] fix links --- docs/faq.md | 4 ++-- docs/setup/server/configuration/index.md | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/docs/faq.md b/docs/faq.md index dd6dee5..372face 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -12,7 +12,7 @@ Please do not use Discord trademarks to refer to anything regarding Fosscord. As an instance owner, you can grant yourself or others *premium* features which may be used to determine your abilities *client-side*. However, Fosscord-server currently does not have any distinction between premium and free users. - All users can access all features, given they have the [rights](security/rights.md) to do so. + All users can access all features, given they have the [rights](setup/server/security/rights.md) to do so. You cannot give yourself premium features on Discord.com using a Fosscord instance. @@ -53,7 +53,7 @@ to verify our work as correct. Efforts are being made to move away from this with our own client, but as you may have guessed, building a Discord-compatible client is difficult. - You can read more about the test client [here](Test%20Client/index.md) + You can read more about the test client [here](setup/server/Test%20Client/index.md) ??? info "Is this illegal?" diff --git a/docs/setup/server/configuration/index.md b/docs/setup/server/configuration/index.md index b5ed456..c233b33 100644 --- a/docs/setup/server/configuration/index.md +++ b/docs/setup/server/configuration/index.md @@ -29,7 +29,7 @@ Arrays are represented by \_[number] in a config key. For example, multiple `gui | cdn_endpointPublic | http://localhost:3001 | string | See gateway_endpointPublic | | cdn_resizeHeightMax | 1000 | number | Maximum image resize height for embeds. | | cdn_resizeWidthMax | 1000 | number | Maximum image resize width for embeds. | -| [cdn_imagorServerUrl](../imagor.md) | null | string | Imagor instance endpoint for external image resizing. | +| [cdn_imagorServerUrl](imagor.md) | null | string | Imagor instance endpoint for external image resizing. | | api_defaultVersion | 9 | string | API version to use when not specified | | api_activeVersions_0 | 6, 7, 8, 9 | string[] | Allowed API version numbers. [Array](#array-types). | | general_instanceName | Fosscord Instance | string | Announced instance name | @@ -85,7 +85,7 @@ Arrays are represented by \_[number] in a config key. For example, multiple `gui | security_captcha_sitekey | null | string | Captcha service sitekey | | security_captcha_secret | null | string | Captcha service secret | | security_twoFactor_generateBackupCodes | true | boolean | Whether to generate backup codes for MFA users | -| security_requestSignature | Secret secret | string | The signature required for CDN or [Imagor](../imagor.md) usage | +| security_requestSignature | Secret secret | string | The signature required for CDN or [Imagor](imagor.md) usage | | security_jwtSecret | Secure secret | string | The secret used for user token generation | | [security_forwadedFor](../reverseProxy.md) | null | string | HTTP header for user's real IP. | | security_ipdataApiKey | Fosscord IPdata key | string | API key used for IP geolocation and proxy detection | From 14366e7c1bb2123c0bad6cac1929bd079149a89e Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sat, 7 Jan 2023 23:40:57 +1100 Subject: [PATCH 37/52] update site description --- mkdocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index 67acaf9..ecb5a4f 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,7 +1,7 @@ site_name: Fosscord Documentation repo_url: https://github.com/fosscord/fosscord edit_uri: https://github.com/fosscord/fosscord-docs/edit/master/docs/ -site_description: Documentation of Fosscord a free open source selfhostable chat, voice and video discord-compatible platform +site_description: "Documentation for Fosscord: a free open source selfhostable chat, voice and video discord-compatible platform" plugins: - section-index - search From 4ec439d1226bd0095f5dbab0c3d7ba6f5e3ee01e Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sat, 7 Jan 2023 23:55:23 +1100 Subject: [PATCH 38/52] Add links to discord and issue tracker --- docs/index.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/index.md b/docs/index.md index 7ac748d..ede8812 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,10 +1,10 @@ # Home -!!! info "Want to skip to the server installation guide? [Click here](setup/server)" +!!! note "Interested in contributing? We'd love to have you on board! [Click here](contributing)" -!!! info "Interested in contributing? We'd love to have you on board! [Click here](contributing)" +!!! tip "Want to skip to the server installation guide? [Click here](setup/server)" -!!! info "Have a question? It might be in [here](faq.md)" +!!! question "Have a question? It might be in [here](faq.md)" ## What is Fosscord? @@ -26,3 +26,10 @@ Our goal is to achieve complete feature parity with Discord.com, as well as implement additional security, privacy, and other useful features serverside. In addition to our server software, we aim to create Fosscord-aware clients that can be used to connect to multiple Fosscord-compatible instances with rich theming and plugin support. + +## Support + +For any kind of support regarding Fosscord, feel free to ask questions in our [Discord.com server](https://discord.gg/Ms5Ev7S6bF) +or our [official Fosscord instance](https://staging.fosscord.com). + +For bug reporting and feature requests please create an [issue](https://github.com/fosscord/fosscord-server/issues/new/choose) on Github. From 135e55a18b06dc32d3f0a3a8e3583bdfb83e8a0e Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sun, 8 Jan 2023 16:06:12 +1100 Subject: [PATCH 39/52] Update contributing --- docs/contributing/index.md | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/docs/contributing/index.md b/docs/contributing/index.md index 4e8884f..2e7aea9 100644 --- a/docs/contributing/index.md +++ b/docs/contributing/index.md @@ -2,12 +2,15 @@ !!! info "[Have you read the Code of Conduct?](conduct.md)" -## Notable Technologies +## Style and a note on etiquette -- Typescript -- [Typeorm](https://www.npmjs.com/package/typeorm) -- [WS](https://www.npmjs.com/package/ws) -- [Express](https://www.npmjs.com/package/express) +- We use [prettier](https://www.npmjs.com/package/prettier) for code formatting. We have a `.prettierrc` file in fosscord-server's root + and use a git precommit hook to autorun it. +- Try to stay consistent with the rest of the project +- Try to keep each commit to a single feature or idea, with descriptions of what it is and why it is done. No "Large refactor" commits that touch every file. +- Leave comments in your code about why something is done when appropriate, not just what it is doing. +- If you're working on a feature, please announce that you're working on it (in the relevant GH issue or our Discord, preferably both), so that we can work more effectively. + Additionally, please do not try to snipe features that others are working on. ## Structure @@ -18,14 +21,17 @@ Fosscord is written in Typescript and is comprised of 4 main parts: - HTTP CDN server for storing user file content. - `utils` module to separate our database models, schemas, and other things from the above 3 components. -### Gateway +## Implementing endpoints, opcodes, etc -The Gateway is a WebSocket server that is responsible for listening and emitting events to/from connected clients. +Generally, the approach is to just see what the Discord.com client sends and receives from Discord.com (through your browsers devtools, for example) +and guessing about any functionality server-side, if it's undocumented. -### API +For a lot of things it's pretty simple to guess, `GET /api/users/@me` returns private details about your user for example. +This route is also detailed in [Discords own documentation](https://discord.com/developers/), [here specifically](https://discord.com/developers/docs/resources/user#get-current-user). -The API is a HTTP REST server which does the bulk of the database reads/writes. +Discords does not document anything that is not related to application/bot development, though. +As an example, `GET /api/updates?platform={}` which returns the `url`, `pub_date`, `name` and any `notes` about the latest client release for a platform. -## Documentation - -Unfortunately writing documentation is quite annoying. There's tons of comments in the codebase tho, so don't worry :) +For the Gateway it's the same procedure, except now you can't use the network logger of your devtools +because the gateway returns responses encoded with [erlpack](https://github.com/discord/erlpack). +Easy fix though, just edit the `DeveloperOptionsStore` localStorage key so that `logGatewayEvents` is true, and reload the client. From 0064d8f8a54d24899e6b8dd3d2e4759608053ba1 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sun, 8 Jan 2023 19:26:07 +1100 Subject: [PATCH 40/52] Update docs/contributing/index.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Erkin Alp Güney --- docs/contributing/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/contributing/index.md b/docs/contributing/index.md index 2e7aea9..0663273 100644 --- a/docs/contributing/index.md +++ b/docs/contributing/index.md @@ -7,9 +7,9 @@ - We use [prettier](https://www.npmjs.com/package/prettier) for code formatting. We have a `.prettierrc` file in fosscord-server's root and use a git precommit hook to autorun it. - Try to stay consistent with the rest of the project -- Try to keep each commit to a single feature or idea, with descriptions of what it is and why it is done. No "Large refactor" commits that touch every file. +- Try to keep each commit to a single feature or idea, with descriptions of what it is and why it is done. No "Large refactor" commits that touch every file, unless absolutely required due to the nature of change. - Leave comments in your code about why something is done when appropriate, not just what it is doing. -- If you're working on a feature, please announce that you're working on it (in the relevant GH issue or our Discord, preferably both), so that we can work more effectively. +- If you're working on a feature, please announce that you're working on it (in the relevant GH issue or our Discord, preferably both), so that we can work more effectively and minimise conflicting change attempts. Additionally, please do not try to snipe features that others are working on. ## Structure From 708a39a59b73a6f43086ae8ace46ccf3771c265a Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sun, 8 Jan 2023 19:26:19 +1100 Subject: [PATCH 41/52] Update docs/contributing/index.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Erkin Alp Güney --- docs/contributing/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/contributing/index.md b/docs/contributing/index.md index 0663273..25ec924 100644 --- a/docs/contributing/index.md +++ b/docs/contributing/index.md @@ -29,7 +29,7 @@ and guessing about any functionality server-side, if it's undocumented. For a lot of things it's pretty simple to guess, `GET /api/users/@me` returns private details about your user for example. This route is also detailed in [Discords own documentation](https://discord.com/developers/), [here specifically](https://discord.com/developers/docs/resources/user#get-current-user). -Discords does not document anything that is not related to application/bot development, though. +Discord generally does not document anything that is not related to application/bot development, though. As an example, `GET /api/updates?platform={}` which returns the `url`, `pub_date`, `name` and any `notes` about the latest client release for a platform. For the Gateway it's the same procedure, except now you can't use the network logger of your devtools From 42767527c8ab7c2940491ddedb686e30d74b299e Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sun, 8 Jan 2023 19:31:33 +1100 Subject: [PATCH 42/52] prettier --- docs/contributing/index.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/contributing/index.md b/docs/contributing/index.md index 25ec924..8954fd6 100644 --- a/docs/contributing/index.md +++ b/docs/contributing/index.md @@ -7,9 +7,11 @@ - We use [prettier](https://www.npmjs.com/package/prettier) for code formatting. We have a `.prettierrc` file in fosscord-server's root and use a git precommit hook to autorun it. - Try to stay consistent with the rest of the project -- Try to keep each commit to a single feature or idea, with descriptions of what it is and why it is done. No "Large refactor" commits that touch every file, unless absolutely required due to the nature of change. +- Try to keep each commit to a single feature or idea, with descriptions of what it is and why it is done. No "Large refactor" commits that touch every file, + unless absolutely required due to the nature of change. - Leave comments in your code about why something is done when appropriate, not just what it is doing. -- If you're working on a feature, please announce that you're working on it (in the relevant GH issue or our Discord, preferably both), so that we can work more effectively and minimise conflicting change attempts. +- If you're working on a feature, please announce that you're working on it (in the relevant GH issue or our Discord, preferably both), + so that we can work more effectively and minimise conflicting change attempts. Additionally, please do not try to snipe features that others are working on. ## Structure From afce38d1e33a56a51e697a5b3b1f2151ba04f3ec Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sun, 8 Jan 2023 19:45:43 +1100 Subject: [PATCH 43/52] add note about running build or generate:schema when you change things --- docs/contributing/index.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/contributing/index.md b/docs/contributing/index.md index 8954fd6..17fd735 100644 --- a/docs/contributing/index.md +++ b/docs/contributing/index.md @@ -1,6 +1,6 @@ # Contributing -!!! info "[Have you read the Code of Conduct?](conduct.md)" +!!! question "[Have you read the Code of Conduct?](conduct.md)" ## Style and a note on etiquette @@ -37,3 +37,7 @@ As an example, `GET /api/updates?platform={}` which returns the `url`, `pub_date For the Gateway it's the same procedure, except now you can't use the network logger of your devtools because the gateway returns responses encoded with [erlpack](https://github.com/discord/erlpack). Easy fix though, just edit the `DeveloperOptionsStore` localStorage key so that `logGatewayEvents` is true, and reload the client. + +!!! warning +Make sure you rerun `npm run build` every time you edit source code. Additionally, make sure you run `npm run generate:schema` whenever you change a +schema. If you want to do both, there's a shortcut: `npm run setup`. From bafcb9966511e271bc4d3b30087e217e61260221 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sun, 8 Jan 2023 22:55:49 +1100 Subject: [PATCH 44/52] Mention what the default rights try to do --- docs/setup/server/security/rights.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/setup/server/security/rights.md b/docs/setup/server/security/rights.md index fab3d9f..29b7143 100644 --- a/docs/setup/server/security/rights.md +++ b/docs/setup/server/security/rights.md @@ -12,7 +12,7 @@ For example, to grant `CREATE_GUILDS` and `SEND_MESSAGES`, set their `rights` to `33587200` The default rights value given to users (set through the `register_defaultRights` config value) -is generated through the `npm run generate:rights` script. +is generated through the `npm run generate:rights` script. The script generates a rights value that mimicks Discord.com. ## OPERATOR Rights From c0643a73b35d193401170348de1430130a52b50c Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sun, 8 Jan 2023 23:10:15 +1100 Subject: [PATCH 45/52] Add FAQ question about boosting/buying premium --- docs/faq.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/faq.md b/docs/faq.md index 372face..c860cb7 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -16,6 +16,20 @@ You cannot give yourself premium features on Discord.com using a Fosscord instance. +??? info "How do I boost my guild? Or, how do I buy premium?" + + You cannot buy premium features through Fosscord, as Fosscord does not support any payment backend. + + Additionally, Fosscord does not currently have any distinction between premium and free users or guilds. + All users and guilds have access to all features server-side. + + In the case of users, you may run into issues with the client preventing you from using certain features, + if the user's `premium_type` or `premium` values are not set correctly. By default, Fosscord will do this for you, however. + + In the case of guilds, you may run into issues with uploading animated icons or banners, etc. + If so, simply give the guild the [features](setup/server/configuration/guildFeatures.md) you require. + You can set them to be given to all guilds by default using the [config](setup/server/configuration/index.md) `guild_defaultFeatures` array. + ??? info "Can I log in with my Discord account?" No. Fosscord and Discord are entirely separate services, with their own separate databases From 22c2e2149cd6af9691d6829391097d2f96508f78 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sun, 8 Jan 2023 23:27:56 +1100 Subject: [PATCH 46/52] fix operator warning icon --- docs/setup/server/security/rights.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/setup/server/security/rights.md b/docs/setup/server/security/rights.md index 29b7143..c42f73d 100644 --- a/docs/setup/server/security/rights.md +++ b/docs/setup/server/security/rights.md @@ -16,7 +16,7 @@ is generated through the `npm run generate:rights` script. The script generates ## OPERATOR Rights -!!! error "It is EXTREMELY DISCOURAGED to give OPERATOR rights to all users, or to set the default rights to OPERATOR. If your rights value is an odd number, that includes operator." +!!! danger "It is EXTREMELY DISCOURAGED to give OPERATOR rights to all users, or to set the default rights to OPERATOR. If your rights value is an odd number, that includes operator." Operator rights currently grants access to the following, in addition to all rights: From 611b2f7b438bd4e974e2d40ebda7d9e67ebffc80 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Sun, 8 Jan 2023 23:33:37 +1100 Subject: [PATCH 47/52] Fix warning about build? prettier broke it? --- docs/contributing/index.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/contributing/index.md b/docs/contributing/index.md index 17fd735..5ecd1d2 100644 --- a/docs/contributing/index.md +++ b/docs/contributing/index.md @@ -39,5 +39,6 @@ because the gateway returns responses encoded with [erlpack](https://github.com/ Easy fix though, just edit the `DeveloperOptionsStore` localStorage key so that `logGatewayEvents` is true, and reload the client. !!! warning -Make sure you rerun `npm run build` every time you edit source code. Additionally, make sure you run `npm run generate:schema` whenever you change a -schema. If you want to do both, there's a shortcut: `npm run setup`. + + Make sure you rerun `npm run build` every time you edit source code. Additionally, make sure you run `npm run generate:schema` whenever you change a + schema. If you want to do both, there's a shortcut: `npm run setup`. From 4c2109f3c4c497c887b4ecf30937fd63145d3aab Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Mon, 9 Jan 2023 12:48:48 +1100 Subject: [PATCH 48/52] fix typo --- docs/contributing/conduct.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/contributing/conduct.md b/docs/contributing/conduct.md index e21fbd6..af9ead8 100644 --- a/docs/contributing/conduct.md +++ b/docs/contributing/conduct.md @@ -2,7 +2,7 @@ By contributing to or interacting with Fosscord or Fosscord community spaces, you accept the code of conduct. -This code of conduct is based on the Artemis Lena Code of Conduct by FantasyCookie17. As it is licensed under CC0, it may be used by other communities in modified or unmodified form without permission from the author. Its purpose is to ensure a civilised, tolerant, compassionate, help, pluralistic, and peaceful style of communication. +This code of conduct is based on the Artemis Lena Code of Conduct by FantasyCookie17. As it is licensed under CC0, it may be used by other communities in modified or unmodified form without permission from the author. Its purpose is to ensure a civilised, tolerant, compassionate, helpful, pluralistic, and peaceful style of communication. Fosscord community spaces includes Fosscord github repositories and Fosscord development guilds (be it on Discord.com or Fosscord instances mananged by the Fosscord maintainers group). From e20f957a1e17315d3a873b6c7a124ada9484cf16 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Tue, 10 Jan 2023 00:08:57 +1100 Subject: [PATCH 49/52] fix wording of rights in conduct and fix formatting --- docs/contributing/conduct.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/contributing/conduct.md b/docs/contributing/conduct.md index af9ead8..53aaa66 100644 --- a/docs/contributing/conduct.md +++ b/docs/contributing/conduct.md @@ -2,11 +2,13 @@ By contributing to or interacting with Fosscord or Fosscord community spaces, you accept the code of conduct. -This code of conduct is based on the Artemis Lena Code of Conduct by FantasyCookie17. As it is licensed under CC0, it may be used by other communities in modified or unmodified form without permission from the author. Its purpose is to ensure a civilised, tolerant, compassionate, helpful, pluralistic, and peaceful style of communication. +This code of conduct is based on the Artemis Lena Code of Conduct by FantasyCookie17. As it is licensed under CC0, +it may be used by other communities in modified or unmodified form without permission from the author. +Its purpose is to ensure a civilised, tolerant, compassionate, helpful, pluralistic, and peaceful style of communication. Fosscord community spaces includes Fosscord github repositories and Fosscord development guilds (be it on Discord.com or Fosscord instances mananged by the Fosscord maintainers group). -By contributing to any Fosscord projects (for example, through pull request) you guarantee that you have the requisite rights to grant Fosscord a AGPLV3 licence. If your work is legally in the public domain (through a legally accepted waiver or a mandate (such as the national government works of United States, People's Republic of China and Israel)), you **must** declare this. +By contributing to any Fosscord projects (for example, through pull request) you guarantee that you have the rights to resign all rights to Fosscord under the AGPLV3 license. ### Desirable Behaviour @@ -41,7 +43,8 @@ By contributing to any Fosscord projects (for example, through pull request) you You may report any violation of this code of conduct to the Fosscord community team directly through Discord, private message or otherwise. -If you believe us to be in violation of this code of conduct, please report it to someone in a higher position, or to many people on the team. Make sure to provide a direct quote from here to be as effective as possible. +If you believe us to be in violation of this code of conduct, please report it to someone in a higher position, +or to many people on the team. Make sure to provide a direct quote from here to be as effective as possible. ### Changes to this document From 298ff33069697b5667e170557c4a91adc209d2a0 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Tue, 10 Jan 2023 00:43:16 +1100 Subject: [PATCH 50/52] note on how to verify server is up on remote machines --- docs/setup/server/index.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/setup/server/index.md b/docs/setup/server/index.md index 4589e9d..c750ed4 100644 --- a/docs/setup/server/index.md +++ b/docs/setup/server/index.md @@ -44,6 +44,9 @@ npm run start If all went according to plan, you can now access your new Fosscord instance at [http://localhost:3001](http://localhost:3001)! Congrats! +If you set up your server remotely, you can use `curl http://localhost:3001/api/ping` to verify the server is up and running, +(you should set up a reverse proxy, next!). + ## Now what? Well, now you can configure Fosscord to your liking! From 2141283ec893a001030238328e322bd2a7297515 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Tue, 10 Jan 2023 00:53:52 +1100 Subject: [PATCH 51/52] params for reg tokens --- docs/setup/server/security/regTokens.md | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/docs/setup/server/security/regTokens.md b/docs/setup/server/security/regTokens.md index 5523d9e..197d2db 100644 --- a/docs/setup/server/security/regTokens.md +++ b/docs/setup/server/security/regTokens.md @@ -11,7 +11,16 @@ Registration tokens are a one-time use token for allowing a new user registratio - Bypass `register_guestsRequireInvite = true` - Bypass [absolute register rate limits](limits.md) -To create a registration token, send a GET request to `/auth/generate-registration-tokens/` as an account with `OPERATOR` [rights](rights.md) +To create a registration token, send a GET request to `/auth/generate-registration-tokens` as an account with `OPERATOR` [rights](rights.md). + +There are a few query parameters available. Append them to the request URL, for example `/auth/generate-registration-tokens?count=10&plain=true` + +| Parameter | Type | Default | Description | +| ------------- | ---- | ------- | ------------------------------------------------- | +| `count` | int | 1 | The number of tokens to generate | +| `plain` | bool | false | Return a newline separated string instead of JSON | +| `length` | int | 255 | The length of each returned token | +| `include_url` | bool | false | Prefix tokens with URL to register page | To use a registration token, append `?token={your registration token}` to the register route. For example From 7e4bd164ea95b76cee474281cc8b4ac8cee2a070 Mon Sep 17 00:00:00 2001 From: Madeline <46743919+MaddyUnderStars@users.noreply.github.com> Date: Tue, 10 Jan 2023 00:56:46 +1100 Subject: [PATCH 52/52] Note about checking nginx folder --- docs/setup/server/reverseProxy.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/setup/server/reverseProxy.md b/docs/setup/server/reverseProxy.md index bef0e0a..41f0e59 100644 --- a/docs/setup/server/reverseProxy.md +++ b/docs/setup/server/reverseProxy.md @@ -7,7 +7,11 @@ Generally, our community sets up Fosscord instances behind NGINX, a powerful rev Below is an example NGINX config. On Ubuntu, you can put this in `/etc/nginx/sites-available/fosscord`, and enable it with `ln -s /etc/nginx/sites-available/fosscord /etc/nginx/sites-enabled/` and `systemctl restart nginx` -!!! info "Other distros and Windows may not have a `sites-available`, `sites-enabled` directory structure. You may need to edit the `/etc/nginx/nginx.conf` file instead, or place new files in a `conf.d` directory, for example." +!!! info + + Other distros, and Windows, may not have a `sites-available`, `sites-enabled` directory structure. + You may need to edit the `/etc/nginx/nginx.conf` file instead, or place new files in a `conf.d` directory, for example. + Check which directories exist on your system to be sure. ```nginx server {