]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
use protocol defined in server-list.db for mirror communication
authorPeter Müller <peter.mueller@link38.eu>
Wed, 28 Mar 2018 03:41:50 +0000 (05:41 +0200)
committerMichael Tremer <michael.tremer@ipfire.org>
Wed, 28 Mar 2018 15:42:21 +0000 (16:42 +0100)
For each mirror server, a protocol can be specified in the
server-list.db database. However, it was not used for the
actual URL query to a mirror before.

This might be useful for deploy HTTPS pinning for Pakfire.
If a mirror is known to support HTTPS, all queries to it
will be made with this protocol.

This saves some overhead if HTTPS is enforced on a mirror
via 301 redirects. To enable this, the server-list.db
needs to be adjusted.

The second version of this patch only handles protocols
HTTP and HTTPS, since we do not expect anything else here
at the moment.

Partially fixes #11661.

Signed-off-by: Peter Müller <peter.mueller@link38.eu>
Cc: Michael Tremer <michael.tremer@ipfire.org>
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/pakfire/lib/functions.pl

index c97d4254dc8aa17578e3533208db7015fb88bacc..6cc1771285c8696b9d504ffc7a1c02a7d2e36b7d 100644 (file)
@@ -31,6 +31,8 @@ use HTTP::Message;
 use HTTP::Request;
 use Net::Ping;
 
+use Switch;
+
 package Pakfire;
 
 # A small color-hash :D
@@ -172,7 +174,18 @@ sub fetchfile {
                }
 
                $final_data = undef;
-               my $url = "http://$host/$file";
+
+               my $url;
+               switch ($proto) {
+                       case "HTTP" { $url = "http://$host/$file"; }
+                       case "HTTPS" { $url = "https://$host/$file"; }
+                       else {
+                               # skip all lines with unknown protocols
+                               logger("DOWNLOAD WARNING: Skipping Host: $host due to unknown protocol ($proto) in mirror database");
+                               next;
+                       }
+               }
+
                my $response;
                
                unless ($bfile =~ /^counter.py\?.*/) {