Update wording, add policy & superscript links
parent
a0c384cf5e
commit
99c06f4308
@ -1,79 +1,51 @@
|
||||
# Crawl lists of active Session Communities
|
||||
|
||||
## What does this site do?
|
||||
|
||||
This script crawls known sources of published Session Communities,
|
||||
queries their servers for available information and
|
||||
displays this information as a static HTML page.
|
||||
The results of this can be viewed on <https://sessioncommunities.online/>.
|
||||
# Self-updating list of Session Communities
|
||||
|
||||
## What is Session?
|
||||
|
||||
Session is a private messaging app that protects your meta-data,
|
||||
[Session](https://getsession.org/) is a private messaging app that protects your meta-data,
|
||||
encrypts your communications, and makes sure your messaging activities
|
||||
leave no digital trail behind.
|
||||
<https://getsession.org/>
|
||||
|
||||
## Details
|
||||
|
||||
### Which sources are crawled?
|
||||
|
||||
Currently this script crawls the following sites:
|
||||
|
||||
- <https://github.com/GNU-Linux-libre/Awesome-Session-Group-List>
|
||||
- <https://lokilocker.com/Mods/Session-Groups/wiki/Session-Open-Groups>
|
||||
- <https://session.directory/>
|
||||
|
||||
Additionally, [a few other servers are hardcoded](php/servers/known-servers.php).
|
||||
## What does this site do?
|
||||
|
||||
### How does this work?
|
||||
Session Communities are public chatrooms accessible from within Session Messenger.
|
||||
This web project crawls known sources of Session Communities, and
|
||||
displays information about them as a static HTML page.
|
||||
[See live](https://sessioncommunities.online/).
|
||||
|
||||
The [`update-listing.php`](php/update-listing.php) script invokes the following two PHP scripts: [`fetch-servers.php`](php/fetch-servers.php) to query available servers, and [`generate-html.php`](php/generate-html.php>) to generate the static HTML.
|
||||
## How do I get my Community listed?
|
||||
|
||||
The querying logic consists of these steps:
|
||||
**Answer**: Submit your Community to one of our [upstream sources](#which-sources-do-you-crawl), or better yet, create another page with links to your favorite Communities for more redundancy.
|
||||
|
||||
1. Fetching source HTML: `query_known_sources()`
|
||||
1. Extracting Session join URLs from the HTML: `parse_join_links()`
|
||||
1. Building server instances from join URLs: `CommunityServer::from_join_urls()`
|
||||
1. Adding known servers to list: `CommunityServer::from_known_hosts()`
|
||||
1. Merging servers based on URL: `CommunityServer::dedupe_by_url()`
|
||||
1. Making sure servers are online and querying rooms & pubkeys:
|
||||
`CommunityServer::poll_reachable()`
|
||||
1. Merging servers based on public keys: `CommunityServer::dedupe_by_pubkey()`
|
||||
If your Community does not appear on our list:
|
||||
|
||||
Static HTML is generated from the [`sites`](sites) directory to the [`output`](output) directory, which additionally contains static assets. All contents of `sites` are invoked to produce a HTML page unless they are prefixed with a `+` sign.
|
||||
- first, confirm it is listed on an upstream source,
|
||||
- verify it can be joined from the app, and
|
||||
- check in our page footer that the list has been updated recently.
|
||||
|
||||
### Work around bad routing to Chinese servers
|
||||
If your Community still does not appear on our list, please [contact us](#contact-us). Note that poor connectivity may affect our ability to list Communities in regions affected by internet censorship.
|
||||
|
||||
Depending on your location, it is possible for you to get really bad routing to
|
||||
SOGS servers behind the [GFW](https://en.wikipedia.org/wiki/Great_Firewall). In this case,
|
||||
the initial connection is still successful, but you'll never receive
|
||||
any actual content and the retrieval attempt will simply time out.
|
||||
This happens randomly. To make sure this won't affect the results, we simply
|
||||
check whether the server is online (the initial connection being successful),
|
||||
and then retry a lot of times with a short timeout
|
||||
until we eventually get the content.
|
||||
The details can be seen in [`curl_get_contents()`](php/utils/utils.php).
|
||||
## Which sources do you crawl?
|
||||
|
||||
### Official repositories
|
||||
Communities displayed come from a variety of sources:
|
||||
|
||||
- Codeberg: <https://codeberg.org/gravel/sessioncommunities.online>
|
||||
- Lokinet Gitea (mirror): <https://lokilocker.com/gravel/sessioncommunities.online>
|
||||
- GitHub (former official repository): <https://github.com/mdPlusPlus/sessioncommunities.online>
|
||||
- Lokinet Gitea (former mirror): <https://lokilocker.com/SomeGuy/sessioncommunities.online>
|
||||
- <https://session.directory/>,
|
||||
- <https://lokilocker.com/Mods/Session-Groups/wiki/Session-Open-Groups>,
|
||||
- <https://github.com/GNU-Linux-libre/Awesome-Session-Group-List>,
|
||||
- [a few hardcoded servers found on the internet](php/servers/known-servers.php).
|
||||
|
||||
If your favourite Session community is missing a language flag, read [this](languages/README.md) on how to add a flag.
|
||||
## Contributing
|
||||
|
||||
Alternatively, support this issue on Oxen Github to make language tags a native feature:
|
||||
See [CONTRIBUTING.md](CONTRIBUTING.md) for information about running the project and contributing code, or [languages/README.md](languages/README.md) to help add language labels for Communities.
|
||||
|
||||
- <https://github.com/oxen-io/session-pysogs/issues/186>
|
||||
## Policy
|
||||
|
||||
### Contributing
|
||||
We require that content posted in Communities adheres to the Content Policy laid out in the [Session Terms of Service](https://getsession.org/terms-of-service). Additionally, we may consider Communities unsuitable for display if their content is in breach of copyright and/or encourages or instructs drug use. If Communities explicitly accept such content or fail to moderate such content, we may display these Communities only to users who have disabled JavaScript in their browser, or to none at all. We appreciate contact with and the continued vigilance of server operators to prevent any issues from arising that would lead to us de-listing your Community.
|
||||
|
||||
See [CONTRIBUTING.md](CONTRIBUTING.md).
|
||||
We occassionally accept requests from server operators to de-list whole Community servers; this only applies in cases where we've previously listed them manually (read above about sources). If you feel our listing would be greatly detrimental to the users of your Communities, such as in cases where your Communities reveal sensitive information about your users, you may [contact us](#contact-us) to make such a request. Please note that Session Communities are not designed with private communication in mind and we reserve the right not to de-list your Communities in case they have been listed on one of our sources and/or in case you request to de-list only a subset of your Communities.
|
||||
|
||||
## Contact
|
||||
## Contact us
|
||||
|
||||
To report issues, visit the Web Development Community on [caliban.org](http://sog.caliban.org/r/webdev).
|
||||
To report issues, ask questions or make suggestions, visit the Web Development Community on [caliban.org](http://sog.caliban.org/r/webdev).
|
||||
|
||||
In case the issue cannot be resolved publicly, contact [gravel](https://codeberg.org/gravel/gravel) on Session as `gravel` (Registered Session ID).
|
||||
In case your issue cannot be resolved publicly, contact [gravel](https://codeberg.org/gravel/gravel) on Session as `gravel` (Registered Session ID).
|
||||
|
Loading…
Reference in New Issue