aboutsummaryrefslogblamecommitdiffstats
path: root/Zotlabs/Module/Well_known.php
blob: 140ab260d5b34be09af35d457022816a6eaf10dc (plain) (tree)



























                                                                                                                              























                                                                                

                                                                  
                                                            






                                                                                  


                                                                                     






                                                                                   
                                               



                                                                                   
 














                                                                                    
<?php
namespace Zotlabs\Module;


class Well_known extends \Zotlabs\Web\Controller {

	function init(){
	
		if(argc() > 1) {
	
			$arr = array('server' => $_SERVER, 'request' => $_REQUEST);
			call_hooks('well_known', $arr);
	
	
			if(! check_siteallowed($_SERVER['REMOTE_ADDR'])) {
				logger('well_known: site not allowed. ' . $_SERVER['REMOTE_ADDR']);
				killme();
			}
	
			// from php.net re: REMOTE_HOST:
			//     Note: Your web server must be configured to create this variable. For example in Apache 
			// you'll need HostnameLookups On inside httpd.conf for it to exist. See also gethostbyaddr(). 
	
			if(get_config('system','siteallowed_remote_host') && (! check_siteallowed($_SERVER['REMOTE_HOST']))) {
				logger('well_known: site not allowed. ' . $_SERVER['REMOTE_HOST']);
				killme();
			}
	
			switch(argv(1)) {
				case 'zot-info':
					\App::$argc -= 1;
					array_shift(\App::$argv);
					\App::$argv[0] = 'zfinger';
					$module = new \Zotlabs\Module\Zfinger();
					$module->init();
					break;
	
				case 'webfinger':
					\App::$argc -= 1;
					array_shift(\App::$argv);
					\App::$argv[0] = 'wfinger';
					$module = new \Zotlabs\Module\Wfinger();
					$module->init();
					break;
	
				case 'host-meta':
					\App::$argc -= 1;
					array_shift(\App::$argv);
					\App::$argv[0] = 'hostxrd';
					$module = new \Zotlabs\Module\Hostxrd();
					$module->init();
					break;

				case 'oauth-authorization-server':
				case 'openid-configuration':
					\App::$argc -= 1;
					array_shift(\App::$argv);
					\App::$argv[0] = 'oauthinfo';
					$module = new \Zotlabs\Module\Oauthinfo();
					$module->init();
					break;

				case 'dnt-policy.txt':
					echo file_get_contents('doc/dnt-policy.txt');
					killme();
					
				case 'caldav':
				    if ($_SERVER['REQUEST_METHOD'] == 'PROPFIND') {
				        http_status('301', 'moved permanently');
				        goaway(z_root() . '/cdav');
				    };
				    
				case 'carddav':
				    if ($_SERVER['REQUEST_METHOD'] == 'PROPFIND') {
				        http_status('301', 'moved permanently');
				        goaway(z_root() . '/cdav');
				    };

				default:
					if(file_exists(\App::$cmd)) {
						echo file_get_contents(\App::$cmd); 
						killme();
					}
					elseif(file_exists(\App::$cmd . '.php'))
						require_once(\App::$cmd . '.php');
					break;
	
			}
		}
	
		http_status_exit(404);
	}
}