You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
# 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, the following open community servers are polled:
 | 
						|
 | 
						|
- https://open.getsession.org
 | 
						|
- http://13.233.251.36:8081
 | 
						|
 | 
						|
### Steps
 | 
						|
 | 
						|
1. Fetching source HTML: `get_html_from_known_sources()`
 | 
						|
1. Extracting Session invites from the HTML:
 | 
						|
`extract_join_links_from_html()` and `get_servers_from_join_links()`
 | 
						|
1. Making sure servers are online: `reduce_servers()`
 | 
						|
1. Querying the servers for all available rooms 
 | 
						|
and normalize active user numbers: `query_servers_for_rooms()`
 | 
						|
1. De-duplicating servers based on public keys: 
 | 
						|
`get_pubkeys_of_servers()` and `reduce_addresses_of_pubkeys()`
 | 
						|
1. Aggregating all server info & adding language data: `generate_info_arrays()`
 | 
						|
1. Generating static HTML content: `generateHTML()`
 | 
						|
 | 
						|
### Legacy support
 | 
						|
 | 
						|
Right now we fully support legacy SOGS servers, 
 | 
						|
although this support is likely going to be dropped soon, 
 | 
						|
since those servers can not even be joined anymore with current Session clients.  
 | 
						|
Dropping legacy support will also increase maintainability.
 | 
						|
 | 
						|
### 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
 | 
						|
- https://github.com/mdPlusPlus/sessioncommunities.online
 | 
						|
- https://lokilocker.com/SomeGuy/sessioncommunities.online
 | 
						|
 | 
						|
If your favourite Session community is missing a language flag, 
 | 
						|
you can issue a pull request here:
 | 
						|
- https://github.com/mdPlusPlus/sessioncommunities.online-languages/
 | 
						|
 | 
						|
 | 
						|
## Contact
 | 
						|
 | 
						|
If you want to contact me, you can add me on Session via my 
 | 
						|
[ONS](https://docs.oxen.io/using-the-oxen-blockchain/using-oxen-name-system): 
 | 
						|
"someguy" (without the quotes)
 |