Add canonical_origin config option
This commit is contained in:
		
							parent
							
								
									42da969ac5
								
							
						
					
					
						commit
						6aeba6acb6
					
				|  | @ -16,6 +16,7 @@ liking. Here's a list of what they are: | ||||||
| - `bind_host` (string): What address to bind to | - `bind_host` (string): What address to bind to | ||||||
| - `bind_port` (zero or positive integer): What port to bind to | - `bind_port` (zero or positive integer): What port to bind to | ||||||
| - `image_proxy_url` (string): URL to proxy images to (see https://pixiv.cat/reverseproxy.html), a trailing slash is not needed | - `image_proxy_url` (string): URL to proxy images to (see https://pixiv.cat/reverseproxy.html), a trailing slash is not needed | ||||||
|  | - `canonical_origin` (string or null): A fallback canonical origin if set, useful if you're, say, running Pixwhile behind Ngrok | ||||||
| 
 | 
 | ||||||
| Pixwhile is intended to be run behind a reverse proxy (e.g. Nginx), so you | Pixwhile is intended to be run behind a reverse proxy (e.g. Nginx), so you | ||||||
| should set your reverse proxy to proxy requests to | should set your reverse proxy to proxy requests to | ||||||
|  |  | ||||||
|  | @ -17,4 +17,7 @@ void from_json(const nlohmann::json& j, Config& config) { | ||||||
|         throw std::invalid_argument("Invalid port to bind to: "s + std::to_string(config.bind_port)); |         throw std::invalid_argument("Invalid port to bind to: "s + std::to_string(config.bind_port)); | ||||||
|     } |     } | ||||||
|     config.image_proxy_url = j.at("image_proxy_url").get<std::string>(); |     config.image_proxy_url = j.at("image_proxy_url").get<std::string>(); | ||||||
|  |     if (j.contains("canonical_origin") && j["canonical_origin"].is_string()) { | ||||||
|  |         config.canonical_origin = j["canonical_origin"].get<std::string>(); | ||||||
|  |     } | ||||||
| } | } | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								config.h
								
								
								
								
							
							
						
						
									
										1
									
								
								config.h
								
								
								
								
							|  | @ -8,6 +8,7 @@ struct Config { | ||||||
|     std::string bind_host = "127.0.0.1"; |     std::string bind_host = "127.0.0.1"; | ||||||
|     int bind_port = 8080; |     int bind_port = 8080; | ||||||
|     blankie::murl::Url image_proxy_url{"https://i.pixiv.cat"}; |     blankie::murl::Url image_proxy_url{"https://i.pixiv.cat"}; | ||||||
|  |     std::optional<std::string> canonical_origin; | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| Config load_config(const char* path); | Config load_config(const char* path); | ||||||
|  |  | ||||||
|  | @ -1,5 +1,6 @@ | ||||||
| { | { | ||||||
|     "bind_host": "127.0.0.1", |     "bind_host": "127.0.0.1", | ||||||
|     "bind_port": 8080, |     "bind_port": 8080, | ||||||
|     "image_proxy_url": "https://i.pixiv.cat" |     "image_proxy_url": "https://i.pixiv.cat", | ||||||
|  |     "canonical_origin": null | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -79,6 +79,9 @@ std::string get_origin(const httplib::Request& req, const Config& config) { | ||||||
|     if (req.has_header("X-Canonical-Origin")) { |     if (req.has_header("X-Canonical-Origin")) { | ||||||
|         return req.get_header_value("X-Canonical-Origin"); |         return req.get_header_value("X-Canonical-Origin"); | ||||||
|     } |     } | ||||||
|  |     if (config.canonical_origin) { | ||||||
|  |         return *config.canonical_origin; | ||||||
|  |     } | ||||||
| 
 | 
 | ||||||
|     std::string origin = "http://"; |     std::string origin = "http://"; | ||||||
|     if (req.has_header("Host")) { |     if (req.has_header("Host")) { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue