@@ -2,8 +2,10 @@ package main
2
2
3
3
import (
4
4
"encoding/csv"
5
+ "errors"
5
6
"fmt"
6
7
"os"
8
+ "strings"
7
9
"time"
8
10
)
9
11
@@ -20,6 +22,12 @@ const (
20
22
CERT_CN
21
23
)
22
24
25
+ const (
26
+ OUTPUT_EXPIRED = "CRITICAL: already expired"
27
+ OUTPUT_EXPIRES_30D = "WARNING: expires in < 30d"
28
+ OUTPUT_EXPIRES_90D = "INFO: expires in < 90d"
29
+ )
30
+
23
31
var TIME_90D = time .Now ().Add (90 * 24 * time .Hour )
24
32
var TIME_30D = time .Now ().Add (30 * 24 * time .Hour )
25
33
var TIME_NOW = time .Now ()
@@ -77,15 +85,38 @@ func (c *Certificates) process_line(line []string) {
77
85
}
78
86
}
79
87
88
+ func (c * Certificate ) get_certificate_cn () (* string , error ) {
89
+ t := strings .Split (* c .CN , "/" )
90
+ for _ , item := range t {
91
+ if strings .HasPrefix (item , "CN=" ) {
92
+ cn := strings .TrimPrefix (item , "CN=" )
93
+ return & cn , nil
94
+ }
95
+ }
96
+ return nil , errors .New ("No CN found!" )
97
+ }
98
+
80
99
func (c * Certificates ) print_expired () {
81
100
for _ , cert := range c .Certificates {
101
+ var cn * string
102
+ var err error
103
+ var expired string
82
104
if cert .Expired .Before (TIME_NOW ) {
83
- fmt .Println ("That certificate is already expired!" )
105
+ cn , err = cert .get_certificate_cn ()
106
+ expired = OUTPUT_EXPIRED
84
107
} else if cert .Expired .Before (TIME_30D ) {
85
- fmt .Println ("This certificate will expire in <= 30d" )
108
+ cn , err = cert .get_certificate_cn ()
109
+ expired = OUTPUT_EXPIRES_30D
86
110
} else if cert .Expired .Before (TIME_90D ) {
87
- fmt .Println ("This certificate will expire in <= 90d" )
111
+ cn , err = cert .get_certificate_cn ()
112
+ expired = OUTPUT_EXPIRES_90D
113
+ } else {
114
+ continue
115
+ }
116
+ if err != nil {
117
+ panic (err )
88
118
}
119
+ fmt .Println ("Expiry Date:" , cert .Expired .Format (time .DateOnly ), "CN:" , * cn , "SN:" , * cert .Serial , expired )
89
120
}
90
121
}
91
122
0 commit comments