Blob Blame History Raw
# plugins
%bcond_without geoip
%bcond_without realip
%bcond_without cloudflare
%bcond_without digitalocean
%bcond_without dyn
%bcond_without gandi
%bcond_without namecheap
%bcond_without pdns
%bcond_without rackspace
%bcond_without rfc2136

%if 0%{?fedora}
# dependencies are broken in EPEL
# https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2016-098bd3de3f
# https://bodhi.fedoraproject.org/updates/FEDORA-EPEL-2017-95fd015610
%bcond_without googlecloud
%bcond_without route53
%endif

%if 0%{?fedora} >= 28
%bcond_without azure
%endif

%if %{with azure}%{with cloudflare}%{with digitalocean}%{with dyn}%{with gandi}%{with googlecloud}%{with namecheap}%{with pdns}%{with rackspace}%{with rfc2136}%{with route53}
%bcond_without dnsproviders
%endif

%bcond_with debug

%if %{with debug}
%global _dwz_low_mem_die_limit 0
%else
%global debug_package %{nil}
%endif

%if ! 0%{?gobuild:1}
%define gobuild(o:) go build -ldflags "${LDFLAGS:-} -B 0x$(head -c20 /dev/urandom|od -An -tx1|tr -d ' \\n')" -a -v -x %{?**};
%endif

Name: caddy
Version: 0.11.0
Release: 3%{?dist}
Summary: HTTP/2 web server with automatic HTTPS
License: ASL 2.0 and MIT
URL: https://caddyserver.com
ExclusiveArch: %{?go_arches:%{go_arches}}%{!?go_arches:%{ix86} x86_64 %{arm} aarch64 ppc64le s390x %{mips}}
%{?go_compiler:BuildRequires: compiler(go-compiler)}
# https://github.com/mholt/caddy/pull/2024
BuildRequires: golang >= 1.9
BuildRequires: systemd
%{?systemd_requires}
Provides: webserver

# caddy
%global import_path github.com/mholt/caddy
Source0: https://%{import_path}/archive/v%{version}/caddy-%{version}.tar.gz
Source1: caddy.conf
Source2: caddy.service
Source3: index.html

# dnsproviders
%global import_path_dnsproviders github.com/caddyserver/dnsproviders
%global commit_dnsproviders 3fb56b86673f53871a9da68aeec2f2bdec06163c
Source10: https://%{import_path_dnsproviders}/archive/%{commit_dnsproviders}/dnsproviders-%{commit_dnsproviders}.tar.gz

# lego
%global import_path_lego github.com/xenolf/lego
%global commit_lego fad2257e11ae4ff31ed03739386873aa405dec2d
Source11: https://%{import_path_lego}/archive/%{commit_lego}/lego-%{commit_lego}.tar.gz

