aboutsummaryrefslogtreecommitdiffstats
path: root/config/haproxy-devel/pkg
diff options
context:
space:
mode:
Diffstat (limited to 'config/haproxy-devel/pkg')
-rw-r--r--config/haproxy-devel/pkg/haproxy.inc17
-rw-r--r--config/haproxy-devel/pkg/haproxy_utils.inc41
2 files changed, 34 insertions, 24 deletions
diff --git a/config/haproxy-devel/pkg/haproxy.inc b/config/haproxy-devel/pkg/haproxy.inc
index 6e07625f..eceef783 100644
--- a/config/haproxy-devel/pkg/haproxy.inc
+++ b/config/haproxy-devel/pkg/haproxy.inc
@@ -957,18 +957,23 @@ function haproxy_write_certificate_crl($filename, $crlid, $append = false) {
unset($crl);
}
-function haproxy_write_certificate_fullchain($filename, $certid, $append = false) {
+function haproxy_write_certificate_fullchain($filename, $certid, $append = false, $skiproot = true) {
$cert = haproxy_lookup_cert($certid);
$certcontent = base64_decode($cert['crt']);
if (isset($cert['prv']))
$certcontent .= "\r\n".base64_decode($cert['prv']);
- $certchaincontent = ca_chain($cert);
- if ($certchaincontent != "") {
- $certcontent .= "\r\n" . $certchaincontent;
+ $ca = $cert;
+ while(!empty($ca['caref'])) {
+ $ca = lookup_ca($ca['caref']);
+ if ($ca) {
+ if ($skiproot && (cert_get_subject($ca['crt']) == cert_get_issuer($ca['crt'])))
+ break;
+ $certcontent .= "\r\n" . base64_decode($ca['crt']);
+ } else
+ break;
}
- unset($certchaincontent);
$flags = $append ? FILE_APPEND : 0;
file_put_contents($filename, $certcontent, $flags);
unset($certcontent);
@@ -1155,7 +1160,7 @@ function haproxy_writeconf($configpath) {
if ($frontend['sslocsp'] == 'yes') {
if (!empty(haproxy_getocspurl($filename))) {
haproxy_write_certificate_issuer($filename . ".issuer", $frontend['ssloffloadcert']);
- touch($filename . ".ocsp");
+ touch($filename . ".ocsp");//create initial empty file. this will trigger updates, and inform haproxy it 'should' be using ocsp
}
}
diff --git a/config/haproxy-devel/pkg/haproxy_utils.inc b/config/haproxy-devel/pkg/haproxy_utils.inc
index 3d841a25..ec72b986 100644
--- a/config/haproxy-devel/pkg/haproxy_utils.inc
+++ b/config/haproxy-devel/pkg/haproxy_utils.inc
@@ -39,32 +39,37 @@ class haproxy_utils {
public function query_dns($host, $querytype="A,AAAA") {
$result = array();
$types = explode(',',$querytype);
- $recordtypes = 0;
+ $recordtype = 0;
foreach($types as $type){
switch ($type) {
case 'A':
- $recordtypes += DNS_A;
+ $recordtype = DNS_A;
break;
case 'AAAA':
- $recordtypes += DNS_AAAA;
+ $recordtype = DNS_AAAA;
break;
}
- }
- if ($recordtypes == 0)
- return $result;
-
- $dnsresult = dns_get_record($host, $recordtypes);
- foreach($dnsresult as $item) {
- $newitem["typeid"] = $item['type'];
- switch ($item['type']) {
- case 'A':
- $newitem["data"] = $item['ip'];
- break;
- case 'AAAA':
- $newitem["data"] = $item['ipv6'];
- break;
+ if ($recordtype != 0) {
+ //query one type at a time, querying multiple types in one call dns_get_record fails if one is not present..
+ $errreporting = error_reporting();
+ error_reporting($errreporting & ~E_WARNING);// dns_get_record throws a warning if nothing is resolved..
+ $dnsresult = dns_get_record($host, $recordtype);
+ error_reporting($errreporting);
+ if (is_array($dnsresult)) {
+ foreach($dnsresult as $item) {
+ $newitem["typeid"] = $item['type'];
+ switch ($item['type']) {
+ case 'A':
+ $newitem["data"] = $item['ip'];
+ break;
+ case 'AAAA':
+ $newitem["data"] = $item['ipv6'];
+ break;
+ }
+ $result[] = $newitem;
+ }
+ }
}
- $result[] = $newitem;
}
return $result;
}