mirror of
git://git.code.sf.net/p/xtables-addons/xtables-addons
synced 2025-09-06 20:55:13 +02:00
Add support for external tarballs
Signed-off-by: Jan Engelhardt <jengelh@computergmbh.de>
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -12,6 +12,8 @@ Makefile
|
|||||||
Makefile.in
|
Makefile.in
|
||||||
Module.symvers
|
Module.symvers
|
||||||
|
|
||||||
|
/downloads
|
||||||
|
|
||||||
/aclocal.m4
|
/aclocal.m4
|
||||||
/autom4te*.cache
|
/autom4te*.cache
|
||||||
/compile
|
/compile
|
||||||
|
29
README
29
README
@@ -8,3 +8,32 @@ package.
|
|||||||
Xtables-addons is different from patch-o-matic in that you do not have
|
Xtables-addons is different from patch-o-matic in that you do not have
|
||||||
to patch or recompile either kernel or Xtables(iptables). But please
|
to patch or recompile either kernel or Xtables(iptables). But please
|
||||||
see the INSTALL file for the minimum requirements of this package.
|
see the INSTALL file for the minimum requirements of this package.
|
||||||
|
|
||||||
|
|
||||||
|
External extensions
|
||||||
|
===================
|
||||||
|
|
||||||
|
The program "xa-download-more" can be used to download more extensions
|
||||||
|
from 3rd parties into the source tree. The URLs are listed in the
|
||||||
|
"sources" file. If the "sources" file contains an entry like
|
||||||
|
|
||||||
|
http://foobar.org/xa/
|
||||||
|
|
||||||
|
xa-download-more will inspect http://foobar.org/xa/xa-index.txt for files
|
||||||
|
to download. That file may contain
|
||||||
|
|
||||||
|
foobar.tar.bz2
|
||||||
|
|
||||||
|
and xa-download-more will then retrieve and unpack
|
||||||
|
http://foobar.org/xa/foobar.tar.bz2.
|
||||||
|
|
||||||
|
Files that should be contained in the tarball are an mconfig and Kbuild
|
||||||
|
files to control building the extension, libxt_foobar.c for the userspace
|
||||||
|
extension and xt_foobar.c for the kernel extension.
|
||||||
|
|
||||||
|
mconfig.foobar
|
||||||
|
extensions/Kbuild.foobar
|
||||||
|
extensions/libxt_foobar.c
|
||||||
|
extensions/libxt_foobar.man
|
||||||
|
extensions/xt_foobar.c
|
||||||
|
extensions/xt_foobar.h
|
||||||
|
83
xa-download-more
Executable file
83
xa-download-more
Executable file
@@ -0,0 +1,83 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
use HTTP::Request;
|
||||||
|
use LWP::UserAgent;
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
&main(\@ARGV);
|
||||||
|
|
||||||
|
sub main ($)
|
||||||
|
{
|
||||||
|
local *FH;
|
||||||
|
|
||||||
|
if (!-d "downloads") {
|
||||||
|
if (!mkdir("downloads")) {
|
||||||
|
die "Could not create downloads/ directory";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
open(FH, "<sources");
|
||||||
|
while (defined($_ = <FH>)) {
|
||||||
|
chomp $_;
|
||||||
|
$_ =~ s/#.*//gs;
|
||||||
|
$_ =~ s/^\s+|\s+$//gs;
|
||||||
|
if (length($_) == 0) {
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
&process_index($_);
|
||||||
|
}
|
||||||
|
|
||||||
|
close FH;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub process_index ($)
|
||||||
|
{
|
||||||
|
my $top = shift @_;
|
||||||
|
my($agent, $res, $url);
|
||||||
|
local *FH;
|
||||||
|
|
||||||
|
$agent = LWP::UserAgent->new();
|
||||||
|
$agent->env_proxy();
|
||||||
|
|
||||||
|
$url = &slash_remove("$top/xa-index.txt");
|
||||||
|
print " GET $url\n";
|
||||||
|
$res = $agent->get($url);
|
||||||
|
if (!$res->is_success()) {
|
||||||
|
print STDERR " `-> ", $res->status_line(), "\n";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach my $ext (split(/\s+/, $res->content())) {
|
||||||
|
my($ex_url, $ex_res);
|
||||||
|
|
||||||
|
$ex_url = &slash_remove("$top/$ext");
|
||||||
|
print " GET $ex_url\n";
|
||||||
|
|
||||||
|
$ex_res = $agent->mirror($ex_url, "downloads/$ext");
|
||||||
|
if ($ex_res->code() == 304) {
|
||||||
|
# "Not modified" = up to date
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
if (!$ex_res->is_success()) {
|
||||||
|
print STDERR " `-> ", $ex_res->status_line(), "\n";
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
|
||||||
|
print " UNPACK downloads/$ext\n";
|
||||||
|
system "tar", "-xjf", "downloads/$ext";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub slash_remove ($)
|
||||||
|
{
|
||||||
|
my $s = shift @_;
|
||||||
|
$s =~ s{(\w+://)(.*)}{$1.&slash_remove2($2)}eg;
|
||||||
|
return $s;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub slash_remove2 ($)
|
||||||
|
{
|
||||||
|
my $s = shift @_;
|
||||||
|
$s =~ s{/+}{/}g;
|
||||||
|
return $s;
|
||||||
|
}
|
Reference in New Issue
Block a user