X-Git-Url: http://Server1/repobrowser/?p=kiriwrite%2F.git;a=blobdiff_plain;f=cgi-files%2Finstall.cgi;h=d51ea260edff6481633439ca8fbecccdf896247f;hp=8da09f06c9ad0dd238ab5bd8040b5a2f499477ed;hb=ff0d6ced3c2cc3f9c6f601c1ac8618a9dc4ccb5a;hpb=917bf000970f6e8e95759b4975e9d5c48e738dfd diff --git a/cgi-files/install.cgi b/cgi-files/install.cgi index 8da09f0..d51ea26 100755 --- a/cgi-files/install.cgi +++ b/cgi-files/install.cgi @@ -1,12 +1,13 @@ #!/usr/bin/perl -Tw ################################################################################# -# Kiriwrite Installer Script (install.cgi) # +# Kiriwrite Installer Script (install.pl/install.cgi) # # Installation script for Kiriwrite # # # -# Version: 0.1.0 # +# Version: 0.4.0 # +# mod_perl 2.x compatabile version # # # -# Copyright (C) 2005-2007 Steve Brokenshire # +# Copyright (C) 2005-2008 Steve Brokenshire # # # # This program is free software; you can redistribute it and/or modify it under # # the terms of the GNU General Public License as published by the Free # @@ -25,9 +26,35 @@ use strict; # Throw errors if there's something wrong. use warnings; # Write warnings to the HTTP Server Log file. use utf8; -#use CGI qw(:standard *table *Tr *td); use CGI::Lite; -#use CGI::Carp('fatalsToBrowser'); # Output errors to the browser. + +eval "use CGI::Lite"; + +if ($@){ + print "Content-type: text/html;\r\n\r\n"; + print "The CGI::Lite Perl Module is not installed. Please install CGI::Lite and then run this installation script again."; + exit; +} + +# Check if mod_perl is running and if it is then add a notice to say +# that additional configuration has to be made. + +my $modperlenabled = 0; +my $installscriptname = "install.cgi"; +my $kiriwritescriptname = "kiriwrite.cgi"; + +if ($ENV{'MOD_PERL'}){ + + # MOD_PERL 2.X SPECIFIC SECTION. + + use lib ''; + chdir(''); + + $modperlenabled = 1; + $installscriptname = "install.pl"; + $kiriwritescriptname = "kiriwrite.pl"; + +} # Setup strings in specific languages. Style should be no spacing for # language title and one tabbed spacing for each string. @@ -145,6 +172,7 @@ $kiriwrite_lang{"en-GB"}{"languagename"} = "English (British)"; $kiriwrite_lang{"en-GB"}{"installertitle"} = "Kiriwrite Installer"; $kiriwrite_lang{"en-GB"}{"installertext"} = "This installer script will setup the configuration file used for Kiriwrite. The settings displayed here can be changed at a later date by selecting the Edit Settings link in the View Settings sub-menu."; + $kiriwrite_lang{"en-GB"}{"modperlnotice"} = "mod_perl has been detected. Please ensure that you have setup this script and the main Kiriwrite script so that mod_perl can use Kiriwrite properly. Please read the mod_perl specific part of Chapter 1: Installation in the Kiriwrite documentation."; $kiriwrite_lang{"en-GB"}{"dependencytitle"} = "Dependency and file testing results"; $kiriwrite_lang{"en-GB"}{"requiredmodules"} = "Required Modules"; $kiriwrite_lang{"en-GB"}{"perlmodules"} = "These Perl modules are used internally by Kiriwrite."; @@ -185,7 +213,7 @@ $kiriwrite_lang{"en-GB"}{"languagename"} = "English (British)"; $kiriwrite_lang{"en-GB"}{"installscriptremoved"} = "The installer script was removed."; $kiriwrite_lang{"en-GB"}{"installedmessage"} = "The configuration file for Kiriwrite has been written. To change the settings in the configuration file at a later date use the Edit Settings link in the View Settings sub-menu at the top of the page when using Kiriwrite."; $kiriwrite_lang{"en-GB"}{"cannotremovescript"} = "Unable to remove the installer script: %s. The installer script will have to be deleted manually."; - $kiriwrite_lang{"en-GB"}{"usekiriwritetext"} = "To use Kiriwrite click or select the link below (will not work if the Kiriwrite script is not called kiriwrite.cgi):"; + $kiriwrite_lang{"en-GB"}{"usekiriwritetext"} = "To use Kiriwrite click or select the link below (will not work if the Kiriwrite script is not called kiriwrite.cgi/kiriwrite.pl):"; $kiriwrite_lang{"en-GB"}{"usekiriwritelink"} = "Start using Kiriwrite."; my $query_lite = new CGI::Lite; @@ -998,28 +1026,28 @@ sub kiriwrite_writeconfig{ open (my $configfile, "> " . "kiriwrite.cfg"); print $configfile "[config] - directory_data_db = $passedsettings->{DatabaseDirectory} - directory_data_output = $passedsettings->{OutputDirectory} - directory_noncgi_images = $passedsettings->{ImagesURIPath} - - system_language = $passedsettings->{Language} - system_presmodule = $passedsettings->{PresentationModule} - system_dbmodule = $passedsettings->{DatabaseModule} - system_datetime = $passedsettings->{DateFormat} +directory_data_db = $passedsettings->{DatabaseDirectory} +directory_data_output = $passedsettings->{OutputDirectory} +directory_noncgi_images = $passedsettings->{ImagesURIPath} + +system_language = $passedsettings->{Language} +system_presmodule = $passedsettings->{PresentationModule} +system_dbmodule = $passedsettings->{DatabaseModule} +system_datetime = $passedsettings->{DateFormat} - display_textareacols = $passedsettings->{TextAreaCols} - display_textarearows = $passedsettings->{TextAreaRows} - display_pagecount = 50 - display_filtercount = 50 - display_templatecount = 50 +display_textareacols = $passedsettings->{TextAreaCols} +display_textarearows = $passedsettings->{TextAreaRows} +display_pagecount = 50 +display_filtercount = 50 +display_templatecount = 50 - database_server = $passedsettings->{DatabaseServer} - database_port = $passedsettings->{DatabasePort} - database_protocol = $passedsettings->{DatabaseProtocol} - database_sqldatabase = $passedsettings->{DatabaseName} - database_username = $passedsettings->{DatabaseUsername} - database_password = $passedsettings->{DatabasePassword} - database_tableprefix = $passedsettings->{DatabaseTablePrefix} +database_server = $passedsettings->{DatabaseServer} +database_port = $passedsettings->{DatabasePort} +database_protocol = $passedsettings->{DatabaseProtocol} +database_sqldatabase = $passedsettings->{DatabaseName} +database_username = $passedsettings->{DatabaseUsername} +database_password = $passedsettings->{DatabasePassword} +database_tableprefix = $passedsettings->{DatabaseTablePrefix} "; close ($configfile); @@ -1055,6 +1083,56 @@ sub kiriwrite_addtablerow{ } +sub kiriwrite_processconfig{ +################################################################################# +# kiriwrite_processconfig: Processes an INI style configuration file. # +# # +# Usage: # +# # +# kiriwrite_processconfig(data); # +# # +# data Specifies the data to process. # +################################################################################# + + my (@settings) = @_; + + my ($settings_line, %settings, $settings, $sectionname, $setting_name, $setting_value); + + foreach $settings_line (@settings){ + + next if !$settings_line; + + # Check if the first character is a bracket. + + if (substr($settings_line, 0, 1) eq "["){ + $settings_line =~ s/\[//; + $settings_line =~ s/\](.*)//; + $settings_line =~ s/\n//; + $sectionname = $settings_line; + next; + } + + $setting_name = $settings_line; + $setting_value = $settings_line; + $setting_name =~ s/\=(.*)//; + $setting_name =~ s/\n//; + $setting_value =~ s/(.*)\=//; + $setting_value =~ s/\n//; + + # Remove the spacing before and after the '=' sign. + + $setting_name =~ s/\s+$//; + $setting_value =~ s/^\s+//; + $setting_value =~ s/\r//; + + $settings{$sectionname}{$setting_name} = $setting_value; + + } + + return %settings; + +} + ################################################################################# # End list of subroutines. # ################################################################################# @@ -1628,7 +1706,7 @@ if ($http_query_confirm eq 1){ if ($http_query_removeinstallscript eq "on"){ - if (unlink("install.cgi")){ + if (unlink($installscriptname)){ $installscriptmessage = $kiriwrite_lang{$language_selected}{installscriptremoved}; @@ -1654,12 +1732,12 @@ if ($http_query_confirm eq 1){ print "

