aboutsummaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2016-03-18 15:32:50 +0100
committerDimitri Sokolyuk <demon@dim13.org>2016-03-18 15:32:50 +0100
commit195239f59a98b1e1f1e1737d47d57c5d0559c009 (patch)
tree38fedbe9eceb0a76dd9ad5db7357f694f564cff6 /cmd
parent73e2b9e13eeee81756d60034f382c5de3a6a4e18 (diff)
Alternative aproach
Diffstat (limited to 'cmd')
-rw-r--r--cmd/batch/args.go34
-rw-r--r--cmd/batch/files.go29
-rw-r--r--cmd/batch/main.go17
3 files changed, 80 insertions, 0 deletions
diff --git a/cmd/batch/args.go b/cmd/batch/args.go
new file mode 100644
index 0000000..0bb4d99
--- /dev/null
+++ b/cmd/batch/args.go
@@ -0,0 +1,34 @@
+package main
+
+import (
+ "flag"
+ "fmt"
+ "time"
+
+ "dim13.org/acme"
+)
+
+type Domains []string
+
+func (v Domains) String() string { return fmt.Sprint([]string(v)) }
+func (v *Domains) Set(s string) error { *v = append(*v, s); return nil }
+
+type Emails []string
+
+func (v Emails) String() string { return fmt.Sprint([]string(v)) }
+func (v *Emails) Set(s string) error { *v = append(*v, s); return nil }
+
+var (
+ baseDir = flag.String("basedir", "/etc/ssl", "Base directory for SSL files")
+ graceTime = flag.Duration("gracetime", 24*7*time.Hour, "Renew grace time")
+ keySize = flag.Int("keysize", 2048, "Private key size")
+ provider = flag.String("provider", acme.LE1, "Certificate provider")
+ emails = new(Emails)
+ domains = new(Domains)
+)
+
+func init() {
+ flag.Var(domains, "domain", "Domain list (multiple values)")
+ flag.Var(emails, "email", "eMail addresses (multiple values)")
+ flag.Parse()
+}
diff --git a/cmd/batch/files.go b/cmd/batch/files.go
new file mode 100644
index 0000000..cc4cad5
--- /dev/null
+++ b/cmd/batch/files.go
@@ -0,0 +1,29 @@
+package main
+
+import (
+ "crypto/tls"
+ "crypto/x509"
+ "path"
+ "path/filepath"
+)
+
+func scanFiles(dir string) ([]tls.Certificate, error) {
+ var certs []tls.Certificate
+ keys, err := filepath.Glob(path.Join(dir, "private", "*.key"))
+ if err != nil {
+ return nil, err
+ }
+ for _, k := range keys {
+ c := filepath.Join(dir, "certs", filepath.Base(k[:len(k)-4])+".pem")
+ crt, err := tls.LoadX509KeyPair(c, k)
+ if err != nil {
+ continue
+ }
+ crt.Leaf, err = x509.ParseCertificate(crt.Certificate[0])
+ if err != nil {
+ return nil, err
+ }
+ certs = append(certs, crt)
+ }
+ return certs, nil
+}
diff --git a/cmd/batch/main.go b/cmd/batch/main.go
new file mode 100644
index 0000000..208bc34
--- /dev/null
+++ b/cmd/batch/main.go
@@ -0,0 +1,17 @@
+package main
+
+import "log"
+
+func main() {
+ crt, err := scanFiles(*baseDir)
+ if err != nil {
+ log.Fatal(err)
+ }
+ for _, c := range crt {
+ log.Printf("%+v\n", c.Leaf)
+ }
+ if len(*emails) > 0 && len(*domains) > 0 {
+ log.Println(*emails)
+ log.Println(*domains)
+ }
+}