diff options
-rw-r--r-- | .SRCINFO | 8 | ||||
-rw-r--r-- | PKGBUILD | 73 | ||||
-rw-r--r-- | plugins.go | 61 |
3 files changed, 132 insertions, 10 deletions
@@ -1,7 +1,7 @@ pkgbase = caddy - pkgdesc = HTTP/2 web server with automatic HTTPS + pkgdesc = HTTP/2 Web Server with Automatic HTTPS pkgver = 0.10.4 - pkgrel = 1 + pkgrel = 2 url = https://caddyserver.com install = caddy.install arch = i686 @@ -18,14 +18,14 @@ pkgbase = caddy source = caddy.service source = caddy.tmpfiles source = caddy.conf - source = enable-dnsproviders.patch + source = plugins.go sha256sums = 411e6bf10520e938712887a31f2132bfd19e2c79543e7aef158f7c77d03ae2bf sha256sums = e679dd79fd92dc351fc190c7af529c73e3896986aaa6b7c0ae01e561398d6b85 sha256sums = 6db7aec45e95bbbf770ce4d120a60d8e4992d2262a8ebf668521179279aa5ae7 sha256sums = 69e25def317a6172011472bd060655142f3085a0c81392f8a7a9c42b6a58bbd9 sha256sums = bd4d912d083be176727882ccc1bbe577a27cc160db09238e5edc05ba458aebce sha256sums = 80520b80ccabf077a3269f6a1bf55faa3811ef5adce115131b35ef2044d37b64 - sha256sums = 158c9a0f4327384c244846badc5295eab2a4cf16c354a3669fc0cce1c34e4a91 + sha256sums = f5a0fbb961e7c9ecf99e88d0959a3164cbea54660c1c08c3ba3cdf1d45563929 pkgname = caddy @@ -8,8 +8,8 @@ _import="$_provider.$_tld/$_project/$_repo" pkgname=caddy pkgver=0.10.4 -pkgrel=1 -pkgdesc='HTTP/2 web server with automatic HTTPS' +pkgrel=2 +pkgdesc='HTTP/2 Web Server with Automatic HTTPS' arch=('i686' 'x86_64' 'armv7h' 'aarch64') url='https://caddyserver.com' license=('Apache') @@ -22,18 +22,28 @@ source=("https://$_import/archive/v$pkgver/$_repo-$pkgver.tar.gz" 'caddy.service' 'caddy.tmpfiles' 'caddy.conf' - 'enable-dnsproviders.patch') + 'plugins.go') sha256sums=('411e6bf10520e938712887a31f2132bfd19e2c79543e7aef158f7c77d03ae2bf' 'e679dd79fd92dc351fc190c7af529c73e3896986aaa6b7c0ae01e561398d6b85' '6db7aec45e95bbbf770ce4d120a60d8e4992d2262a8ebf668521179279aa5ae7' '69e25def317a6172011472bd060655142f3085a0c81392f8a7a9c42b6a58bbd9' 'bd4d912d083be176727882ccc1bbe577a27cc160db09238e5edc05ba458aebce' '80520b80ccabf077a3269f6a1bf55faa3811ef5adce115131b35ef2044d37b64' - '158c9a0f4327384c244846badc5295eab2a4cf16c354a3669fc0cce1c34e4a91') + 'f5a0fbb961e7c9ecf99e88d0959a3164cbea54660c1c08c3ba3cdf1d45563929') +patch_plugins() { + IFS='' + n=0 + while read -r line; do + echo "$line" + if [[ $line =~ ^import && $n = 0 ]]; then + go run $srcdir/plugins.go "${plugins[@]}" + n=1 + fi + done +} prepare() { cd $_repo-$pkgver - patch -p1 < ../enable-dnsproviders.patch mkdir -p src/$_provider.$_tld/$_project ln -s ../../.. src/$_import } @@ -41,7 +51,14 @@ prepare() { build() { cd $_repo-$pkgver export GOPATH=$(pwd) - go get -v -d github.com/caddyserver/dnsproviders/... + cd $GOPATH/src/$_import/caddy/caddymain/ + if [ ${#plugins[@]} -gt 0 ]; then + echo enable plugins ${plugins[@]} + patch_plugins < run.go > run1.go + mv run1.go run.go + go get -v -d $_import/caddy/caddymain + fi + cd $GOPATH go build -v -o ../caddy -ldflags "-X $_import/caddy/caddymain.gitTag=v$pkgver" $_import/caddy } @@ -54,3 +71,47 @@ package() { install -D -m 0644 caddy.conf "$pkgdir/etc/caddy/caddy.conf" install -d -m 0755 "$pkgdir/etc/caddy/caddy.conf.d" } + +plugins=( +# 'dns' +# 'hook.pluginloader' +# 'hook.service' +# 'http.authz' +# 'http.awslambda' +# 'http.cgi' +# 'http.cors' +# 'http.datadog' +# 'http.expires' +# 'http.filemanager' +# 'http.filter' +# 'http.git' +# 'http.grpc' +# 'http.hugo' +# 'http.ipfilter' +# 'http.jwt' +# 'http.login' +# 'http.mailout' +# 'http.minify' +# 'http.prometheus' +# 'http.proxyprotocol' +# 'http.ratelimit' +# 'http.realip' +# 'http.reauth' +# 'http.upload' +# 'net' +# 'tls.dns.cloudflare' +# 'tls.dns.digitalocean' +# 'tls.dns.dnsimple' +# 'tls.dns.dnspod' +# 'tls.dns.dyn' +# 'tls.dns.exoscale' +# 'tls.dns.gandi' +# 'tls.dns.googlecloud' +# 'tls.dns.linode' +# 'tls.dns.namecheap' +# 'tls.dns.ovh' +# 'tls.dns.rackspace' +# 'tls.dns.rfc2136' +# 'tls.dns.route53' +# 'tls.dns.vultr' +) diff --git a/plugins.go b/plugins.go new file mode 100644 index 000000000000..75d16ffff15e --- /dev/null +++ b/plugins.go @@ -0,0 +1,61 @@ +package main + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "log" + "net/http" + "os" + "sort" +) + +const URL = "https://caddyserver.com/api/download-page" + +type Plugin struct { + Name string + ImportPath string +} +type PluginList struct { + Plugins []Plugin `json:"plugins"` +} + +func getPlugins() []Plugin { + resp, err := http.Get(URL) + if err != nil { + log.Fatal(err) + } + defer resp.Body.Close() + body, err := ioutil.ReadAll(resp.Body) + list := PluginList{} + err = json.Unmarshal(body, &list) + if err != nil { + log.Fatal(err) + } + return list.Plugins +} +func main() { + plugins := getPlugins() + sort.Slice(plugins, func(i, j int) bool { + return plugins[i].Name < plugins[j].Name + }) + if len(os.Args) == 1 { + fmt.Println("plugins=(") + for _, plugin := range plugins { + fmt.Printf("# '%s'\n", plugin.Name) + } + fmt.Println(")") + return + } + pluginsMap := make(map[string]string) + for _, plugin := range plugins { + pluginsMap[plugin.Name] = plugin.ImportPath + } + for _, name := range os.Args[1:] { + path, ok := pluginsMap[name] + if !ok { + log.Fatalf("cannot find plugin %s\n", name) + } + fmt.Printf(`_ "%s"`+"\n", path) + } +} |