generated from coulomb/repo-seed
Adopt CoulombSocial/HelixForge/MarkiTect documentation structure: - research/260608-yawex-prior-art/ — yawex exploration and sources - demand/ — inbound NetKingdom integration requirements - spec/ — PRD, TSD, UseCaseCatalog, ArchitectureBlueprint scaffolds - docs/ — stakeholder documentation and repository-layout guide - wiki/, issues/, history/ — scaffolded directories Add SCOPE.md and AGENTS.md. Update workplan paths and README.
139 lines
3.6 KiB
Perl
Executable File
139 lines
3.6 KiB
Perl
Executable File
#!/usr/bin/perl -w
|
|
#
|
|
# main cgiscript for yawex
|
|
#
|
|
# $Header: /var/local/cvs/yawex/bin/yawex.pl,v 1.3 2004/10/03 14:24:08 bernd Exp $
|
|
#
|
|
|
|
use strict;
|
|
|
|
use CGI qw/:standard/;
|
|
use CGI::Carp 'fatalsToBrowser';
|
|
$CGI::POST_MAX=1024 * 100; # max 100k POSTs
|
|
$CGI::DISABLE_UPLOADS = 1; # no uploads
|
|
|
|
use Yawex::PageLookUp;
|
|
use Yawex::PageActions;
|
|
use Yawex::Page;
|
|
use Yawex::Auth;
|
|
use Yawex::Errors;
|
|
use Yawex::Debug;
|
|
use Conf::TestWiki;
|
|
|
|
print header();
|
|
|
|
#die und warn sauber abhandeln
|
|
$SIG{__DIE__} = $SIG{__WARN__} =
|
|
sub {
|
|
Yawex::Errors::handler(@_);
|
|
};
|
|
|
|
#laufzeit begrenzen
|
|
alarm(20);
|
|
|
|
#check for POST size error
|
|
my $dummy = param('dummy');
|
|
if (cgi_error()) {
|
|
print header(-status => cgi_error());
|
|
exit 0;
|
|
}
|
|
|
|
#arbeitsverzeichnis setzen
|
|
chdir "testwiki" ||
|
|
chdir "/var/www/bernd-worsch.de/friendswiki/pages" ||
|
|
chdir "/var/www/testwiki/pages" ||
|
|
instant_install();
|
|
|
|
#umask setzen
|
|
umask 0000;
|
|
|
|
#request hash initialisieren
|
|
#
|
|
#simpler wäre es mit der CGI param() Funktion weiter zu arbeiten.
|
|
#kann aber nicht sagen wie ich dann action und page parameter
|
|
#modifiziert bekomme :(
|
|
#
|
|
my %request = ();
|
|
foreach (param()) {
|
|
$request{$_} = param($_);
|
|
}
|
|
|
|
$request{'full_url'} = url();
|
|
$request{'relative_url'} = url(-relative=>1);
|
|
$request{'absolute_url'} = url(-absolute=>1);
|
|
$request{'url_with_path'} = url(-path_info=>1);
|
|
$request{'url_with_path_and_query'} = url(-path_info=>1, -query=>1);
|
|
$request{'netloc'} = url(-base=>1);
|
|
|
|
$request{'referer'} = referer() || $Conf::default_referer;
|
|
$request{'user'} = Yawex::Auth::resolve_user(remote_user());
|
|
|
|
$request{'debug'} = param('debug');
|
|
unless ($request{'debug'} && ($request{'debug'} == 1)) {
|
|
if ($request{'referer'} =~ /debug=1/) {
|
|
$request{'debug'} = 1;
|
|
}
|
|
}
|
|
|
|
Yawex::Debug::show_request(\%request, "raw") if $request{'debug'};
|
|
|
|
sub instant_install {
|
|
print "Welcome to Yawex!";
|
|
print header(), "Sorry 'instant_install()' not implemented. Exiting!";
|
|
exit 0;
|
|
}
|
|
|
|
sub lastpage {
|
|
my $result;
|
|
if ($request{'referer'} =~ /page=([^&]+)/) {
|
|
$result = $1;
|
|
} else {
|
|
$result = "UnknownPage"; #fake name of lastpage if necessary
|
|
}
|
|
if (-d $result) {
|
|
$result .= "/$result";
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
# resolve action and page (needs cleanup)
|
|
if ($request{'relative_url'} eq 'register') {
|
|
$request{'page'} = "NewUser";
|
|
$request{'relative_url'} = $Conf::publicurl;
|
|
} elsif (exists $request{'form_quicksearch'} && $request{'form_quicksearch'}) {
|
|
#todo: jump to page if appropriate
|
|
#$request{'page'} = $request{'form_quicksearch'};
|
|
#$request{'action'} = "open";
|
|
$request{'page'} = Yawex::Page::topic($request{'page'}) . "/SearchPage";
|
|
$request{'action'} = "open";
|
|
delete $request{'form-button'};
|
|
} else {
|
|
$request{'page'} = param('page') || param('newpage');
|
|
}
|
|
|
|
$request{'lastpage'} = lastpage();
|
|
Yawex::Debug::show_request(\%request, "1") if $request{'debug'};
|
|
|
|
Yawex::PageActions::resolve_action(\%request);
|
|
Yawex::Debug::show_request(\%request, "action resolved") if $request{'debug'};
|
|
|
|
my $original_page = $request{'page'};
|
|
($request{'state'}, $request{'page'}) =
|
|
Yawex::PageLookUp::lookup_page($request{'page'}, $request{'lastpage'});
|
|
if ($request{'state'} == 8) { # do not change to virtual pages
|
|
$request{'virtualpage'} = $request{'page'};
|
|
$request{'page'} = $original_page;
|
|
}
|
|
|
|
Yawex::Debug::show_request(\%request, "page resolved") if $request{'debug'};
|
|
|
|
# what to do when page resolution failed
|
|
if ($request{'state'} == 0 && $request{'action'} ne 'create') {
|
|
$request{'action'} = 'new';
|
|
Yawex::Debug::show_request(\%request, "unknown page") if $request{'debug'};
|
|
}
|
|
|
|
eval('Yawex::PageActions::action_'.$request{'action'}.'(\%request)');
|
|
|
|
|