X-Git-Url: https://git.ladys.computer/Gitweb/blobdiff_plain/4e9ecec7d47d702842e65bcb4e285675c934f2a8e8f750645ff7717f4ae06d2b..8638fe551d849f1559031458d3fbf0a439210b1e3b798e2f522692a11b8bc546:/gitweb.cgi diff --git a/gitweb.cgi b/gitweb.cgi index ee86379..1b14382 100755 --- a/gitweb.cgi +++ b/gitweb.cgi @@ -9,12 +9,13 @@ use strict; use warnings; -use CGI qw(:standard :escapeHTML); +use CGI qw(:standard :escapeHTML -nosticky); +use CGI::Util qw(unescape); use CGI::Carp qw(fatalsToBrowser); use Fcntl ':mode'; my $cgi = new CGI; -my $version = "121"; +my $version = "205"; my $my_url = $cgi->url(); my $my_uri = $cgi->url(-absolute => 1); my $rss_link = ""; @@ -26,19 +27,22 @@ my $projectroot = "/pub/scm"; my $gitbin = "/usr/bin"; # location for temporary files needed for diffs -my $gittmp = "/tmp/gitweb"; +my $git_temp = "/tmp/gitweb"; # target of the home link on top of all pages -my $home_link = "/git"; +my $home_link = $my_uri; + +# html text to include at home page +my $home_text = "indextext.html"; # source of projects list #my $projects_list = $projectroot; -my $projects_list = "index/index.txt"; +my $projects_list = "index/index.aux"; # input validation and dispatch my $action = $cgi->param('a'); if (defined $action) { - if ($action =~ m/[^0-9a-zA-Z\.\-]+/) { + if ($action =~ m/[^0-9a-zA-Z\.\-_]+/) { undef $action; die_error(undef, "Invalid action parameter."); } @@ -47,7 +51,7 @@ if (defined $action) { exit; } } else { - $action = "log"; + $action = "summary"; } my $project = $cgi->param('p'); @@ -69,9 +73,9 @@ if (defined $project) { die_error(undef, "No such project."); } $rss_link = ""; - $ENV{'SHA1_FILE_DIRECTORY'} = "$projectroot/$project/objects"; + $ENV{'GIT_OBJECT_DIRECTORY'} = "$projectroot/$project/objects"; } else { - git_project_list($projects_list); + git_project_list(); exit; } @@ -113,9 +117,31 @@ if (defined $time_back) { } } -if ($action eq "blob") { + +my $searchtext = $cgi->param('s'); +if (defined $searchtext) { + if ($searchtext =~ m/[^a-zA-Z0-9_\.\/\-\+\:\@ ]/) { + undef $searchtext; + die_error(undef, "Invalid search parameter."); + } + $searchtext = quotemeta $searchtext; +} + +if ($action eq "summary") { + git_summary(); + exit; +} elsif ($action eq "branches") { + git_branches(); + exit; +} elsif ($action eq "tags") { + git_tags(); + exit; +} elsif ($action eq "blob") { git_blob(); exit; +} elsif ($action eq "blob_plain") { + git_blob_plain(); + exit; } elsif ($action eq "tree") { git_tree(); exit; @@ -131,12 +157,24 @@ if ($action eq "blob") { } elsif ($action eq "blobdiff") { git_blobdiff(); exit; +} elsif ($action eq "blobdiff_plain") { + git_blobdiff_plain(); + exit; } elsif ($action eq "commitdiff") { git_commitdiff(); exit; +} elsif ($action eq "commitdiff_plain") { + git_commitdiff_plain(); + exit; } elsif ($action eq "history") { git_history(); exit; +} elsif ($action eq "search") { + git_search(); + exit; +} elsif ($action eq "shortlog") { + git_shortlog(); + exit; } else { undef $action; die_error(undef, "Unknown action."); @@ -163,49 +201,42 @@ sub git_header_html { $title $rss_link