%if %{with azure}
Provides: bundled(golang(%{import_path_dnsproviders}/azure)) = %{commit_dnsproviders}
Provides: bundled(golang(%{import_path_lego}/providers/dns/azure)) = %{commit_lego}
BuildRequires: golang(github.com/Azure/azure-sdk-for-go/services/dns/mgmt/2017-09-01/dns)
BuildRequires: golang(github.com/Azure/go-autorest/autorest)
BuildRequires: golang(github.com/Azure/go-autorest/autorest/adal)
BuildRequires: golang(github.com/Azure/go-autorest/autorest/azure)
BuildRequires: golang(github.com/Azure/go-autorest/autorest/to)
%endif
%if %{with cloudflare}
Provides: bundled(golang(%{import_path_dnsproviders}/cloudflare)) = %{commit_dnsproviders}
Provides: bundled(golang(%{import_path_lego}/providers/dns/cloudflare)) = %{commit_lego}
%endif
%if %{with digitalocean}
Provides: bundled(golang(%{import_path_dnsproviders}/digitalocean)) = %{commit_dnsproviders}
Provides: bundled(golang(%{import_path_lego}/providers/dns/digitalocean)) = %{commit_lego}
%endif
%if %{with dyn}
Provides: bundled(golang(%{import_path_dnsproviders}/dyn)) = %{commit_dnsproviders}
Provides: bundled(golang(%{import_path_lego}/providers/dns/dyn)) = %{commit_lego}
%endif
%if %{with gandi}
Provides: bundled(golang(%{import_path_dnsproviders}/gandi)) = %{commit_dnsproviders}
Provides: bundled(golang(%{import_path_lego}/providers/dns/gandi)) = %{commit_lego}
%endif
%if %{with googlecloud}
Provides: bundled(golang(%{import_path_dnsproviders}/googlecloud)) = %{commit_dnsproviders}
Provides: bundled(golang(%{import_path_lego}/providers/dns/googlecloud)) = %{commit_lego}
BuildRequires: golang(google.golang.org/api/dns/v1)
%endif
%if %{with namecheap}
Provides: bundled(golang(%{import_path_dnsproviders}/namecheap)) = %{commit_dnsproviders}
Provides: bundled(golang(%{import_path_lego}/providers/dns/namecheap)) = %{commit_lego}
%endif
%if %{with pdns}
Provides: bundled(golang(%{import_path_dnsproviders}/pdns)) = %{commit_dnsproviders}
Provides: bundled(golang(%{import_path_lego}/providers/dns/pdns)) = %{commit_lego}
%endif
%if %{with rackspace}
Provides: bundled(golang(%{import_path_dnsproviders}/rackspace)) = %{commit_dnsproviders}
Provides: bundled(golang(%{import_path_lego}/providers/dns/rackspace)) = %{commit_lego}
%endif
%if %{with rfc2136}
Provides: bundled(golang(%{import_path_dnsproviders}/rfc2136)) = %{commit_dnsproviders}
Provides: bundled(golang(%{import_path_lego}/providers/dns/rfc2136)) = %{commit_lego}
%endif
%if %{with route53}
Provides: bundled(golang(%{import_path_dnsproviders}/route53)) = %{commit_dnsproviders}
Provides: bundled(golang(%{import_path_lego}/providers/dns/route53)) = %{commit_lego}
BuildRequires: golang(github.com/aws/aws-sdk-go/aws)
BuildRequires: golang(github.com/aws/aws-sdk-go/aws/client)
BuildRequires: golang(github.com/aws/aws-sdk-go/aws/request)
BuildRequires: golang(github.com/aws/aws-sdk-go/aws/session)
BuildRequires: golang(github.com/aws/aws-sdk-go/service/route53)
%endif

# geoip
%global import_path_geoip github.com/kodnaplakal/caddy-geoip
%global commit_geoip 16c5a0d626adc0cb2ac538445d45c226d8eb21bc
Source20: https://%{import_path_geoip}/archive/%{commit_geoip}/geoip-%{commit_geoip}.tar.gz
%if %{with geoip}
Provides: bundled(golang(%{import_path_geoip})) = %{commit_geoip}
BuildRequires: golang(github.com/oschwald/maxminddb-golang)
%endif

# realip
%global import_path_realip github.com/captncraig/caddy-realip
%global commit_realip 5dd1f4047d0f649f21ba9f8d7e491d712be9a5b0
Source21: https://%{import_path_realip}/archive/%{commit_realip}/realip-%{commit_realip}.tar.gz
%if %{with realip}
Provides: bundled(golang(%{import_path_realip})) = %{commit_realip}
%endif

