| 
									
										
										
										
											2022-01-13 15:06:13 +09:00
										 |  |  | #!/usr/bin/env zsh | 
					
						
							| 
									
										
										
										
											2023-08-16 03:51:10 +09:00
										 |  |  | delay=0.15 | 
					
						
							| 
									
										
										
										
											2022-01-13 15:06:13 +09:00
										 |  |  | hostname=$(hostname) | 
					
						
							| 
									
										
										
										
											2023-02-26 13:54:45 +09:00
										 |  |  | slugs=(`curl -sSL https://${hostname}/api/v1/mining/pools/3y|jq -r -S '(.pools[].slug)'`) | 
					
						
							| 
									
										
										
										
											2022-03-29 11:34:49 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-16 03:51:10 +09:00
										 |  |  | warmSlurp() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	echo "$1" | 
					
						
							|  |  |  | 	curl -i -s -H 'User-Agent: Googlebot' "$1" | head -1 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | warmUnfurl() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	echo "$1" | 
					
						
							|  |  |  | 	curl -i -s -H 'User-Agent: Twitterbot' "$1" | head -1 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-08-28 13:04:40 +02:00
										 |  |  | warm() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	echo "$1" | 
					
						
							|  |  |  | 	curl -i -s "$1" | head -1 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-16 03:51:10 +09:00
										 |  |  | warmSlurpURLs=( | 
					
						
							|  |  |  | 	'/' | 
					
						
							|  |  |  | 	'/mining' | 
					
						
							|  |  |  | 	'/lightning' | 
					
						
							|  |  |  | 	'/graphs' | 
					
						
							|  |  |  | 	'/docs' | 
					
						
							|  |  |  | 	'/docs/faq' | 
					
						
							|  |  |  | 	'/docs/api/rest' | 
					
						
							|  |  |  | 	'/about' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | warmUnfurlURLs=( | 
					
						
							|  |  |  | 	'/' | 
					
						
							|  |  |  | 	'/mining' | 
					
						
							|  |  |  | 	'/lightning' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | warmURLs=( | 
					
						
							|  |  |  | 	'/api/v1/blocks' | 
					
						
							|  |  |  | 	'/api/v1/statistics/2h' | 
					
						
							|  |  |  | 	'/api/v1/statistics/24h' | 
					
						
							|  |  |  | 	'/api/v1/statistics/1w' | 
					
						
							|  |  |  | 	'/api/v1/statistics/1m' | 
					
						
							|  |  |  | 	'/api/v1/statistics/3m' | 
					
						
							|  |  |  | 	'/api/v1/statistics/6m' | 
					
						
							|  |  |  | 	'/api/v1/statistics/1y' | 
					
						
							|  |  |  | 	'/api/v1/statistics/2y' | 
					
						
							|  |  |  | 	'/api/v1/statistics/3y' | 
					
						
							|  |  |  | 	'/api/v1/statistics/4y' | 
					
						
							|  |  |  | 	'/api/v1/statistics/all' | 
					
						
							|  |  |  | 	'/api/v1/mining/pools/24h' | 
					
						
							|  |  |  | 	'/api/v1/mining/pools/3d' | 
					
						
							|  |  |  | 	'/api/v1/mining/pools/1w' | 
					
						
							|  |  |  | 	'/api/v1/mining/pools/1m' | 
					
						
							|  |  |  | 	'/api/v1/mining/pools/3m' | 
					
						
							|  |  |  | 	'/api/v1/mining/pools/6m' | 
					
						
							|  |  |  | 	'/api/v1/mining/pools/1y' | 
					
						
							|  |  |  | 	'/api/v1/mining/pools/2y' | 
					
						
							|  |  |  | 	'/api/v1/mining/pools/3y' | 
					
						
							|  |  |  | 	'/api/v1/mining/pools/all' | 
					
						
							|  |  |  | 	'/api/v1/mining/hashrate/3m' | 
					
						
							|  |  |  | 	'/api/v1/mining/hashrate/6m' | 
					
						
							|  |  |  | 	'/api/v1/mining/hashrate/1y' | 
					
						
							|  |  |  | 	'/api/v1/mining/hashrate/2y' | 
					
						
							|  |  |  | 	'/api/v1/mining/hashrate/3y' | 
					
						
							|  |  |  | 	'/api/v1/mining/hashrate/all' | 
					
						
							|  |  |  | 	'/api/v1/mining/hashrate/pools/3m' | 
					
						
							|  |  |  | 	'/api/v1/mining/hashrate/pools/6m' | 
					
						
							|  |  |  | 	'/api/v1/mining/hashrate/pools/1y' | 
					
						
							|  |  |  | 	'/api/v1/mining/hashrate/pools/2y' | 
					
						
							|  |  |  | 	'/api/v1/mining/hashrate/pools/3y' | 
					
						
							|  |  |  | 	'/api/v1/mining/hashrate/pools/all' | 
					
						
							|  |  |  | 	'/api/v1/mining/reward-stats/144' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fees/24h' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fees/3d' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fees/1w' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fees/1m' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fees/3m' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fees/6m' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fees/1y' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fees/2y' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fees/3y' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fees/all' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/rewards/24h' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/rewards/3d' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/rewards/1w' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/rewards/1m' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/rewards/3m' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/rewards/6m' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/rewards/1y' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/rewards/2y' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/rewards/3y' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/rewards/all' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fee-rates/24h' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fee-rates/3d' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fee-rates/1w' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fee-rates/1m' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fee-rates/3m' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fee-rates/6m' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fee-rates/1y' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fee-rates/2y' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fee-rates/3y' | 
					
						
							|  |  |  | 	'/api/v1/mining/blocks/fee-rates/all' | 
					
						
							|  |  |  | 	'/api/v1/mining/difficulty-adjustments/24h' | 
					
						
							|  |  |  | 	'/api/v1/mining/difficulty-adjustments/3d' | 
					
						
							|  |  |  | 	'/api/v1/mining/difficulty-adjustments/1w' | 
					
						
							|  |  |  | 	'/api/v1/mining/difficulty-adjustments/1m' | 
					
						
							|  |  |  | 	'/api/v1/mining/difficulty-adjustments/3m' | 
					
						
							|  |  |  | 	'/api/v1/mining/difficulty-adjustments/6m' | 
					
						
							|  |  |  | 	'/api/v1/mining/difficulty-adjustments/1y' | 
					
						
							|  |  |  | 	'/api/v1/mining/difficulty-adjustments/2y' | 
					
						
							|  |  |  | 	'/api/v1/mining/difficulty-adjustments/3y' | 
					
						
							|  |  |  | 	'/api/v1/mining/difficulty-adjustments/all' | 
					
						
							|  |  |  | 	'/api/v1/lightning/channels-geo?style=widget' | 
					
						
							|  |  |  | 	'/api/v1/lightning/channels-geo?style=graph' | 
					
						
							|  |  |  | 	'/api/v1/lightning/statistics/latest' | 
					
						
							|  |  |  | 	'/api/v1/lightning/statistics/1m' | 
					
						
							|  |  |  | 	'/api/v1/lightning/statistics/3m' | 
					
						
							|  |  |  | 	'/api/v1/lightning/statistics/6m' | 
					
						
							|  |  |  | 	'/api/v1/lightning/statistics/1y' | 
					
						
							|  |  |  | 	'/api/v1/lightning/statistics/2y' | 
					
						
							|  |  |  | 	'/api/v1/lightning/statistics/3y' | 
					
						
							|  |  |  | 	'/api/v1/lightning/statistics/all' | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp-ranking' | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/15169,396982' `# Google` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/14618,16509' `# Amazon` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/39572' `# DataWeb` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/14061' `# Digital Ocean` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/24940,213230' `# Hetzner` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/394745' `# LunaNode` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/45102' `# Alibaba` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/3209' `# Vodafone Germany` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/7922' `# Comcast Cable` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/34197' `# SHRD SARL` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/42275' `# Three Fourteen SASU` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/16276' `# OVH SAS` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/10796,11351,11426,11427,12271,20001,2$delay,33363' `# Spectrum` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/701' `# Verizon` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/12876' `# Scaleway` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/33915' `# Ziggo` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/3320' `# Deutsche Telekom AG` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/8075' `# Microsoft Azure` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/212531' `# UAB Interneto vizija` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/63949' `# Linode` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/isp/51167' `# Contabo GmbH` | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/countries' | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/rankings' | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/rankings/liquidity' | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/rankings/connectivity' | 
					
						
							|  |  |  | 	'/api/v1/lightning/nodes/rankings/age' | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-16 04:03:17 +09:00
										 |  |  | echo "waiting for mempool backend to start..." | 
					
						
							|  |  |  | sleep 60 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-13 15:06:13 +09:00
										 |  |  | while true | 
					
						
							| 
									
										
										
										
											2023-08-16 03:51:10 +09:00
										 |  |  | do | 
					
						
							|  |  |  | 	echo "starting warm cache cycle..." | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	for url in $warmSlurpURLs | 
					
						
							|  |  |  | 	do | 
					
						
							|  |  |  | 		warmSlurp "https://${hostname}${url}" | 
					
						
							|  |  |  | 		sleep $delay # delay between queries to not DoS unfurler | 
					
						
							|  |  |  | 	done | 
					
						
							| 
									
										
										
										
											2022-01-28 13:32:03 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-08-16 03:51:10 +09:00
										 |  |  | 	for url in $warmUnfurlURLs | 
					
						
							|  |  |  | 	do | 
					
						
							|  |  |  | 		warmUnfurl "https://${hostname}${url}" | 
					
						
							|  |  |  | 		sleep $delay # delay between queries to not DoS unfurler | 
					
						
							|  |  |  | 	done | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	for url in $warmURLs | 
					
						
							| 
									
										
										
										
											2022-01-13 15:06:13 +09:00
										 |  |  | 	do | 
					
						
							| 
									
										
										
										
											2022-08-28 13:04:40 +02:00
										 |  |  | 		warm "https://${hostname}${url}" | 
					
						
							| 
									
										
										
										
											2023-08-16 03:51:10 +09:00
										 |  |  | 		sleep $delay # delay between queries to not DoS mariadb | 
					
						
							| 
									
										
										
										
											2022-01-13 15:06:13 +09:00
										 |  |  | 	done | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-03-30 01:06:42 +09:00
										 |  |  | 	for slug in $slugs | 
					
						
							| 
									
										
										
										
											2022-03-08 16:55:49 +01:00
										 |  |  | 	do | 
					
						
							| 
									
										
										
										
											2022-08-28 13:04:40 +02:00
										 |  |  | 		warm "https://${hostname}/api/v1/mining/pool/${slug}" | 
					
						
							| 
									
										
										
										
											2023-08-16 03:51:10 +09:00
										 |  |  | 		sleep $delay # delay between queries to not DoS mariadb | 
					
						
							| 
									
										
										
										
											2022-08-28 13:04:40 +02:00
										 |  |  | 		warm "https://${hostname}/api/v1/mining/pool/${slug}/hashrate" | 
					
						
							| 
									
										
										
										
											2023-08-16 03:51:10 +09:00
										 |  |  | 		sleep $delay # delay between queries to not DoS mariadb | 
					
						
							| 
									
										
										
										
											2022-08-28 13:04:40 +02:00
										 |  |  | 		warm "https://${hostname}/api/v1/mining/pool/${slug}/blocks" | 
					
						
							| 
									
										
										
										
											2023-08-16 03:51:10 +09:00
										 |  |  | 		sleep $delay # delay between queries to not DoS mariadb | 
					
						
							| 
									
										
										
										
											2022-03-08 16:55:49 +01:00
										 |  |  | 	done | 
					
						
							| 
									
										
										
										
											2023-08-16 03:51:10 +09:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	sleep 1 | 
					
						
							| 
									
										
										
										
											2022-01-13 15:06:13 +09:00
										 |  |  | done |