\n"; print $installscriptmessage; - } + } print "

\n"; print $kiriwrite_lang{$language_selected}{usekiriwritetext}; print "

\n"; - print "$kiriwrite_lang{$language_selected}{usekiriwritelink}"; + print "$kiriwrite_lang{$language_selected}{usekiriwritelink}"; print "\n"; exit; @@ -1702,10 +1780,6 @@ my $presentation_file_friendly; # Check to see if the needed Perl modules are installed. -$test_list{CheckConfigAuto}{Name} = "Config::Auto"; -$test_list{CheckConfigAuto}{Type} = "dependency"; -$test_list{CheckConfigAuto}{Code} = "Config::Auto"; - $test_list{CheckDBI}{Name} = "DBI"; $test_list{CheckDBI}{Type} = "dependency"; $test_list{CheckDBI}{Code} = "DBI"; @@ -1742,11 +1816,6 @@ $test_list{LanguageDirectory}{Type} = "file"; $test_list{LanguageDirectory}{Code} = "lang"; $test_list{LanguageDirectory}{Writeable} = "0"; -$test_list{LibraryDirectory}{Name} = "Library Directory (lib)"; -$test_list{LibraryDirectory}{Type} = "file"; -$test_list{LibraryDirectory}{Code} = "lib"; -$test_list{LibraryDirectory}{Writeable} = "0"; - $test_list{ModulesDirectory}{Name} = "Modules Directory (Modules)"; $test_list{ModulesDirectory}{Type} = "file"; $test_list{ModulesDirectory}{Code} = "Modules"; @@ -1762,6 +1831,11 @@ $test_list{PresModulesDirectory}{Type} = "file"; $test_list{PresModulesDirectory}{Code} = "Modules/Presentation"; $test_list{PresModulesDirectory}{Writeable} = "0"; +$test_list{SystemModulesDirectory}{Name} = "System Modules Directory (Modules/System)"; +$test_list{SystemModulesDirectory}{Type} = "file"; +$test_list{SystemModulesDirectory}{Code} = "Modules/System"; +$test_list{SystemModulesDirectory}{Writeable} = "0"; + # Preform those tests. foreach $test (keys %test_list){ @@ -1888,11 +1962,17 @@ foreach $language_name_short (@language_list_short){ $installlanguage_out = $installlanguage_out . "\n"; -kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{installertitle}, "languagebar", "
\n$installlanguage_out\n\n
\n", "languagebarselect"); +kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{installertitle}, "languagebar", "
\n$installlanguage_out\n\n
\n", "languagebarselect"); print ""; print "