# vendored libraries (Source0)
Provides: bundled(golang(cloud.google.com/go/compute/metadata)) = 7a4ba9f439fbc50061834a4063b57cf7222ba83f
Provides: bundled(golang(github.com/aead/chacha20)) = 8d6ce0550041f9d97e7f15ec27ed489f8bbbb0fb
Provides: bundled(golang(github.com/alecthomas/template)) = a0175ee3bccc567396460bf5acd36800cb10c49c
Provides: bundled(golang(github.com/alecthomas/units)) = 2efee857e7cfd4f3d0138cc3cbb1b4966962b93a
Provides: bundled(golang(github.com/bifurcation/mint)) = 64af8ab8ccb81bd5d4eab356f79ba0939117d9f6
Provides: bundled(golang(github.com/codahale/aesnicheck)) = 349fcc471aaccc29cd074e1275f1a494323826cd
Provides: bundled(golang(github.com/dustin/go-humanize)) = 259d2a102b871d17f30e3cd9881a642961a1e486
Provides: bundled(golang(github.com/flynn/go-shlex)) = 3f9db97f856818214da2e1057f8ad84803971cff
Provides: bundled(golang(github.com/golang/protobuf/proto)) = 748d386b5c1ea99658fd69fe9f03991ce86a90c1
Provides: bundled(golang(github.com/golang/protobuf/ptypes/any)) = 748d386b5c1ea99658fd69fe9f03991ce86a90c1
Provides: bundled(golang(github.com/google/uuid)) = dec09d789f3dba190787f8b4454c7d3c936fed9e
Provides: bundled(golang(github.com/gorilla/websocket)) = a69d9f6de432e2c6b296a947d8a5ee88f68522cf
Provides: bundled(golang(github.com/hashicorp/go-syslog)) = 326bf4a7f709d263f964a6a96558676b103f3534
Provides: bundled(golang(github.com/hashicorp/golang-lru)) = 0a025b7e63adc15a622f29b0b2c4c3848243bbf6
Provides: bundled(golang(github.com/jimstudt/http-authentication/basic)) = 3eca13d6893afd7ecabe15f4445f5d2872a1b012
Provides: bundled(golang(github.com/klauspost/cpuid)) = ae832f27941af41db13bd6d8efd2493e3b22415a
Provides: bundled(golang(github.com/lucas-clemente/aes12)) = cd47fb39b79f867c6e4e5cd39cf7abd799f71670
Provides: bundled(golang(github.com/lucas-clemente/fnv128a)) = 393af48d391698c6ae4219566bfbdfef67269997
Provides: bundled(golang(github.com/lucas-clemente/quic-go)) = da7708e47066ab0aff0f20f66b21c1f329db1eff
Provides: bundled(golang(github.com/lucas-clemente/quic-go-certificates)) = d2f86524cced5186554df90d92529757d22c1cb6
Provides: bundled(golang(github.com/miekg/dns)) = 0f3adef2e2201d72e50309a36fc99d8a9d1a4960
Provides: bundled(golang(github.com/naoina/go-stringutil)) = 6b638e95a32d0c1131db0e7fe83775cbea4a0d0b
Provides: bundled(golang(github.com/naoina/toml)) = e6f5723bf2a66af014955e0888881314cf294129
Provides: bundled(golang(github.com/russross/blackfriday)) = 067529f716f4c3f5e37c8c95ddd59df1007290ae
Provides: bundled(golang(github.com/xenolf/lego/acmev2)) = fad2257e11ae4ff31ed03739386873aa405dec2d
Provides: bundled(golang(go4.org/syncutil/singleflight)) = 034d17a462f7b2dcd1a4a73553ec5357ff6e6c6e
Provides: bundled(golang(golang.org/x/crypto/curve25519)) = 94eea52f7b742c7cbe0b03b22f0c4c8631ece122
Provides: bundled(golang(golang.org/x/crypto/ed25519)) = c4a91bd4f524f10d064139674cf55852e055ad01
Provides: bundled(golang(golang.org/x/crypto/hkdf)) = 2faea1465de239e4babd8f5905cc25b781712442
Provides: bundled(golang(golang.org/x/crypto/ocsp)) = 2faea1465de239e4babd8f5905cc25b781712442
Provides: bundled(golang(golang.org/x/crypto/ssh/terminal)) = 2faea1465de239e4babd8f5905cc25b781712442
Provides: bundled(golang(golang.org/x/net/context)) = f5079bd7f6f74e23c4d65efa0f4ce14cbd6a3c0f
Provides: bundled(golang(golang.org/x/net/http2)) = f5079bd7f6f74e23c4d65efa0f4ce14cbd6a3c0f
Provides: bundled(golang(golang.org/x/net/idna)) = f5079bd7f6f74e23c4d65efa0f4ce14cbd6a3c0f
Provides: bundled(golang(golang.org/x/net/lex/httplex)) = f5079bd7f6f74e23c4d65efa0f4ce14cbd6a3c0f
Provides: bundled(golang(golang.org/x/net/publicsuffix)) = f5079bd7f6f74e23c4d65efa0f4ce14cbd6a3c0f
Provides: bundled(golang(golang.org/x/oauth2)) = b53b38ad8a6435bd399ea76d0fa74f23149cca4e
Provides: bundled(golang(golang.org/x/sys/unix)) = 35ef4487ce0a1ea5d4b616ffe71e34febe723695
Provides: bundled(golang(golang.org/x/text/internal/gen)) = 836efe42bb4aa16aaa17b9c155d8813d336ed720
Provides: bundled(golang(golang.org/x/text/internal/triegen)) = 836efe42bb4aa16aaa17b9c155d8813d336ed720
Provides: bundled(golang(golang.org/x/text/internal/ucd)) = 836efe42bb4aa16aaa17b9c155d8813d336ed720
Provides: bundled(golang(golang.org/x/text/secure/bidirule)) = 836efe42bb4aa16aaa17b9c155d8813d336ed720
Provides: bundled(golang(golang.org/x/text/transform)) = 836efe42bb4aa16aaa17b9c155d8813d336ed720
Provides: bundled(golang(golang.org/x/text/unicode/bidi)) = 836efe42bb4aa16aaa17b9c155d8813d336ed720
Provides: bundled(golang(golang.org/x/text/unicode/cldr)) = 836efe42bb4aa16aaa17b9c155d8813d336ed720
Provides: bundled(golang(golang.org/x/text/unicode/norm)) = 836efe42bb4aa16aaa17b9c155d8813d336ed720
Provides: bundled(golang(golang.org/x/text/unicode/rangetable)) = 836efe42bb4aa16aaa17b9c155d8813d336ed720
Provides: bundled(golang(google.golang.org/api/compute/v1)) = 66dba45b06824cbfe030e696b156d562994531e1
Provides: bundled(golang(google.golang.org/api/gensupport)) = 66dba45b06824cbfe030e696b156d562994531e1
Provides: bundled(golang(google.golang.org/api/googleapi)) = 66dba45b06824cbfe030e696b156d562994531e1
Provides: bundled(golang(google.golang.org/appengine)) = ad2570cd3913654e00c5f0183b39d2f998e54046
Provides: bundled(golang(gopkg.in/alecthomas/kingpin.v2)) = 1087e65c9441605df944fb12c33f0fe7072d18ca
Provides: bundled(golang(gopkg.in/natefinch/lumberjack.v2)) = df99d62fd42d8b3752c8a42c6723555372c02a03
Provides: bundled(golang(gopkg.in/square/go-jose.v2)) = 6ee92191fea850cdcab9a18867abf5f521cdbadb
Provides: bundled(golang(gopkg.in/yaml.v2)) = 25c4ec802a7d637f88d584ab26798e94ad14c13b


