Check server before checking well-known
This commit is contained in:
		
							parent
							
								
									4f040e40d6
								
							
						
					
					
						commit
						bf01db13d6
					
				
					 1 changed files with 12 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -68,10 +68,7 @@ async function uploadAutoEmoji(snow, guild, name, filename) {
 | 
			
		|||
	return emoji
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function validateHomeserverOrigin(serverUrlPrompt, url) {
 | 
			
		||||
	if (!url.match(/^https?:\/\//)) return "Must be a URL"
 | 
			
		||||
	if (url.match(/\/$/)) return "Must not end with a slash"
 | 
			
		||||
	process.stdout.write(magenta(" checking, please wait..."))
 | 
			
		||||
async function suggestWellKnown(serverUrlPrompt, url, otherwise) {
 | 
			
		||||
	try {
 | 
			
		||||
		var json = await fetch(`${url}/.well-known/matrix/client`).then(res => res.json())
 | 
			
		||||
		let baseURL = json["m.homeserver"].base_url.replace(/\/$/, "")
 | 
			
		||||
| 
						 | 
				
			
			@ -80,19 +77,28 @@ async function validateHomeserverOrigin(serverUrlPrompt, url) {
 | 
			
		|||
			return `Did you mean: ${bold(baseURL)}? (Enter to accept)`
 | 
			
		||||
		}
 | 
			
		||||
	} catch (e) {}
 | 
			
		||||
	return otherwise
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
async function validateHomeserverOrigin(serverUrlPrompt, url) {
 | 
			
		||||
	if (!url.match(/^https?:\/\//)) return "Must be a URL"
 | 
			
		||||
	if (url.match(/\/$/)) return "Must not end with a slash"
 | 
			
		||||
	process.stdout.write(magenta(" checking, please wait..."))
 | 
			
		||||
	try {
 | 
			
		||||
		var res = await fetch(`${url}/_matrix/client/versions`)
 | 
			
		||||
		if (res.status !== 200) {
 | 
			
		||||
			return suggestWellKnown(serverUrlPrompt, url, `There is no Matrix server at that URL (${url}/_matrix/client/versions returned ${res.status})`)
 | 
			
		||||
		}
 | 
			
		||||
	} catch (e) {
 | 
			
		||||
		return e.message
 | 
			
		||||
	}
 | 
			
		||||
	if (res.status !== 200) return `There is no Matrix server at that URL (${url}/_matrix/client/versions returned ${res.status})`
 | 
			
		||||
	try {
 | 
			
		||||
		var json = await res.json()
 | 
			
		||||
		if (!Array.isArray(json?.versions) || !json.versions.includes("v1.11")) {
 | 
			
		||||
			return `OOYE needs Matrix version v1.11, but ${url} doesn't support this`
 | 
			
		||||
		}
 | 
			
		||||
	} catch (e) {
 | 
			
		||||
		return `There is no Matrix server at that URL (${url}/_matrix/client/versions is not JSON)`
 | 
			
		||||
		return suggestWellKnown(serverUrlPrompt, url, `There is no Matrix server at that URL (${url}/_matrix/client/versions is not JSON)`)
 | 
			
		||||
	}
 | 
			
		||||
	return true
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue