11 our @ISA = qw(Exporter);
12 our @EXPORT = qw(scrypt html_esc);
14 use CGI
qw(:standard :escapeHTML -nosticky);
15 use CGI
::Util
qw(unescape);
16 use CGI
::Carp
qw(fatalsToBrowser);
27 $repo->{cgi
} = CGI
->new;
29 print $repo->{cgi
}->header(-type
=>'text/html', -charset
=> 'utf-8');
32 <?xml version="1.0" encoding="utf-8"?>
33 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
34 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
37 <title>repo.or.cz :: $heading</title>
38 <link rel="stylesheet" type="text/css" href="/gitweb.css"/>
39 <link rel="shortcut icon" href="/git-favicon.png" type="image/png"/>
44 <div class="page_header">
45 <a href="http://git.or.cz/" title="Git homepage"><img src="/git-logo.png" width="72" height="27" alt="git" style="float:right; border-width:0px;"/></a>
46 <a href="/">repo.or.cz</a>
48 Administration Interface
72 print "<p style=\"text-color: red\">@_</p>\n";
78 my $err = $self->{err
};
79 $err and print "<p>Operation aborted due to $err errors.</p>\n";
86 my $val = $self->{cgi
}->param($param);
87 $val =~ s/^\s*(.*?)\s*$/$1/;
92 ### Random utility functions
96 crypt($pwd, join ('', ('.', '/', 2..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64]));
102 $str =~ s/</</g; $str =~ s/>/>/g;
103 $str =~ s/"/"/g;