aboutsummaryrefslogtreecommitdiffstats
path: root/mod/_well_known.php
blob: 58ed13ece852831cfbedbf7a188fbd47d0c511be (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
<?php

function _well_known_init(&$a){

	if(argc() > 1) {

		$arr = array('server' => $_SERVER, 'request' => $_REQUEST);
		call_hooks('well_known', $arr);

		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:
				// look in $WEBROOT/well_known for the requested file in case it is 
				// something a site requires and for which we do not have a module

				// @fixme - we may need to determine the content-type and stick it in the header
				// for now this can be done with a php script masquerading as the requested file

				$wk_file = str_replace('.well-known','well_known',$a->cmd);
				if(file_exists($wk_file)) {
					echo file_get_contents($wk_file); 
					killme();
				}
				elseif(file_exists($wk_file . '.php'))
					require_once($wk_file . '.php');
				break;

		}
	}

	http_status_exit(404);
}