|  |  |  | import os
 | 
					
						
							|  |  |  | import socket
 | 
					
						
							|  |  |  | from urllib.parse import urlparse
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | from openpilot.tools.lib.url_file import URLFile
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | DATA_ENDPOINT = os.getenv("DATA_ENDPOINT", "http://data-raw.comma.internal/")
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def internal_source_available():
 | 
					
						
							|  |  |  |   try:
 | 
					
						
							|  |  |  |     hostname = urlparse(DATA_ENDPOINT).hostname
 | 
					
						
							|  |  |  |     if hostname:
 | 
					
						
							|  |  |  |       socket.gethostbyname(hostname)
 | 
					
						
							|  |  |  |       return True
 | 
					
						
							|  |  |  |   except socket.gaierror:
 | 
					
						
							|  |  |  |     pass
 | 
					
						
							|  |  |  |   return False
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def resolve_name(fn):
 | 
					
						
							|  |  |  |   if fn.startswith("cd:/"):
 | 
					
						
							|  |  |  |     return fn.replace("cd:/", DATA_ENDPOINT)
 | 
					
						
							|  |  |  |   return fn
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def file_exists(fn):
 | 
					
						
							|  |  |  |   fn = resolve_name(fn)
 | 
					
						
							|  |  |  |   if fn.startswith(("http://", "https://")):
 | 
					
						
							|  |  |  |     return URLFile(fn).get_length_online() != -1
 | 
					
						
							|  |  |  |   return os.path.exists(fn)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | def FileReader(fn, debug=False):
 | 
					
						
							|  |  |  |   fn = resolve_name(fn)
 | 
					
						
							|  |  |  |   if fn.startswith(("http://", "https://")):
 | 
					
						
							|  |  |  |     return URLFile(fn, debug=debug)
 | 
					
						
							|  |  |  |   return open(fn, "rb")
 |