I got to dig a bit deeper that I would have liked recently into the bowels of aegir. I needed to alter the apache site .conf file. This is a file that is controlled by aegir, so if you modify it directly. It will surely change at the next verify.
The reality was that I needed to add basic authentication to a website prior to it's 'go live' date. I tried adding a '.htaccess' file into the sites/domain.com first. But this had no effect. So, that meant I needed to get those directives directly into the conf file that apache uses at startup. I could have reduced security by allowing the .htaccess file to work, but that seemed like the wrong approach.
This is done by creating a hook_provision_apache_vhost_config() function and storing it in the /var/aegir/.drush folder.
Below is a (slightly) edited version of what I used. I spent quit a bit of time documenting the second parameter ($data) that is passed into this function. I was looking for the base folder for the aegir platform that a 'site' was in. As I did not want to hard code this value and have it change in a few weeks/months due to an upgrade.
Notes:
#1) The filename and the function were originally defined for adding in an SSL directive for 'intermediate' CA key(s).
#2) Yes, I know I should not put the key files in the site directory. I will change that next. But I wanted to document a working system that I have found useful.
---------------------
/*
* Implementation of hook_provision_apache_vhost_config()
$data layout - (partial)
0: server
1: application_name
2: http_pred_path
3: http_postd_path
4: http_platformd_path
5: http_vhostd_path
6: http_port
7: ip_address
8: redirect_url
9: db_type
10: db_host
11: db_port
12: db_passwd
13: db_name
14: db_user
15: packages
0: platforms
0: drupal
0: short_name
1: version
2: description
1: profiles
0: worxco
0: name
1: filename
2: project
3: info
0: name
1: description
2: version
3: core
4: dependencies
5: files
6: php
7: languages
4: version
5: status
2: modules
3: themes
16: site_ip_addresses
0: @server_master
17: installed
18: config-file
19: context_path
20: extra_config
*/
function worx_ssl_provision_apache_vhost_config($uri, $data) {
if ($uri == 'domain.com') {
$d15_1_0_1 = $data['packages']['profiles']['worxco']['filename'];
$filebase = explode('/profile', $d15_1_0_1);
$rval[] = " ";
// $rval[] = " # Uri (p1): $uri";
// $rval[] = " # Data (p2): ". implode(",", $data);
// $rval[] = " ";
$rval[] = " # -begin- provided by worx_ssl.drush.inc";
$rval[] = "
$rval[] = ' AuthName "Private Domain"';
$rval[] = " AuthType Basic";
$rval[] = " AuthUserFile " . $filebase[0] . "/sites/" . $uri ."/.secret.passwd";
$rval[] = " require valid-user";
$rval[] = "
$rval[] = " # -end- provided by worx_ssl.drush.inc";
$rval[] = " ";
return $rval;
}
}