]> git.proxmox.com Git - pve-http-server.git/commitdiff
move read_proxy_conf from PVE::API2Tools to new Utils module
authorStoiko Ivanov <s.ivanov@proxmox.com>
Fri, 22 Feb 2019 18:51:59 +0000 (19:51 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Tue, 26 Feb 2019 06:05:12 +0000 (07:05 +0100)
move the read_proxy_conf method into a new perl module
'PVE::APIServer::Utils'.
It now takes the proxy_name (e.g. pveproxy, pmgproxy) as variable to be used
for the configfile location (/etc/default/$proxy_name)

This serves as preparation to make pmgproxy configurable in the same way as
pveproxy.

Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
Makefile
PVE/APIServer/AnyEvent.pm [changed mode: 0755->0644]
PVE/APIServer/Utils.pm [new file with mode: 0644]

index 5c5b0884b6ac856218d7a1514cde4adb0f79911f..e23ee976e308378cc017b3ae76faecc43dcb7cc2 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -57,6 +57,7 @@ install: ${BTDATA}
        install -d -m 755 ${PERL5DIR}/PVE/APIServer
        install -m 0644 PVE/APIServer/AnyEvent.pm ${PERL5DIR}/PVE/APIServer
        install -m 0644 PVE/APIServer/Formatter.pm ${PERL5DIR}/PVE/APIServer
+       install -m 0644 PVE/APIServer/Utils.pm ${PERL5DIR}/PVE/APIServer
        install -d -m 755 ${PERL5DIR}/PVE/APIServer/Formatter
        install -m 0644 PVE/APIServer/Formatter/Standard.pm ${PERL5DIR}/PVE/APIServer/Formatter
        install -m 0644 PVE/APIServer/Formatter/Bootstrap.pm ${PERL5DIR}/PVE/APIServer/Formatter
old mode 100755 (executable)
new mode 100644 (file)
diff --git a/PVE/APIServer/Utils.pm b/PVE/APIServer/Utils.pm
new file mode 100644 (file)
index 0000000..36b9c1f
--- /dev/null
@@ -0,0 +1,55 @@
+package PVE::APIServer::Utils;
+
+use strict;
+use warnings;
+
+use Net::IP;
+
+sub read_proxy_config {
+    my ($proxy_name) = @_;
+
+    my $conffile = "/etc/default/$proxy_name";
+
+    # Note: evaluate with bash
+    my $shcmd = ". $conffile;\n";
+    $shcmd .= 'echo \"ALLOW_FROM:\$ALLOW_FROM\";';
+    $shcmd .= 'echo \"DENY_FROM:\$DENY_FROM\";';
+    $shcmd .= 'echo \"POLICY:\$POLICY\";';
+    $shcmd .= 'echo \"CIPHERS:\$CIPHERS\";';
+    $shcmd .= 'echo \"DHPARAMS:\$DHPARAMS\";';
+    $shcmd .= 'echo \"HONOR_CIPHER_ORDER:\$HONOR_CIPHER_ORDER\";';
+    $shcmd .= 'echo \"COMPRESSION:\$COMPRESSION\";';
+
+    my $data = -f $conffile ? `bash -c "$shcmd"` : '';
+
+    my $res = {};
+
+    while ($data =~ s/^(.*)\n//) {
+       my ($key, $value) = split(/:/, $1, 2);
+       next if !defined($value) || $value eq '';
+       if ($key eq 'ALLOW_FROM' || $key eq 'DENY_FROM') {
+           my $ips = [];
+           foreach my $ip (split(/,/, $value)) {
+               $ip = "0/0" if $ip eq 'all';
+               push @$ips, Net::IP->new($ip) || die Net::IP::Error() . "\n";
+           }
+           $res->{$key} = $ips;
+       } elsif ($key eq 'POLICY') {
+           die "unknown policy '$value'\n" if $value !~ m/^(allow|deny)$/;
+           $res->{$key} = $value;
+       } elsif ($key eq 'CIPHERS') {
+           $res->{$key} = $value;
+       } elsif ($key eq 'DHPARAMS') {
+           $res->{$key} = $value;
+       } elsif ($key eq 'HONOR_CIPHER_ORDER' || $key eq 'COMPRESSION') {
+           die "unknown value '$value' - use 0 or 1\n" if $value !~ m/^(0|1)$/;
+           $res->{$key} = $value;
+       } else {
+           # silently skip everythin else?
+       }
+    }
+
+    return $res;
+}
+
+1;