blob: 3d1a552478ed778f7d0136083e906e3b92b70f39 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
#! @PERL@
#
# 1999 (c) Piotr Roszatycki <dexter@debian.org>
# This software is under GNU license
# last modification: 1999-12-08
#
# deba
sub quote {
$_ = shift(@_);
s/([^\w\/.+-])/\\$1/g;
return($_);
}
sub list
{
my($qarchive)=@_;
$qarchive = quote($qarchive);
chop($date=`LC_ALL=C date "+%m-%d-%Y %H:%M"`);
chop($info_size=`apt-cache show $qarchive | wc -c`);
$install_size=length($pressinstall);
$upgrade_size=length($pressupgrade);
print "-r--r--r-- 1 root root $info_size $date INFO\n";
chop($debd = `dpkg -s $qarchive | grep -i ^Version | sed 's/^version: //i'`);
chop($deba = `apt-cache show $qarchive | grep -i ^Version | sed 's/^version: //i'`);
if( ! $debd ) {
print "-r-xr--r-- 1 root root $install_size $date INSTALL\n";
} elsif( $debd ne $deba ) {
print "-r-xr--r-- 1 root root $upgrade_size $date UPGRADE\n";
}
}
sub copyout
{
my($archive,$filename,$destfile)=@_;
my $qarchive = quote($archive);
my $qdestfile = quote($destfile);
if($filename eq "INFO") {
system("apt-cache show $qarchive > $qdestfile");
} elsif($filename eq "INSTALL") {
if ( open(FILEOUT, "> $destfile") ) {
print FILEOUT $pressinstall;
close FILEOUT;
system("chmod a+x $qdestfile");
}
} elsif($filename eq "UPGRADE") {
if ( open(FILEOUT, ">, $destfile") ) {
print FILEOUT $pressupgrade;
close FILEOUT;
system("chmod a+x $qdestfile");
}
} else {
die "extfs: $filename: No such file or directory\n";
}
}
sub run
{
my($archive,$filename)=@_;
my $qarchive = quote($archive);
if($filename eq "INSTALL") {
system("apt-get install $qarchive");
} elsif($filename eq "UPGRADE") {
system("apt-get install $qarchive");
} else {
die "extfs: $filename: Permission denied\n";
}
}
$pressinstall=<<EOInstall;
WARNING
Don\'t use this method if you are not willing to install this package...
This is not a real file. It is a way to install the package you are browsing.
To install this package go back to the panel and press Enter on this file.
EOInstall
$pressupgrade=<<EOInstall;
WARNING
Don\'t use this method if you are not willing to upgrade this package...
This is not a real file. It is a way to upgrade the package you are browsing.
To upgrade this package go back to the panel and press Enter on this file.
EOInstall
umask 077;
chop($name = `if [ -f "$ARGV[1]" ]; then cat $ARGV[1]; else echo $ARGV[1]; fi`);
$name =~ s%.*/([0-9a-z.-]*)_.*%$1%;
exit 1 unless $name;
if($ARGV[0] eq "list") { &list($name); exit 0; }
elsif($ARGV[0] eq "copyout") { ©out($name,$ARGV[2],$ARGV[3]); exit 0; }
elsif($ARGV[0] eq "run") { &run($name,$ARGV[2]); exit 0; }
exit 1;
|