diff options
Diffstat (limited to 'mod/_well_known.php')
-rw-r--r-- | mod/_well_known.php | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/mod/_well_known.php b/mod/_well_known.php index d88bc2391..47cfe1512 100644 --- a/mod/_well_known.php +++ b/mod/_well_known.php @@ -7,6 +7,22 @@ function _well_known_init(&$a){ $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;
@@ -33,6 +49,19 @@ function _well_known_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;
}
|