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)
 |