aboutsummaryrefslogtreecommitdiffstats
path: root/mod/_well_known.php
blob: 46714deaac7053dad298b4b5e9ef48b2f9dd1690 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?php

function _well_known_init(&$a){

	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':
				$a->argc -= 1;
				array_shift($a->argv);
				$a->argv[0] = 'zfinger';
				require_once('mod/zfinger.php');
				zfinger_init($a);
				break;

			case 'webfinger':
				$a->argc -= 1;
				array_shift($a->argv);
				$a->argv[0] = 'wfinger';
				require_once('mod/wfinger.php');
				wfinger_init($a);
				break;

			case 'host-meta':
				$a->argc -= 1;
				array_shift($a->argv);
				$a->argv[0] = 'hostxrd';
				require_once('mod/hostxrd.php');
				hostxrd_init($a);
				break;

			default:
				if(file_exists($a->cmd)) {
					echo file_get_contents($a->cmd); 
					killme();
				}
				elseif(file_exists($a->cmd . '.php'))
					require_once($a->cmd . '.php');
				break;

		}
	}

	http_status_exit(404);
}