mirror of
				https://git.tt-rss.org/fox/tt-rss.git
				synced 2025-11-04 05:41:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			30 lines
		
	
	
		
			958 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			958 B
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
class PluginHandler extends Handler_Protected {
 | 
						|
	function csrf_ignore(string $method): bool {
 | 
						|
		return true;
 | 
						|
	}
 | 
						|
 | 
						|
	function catchall(string $method): void {
 | 
						|
		$plugin_name = clean($_REQUEST["plugin"]);
 | 
						|
		$plugin = PluginHost::getInstance()->get_plugin($plugin_name);
 | 
						|
		$csrf_token = ($_POST["csrf_token"] ?? "");
 | 
						|
 | 
						|
		if ($plugin) {
 | 
						|
			if (method_exists($plugin, $method)) {
 | 
						|
				if (validate_csrf($csrf_token) || $plugin->csrf_ignore($method)) {
 | 
						|
					$plugin->$method();
 | 
						|
				} else {
 | 
						|
					user_error("Rejected {$plugin_name}->{$method}(): invalid CSRF token.", E_USER_WARNING);
 | 
						|
					print Errors::to_json(Errors::E_UNAUTHORIZED);
 | 
						|
				}
 | 
						|
			} else {
 | 
						|
				user_error("Rejected {$plugin_name}->{$method}(): unknown method.", E_USER_WARNING);
 | 
						|
				print Errors::to_json(Errors::E_UNKNOWN_METHOD);
 | 
						|
			}
 | 
						|
		} else {
 | 
						|
			user_error("Rejected {$plugin_name}->{$method}(): unknown plugin.", E_USER_WARNING);
 | 
						|
			print Errors::to_json(Errors::E_UNKNOWN_PLUGIN);
 | 
						|
		}
 | 
						|
	}
 | 
						|
}
 |