mirror of
				https://github.com/EasyTier/EasyTier.git
				synced 2025-10-31 03:56:22 +08:00 
			
		
		
		
	add ApiHost option for ConfigGenerator (#705)
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
		
			
				
	
				EasyTier Core / pre_job (push) Has been cancelled
				
			
		
			
				
	
				EasyTier GUI / pre_job (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Mobile / pre_job (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Test / pre_job (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Core / build (freebsd-13.2-x86_64, 13.2, ubuntu-22.04, x86_64-unknown-freebsd) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Core / build (linux-aarch64, ubuntu-22.04, aarch64-unknown-linux-musl) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Core / build (linux-arm, ubuntu-22.04, arm-unknown-linux-musleabi) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Core / build (linux-armhf, ubuntu-22.04, arm-unknown-linux-musleabihf) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Core / build (linux-armv7, ubuntu-22.04, armv7-unknown-linux-musleabi) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Core / build (linux-armv7hf, ubuntu-22.04, armv7-unknown-linux-musleabihf) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Core / build (linux-mips, ubuntu-22.04, mips-unknown-linux-musl) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Core / build (linux-mipsel, ubuntu-22.04, mipsel-unknown-linux-musl) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Core / build (linux-x86_64, ubuntu-22.04, x86_64-unknown-linux-musl) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Core / build (macos-aarch64, macos-latest, aarch64-apple-darwin) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Core / build (macos-x86_64, macos-latest, x86_64-apple-darwin) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Core / build (windows-arm64, windows-latest, aarch64-pc-windows-msvc) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Core / build (windows-x86_64, windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Core / core-result (push) Has been cancelled
				
			
		
			
				
	
				EasyTier GUI / build-gui (linux-aarch64, aarch64-unknown-linux-gnu, ubuntu-22.04, aarch64-unknown-linux-musl) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier GUI / build-gui (linux-x86_64, x86_64-unknown-linux-gnu, ubuntu-22.04, x86_64-unknown-linux-musl) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier GUI / build-gui (macos-aarch64, aarch64-apple-darwin, macos-latest, aarch64-apple-darwin) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier GUI / build-gui (macos-x86_64, x86_64-apple-darwin, macos-latest, x86_64-apple-darwin) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier GUI / build-gui (windows-arm64, aarch64-pc-windows-msvc, windows-latest, aarch64-pc-windows-msvc) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier GUI / build-gui (windows-x86_64, x86_64-pc-windows-msvc, windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier GUI / gui-result (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Mobile / build-mobile (android, ubuntu-22.04, android) (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Mobile / mobile-result (push) Has been cancelled
				
			
		
			
				
	
				EasyTier Test / test (push) Has been cancelled
				
			
		
		
	
	
				
					
				
			
		
			Some checks failed
		
		
	
	EasyTier Core / pre_job (push) Has been cancelled
				
			EasyTier GUI / pre_job (push) Has been cancelled
				
			EasyTier Mobile / pre_job (push) Has been cancelled
				
			EasyTier Test / pre_job (push) Has been cancelled
				
			EasyTier Core / build (freebsd-13.2-x86_64, 13.2, ubuntu-22.04, x86_64-unknown-freebsd) (push) Has been cancelled
				
			EasyTier Core / build (linux-aarch64, ubuntu-22.04, aarch64-unknown-linux-musl) (push) Has been cancelled
				
			EasyTier Core / build (linux-arm, ubuntu-22.04, arm-unknown-linux-musleabi) (push) Has been cancelled
				
			EasyTier Core / build (linux-armhf, ubuntu-22.04, arm-unknown-linux-musleabihf) (push) Has been cancelled
				
			EasyTier Core / build (linux-armv7, ubuntu-22.04, armv7-unknown-linux-musleabi) (push) Has been cancelled
				
			EasyTier Core / build (linux-armv7hf, ubuntu-22.04, armv7-unknown-linux-musleabihf) (push) Has been cancelled
				
			EasyTier Core / build (linux-mips, ubuntu-22.04, mips-unknown-linux-musl) (push) Has been cancelled
				
			EasyTier Core / build (linux-mipsel, ubuntu-22.04, mipsel-unknown-linux-musl) (push) Has been cancelled
				
			EasyTier Core / build (linux-x86_64, ubuntu-22.04, x86_64-unknown-linux-musl) (push) Has been cancelled
				
			EasyTier Core / build (macos-aarch64, macos-latest, aarch64-apple-darwin) (push) Has been cancelled
				
			EasyTier Core / build (macos-x86_64, macos-latest, x86_64-apple-darwin) (push) Has been cancelled
				
			EasyTier Core / build (windows-arm64, windows-latest, aarch64-pc-windows-msvc) (push) Has been cancelled
				
			EasyTier Core / build (windows-x86_64, windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
				
			EasyTier Core / core-result (push) Has been cancelled
				
			EasyTier GUI / build-gui (linux-aarch64, aarch64-unknown-linux-gnu, ubuntu-22.04, aarch64-unknown-linux-musl) (push) Has been cancelled
				
			EasyTier GUI / build-gui (linux-x86_64, x86_64-unknown-linux-gnu, ubuntu-22.04, x86_64-unknown-linux-musl) (push) Has been cancelled
				
			EasyTier GUI / build-gui (macos-aarch64, aarch64-apple-darwin, macos-latest, aarch64-apple-darwin) (push) Has been cancelled
				
			EasyTier GUI / build-gui (macos-x86_64, x86_64-apple-darwin, macos-latest, x86_64-apple-darwin) (push) Has been cancelled
				
			EasyTier GUI / build-gui (windows-arm64, aarch64-pc-windows-msvc, windows-latest, aarch64-pc-windows-msvc) (push) Has been cancelled
				
			EasyTier GUI / build-gui (windows-x86_64, x86_64-pc-windows-msvc, windows-latest, x86_64-pc-windows-msvc) (push) Has been cancelled
				
			EasyTier GUI / gui-result (push) Has been cancelled
				
			EasyTier Mobile / build-mobile (android, ubuntu-22.04, android) (push) Has been cancelled
				
			EasyTier Mobile / mobile-result (push) Has been cancelled
				
			EasyTier Test / test (push) Has been cancelled
				
			This commit is contained in:
		
							
								
								
									
										64
									
								
								easytier-web/frontend/src/modules/api-host.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										64
									
								
								easytier-web/frontend/src/modules/api-host.ts
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,64 @@ | ||||
| const defaultApiHost = 'https://config-server.easytier.cn'; | ||||
|  | ||||
| interface ApiHost { | ||||
|     value: string; | ||||
|     usedAt: number; | ||||
| } | ||||
|  | ||||
| const isValidHttpUrl = (s: string): boolean => { | ||||
|     let url; | ||||
|  | ||||
|     try { | ||||
|         url = new URL(s); | ||||
|     } catch (_) { | ||||
|         return false; | ||||
|     } | ||||
|  | ||||
|     return url.protocol === "http:" || url.protocol === "https:"; | ||||
| }; | ||||
|  | ||||
| const cleanAndLoadApiHosts = (): Array<ApiHost> => { | ||||
|     const maxHosts = 10; | ||||
|     const apiHosts = localStorage.getItem('apiHosts'); | ||||
|     if (apiHosts) { | ||||
|         const hosts: Array<ApiHost> = JSON.parse(apiHosts); | ||||
|         // sort by usedAt | ||||
|         hosts.sort((a, b) => b.usedAt - a.usedAt); | ||||
|  | ||||
|         // only keep the first 10 | ||||
|         if (hosts.length > maxHosts) { | ||||
|             hosts.splice(maxHosts); | ||||
|         } | ||||
|  | ||||
|         localStorage.setItem('apiHosts', JSON.stringify(hosts)); | ||||
|         return hosts; | ||||
|     } else { | ||||
|         return []; | ||||
|     } | ||||
| }; | ||||
|  | ||||
| const saveApiHost = (host: string) => { | ||||
|     console.log('Save API Host:', host); | ||||
|     if (!isValidHttpUrl(host)) { | ||||
|         console.error('Invalid API Host:', host); | ||||
|         return; | ||||
|     } | ||||
|  | ||||
|     let hosts = cleanAndLoadApiHosts(); | ||||
|     const newHost: ApiHost = {value: host, usedAt: Date.now()}; | ||||
|     hosts = hosts.filter((h) => h.value !== host); | ||||
|     hosts.push(newHost); | ||||
|     localStorage.setItem('apiHosts', JSON.stringify(hosts)); | ||||
| }; | ||||
|  | ||||
| const getInitialApiHost = (): string => { | ||||
|     const hosts = cleanAndLoadApiHosts(); | ||||
|     if (hosts.length > 0) { | ||||
|         return hosts[0].value; | ||||
|     } else { | ||||
|         saveApiHost(defaultApiHost) | ||||
|         return defaultApiHost; | ||||
|     } | ||||
| }; | ||||
|  | ||||
| export {getInitialApiHost, cleanAndLoadApiHosts, saveApiHost} | ||||
		Reference in New Issue
	
	Block a user
	 kevin
					kevin