diff options
author | David Lawrence <dlawrence@mozilla.com> | 2011-04-01 05:38:47 +0200 |
---|---|---|
committer | David Lawrence <dlawrence@mozilla.com> | 2011-04-01 05:38:47 +0200 |
commit | 14151ea2f8fb33d4336afa161a0e8b8bed6e5daa (patch) | |
tree | cfc8220d3a81b92c69b17bb8543f1a024e1e4f94 /Bugzilla | |
parent | 827893640965d055b40193c825dad3555acb4eb3 (diff) | |
download | bugzilla-14151ea2f8fb33d4336afa161a0e8b8bed6e5daa.tar.gz bugzilla-14151ea2f8fb33d4336afa161a0e8b8bed6e5daa.tar.xz |
Bug 644334 - Add hook to Bugzilla::Install::Filesystem to allow extensions to create files/directories/htaccess
r/a=mkanat
Diffstat (limited to 'Bugzilla')
-rw-r--r-- | Bugzilla/Hook.pm | 91 | ||||
-rw-r--r-- | Bugzilla/Install/Filesystem.pm | 10 |
2 files changed, 101 insertions, 0 deletions
diff --git a/Bugzilla/Hook.pm b/Bugzilla/Hook.pm index cf81e9c7d..996f327c3 100644 --- a/Bugzilla/Hook.pm +++ b/Bugzilla/Hook.pm @@ -720,6 +720,97 @@ time should be printed. =back +=head2 install_filesystem + +Allows for additional files and directories to be added to the +list of files and directories already managed by checksetup.pl. +You will be able to also set permissions for the files and +directories using this hook. You can also use this hook to create +appropriate .htaccess files for any directory to secure its contents. +For examples see L<FILESYSTEM> in L<Bugzilla::Install::Filesystem>. + +Params: + +=over + +=item C<files> + +Hash reference of files that are already present when your extension was +installed but need to have specific permissions set. Each file key +points to another hash reference containing the following settings. + +Params: + +=over + +=item C<perms> - Permissions to be set on the file. + +=back + +=item C<create_dirs> + +Hash reference containing the name of each directory that will be created, +pointing at its default permissions. + +=item C<non_recurse_dirs> + +Hash reference containing directories that we want to set the perms on, but not +recurse through. These are directories not created in checksetup.pl. Each directory +key's value is the permissions to be set on the directory. + +=item C<recurse_dirs> + +Hash reference of directories that will have permissions set for each item inside +each of the directories, including the directory itself. Each directory key +points to another hash reference containing the following settings. + +Params: + +=over + +=item C<files> - Permissions to be set on any files beneath the directory. + +=item C<dirs> - Permissions to be set on the directory itself and any directories +beneath it. + +=back + +=item C<create_files> + +Hash reference of additional files to be created. Each file key points to another +hash reference containing the following settings. + +Params: + +=over + +=item C<perms> - The permissions to be set on the file itself. + +=item C<contents> - The contents to be added to the file or leave blank for an +empty file. + +=back + +=item C<htaccess> + +Hash reference containing htaccess files to be created. You can set the permissions +for the htaccess as well as the contents of the file. Each file key points to another +hash reference containing the following settings. + +Params: + +=over + +=item C<perms> - Permissions to be set on the htaccess file. + +=item C<contents> - Contents of the htaccess file. It can be set manually or +use L<HT_DEFAULT_DENY> defined in L<Bugzilla::Install::Filesystem> to deny all +by default. + +=back + +=back + =head2 install_update_db This happens at the very end of all the tables being updated diff --git a/Bugzilla/Install/Filesystem.pm b/Bugzilla/Install/Filesystem.pm index 2845728bc..15106dab9 100644 --- a/Bugzilla/Install/Filesystem.pm +++ b/Bugzilla/Install/Filesystem.pm @@ -32,6 +32,7 @@ use Bugzilla::Error; use Bugzilla::Install::Localconfig; use Bugzilla::Install::Util qw(install_string); use Bugzilla::Util; +use Bugzilla::Hook; use File::Find; use File::Path; @@ -364,6 +365,15 @@ EOT }, ); + Bugzilla::Hook::process('install_filesystem', { + files => \%files, + create_dirs => \%create_dirs, + non_recurse_dirs => \%non_recurse_dirs, + recurse_dirs => \%recurse_dirs, + create_files => \%create_files, + htaccess => \%htaccess, + }); + my %all_files = (%create_files, %htaccess, %index_html, %files); my %all_dirs = (%create_dirs, %non_recurse_dirs); |