%description
Caddy is the HTTP/2 web server with automatic HTTPS.  Official Caddy builds
with customized plugins can be downloaded from https://caddyserver.com.  This
package is an unofficial build with the following plugins:

%{?with_geoip:  http.geoip
}%{?with_realip:  http.realip
}%{?with_azure:  tls.dns.azure
}%{?with_cloudflare:  tls.dns.cloudflare
}%{?with_digitalocean:  tls.dns.digitalocean
}%{?with_dyn:  tls.dns.dyn
}%{?with_gandi:  tls.dns.gandi
}%{?with_googlecloud:  tls.dns.googlecloud
}%{?with_namecheap:  tls.dns.namecheap
}%{?with_pdns:  tls.dns.powerdns
}%{?with_rackspace:  tls.dns.rackspace
}%{?with_rfc2136:  tls.dns.rfc2136
}%{?with_route53:  tls.dns.route53
}


%prep
%setup -q -a 10 -a 11 -a 20 -a 21

%if %{with dnsproviders}
mv dnsproviders-%{commit_dnsproviders}/LICENSE LICENSE-dnsproviders
mv lego-%{commit_lego}/LICENSE LICENSE-lego
mkdir -p vendor/%{import_path_dnsproviders} vendor/%{import_path_lego}/providers/dns
sed -e 's|github.com/xenolf/lego/acme|&v2|' -i lego-%{commit_lego}/providers/dns/*/*.go
%if %{with azure}
mv dnsproviders-%{commit_dnsproviders}/azure vendor/%{import_path_dnsproviders}/
mv lego-%{commit_lego}/providers/dns/azure vendor/%{import_path_lego}/providers/dns/
%endif
%if %{with cloudflare}
mv dnsproviders-%{commit_dnsproviders}/cloudflare vendor/%{import_path_dnsproviders}/
mv lego-%{commit_lego}/providers/dns/cloudflare vendor/%{import_path_lego}/providers/dns/
%endif
%if %{with digitalocean}
mv dnsproviders-%{commit_dnsproviders}/digitalocean vendor/%{import_path_dnsproviders}/
mv lego-%{commit_lego}/providers/dns/digitalocean vendor/%{import_path_lego}/providers/dns/
%endif
%if %{with dyn}
mv dnsproviders-%{commit_dnsproviders}/dyn vendor/%{import_path_dnsproviders}/
mv lego-%{commit_lego}/providers/dns/dyn vendor/%{import_path_lego}/providers/dns/
%endif
%if %{with gandi}
mv dnsproviders-%{commit_dnsproviders}/gandi vendor/%{import_path_dnsproviders}/
mv lego-%{commit_lego}/providers/dns/gandi vendor/%{import_path_lego}/providers/dns/
%endif
%if %{with googlecloud}
mv dnsproviders-%{commit_dnsproviders}/googlecloud vendor/%{import_path_dnsproviders}/
mv lego-%{commit_lego}/providers/dns/googlecloud vendor/%{import_path_lego}/providers/dns/
%endif
%if %{with namecheap}
mv dnsproviders-%{commit_dnsproviders}/namecheap vendor/%{import_path_dnsproviders}/
mv lego-%{commit_lego}/providers/dns/namecheap vendor/%{import_path_lego}/providers/dns/
%endif
%if %{with pdns}
mv dnsproviders-%{commit_dnsproviders}/pdns vendor/%{import_path_dnsproviders}/
mv lego-%{commit_lego}/providers/dns/pdns vendor/%{import_path_lego}/providers/dns/
%endif
%if %{with rackspace}
mv dnsproviders-%{commit_dnsproviders}/rackspace vendor/%{import_path_dnsproviders}/
mv lego-%{commit_lego}/providers/dns/rackspace vendor/%{import_path_lego}/providers/dns/
%endif
%if %{with rfc2136}
mv dnsproviders-%{commit_dnsproviders}/rfc2136 vendor/%{import_path_dnsproviders}/
mv lego-%{commit_lego}/providers/dns/rfc2136 vendor/%{import_path_lego}/providers/dns/
%endif
%if %{with route53}
mv dnsproviders-%{commit_dnsproviders}/route53 vendor/%{import_path_dnsproviders}/
mv lego-%{commit_lego}/providers/dns/route53 vendor/%{import_path_lego}/providers/dns/
%endif
%endif

%if %{with geoip}
mv caddy-geoip-%{commit_geoip}/LICENSE LICENSE-geoip
mkdir -p vendor/%{import_path_geoip}
mv caddy-geoip-%{commit_geoip}/*.go vendor/%{import_path_geoip}
%endif

%if %{with realip}
mv caddy-realip-%{commit_realip}/LICENSE LICENSE-realip
mkdir -p vendor/%{import_path_realip}
mv caddy-realip-%{commit_realip}/*.go vendor/%{import_path_realip}
%endif

sed -e '/other plugins/ a \\t// plugins added during rpmbuild' \
%{?with_geoip:          -e '/other plugins/ a \\t_ "%{import_path_geoip}"'} \
%{?with_realip:         -e '/other plugins/ a \\t_ "%{import_path_realip}"'} \
%{?with_azure:          -e '/other plugins/ a \\t_ "%{import_path_dnsproviders}/azure"'} \
%{?with_cloudflare:     -e '/other plugins/ a \\t_ "%{import_path_dnsproviders}/cloudflare"'} \
%{?with_digitalocean:   -e '/other plugins/ a \\t_ "%{import_path_dnsproviders}/digitalocean"'} \
%{?with_dyn:            -e '/other plugins/ a \\t_ "%{import_path_dnsproviders}/dyn"'} \
%{?with_gandi:          -e '/other plugins/ a \\t_ "%{import_path_dnsproviders}/gandi"'} \
%{?with_googlecloud:    -e '/other plugins/ a \\t_ "%{import_path_dnsproviders}/googlecloud"'} \
%{?with_namecheap:      -e '/other plugins/ a \\t_ "%{import_path_dnsproviders}/namecheap"'} \
%{?with_pdns:           -e '/other plugins/ a \\t_ "%{import_path_dnsproviders}/pdns"'} \
%{?with_rackspace:      -e '/other plugins/ a \\t_ "%{import_path_dnsproviders}/rackspace"'} \
%{?with_rfc2136:        -e '/other plugins/ a \\t_ "%{import_path_dnsproviders}/rfc2136"'} \
%{?with_route53:        -e '/other plugins/ a \\t_ "%{import_path_dnsproviders}/route53"'} \
                        -i caddy/caddymain/run.go


%build
mkdir -p src/%(dirname %{import_path})
ln -s ../../.. src/%{import_path}
export GOPATH=$(pwd):%{gopath}
export LDFLAGS="-X %{import_path}/caddy/caddymain.gitTag=v%{version}"
%gobuild -o bin/caddy %{import_path}/caddy


%install
install -D -m 0755 bin/caddy %{buildroot}%{_bindir}/caddy
install -D -m 0644 %{S:1} %{buildroot}%{_sysconfdir}/caddy/caddy.conf
install -D -m 0644 %{S:2} %{buildroot}%{_unitdir}/caddy.service
%if %{defined rhel}
sed -e '/ProtectSystem/ s/strict/full/' -i %{buildroot}%{_unitdir}/caddy.service
%endif
install -D -m 0644 %{S:3} %{buildroot}%{_datadir}/caddy/index.html
install -d -m 0755 %{buildroot}%{_sysconfdir}/caddy/conf.d
install -d -m 0750 %{buildroot}%{_sharedstatedir}/caddy


%pre
getent group caddy &> /dev/null || \
groupadd -r caddy &> /dev/null
getent passwd caddy &> /dev/null || \
useradd -r -g caddy -d %{_sharedstatedir}/caddy -s /sbin/nologin -c 'Caddy web server' caddy &> /dev/null
exit 0


%post
%systemd_post caddy.service

if [ -x /usr/sbin/getsebool ]; then
    # connect to ACME endpoint to request certificates
    setsebool -P httpd_can_network_connect on
fi
if [ -x /usr/sbin/semanage -a -x /usr/sbin/restorecon ]; then
    # file contexts
    semanage fcontext --add --type httpd_exec_t        '%{_bindir}/caddy'               2> /dev/null || :
    semanage fcontext --add --type httpd_sys_content_t '%{_datadir}/caddy(/.*)?'        2> /dev/null || :
    semanage fcontext --add --type httpd_config_t      '%{_sysconfdir}/caddy(/.*)?'     2> /dev/null || :
    semanage fcontext --add --type httpd_var_lib_t     '%{_sharedstatedir}/caddy(/.*)?' 2> /dev/null || :
    restorecon -r %{_bindir}/caddy %{_datadir}/caddy %{_sysconfdir}/caddy %{_sharedstatedir}/caddy || :
fi
if [ -x /usr/sbin/semanage ]; then
    # QUIC
    semanage port --add --type http_port_t --proto udp 80   2> /dev/null || :
    semanage port --add --type http_port_t --proto udp 443  2> /dev/null || :
    # HTTP challenge alternate port
    semanage port --add --type http_port_t --proto tcp 5033 2> /dev/null || :
fi


%preun
%systemd_preun caddy.service


%postun
%systemd_postun_with_restart caddy.service

if [ $1 -eq 0 ]; then
    if [ -x /usr/sbin/getsebool ]; then
        # connect to ACME endpoint to request certificates
        setsebool -P httpd_can_network_connect off
    fi
    if [ -x /usr/sbin/semanage ]; then
        # file contexts
        semanage fcontext --delete --type httpd_exec_t        '%{_bindir}/caddy'               2> /dev/null || :
        semanage fcontext --delete --type httpd_sys_content_t '%{_datadir}/caddy(/.*)?'        2> /dev/null || :
        semanage fcontext --delete --type httpd_config_t      '%{_sysconfdir}/caddy(/.*)?'     2> /dev/null || :
        semanage fcontext --delete --type httpd_var_lib_t     '%{_sharedstatedir}/caddy(/.*)?' 2> /dev/null || :
        # QUIC
        semanage port     --delete --type http_port_t --proto udp 80   2> /dev/null || :
        semanage port     --delete --type http_port_t --proto udp 443  2> /dev/null || :
        # HTTP challenge alternate port
        semanage port     --delete --type http_port_t --proto tcp 5033 2> /dev/null || :
    fi
fi


%files
%license LICENSE.txt
%{?with_geoip:%license LICENSE-geoip}
%{?with_realip:%license LICENSE-realip}
%if %{with dnsproviders}
%license LICENSE-dnsproviders LICENSE-lego
%endif
%doc dist/README.txt
%{_bindir}/caddy
%{_datadir}/caddy
%{_unitdir}/caddy.service
%dir %{_sysconfdir}/caddy
%dir %{_sysconfdir}/caddy/conf.d
%config(noreplace) %{_sysconfdir}/caddy/caddy.conf
%attr(0750,caddy,caddy) %dir %{_sharedstatedir}/caddy


%changelog
* Fri Oct 19 2018 Carl George <carl@george.computer> - 0.11.0-3
- Enable httpd_can_network_connect selinux boolean to connect to ACME endpoint rhbz#1641158
- Define UDP 80/443 as selinux http_port_t for QUIC rhbz#1608548
- Define TCP 5033 as selinux http_port_t for HTTP challenge rhbz#1641160

* Thu Jul 12 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.11.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild

* Sat May 12 2018 Carl George <carl@george.computer> - 0.11.0-1
- Latest upstream

* Sat Apr 21 2018 Carl George <carl@george.computer> - 0.10.14-1
- Latest upstream
- Overhaul %%prep to extract everything with %%setup
- Edit lego providers to require acmev2 instead of acme
- Add provides for specific providers from %%import_path_dnsproviders and %%import_path_lego
- Add azure dns provider on f28+

* Fri Apr 20 2018 Carl George <carl@george.computer> - 0.10.11-6
- Enable geoip plugin on EL7
- Only provide bundled geoip/realip/dnsproviders/lego when the respective plugin is enabled

* Wed Apr 18 2018 Carl George <carl@george.computer> - 0.10.11-5
- Add geoip plugin

* Tue Apr 17 2018 Carl George <carl@george.computer> - 0.10.11-4
- Correct ExclusiveArch fallback

* Mon Apr 16 2018 Carl George <carl@george.computer> - 0.10.11-3
- Enable s390x
- Disable googlecloud and route53 dns providers on EL7 due to dependency issues

* Fri Mar 30 2018 Carl George <carl@george.computer> - 0.10.11-2
- Add googlecloud dns provider
- Add route53 dns provider
- Set minimum golang version to 1.9
- Set selinux labels in scriptlets

* Sat Feb 24 2018 Carl George <carl@george.computer> - 0.10.11-1
- Latest upstream

* Sat Feb 24 2018 Carl George <carl@george.computer> - 0.10.10-4
- Change ProtectSystem from strict to full in unit file on RHEL

* Wed Feb 07 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.10.10-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild

* Thu Jan 11 2018 Carl George <carl@george.computer> - 0.10.10-2
- Add powerdns provider

* Mon Oct 09 2017 Carl George <carl@george.computer> - 0.10.10-1
- Latest upstream

* Mon Oct 02 2017 Carl George <carl@george.computer> - 0.10.9-6
- Add provides for bundled libraries

* Mon Oct 02 2017 Carl George <carl@george.computer> - 0.10.9-5
- Enable rfc2136 dns provider
- List plugins in description

* Mon Sep 18 2017 Carl George <carl@george.computer> - 0.10.9-4
- Exclude s390x

* Sun Sep 17 2017 Carl George <carl@george.computer> - 0.10.9-3
- Add realip plugin
- Add conditionals for plugins

* Sat Sep 16 2017 Carl George <carl@george.computer> - 0.10.9-2
- Add sources for caddyserver/dnsproviders and xenolf/lego
- Disable all dns providers that require additional libraries (dnsimple, dnspod, googlecloud, linode, ovh, route53, vultr)
- Rewrite default index.html

* Tue Sep 12 2017 Carl George <carl@george.computer> - 0.10.9-1
- Latest upstream
- Add config validation to unit file
- Disable exoscale dns provider https://github.com/xenolf/lego/issues/429

* Fri Sep 08 2017 Carl George <carl@george.computer> - 0.10.8-1
- Latest upstream
- Build with %%gobuild macro
- Move config subdirectory from /etc/caddy/caddy.conf.d to /etc/caddy/conf.d

* Tue Aug 29 2017 Carl George <carl@george.computer> - 0.10.7-1
- Latest upstream

* Fri Aug 25 2017 Carl George <carl@george.computer> - 0.10.6-2
- Use SIQQUIT to stop service
- Increase the process limit from 64 to 512
- Only `go get` in caddy/caddymain

* Fri Aug 11 2017 Carl George <carl@george.computer> - 0.10.6-1
- Latest upstream
- Add webserver virtual provides
- Drop tmpfiles and just own /var/lib/caddy directly
- Remove PrivateDevices setting from unit file, it prevents selinux process transitions
- Disable rfc2136 dns provider https://github.com/caddyserver/dnsproviders/issues/11

* Sat Jun 03 2017 Carl George <carl.george@rackspace.com> - 0.10.3-2
- Rename Envfile to envfile
- Rename Caddyfile to caddy.conf
- Include additional configs from caddy.conf.d directory

* Fri May 19 2017 Carl George <carl.george@rackspace.com> - 0.10.3-1
- Latest upstream

* Mon May 15 2017 Carl George <carl.george@rackspace.com> - 0.10.2-1
- Initial package