$kiriwrite_lang{$language_selected}{installertitle}

\n"; print $kiriwrite_lang{$language_selected}{installertext}; + +if ($modperlenabled eq 1){ + print "

"; + print $kiriwrite_lang{$language_selected}{modperlnotice}; +} + print "

$kiriwrite_lang{$language_selected}{dependencytitle}

\n"; print "

$kiriwrite_lang{$language_selected}{requiredmodules}

\n"; print $kiriwrite_lang{$language_selected}{perlmodules}; @@ -1922,6 +2002,8 @@ print "

$kiriwrite_lang{$language_selected}{databasemodules}

\n"; print $kiriwrite_lang{$language_selected}{databasemodulestext}; print "

\n"; +print "\n"; + if ($database_error eq 1){ print $kiriwrite_lang{$language_selected}{warningmessage}; @@ -2000,7 +2082,9 @@ my (%available_languages, $available_languages); my @presentation_modules; my @database_modules; my $select_data = ""; -my $language_data; +my (%language_data, $language_data); +my @lang_data; +my $kiriwrite_languagefilehandle; my $language_out = ""; my ($presmodule_name, $presmodule_out) = ""; my ($dbmodule_name, $dbmodule_out) = ""; @@ -2017,17 +2101,17 @@ foreach my $language_file (@language_directory){ # Load the language file. - $language_data = Config::Auto::parse("lang/" . $language_file, format => "ini"); - - # Load the XML data. - #$language_xml_data = $xsl->XMLin("lang/" . $language_file); + open ($kiriwrite_languagefilehandle, "lang/" . $language_file); + @lang_data = <$kiriwrite_languagefilehandle>; + %language_data = kiriwrite_processconfig(@lang_data); + close ($kiriwrite_languagefilehandle); # Get the friendly name for the language file. $language_file_friendly = $language_file; $language_file_friendly =~ s/.lang$//g; - $language_name = $language_data->{about}->{name}; + $language_name = $language_data{about}{name}; $available_languages{$language_file_friendly} = $language_name . " (" . $language_file_friendly . ")"; @@ -2067,13 +2151,13 @@ print "

$kiriwrite_lang{$language_selected}{settingstitle}

"; print $kiriwrite_lang{$language_selected}{settingstext}; print "

\n"; -print ""; +print ""; print "\n\n"; print "
"; kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{setting}, "tablecellheader", $kiriwrite_lang{$language_selected}{value}, "tablecellheader"); kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{directories}, "tablecellheader", "", "tablecellheader"); -kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{databasedirectory}, "tablname", "", "tabledata"); +kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{databasedirectory}, "tablename", "", "tabledata"); kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{outputdirectory}, "tablename", "", "tabledata"); kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{imagesuripath}, "tablename", "", "tabledata"); kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{display}, "tablecellheader", "", "tablecellheader"); @@ -2085,7 +2169,7 @@ foreach my $select_name (@datetime_formats){ $select_data = $select_data . "\n"; } -kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{dateformat}, "tablename", "\n", "tabledata"); +kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{dateformat}, "tablename", "\n", "tabledata"); kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{language}, "tablecellheader", "", "tablecellheader"); foreach my $language (keys %available_languages){ @@ -2096,7 +2180,7 @@ foreach my $language (keys %available_languages){ } } -kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{systemlanguage}, "tablename", $language_out, "tabledata"); +kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{systemlanguage}, "tablename", "", "tabledata"); kiriwrite_addtablerow($kiriwrite_lang{$language_selected}{modules}, "tablecellheader", "", "tablecellheader"); foreach $presmodule_name (@presentation_modules){ $presmodule_out = $presmodule_out . "";