--- suikawiki/script/wiki.cgi 2003/01/01 12:30:24 1.44 +++ suikawiki/script/wiki.cgi 2003/01/02 00:34:04 1.45 @@ -18,7 +18,7 @@ form => qr/\[\[\#form(?:\(([A-Za-z0-9-]+)\))?:'((?:[^'\\]|\\.)*)':'((?:[^'\\]|\\.)*)'(?::'((?:[^'\\]|\\.)*)')?\]\]/, ); our ($modifier_dbtype,$url_cgi,%uri,%PathTo,$use_exists); -our (%PageName,$kanjicode,$lang,%fixedpage); +our (%PageName,$kanjicode,$lang,%FixedPage); ############################## my $info_LastModified = 'LastModified'; @@ -33,14 +33,12 @@ my %page_command = ( $PageName{IndexPage} => 'index', $PageName{RssPage} => 'rss', - AdminChangePassword => 'adminchangepasswordform', ); my %command_do = ( read => \&do_read, TEXT_CSS => \&do_output_css, edit => \&do_edit, adminedit => \&do_adminedit, - adminchangepasswordform => \&do_adminchangepasswordform, adminchangepassword => \&do_adminchangepassword, write => \&do_write, index => \&do_index, @@ -93,7 +91,7 @@ #print "\n". gmtime."Body...\n"; &print_content ($content, content_format => $cf, last_modified => $lm, -toc => \@toc); - print &text_to_html (q([[#comment]])) if $cf !~ /obsoleted="yes"/ && !$fixedpage{$form{mypage}}; + print &text_to_html (q([[#comment]])) if $cf !~ /obsoleted="yes"/ && !$FixedPage{$form{mypage}}; } else { &print_header($form{mypage}, -expires => time + 120, -last_modified => $lm); print "
@{[&escape($content)]}
"; @@ -141,10 +139,10 @@ sub do_edit { my ($page) = &unarmor_name(&armor_name($form{mypage})); if (not &is_editable($page)) { - &print_header($page, -noindex => 1); + &print_header($page, -noindex => 1, -expires => time+60); &print_message(&Resource('Error:ThisPageIsUneditable')); } elsif (&is_frozen($page)) { - &print_header($page, -noindex => 1); + &print_header($page, -noindex => 1, -expires => time+60); &print_message(&Resource('Error:ThisPageIsUneditable')); } else { &print_header($page, -noindex => 1, -expires => time+60); @@ -166,7 +164,7 @@ sub do_adminedit { my ($page) = &unarmor_name(&armor_name($form{mypage})); - &print_header($page, -noindex => 1); + &print_header($page, -noindex => 1, -expires => time+60); if (not &is_editable($page)) { &print_message(&Resource('Error:ThisPageIsUneditable')); } else { @@ -176,12 +174,6 @@ &print_footer($page); } -sub do_adminchangepasswordform { - &print_header('AdminChangePassword', -noindex => 1); - &print_passwordform; - &print_footer('AdminChangePassword'); -} - sub do_adminchangepassword { if ($form{mynewpassword} ne $form{mynewpassword2}) { &print_error(&Resource('Error:PasswordMismatch')); @@ -189,11 +181,6 @@ my ($validpassword_crypt) = &get_info($PageName{AdminSpecialPage}, 'AdminPassword'); if ($validpassword_crypt) { if (not &valid_password($form{myoldpassword})) { -# &send_mail_to_admin(<<"EOD", "AdminChangePassword"); -#myoldpassword=$form{myoldpassword} -#mynewpassword=$form{mynewpassword} -#mynewpassword2=$form{mynewpassword2} -#EOD &print_error(&Resource('Error:PasswordIsIncorrect')); } } @@ -209,6 +196,11 @@ &print_footer('CompletedSuccessfully'); } +sub valid_password ($) { + my ($validpassword_crypt) = &get_info($PageName{AdminSpecialPage}, 'AdminPassword'); + return crypt (shift, $validpassword_crypt) eq $validpassword_crypt ? 1 : 0; +} + sub do_index { wiki::referer::add ($form{mypage}, $ENV{HTTP_REFERER}); wiki::useragent::add ($ENV{HTTP_USER_AGENT}); @@ -259,7 +251,6 @@ if ($form{mymsg}) { $database{$form{mypage}} = $form{mymsg}; - #&send_mail_to_admin($form{mypage}, "Modify"); if ($form{mytouch}) { &set_info($form{mypage}, $info_LastModified, time); &update_recent_changes; @@ -277,7 +268,6 @@ &print_content(&Resource('Error:ContinueReading')." @{[&armor_name($form{mypage})]}"); &print_footer('CompletedSuccessfully'); } else { - #&send_mail_to_admin($form{mypage}, "Delete"); delete $database{$form{mypage}}; delete $infobase{$form{mypage}}; if ($form{mytouch}) { @@ -460,8 +450,8 @@ sub print_footer { my ($page, $lm) = @_; my $epage = &encode ($page); - my $cvslog1 = q$Revision: 1.44 $; - my $cvslog2 = q$Date: 2003/01/01 12:30:24 $; + my $cvslog1 = q$Revision: 1.45 $; + my $cvslog2 = q$Date: 2003/01/02 00:34:04 $; print_navigate_links ($page); print <<"EOD"; @{[ $lm ? qq(
@{[&Resource('LastModified=',escape=>1)]}@{[&_rfc3339_date ($lm)]}
) : '' ]} @@ -751,7 +741,7 @@ $param->{output}->{form} = 1 unless defined $param->{output}->{form}; $definition .= ' %submit;' if $definition !~ /%submit/ && !$param->{output}->{nosubmit} && $param->{output}->{form}; my $target_page = $param->{output}->{page} || $form{mypage}; - $param->{form_disabled} = 1 if $fixedpage{$target_page}; + $param->{form_disabled} = 1 if $FixedPage{$target_page}; my $target_form = $param->{output}->{id}; my $r = ''; $r = <{output}->{form}; @@ -952,8 +942,6 @@ $magic = $1 if $mymsg =~ m/^([^\x0A\x0D]+)/s; my $edit = $mode{admin} ? 'adminedit' : 'edit'; - my $escapedmypage = &escape($form{mypage}); - my $escapedmypassword = &escape($form{mypassword}); my $selected = 'read'; if ($form{after_edit_cmd}) { $selected = $form{after_edit_cmd}; @@ -971,11 +959,11 @@

@{[&Resource('Edit:Title',escape=>1)]}

@{[ $mode{conflict} ? '' : qq(S) ]} - @{[ $mode{admin} ? qq() : "" ]} [@{[do {my $n = 0; + @{[ $mode{admin} ? qq() : "" ]} [@{[do {my $n = 0; $mymsg =~ s/(?:-+\s)?\[([0-9]+)\]/$n = $1 if $1 > $n; $&/mge; ++$n}]}]
- +
@{[ $mode{admin} ? @@ -987,11 +975,10 @@ @{[ $mode{conflict} ? "" : qq( - @{[&Resource('Edit:UpdateTimeStamp',escape=>1)]}
+
- S + $afteredit -
) ]}
@@ -1004,21 +991,9 @@ } } -sub print_passwordform { - print <<"EOD"; -
- -
-
-
-
-
-EOD -} - sub is_editable { my ($page) = @_; - if ($fixedpage{$page} || $page =~ /\s/ || $page =~ /^\#/) { + if ($FixedPage{$page} || $page =~ /\s/ || $page =~ /^\#/) { return 0; } else { return 1; @@ -1129,16 +1104,6 @@ } } -sub valid_password { - my ($givenpassword) = @_; - my ($validpassword_crypt) = &get_info($PageName{AdminSpecialPage}, 'AdminPassword'); - if (crypt($givenpassword, $validpassword_crypt) eq $validpassword_crypt) { - return 1; - } else { - return 0; - } -} - sub is_frozen { my ($page) = @_; if (&get_info($page, $info_IsFrozen)) { @@ -1536,13 +1501,15 @@ } package wiki::useragent; +our $UseLog; sub add ($) { my $s = shift; return unless length $s; + return unless $UseLog; $s =~ s/([\x00-\x08\x0A-\x1F\x25\x7F-\xFF])/sprintf '%%%02X', unpack 'C', $1/ge; my %ua; - for (split /\n/, &main::__get_database('WikiUserAgentList')) { + for (split /\n/, &main::__get_database($main::PageName{UserAgentList})) { if (/^-\[(\d+)\] (.+)$/) { my ($t, $n) = ($1, $2); $n =~ tr/\x0A\x0D//d; @@ -1554,7 +1521,7 @@ for (sort {$ua{$a} <=> $ua{$b}} keys %ua) { $s .= sprintf qq(-[%d] %s\n), $ua{$_}, $_; } - &main::__set_database ('WikiUserAgentList' => $s); + &main::__set_database ($main::PageName{UserAgentList} => $s); } package wiki::suikawikiconst;