|
2 years ago | |
---|---|---|
etc | 2 years ago | |
languages | 2 years ago | |
output | 2 years ago | |
php | 2 years ago | |
sites | 2 years ago | |
systemd | 2 years ago | |
.gitignore | 2 years ago | |
.phpenv | 2 years ago | |
CONTRIBUTING.md | 2 years ago | |
Makefile | 2 years ago | |
README.md | 2 years ago |
README.md
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/.
What is Session?
Session 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.
How does this work?
The update-listing.php
script invokes the following two PHP scripts: fetch-servers.php
to query available servers, and generate-html.php
to generate the static HTML.
The querying logic consists of these steps:
- Fetching source HTML:
query_known_sources()
- Extracting Session join URLs from the HTML:
parse_join_links()
- Building server instances from join URLs:
CommunityServer::from_join_urls()
- Adding known servers to list:
CommunityServer::from_known_hosts()
- Merging servers based on URL:
CommunityServer::dedupe_by_url()
- Making sure servers are online and querying rooms & pubkeys:
CommunityServer::poll_reachable()
- Merging servers based on public keys:
CommunityServer::dedupe_by_pubkey()
Static HTML is generated from the sites
directory to the 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.
Work around bad routing to Chinese servers
Depending on your location, it is possible for you to get really bad routing to
SOGS servers behind the GFW. 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()
.
Official repositories
- 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
If your favourite Session community is missing a language flag, read this on how to add a flag.
Alternatively, support this issue on Oxen Github to make language tags a native feature:
Contributing
See CONTRIBUTING.md.
Contact
To report issues, visit the Web Development Community on caliban.org.
In case the issue cannot be resolved publicly, contact gravel on Session as gravel
(Registered Session ID).