From a5e73e96f63880bb33837e2dd1ef3fac543a9755 Mon Sep 17 00:00:00 2001 From: lars Date: Thu, 20 Apr 2006 00:35:36 +0000 Subject: [PATCH] changed fancy listing of files in download directory improved directory structure --- INSTALL | 25 ++-- README | 133 ++++-------------- README.gnupg | 58 ++++---- TODO | 3 - ezmlmwebrc => examples/ezmlmwebrc.dist | 0 .../ezmlmwebrc.gnupg.dist | 0 htaccess.sample => examples/htaccess.dist | 0 webusers.sample => examples/webusers.dist | 0 ezmlm-web.cgi | 2 + {css => share/css}/default.css | 0 index.c => share/index.c | 0 {lang => share/lang}/de.hdf | 0 {lang => share/lang}/en.hdf | 0 {lang => share/lang}/jp.pm | 0 {template => share/template}/config_admin.cs | 0 {template => share/template}/config_all.cs | 0 .../template}/config_archive.cs | 0 {template => share/template}/config_main.cs | 0 .../config_options/admin_edit_text.cs | 0 .../template}/config_options/admin_enabled.cs | 0 .../config_options/admin_get_subscribers.cs | 0 .../template}/config_options/admin_path.cs | 0 .../config_options/archive_deny_unknown.cs | 0 .../config_options/archive_enabled.cs | 0 .../config_options/archive_mod_only.cs | 0 .../archive_remove_private_header.cs | 0 .../template}/config_options/block_deny.cs | 0 .../config_options/block_nonmod_post.cs | 0 .../config_options/block_others_archive.cs | 0 .../config_options/block_others_post.cs | 0 .../config_options/charset_select.cs | 0 .../template}/config_options/confirm_post.cs | 0 .../template}/config_options/confirm_sub.cs | 0 .../template}/config_options/confirm_unsub.cs | 0 .../config_options/create_listaddress.cs | 0 .../config_options/create_listname.cs | 0 .../config_options/digest_enabled.cs | 0 .../config_options/digest_settings.cs | 0 .../template}/config_options/from_address.cs | 0 .../gnupg_allow_key_submission.cs | 0 .../config_options/gnupg_encrypt_to_all.cs | 0 .../config_options/gnupg_keycomment.cs | 0 .../config_options/gnupg_keyexpires.cs | 0 .../template}/config_options/gnupg_keyname.cs | 0 .../template}/config_options/gnupg_keysize.cs | 0 .../config_options/gnupg_nokey_nocrypt.cs | 0 .../config_options/gnupg_require_sigs.cs | 0 .../gnupg_require_subscriber.cs | 0 .../config_options/gnupg_sign_messages.cs | 0 .../gnupg_verified_key_required.cs | 0 .../template}/config_options/headeradd.cs | 0 .../template}/config_options/headerremove.cs | 0 .../template}/config_options/lang_select.cs | 0 .../config_options/mailman_requests.cs | 0 .../template}/config_options/mainlist.cs | 0 .../template}/config_options/mime_both.cs | 0 .../template}/config_options/mimecheck.cs | 0 .../template}/config_options/mimereject.cs | 0 .../template}/config_options/mimeremove.cs | 0 .../template}/config_options/mod_post.cs | 0 .../template}/config_options/mod_post_path.cs | 0 .../template}/config_options/mod_sub.cs | 0 .../template}/config_options/mod_sub_path.cs | 0 .../template}/config_options/msgsize_max.cs | 0 .../template}/config_options/msgsize_min.cs | 0 .../template}/config_options/mysql.cs | 0 .../template}/config_options/owner_address.cs | 0 .../template}/config_options/prefix.cs | 0 .../template}/config_options/public.cs | 0 .../template}/config_options/trailer.cs | 0 .../template}/config_options/warn_remove.cs | 0 .../template}/config_options/webusers.cs | 0 .../template}/config_posting.cs | 0 .../template}/config_processing.cs | 0 .../template}/config_subscription.cs | 0 {template => share/template}/footer.cs | 0 {template => share/template}/form_common.cs | 0 {template => share/template}/gnupg_convert.cs | 0 .../template}/gnupg_generate_key.cs | 0 {template => share/template}/gnupg_import.cs | 0 {template => share/template}/gnupg_public.cs | 0 {template => share/template}/gnupg_secret.cs | 0 {template => share/template}/header.cs | 0 .../template}/help_tag_substitution.cs | 0 .../template}/language_select.cs | 0 {template => share/template}/list_create.cs | 0 {template => share/template}/list_delete.cs | 0 {template => share/template}/list_select.cs | 0 {template => share/template}/macros.cs | 0 {template => share/template}/main.cs | 0 {template => share/template}/modpath_info.cs | 0 {template => share/template}/nav.cs | 0 {template => share/template}/subscribers.cs | 0 {template => share/template}/textfile_edit.cs | 0 {template => share/template}/textfiles.cs | 0 .../template}/ui/default/normal.hdf | 0 .../template}/ui/gnupg/normal.hdf | 0 97 files changed, 71 insertions(+), 150 deletions(-) rename ezmlmwebrc => examples/ezmlmwebrc.dist (100%) rename ezmlmwebrc.gnupg => examples/ezmlmwebrc.gnupg.dist (100%) rename htaccess.sample => examples/htaccess.dist (100%) rename webusers.sample => examples/webusers.dist (100%) rename {css => share/css}/default.css (100%) rename index.c => share/index.c (100%) rename {lang => share/lang}/de.hdf (100%) rename {lang => share/lang}/en.hdf (100%) rename {lang => share/lang}/jp.pm (100%) rename {template => share/template}/config_admin.cs (100%) rename {template => share/template}/config_all.cs (100%) rename {template => share/template}/config_archive.cs (100%) rename {template => share/template}/config_main.cs (100%) rename {template => share/template}/config_options/admin_edit_text.cs (100%) rename {template => share/template}/config_options/admin_enabled.cs (100%) rename {template => share/template}/config_options/admin_get_subscribers.cs (100%) rename {template => share/template}/config_options/admin_path.cs (100%) rename {template => share/template}/config_options/archive_deny_unknown.cs (100%) rename {template => share/template}/config_options/archive_enabled.cs (100%) rename {template => share/template}/config_options/archive_mod_only.cs (100%) rename {template => share/template}/config_options/archive_remove_private_header.cs (100%) rename {template => share/template}/config_options/block_deny.cs (100%) rename {template => share/template}/config_options/block_nonmod_post.cs (100%) rename {template => share/template}/config_options/block_others_archive.cs (100%) rename {template => share/template}/config_options/block_others_post.cs (100%) rename {template => share/template}/config_options/charset_select.cs (100%) rename {template => share/template}/config_options/confirm_post.cs (100%) rename {template => share/template}/config_options/confirm_sub.cs (100%) rename {template => share/template}/config_options/confirm_unsub.cs (100%) rename {template => share/template}/config_options/create_listaddress.cs (100%) rename {template => share/template}/config_options/create_listname.cs (100%) rename {template => share/template}/config_options/digest_enabled.cs (100%) rename {template => share/template}/config_options/digest_settings.cs (100%) rename {template => share/template}/config_options/from_address.cs (100%) rename {template => share/template}/config_options/gnupg_allow_key_submission.cs (100%) rename {template => share/template}/config_options/gnupg_encrypt_to_all.cs (100%) rename {template => share/template}/config_options/gnupg_keycomment.cs (100%) rename {template => share/template}/config_options/gnupg_keyexpires.cs (100%) rename {template => share/template}/config_options/gnupg_keyname.cs (100%) rename {template => share/template}/config_options/gnupg_keysize.cs (100%) rename {template => share/template}/config_options/gnupg_nokey_nocrypt.cs (100%) rename {template => share/template}/config_options/gnupg_require_sigs.cs (100%) rename {template => share/template}/config_options/gnupg_require_subscriber.cs (100%) rename {template => share/template}/config_options/gnupg_sign_messages.cs (100%) rename {template => share/template}/config_options/gnupg_verified_key_required.cs (100%) rename {template => share/template}/config_options/headeradd.cs (100%) rename {template => share/template}/config_options/headerremove.cs (100%) rename {template => share/template}/config_options/lang_select.cs (100%) rename {template => share/template}/config_options/mailman_requests.cs (100%) rename {template => share/template}/config_options/mainlist.cs (100%) rename {template => share/template}/config_options/mime_both.cs (100%) rename {template => share/template}/config_options/mimecheck.cs (100%) rename {template => share/template}/config_options/mimereject.cs (100%) rename {template => share/template}/config_options/mimeremove.cs (100%) rename {template => share/template}/config_options/mod_post.cs (100%) rename {template => share/template}/config_options/mod_post_path.cs (100%) rename {template => share/template}/config_options/mod_sub.cs (100%) rename {template => share/template}/config_options/mod_sub_path.cs (100%) rename {template => share/template}/config_options/msgsize_max.cs (100%) rename {template => share/template}/config_options/msgsize_min.cs (100%) rename {template => share/template}/config_options/mysql.cs (100%) rename {template => share/template}/config_options/owner_address.cs (100%) rename {template => share/template}/config_options/prefix.cs (100%) rename {template => share/template}/config_options/public.cs (100%) rename {template => share/template}/config_options/trailer.cs (100%) rename {template => share/template}/config_options/warn_remove.cs (100%) rename {template => share/template}/config_options/webusers.cs (100%) rename {template => share/template}/config_posting.cs (100%) rename {template => share/template}/config_processing.cs (100%) rename {template => share/template}/config_subscription.cs (100%) rename {template => share/template}/footer.cs (100%) rename {template => share/template}/form_common.cs (100%) rename {template => share/template}/gnupg_convert.cs (100%) rename {template => share/template}/gnupg_generate_key.cs (100%) rename {template => share/template}/gnupg_import.cs (100%) rename {template => share/template}/gnupg_public.cs (100%) rename {template => share/template}/gnupg_secret.cs (100%) rename {template => share/template}/header.cs (100%) rename {template => share/template}/help_tag_substitution.cs (100%) rename {template => share/template}/language_select.cs (100%) rename {template => share/template}/list_create.cs (100%) rename {template => share/template}/list_delete.cs (100%) rename {template => share/template}/list_select.cs (100%) rename {template => share/template}/macros.cs (100%) rename {template => share/template}/main.cs (100%) rename {template => share/template}/modpath_info.cs (100%) rename {template => share/template}/nav.cs (100%) rename {template => share/template}/subscribers.cs (100%) rename {template => share/template}/textfile_edit.cs (100%) rename {template => share/template}/textfiles.cs (100%) rename {template => share/template}/ui/default/normal.hdf (100%) rename {template => share/template}/ui/gnupg/normal.hdf (100%) diff --git a/INSTALL b/INSTALL index 5b944c9..dfcd7b0 100644 --- a/INSTALL +++ b/INSTALL @@ -48,13 +48,14 @@ OVERVIEW: accessible in your path: mv, rm -3. Edit the ezmlmwebrc file and alter the variables to suit your - particular system. +3. Edit the examples/ezmlmwebrc.dist file and alter the variables to suit + your particular system. - Be careful about the $LIST_DIR variable. This script assumes that all - users store their mailing lists in the same sub directory of the home - directory (eg ~/lists). You can override this for an individual user - by recompiling the C wrapper to call ezmlm-web.cgi with a -d option. + Be careful about the $LIST_DIR variable. This script assumes that + all users store their mailing lists in the same sub directory of the + home directory (eg ~/lists). You can override this for an individual + user by recompiling the C wrapper to call ezmlm-web.cgi with a -d + option. Other configurable options are documented in the ezmlmwebrc file itself. I have tried to keep the amount of information that you need to @@ -64,9 +65,9 @@ OVERVIEW: The directory containing ezmlm-web's language files should be something like '/usr/local/share/ezmlm-web/lang': mkdir -p /usr/local/share/ezmlm-web - cp -r lang /usr/local/share/ezmlm-web + cp -r share/lang /usr/local/share/ezmlm-web You can change this default location in the ezmlmwebrc file. - Do the same with the template directory (e.g copy it + Do the same with the share/template directory (e.g copy it to /usr/local/share/ezmlm-web/template). Then you also have to set the appropriate location in the ezmlmwebrc file. @@ -82,7 +83,7 @@ OVERVIEW: 4. Edit the index.c file and change the path to the path of your copy of ezmlm-web.cgi. Then compile this file. You can do this by issuing this command: - gcc -o index.cgi index.c + gcc -o index.cgi share/index.c 5. For every user/virtual host that needs to manage mailing lists, you @@ -131,11 +132,13 @@ OVERVIEW: AuthType Basic AuthUserFile /path/to/passwordfile require valid-user # or require user username + + You may use examples/htaccess.dist as a template. Again, see the ApacheWeek article for details. -7. You should copy the stylesheet file (css/default.css) to a location +7. You should copy the stylesheet file (share/css/default.css) to a location of your choice. It has to be accessible by an URL - maybe a place like "/var/www/ezmlm-web.css" could be appropriate. Now you may have to change the "HTML_CSS_FILE" setting in your @@ -151,7 +154,7 @@ OVERVIEW: option correctly in ezmlmwebrc. Check it again. If anything failes - take a look at the web server's error log - (e.g /var/log/apache/error.log). + (e.g. /var/log/apache/error.log). 9. If you have any problems: diff --git a/README b/README index f10aaea..2e92415 100644 --- a/README +++ b/README @@ -10,7 +10,6 @@ Contents I. Copyright Stuff II. Some Background III. Requirements - IV. Files V. Notes VI. Multi-level list access VII. Language Portability @@ -56,45 +55,8 @@ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -II. Some Background -=================== -[this text was written by Guy Antony Halse - the original author of ezmlm-web] -The need for ezmlm-web arose from the fact that we host many student -societies on our system. These societies usually have a virtual host for web -and email, which is administered by a computer rep from the society. These -computer reps often have little or no knowledge of Unix and so we needed a -user friendly system that would let the create and maintain mailing lists -(such as members@foo.soc.ru.ac.za, committee@foo.soc.ru.ac.za, etc). - -Since I am never keen to re-invent the wheel, I had a look at Steve Peterson's -script (http://virtation.com/qmail/ml-sub), which allows people to subscribe -and unsubscribe from mailing lists using a form->email gateway. This is fine -for putting on a web page saying "here come and join our mailing list", but -doesn't really allow you to administrate a list. - -Security of mailing lists was a concern, as we really didn't want -unauthorised people to be able to alter some users list. Ezmlm-web itself -implements no security checks (apart from un-tainting input) and so relies -on the web server to do this (re-inventing the wheel again :). We use an -Apache webserver, so one can control access to a directory using a .htaccess -file or in the access.conf file. ApacheWeek have a good article on doing -this at http://www.apacheweek.com/features/userauth. I also give examples -later in this document. - -This version of ezmlm-web is based to a large extent on previous -versions that I have developed. It has however been totally re-written to -make use of the Mail::Ezmlm perl module I wrote. At the same time it was -updated and extended to include the new features of ezmlm-idx. It includes -many new features that have been suggested to me over the last few months, -and hopefully is now useful to a much larger group of people. - -Since 02005 ezmlm-web is maintained by Lars Kruse (ezmlm-web@sumpfralle.de). -Only minor improvements had to be implemented to keep the already fully -functional ezmlm-web up to date. - - -III. Requirements -================= +II. Requirements +================ This version of ezmlm-web requires the following; * qmail v1.03 @@ -125,59 +87,8 @@ You can download clearsilver (a templating engine - it is required since ezmlm-web v3.0) from http://clearsilver.net. -IV. Files -========= -In this distribution you should find the following files; - -README (optional) This file. Provides some background information. - -INSTALL (optional) Notes on installation. - -INSTALL.clearsilver (optional) Notes on the installation of clearsilver. - -CHANGES (optional) The change history. - -UPGRADING (optional) Notes on upgrading ezmlm-web from a previous version. - -TODO (optional) This file is a list of things I intend doing in future - versions of ezmlm-web. - -ezmlm-web.cgi (required) The ezmlm-web cgi script in perl. You will need it :) - -index.c (recommended) A C wrapper to allow ezmlm-web.cgi to run - suid. Not strictly necessary if your setup allows perl scripts - to run suid, but I prefer using wrappers anyway. It needs to - be edited and compiled to suit your system. Not needed to - run ezmlm-web. - -ezmlmwebrc (required) This is the configuration file for ezmlm-web. - All options are explained in this example file. You will need - this file to run ezmlm-web. - -htaccess.sample (recommended) A sample Apache .htaccess file for controlling access to - the mailing lists. If you use another web server, you will - have to work this bit out for yourself. - -webusers.sample (recommended) A sample webusers file for multi-level access control. - -lang (directory, required) It contains the language files. You will need - at least the one, that you have choosen in "ezmlmwebrc" by - the option "HTML_LANGUAGE". - -css (directory, recommended) Here you find available css stylesheet files. - Pick the one you like (for now, there is only one choice :)) and - set it up by pointing the "HTML_CSS_FILE" setting in your - "ezmlmwebrc" to an appropriate URL. - -template (directory, required) The clearsilver template files in this - directory defined the layout of the web interface. You should be able - to adapt them to your needs, if you like. - -spec (directory, optional) Some development specific information. - - -V. Notes -========= +III. Notes +========== * There is a function to delete mailing lists, but I really don't like the idea. The only reason I put it in is that bvi@rucus asked for it. If you set $UNSAFE_RD = 0 (the default) in the config section, the @@ -197,8 +108,8 @@ V. Notes with this kind of setup :) -VI. Multi-Level Access -======================= +IV. Multi-Level Access +====================== Ezmlm-web has a multi-level access system. This depends on a file called webusers being present in $LIST_DIR. If the file is not present, then ANY valid user has access to all lists. If, however, this file exists a number @@ -237,9 +148,9 @@ use of this option is deprecated, since the line "ALLOW_CREATE: ALL" provides the same effect in a cleaner way. -VII. Language Portablity -========================= -One of the great new features of version 2.0 is that it is essentially +V. Language Portablity +====================== +One of the great new features since version 2.0 is that it is essentially language independant. All of the fixed strings, help, etc is defined in the files of the lang directory. Of course you can change them or create a new translation. @@ -256,15 +167,15 @@ Secondly, please mail me a copy (ezmlm-web@sumpfralle.de) so that I may use them in any future releases of ezmlm-web. -VIII. Encrypted mailing lists -============================= +VI. Encrypted mailing lists +=========================== If you want to manage encrypted mailing lists (see http://www.synacklabs.net/projects/crypt-ml/) with ezmlm-web, then you should read README.gnupg and follow the instructions. -IX. Bugs && Bug Reports -======================= +VII. Bugs && Bug Reports +======================== I don't know of any bugs, but then this is a rewrite and a first release. It has been tested reasonably well, but not exhaustively. I know it works on FreeBSD 4.0-STABLE, FreeBSD 3.4-RELEASE, RedHat 5.1, Redhat 6.0 and Debian @@ -279,8 +190,8 @@ Or subscribe to the ezmlm-web mailinglist: ezmlm-web-subscribe@lists.systemausfall.org -X. Acknowledgements -=================== +VIII. Acknowledgements +====================== * Guy Antony Halse (guy-ezmlm@rucus.ru.ac.za) - he created ezmlm-web and maintained it till 02005 * Keith Burdis (keith@rucus.ru.ac.za) - For constantly bugging me (Guy) and @@ -304,16 +215,20 @@ X. Acknowledgements interface for v3.0 -XI. Availability -================= +IX. Availability +================ More information on ezmlm-web and developments to ezmlm-web can be found at: -https://systemausfall.org/toolforge/ezmlm-web +https://systemausfall.org/toolforge/ezmlm-web/ The public subversion repository is at: -https://svn.systemausfall.org/svn/ezmlm-web +https://svn.systemausfall.org/svn/ezmlm-web/ -The website of Guy Antony Halse (the author of ezmlm-web) is still at: +The (inofficial) debian repository containing ezmlm-web is at: +http://systemausfall.org/toolforge/debian/ + +The website of Guy Antony Halse (the original author of ezmlm-web) is still at: http://rucus.ru.ac.za/~guy/ezmlm/ The old ftp-archive of ezmlm-web is still available on: ftp://rucus.ru.ac.za/pub/mail/ezmlm/ + diff --git a/README.gnupg b/README.gnupg index 929b4cc..2fb8626 100644 --- a/README.gnupg +++ b/README.gnupg @@ -9,42 +9,46 @@ Content: ------------------------------ 1) Requirements -To use encrypted mailing lists, you need to install gpg-ezmlm (see -http://www.synacklabs.net/projects/crypt-ml/). It is essential to use -at least version 0.3.4. -gpg-ezmlm will handle your incoming and outgoing mails. It does not -support all the features of ezmlm-idx, but it should suffice for the -specialized needs of encrypted communication for small groups. + To use encrypted mailing lists, you need to install gpg-ezmlm (see + http://www.synacklabs.net/projects/crypt-ml/). It is essential to use + at least version 0.3.4. + gpg-ezmlm will handle your incoming and outgoing mails. It does not + support all the features of ezmlm-idx, but it should suffice for the + specialized needs of encrypted communication for small groups. -Install the perl module Mail::Ezmlm::Gpg to access gpg-ezmlm. You can -downloaded it from -https://systemausfall.org/toolforge/ezmlm-web/downloads/gnupg-support. + Install the perl module Mail::Ezmlm::Gpg to access gpg-ezmlm. You can + downloaded it from + https://systemausfall.org/toolforge/ezmlm-web/downloads/Ezmlm-Gpg. -Of course, you also need gnupg (it is required by gpg-ezmlm, too). + Of course, you also need gnupg (it is required by gpg-ezmlm, too). 2) Installation -Follow the instructions in the README file of gpg-ezmlm. -Usually it should boil down to the following commands: - perl Makefile.PL - make - make install + Follow the instructions in the README file of gpg-ezmlm. + Usually it should boil down to the following commands: + perl Makefile.PL + make + make test + make install 3) Setup of ezmlm-web -The location of the encryption configuration file for ezmlm-web depends -on the location of your ezmlmwebrc file. ezmlm-web will just check, if -a file prefixed with ".gnupg" exists besides ezmlmwebrc. -In short: you have to put it into the same directory, as you placed your -ezmlmwebrc. ezmlm-web will NOT look into any other location. + The location of the encryption configuration file for ezmlm-web depends + on the location of your ezmlmwebrc file. ezmlm-web will just check, if + a file prefixed with ".gnupg" exists besides ezmlmwebrc. + In short: you have to put it into the same directory, as you placed your + ezmlmwebrc. ezmlm-web will NOT look into any other location. -To support the setup of encrypted mailing lists, you have to include the -following lines in your ezmlmwebrc.gnupg file. - use Mail::Ezmlm::Gpg; - GPG_SUPPRT = yes; + To support the setup of encrypted mailing lists, you have to include the + following lines in your ezmlmwebrc.gnupg file. + use Mail::Ezmlm::Gpg; + GPG_SUPPRT = yes; + + You can find a documented example of the ezmlmwebrc.gnupg file in the + examples directory. 4) Notes -As soon as you installed all the necessary programs and after you did put -the ezmlmwebrc.gnupg to the right location, you will find a new link in the -navigation bar of ezmlm-web named "Encryption". + As soon as you installed all the necessary programs and after you did put + the ezmlmwebrc.gnupg to the right location, you will find a new link in the + navigation bar of ezmlm-web named "Encryption". diff --git a/TODO b/TODO index f7c0449..3c663e9 100644 --- a/TODO +++ b/TODO @@ -7,10 +7,7 @@ restore user input after failed list_create (especially options) support for: * show subscription log * 'mailinglist' (maybe) - * config directory (maybe) - * gpg-ezmlm (defenitely) -interface language switch support choose basic/expert to disable questions export subscribers diff --git a/ezmlmwebrc b/examples/ezmlmwebrc.dist similarity index 100% rename from ezmlmwebrc rename to examples/ezmlmwebrc.dist diff --git a/ezmlmwebrc.gnupg b/examples/ezmlmwebrc.gnupg.dist similarity index 100% rename from ezmlmwebrc.gnupg rename to examples/ezmlmwebrc.gnupg.dist diff --git a/htaccess.sample b/examples/htaccess.dist similarity index 100% rename from htaccess.sample rename to examples/htaccess.dist diff --git a/webusers.sample b/examples/webusers.dist similarity index 100% rename from webusers.sample rename to examples/webusers.dist diff --git a/ezmlm-web.cgi b/ezmlm-web.cgi index 87018c7..e575392 100755 --- a/ezmlm-web.cgi +++ b/ezmlm-web.cgi @@ -31,6 +31,8 @@ use English; # for dropping privileges $UID = $EUID; $GID = $EGID; +$VERSION = '3.2'; + my $q = new CGI; $q->import_names('Q'); use vars qw[$opt_c $opt_d $opt_C]; diff --git a/css/default.css b/share/css/default.css similarity index 100% rename from css/default.css rename to share/css/default.css diff --git a/index.c b/share/index.c similarity index 100% rename from index.c rename to share/index.c diff --git a/lang/de.hdf b/share/lang/de.hdf similarity index 100% rename from lang/de.hdf rename to share/lang/de.hdf diff --git a/lang/en.hdf b/share/lang/en.hdf similarity index 100% rename from lang/en.hdf rename to share/lang/en.hdf diff --git a/lang/jp.pm b/share/lang/jp.pm similarity index 100% rename from lang/jp.pm rename to share/lang/jp.pm diff --git a/template/config_admin.cs b/share/template/config_admin.cs similarity index 100% rename from template/config_admin.cs rename to share/template/config_admin.cs diff --git a/template/config_all.cs b/share/template/config_all.cs similarity index 100% rename from template/config_all.cs rename to share/template/config_all.cs diff --git a/template/config_archive.cs b/share/template/config_archive.cs similarity index 100% rename from template/config_archive.cs rename to share/template/config_archive.cs diff --git a/template/config_main.cs b/share/template/config_main.cs similarity index 100% rename from template/config_main.cs rename to share/template/config_main.cs diff --git a/template/config_options/admin_edit_text.cs b/share/template/config_options/admin_edit_text.cs similarity index 100% rename from template/config_options/admin_edit_text.cs rename to share/template/config_options/admin_edit_text.cs diff --git a/template/config_options/admin_enabled.cs b/share/template/config_options/admin_enabled.cs similarity index 100% rename from template/config_options/admin_enabled.cs rename to share/template/config_options/admin_enabled.cs diff --git a/template/config_options/admin_get_subscribers.cs b/share/template/config_options/admin_get_subscribers.cs similarity index 100% rename from template/config_options/admin_get_subscribers.cs rename to share/template/config_options/admin_get_subscribers.cs diff --git a/template/config_options/admin_path.cs b/share/template/config_options/admin_path.cs similarity index 100% rename from template/config_options/admin_path.cs rename to share/template/config_options/admin_path.cs diff --git a/template/config_options/archive_deny_unknown.cs b/share/template/config_options/archive_deny_unknown.cs similarity index 100% rename from template/config_options/archive_deny_unknown.cs rename to share/template/config_options/archive_deny_unknown.cs diff --git a/template/config_options/archive_enabled.cs b/share/template/config_options/archive_enabled.cs similarity index 100% rename from template/config_options/archive_enabled.cs rename to share/template/config_options/archive_enabled.cs diff --git a/template/config_options/archive_mod_only.cs b/share/template/config_options/archive_mod_only.cs similarity index 100% rename from template/config_options/archive_mod_only.cs rename to share/template/config_options/archive_mod_only.cs diff --git a/template/config_options/archive_remove_private_header.cs b/share/template/config_options/archive_remove_private_header.cs similarity index 100% rename from template/config_options/archive_remove_private_header.cs rename to share/template/config_options/archive_remove_private_header.cs diff --git a/template/config_options/block_deny.cs b/share/template/config_options/block_deny.cs similarity index 100% rename from template/config_options/block_deny.cs rename to share/template/config_options/block_deny.cs diff --git a/template/config_options/block_nonmod_post.cs b/share/template/config_options/block_nonmod_post.cs similarity index 100% rename from template/config_options/block_nonmod_post.cs rename to share/template/config_options/block_nonmod_post.cs diff --git a/template/config_options/block_others_archive.cs b/share/template/config_options/block_others_archive.cs similarity index 100% rename from template/config_options/block_others_archive.cs rename to share/template/config_options/block_others_archive.cs diff --git a/template/config_options/block_others_post.cs b/share/template/config_options/block_others_post.cs similarity index 100% rename from template/config_options/block_others_post.cs rename to share/template/config_options/block_others_post.cs diff --git a/template/config_options/charset_select.cs b/share/template/config_options/charset_select.cs similarity index 100% rename from template/config_options/charset_select.cs rename to share/template/config_options/charset_select.cs diff --git a/template/config_options/confirm_post.cs b/share/template/config_options/confirm_post.cs similarity index 100% rename from template/config_options/confirm_post.cs rename to share/template/config_options/confirm_post.cs diff --git a/template/config_options/confirm_sub.cs b/share/template/config_options/confirm_sub.cs similarity index 100% rename from template/config_options/confirm_sub.cs rename to share/template/config_options/confirm_sub.cs diff --git a/template/config_options/confirm_unsub.cs b/share/template/config_options/confirm_unsub.cs similarity index 100% rename from template/config_options/confirm_unsub.cs rename to share/template/config_options/confirm_unsub.cs diff --git a/template/config_options/create_listaddress.cs b/share/template/config_options/create_listaddress.cs similarity index 100% rename from template/config_options/create_listaddress.cs rename to share/template/config_options/create_listaddress.cs diff --git a/template/config_options/create_listname.cs b/share/template/config_options/create_listname.cs similarity index 100% rename from template/config_options/create_listname.cs rename to share/template/config_options/create_listname.cs diff --git a/template/config_options/digest_enabled.cs b/share/template/config_options/digest_enabled.cs similarity index 100% rename from template/config_options/digest_enabled.cs rename to share/template/config_options/digest_enabled.cs diff --git a/template/config_options/digest_settings.cs b/share/template/config_options/digest_settings.cs similarity index 100% rename from template/config_options/digest_settings.cs rename to share/template/config_options/digest_settings.cs diff --git a/template/config_options/from_address.cs b/share/template/config_options/from_address.cs similarity index 100% rename from template/config_options/from_address.cs rename to share/template/config_options/from_address.cs diff --git a/template/config_options/gnupg_allow_key_submission.cs b/share/template/config_options/gnupg_allow_key_submission.cs similarity index 100% rename from template/config_options/gnupg_allow_key_submission.cs rename to share/template/config_options/gnupg_allow_key_submission.cs diff --git a/template/config_options/gnupg_encrypt_to_all.cs b/share/template/config_options/gnupg_encrypt_to_all.cs similarity index 100% rename from template/config_options/gnupg_encrypt_to_all.cs rename to share/template/config_options/gnupg_encrypt_to_all.cs diff --git a/template/config_options/gnupg_keycomment.cs b/share/template/config_options/gnupg_keycomment.cs similarity index 100% rename from template/config_options/gnupg_keycomment.cs rename to share/template/config_options/gnupg_keycomment.cs diff --git a/template/config_options/gnupg_keyexpires.cs b/share/template/config_options/gnupg_keyexpires.cs similarity index 100% rename from template/config_options/gnupg_keyexpires.cs rename to share/template/config_options/gnupg_keyexpires.cs diff --git a/template/config_options/gnupg_keyname.cs b/share/template/config_options/gnupg_keyname.cs similarity index 100% rename from template/config_options/gnupg_keyname.cs rename to share/template/config_options/gnupg_keyname.cs diff --git a/template/config_options/gnupg_keysize.cs b/share/template/config_options/gnupg_keysize.cs similarity index 100% rename from template/config_options/gnupg_keysize.cs rename to share/template/config_options/gnupg_keysize.cs diff --git a/template/config_options/gnupg_nokey_nocrypt.cs b/share/template/config_options/gnupg_nokey_nocrypt.cs similarity index 100% rename from template/config_options/gnupg_nokey_nocrypt.cs rename to share/template/config_options/gnupg_nokey_nocrypt.cs diff --git a/template/config_options/gnupg_require_sigs.cs b/share/template/config_options/gnupg_require_sigs.cs similarity index 100% rename from template/config_options/gnupg_require_sigs.cs rename to share/template/config_options/gnupg_require_sigs.cs diff --git a/template/config_options/gnupg_require_subscriber.cs b/share/template/config_options/gnupg_require_subscriber.cs similarity index 100% rename from template/config_options/gnupg_require_subscriber.cs rename to share/template/config_options/gnupg_require_subscriber.cs diff --git a/template/config_options/gnupg_sign_messages.cs b/share/template/config_options/gnupg_sign_messages.cs similarity index 100% rename from template/config_options/gnupg_sign_messages.cs rename to share/template/config_options/gnupg_sign_messages.cs diff --git a/template/config_options/gnupg_verified_key_required.cs b/share/template/config_options/gnupg_verified_key_required.cs similarity index 100% rename from template/config_options/gnupg_verified_key_required.cs rename to share/template/config_options/gnupg_verified_key_required.cs diff --git a/template/config_options/headeradd.cs b/share/template/config_options/headeradd.cs similarity index 100% rename from template/config_options/headeradd.cs rename to share/template/config_options/headeradd.cs diff --git a/template/config_options/headerremove.cs b/share/template/config_options/headerremove.cs similarity index 100% rename from template/config_options/headerremove.cs rename to share/template/config_options/headerremove.cs diff --git a/template/config_options/lang_select.cs b/share/template/config_options/lang_select.cs similarity index 100% rename from template/config_options/lang_select.cs rename to share/template/config_options/lang_select.cs diff --git a/template/config_options/mailman_requests.cs b/share/template/config_options/mailman_requests.cs similarity index 100% rename from template/config_options/mailman_requests.cs rename to share/template/config_options/mailman_requests.cs diff --git a/template/config_options/mainlist.cs b/share/template/config_options/mainlist.cs similarity index 100% rename from template/config_options/mainlist.cs rename to share/template/config_options/mainlist.cs diff --git a/template/config_options/mime_both.cs b/share/template/config_options/mime_both.cs similarity index 100% rename from template/config_options/mime_both.cs rename to share/template/config_options/mime_both.cs diff --git a/template/config_options/mimecheck.cs b/share/template/config_options/mimecheck.cs similarity index 100% rename from template/config_options/mimecheck.cs rename to share/template/config_options/mimecheck.cs diff --git a/template/config_options/mimereject.cs b/share/template/config_options/mimereject.cs similarity index 100% rename from template/config_options/mimereject.cs rename to share/template/config_options/mimereject.cs diff --git a/template/config_options/mimeremove.cs b/share/template/config_options/mimeremove.cs similarity index 100% rename from template/config_options/mimeremove.cs rename to share/template/config_options/mimeremove.cs diff --git a/template/config_options/mod_post.cs b/share/template/config_options/mod_post.cs similarity index 100% rename from template/config_options/mod_post.cs rename to share/template/config_options/mod_post.cs diff --git a/template/config_options/mod_post_path.cs b/share/template/config_options/mod_post_path.cs similarity index 100% rename from template/config_options/mod_post_path.cs rename to share/template/config_options/mod_post_path.cs diff --git a/template/config_options/mod_sub.cs b/share/template/config_options/mod_sub.cs similarity index 100% rename from template/config_options/mod_sub.cs rename to share/template/config_options/mod_sub.cs diff --git a/template/config_options/mod_sub_path.cs b/share/template/config_options/mod_sub_path.cs similarity index 100% rename from template/config_options/mod_sub_path.cs rename to share/template/config_options/mod_sub_path.cs diff --git a/template/config_options/msgsize_max.cs b/share/template/config_options/msgsize_max.cs similarity index 100% rename from template/config_options/msgsize_max.cs rename to share/template/config_options/msgsize_max.cs diff --git a/template/config_options/msgsize_min.cs b/share/template/config_options/msgsize_min.cs similarity index 100% rename from template/config_options/msgsize_min.cs rename to share/template/config_options/msgsize_min.cs diff --git a/template/config_options/mysql.cs b/share/template/config_options/mysql.cs similarity index 100% rename from template/config_options/mysql.cs rename to share/template/config_options/mysql.cs diff --git a/template/config_options/owner_address.cs b/share/template/config_options/owner_address.cs similarity index 100% rename from template/config_options/owner_address.cs rename to share/template/config_options/owner_address.cs diff --git a/template/config_options/prefix.cs b/share/template/config_options/prefix.cs similarity index 100% rename from template/config_options/prefix.cs rename to share/template/config_options/prefix.cs diff --git a/template/config_options/public.cs b/share/template/config_options/public.cs similarity index 100% rename from template/config_options/public.cs rename to share/template/config_options/public.cs diff --git a/template/config_options/trailer.cs b/share/template/config_options/trailer.cs similarity index 100% rename from template/config_options/trailer.cs rename to share/template/config_options/trailer.cs diff --git a/template/config_options/warn_remove.cs b/share/template/config_options/warn_remove.cs similarity index 100% rename from template/config_options/warn_remove.cs rename to share/template/config_options/warn_remove.cs diff --git a/template/config_options/webusers.cs b/share/template/config_options/webusers.cs similarity index 100% rename from template/config_options/webusers.cs rename to share/template/config_options/webusers.cs diff --git a/template/config_posting.cs b/share/template/config_posting.cs similarity index 100% rename from template/config_posting.cs rename to share/template/config_posting.cs diff --git a/template/config_processing.cs b/share/template/config_processing.cs similarity index 100% rename from template/config_processing.cs rename to share/template/config_processing.cs diff --git a/template/config_subscription.cs b/share/template/config_subscription.cs similarity index 100% rename from template/config_subscription.cs rename to share/template/config_subscription.cs diff --git a/template/footer.cs b/share/template/footer.cs similarity index 100% rename from template/footer.cs rename to share/template/footer.cs diff --git a/template/form_common.cs b/share/template/form_common.cs similarity index 100% rename from template/form_common.cs rename to share/template/form_common.cs diff --git a/template/gnupg_convert.cs b/share/template/gnupg_convert.cs similarity index 100% rename from template/gnupg_convert.cs rename to share/template/gnupg_convert.cs diff --git a/template/gnupg_generate_key.cs b/share/template/gnupg_generate_key.cs similarity index 100% rename from template/gnupg_generate_key.cs rename to share/template/gnupg_generate_key.cs diff --git a/template/gnupg_import.cs b/share/template/gnupg_import.cs similarity index 100% rename from template/gnupg_import.cs rename to share/template/gnupg_import.cs diff --git a/template/gnupg_public.cs b/share/template/gnupg_public.cs similarity index 100% rename from template/gnupg_public.cs rename to share/template/gnupg_public.cs diff --git a/template/gnupg_secret.cs b/share/template/gnupg_secret.cs similarity index 100% rename from template/gnupg_secret.cs rename to share/template/gnupg_secret.cs diff --git a/template/header.cs b/share/template/header.cs similarity index 100% rename from template/header.cs rename to share/template/header.cs diff --git a/template/help_tag_substitution.cs b/share/template/help_tag_substitution.cs similarity index 100% rename from template/help_tag_substitution.cs rename to share/template/help_tag_substitution.cs diff --git a/template/language_select.cs b/share/template/language_select.cs similarity index 100% rename from template/language_select.cs rename to share/template/language_select.cs diff --git a/template/list_create.cs b/share/template/list_create.cs similarity index 100% rename from template/list_create.cs rename to share/template/list_create.cs diff --git a/template/list_delete.cs b/share/template/list_delete.cs similarity index 100% rename from template/list_delete.cs rename to share/template/list_delete.cs diff --git a/template/list_select.cs b/share/template/list_select.cs similarity index 100% rename from template/list_select.cs rename to share/template/list_select.cs diff --git a/template/macros.cs b/share/template/macros.cs similarity index 100% rename from template/macros.cs rename to share/template/macros.cs diff --git a/template/main.cs b/share/template/main.cs similarity index 100% rename from template/main.cs rename to share/template/main.cs diff --git a/template/modpath_info.cs b/share/template/modpath_info.cs similarity index 100% rename from template/modpath_info.cs rename to share/template/modpath_info.cs diff --git a/template/nav.cs b/share/template/nav.cs similarity index 100% rename from template/nav.cs rename to share/template/nav.cs diff --git a/template/subscribers.cs b/share/template/subscribers.cs similarity index 100% rename from template/subscribers.cs rename to share/template/subscribers.cs diff --git a/template/textfile_edit.cs b/share/template/textfile_edit.cs similarity index 100% rename from template/textfile_edit.cs rename to share/template/textfile_edit.cs diff --git a/template/textfiles.cs b/share/template/textfiles.cs similarity index 100% rename from template/textfiles.cs rename to share/template/textfiles.cs diff --git a/template/ui/default/normal.hdf b/share/template/ui/default/normal.hdf similarity index 100% rename from template/ui/default/normal.hdf rename to share/template/ui/default/normal.hdf diff --git a/template/ui/gnupg/normal.hdf b/share/template/ui/gnupg/normal.hdf similarity index 100% rename from template/ui/gnupg/normal.hdf rename to share/template/ui/gnupg/normal.hdf