Skip to content

Commit

Permalink
Merge 056582d into a776003
Browse files Browse the repository at this point in the history
  • Loading branch information
lupinthe14th committed Jul 3, 2019
2 parents a776003 + 056582d commit a7fff36
Show file tree
Hide file tree
Showing 4 changed files with 78 additions and 10 deletions.
13 changes: 12 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,23 @@ language: go
go:
- 1.12.x
- master
- tip
os:
- linux
- osx
dist: trusty
sudo: false
before_install:
- go get golang.org/x/tools/cmd/cover
- go get github.com/mattn/goveralls
install: true
script:
- env GO111MODULE=on go build
- env GO111MODULE=on go test
- env GO111MODULE=on go test -v -covermode=count -coverprofile=coverage.out
- $HOME/gopath/bin/goveralls
-coverprofile=coverage.out
-service=travis-ci
-repotoken $COVERALLS_TOKEN
env:
global:
secure: "R+IoGNSttX4tTkDPha5gQOo+Hn3TfjzkWMXfGdu6r1XPYD5Fs8o+aw7rGiNYMVa40oxP54ilW7nlmQUNx/vJytVZWlyWWRfeadNi8VVdpET2BqaOR7U2u/dCHIUZz6FdbXAPMV4XS5blaHYKcQ5zltLb2AbRURFymNkjRlzsLTm8vikjxGPQBYG4LHOE0/piEWgrYHkIMxLlzXAwwnq0A7MeJ8X7qRDdXKIYWYPKhB/s/20h6XkJKELV6shZG21Jgk4dLySrvFSzogtVENWxy575n4N4dIylGBlfdmMqZAqZeiFdnIXYwKk1IoZtR4k1hYsgy2yky1nKGlDobZ+Ihmu553cB5tZo+GhBKzrelBkbxjcvV/P+e1tJK5snQeRNJVQdy2zPvGAHPJQetR+NhGvhb26qqyWZuKtVOv9G09Nh3dVNPIAkobruEpIE0f5wmt1Wt4B3TEqN+FhydQoEhCACacx8Q9B6/m2PVmHfT6SBUsMU/MD++Ztv+CGQEIkHwEIcAneZhoFuP7ZBGwmqlu1Us0HZ9x5GwDMxlLQaVfQJSHtUKL+A5MHXU+kVnOF/KzEsH/jpk+SJoUHUGRngmTi/Im39DcJznV0eNeHVGsBuoY4L+2sLXdqkd+i9w9BzVfY4SDXnechvWtjHIVs51DXJXumXTv3EAzgE0KE6I7Q="
3 changes: 3 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,5 @@
# cTLS
Check TLS Certificates expire

[![Build Status](https://travis-ci.org/lupinthe14th/cTLS.svg?branch=master)](https://travis-ci.org/lupinthe14th/cTLS)
[![Coverage Status](https://coveralls.io/repos/github/lupinthe14th/cTLS/badge.svg?branch=master)](https://coveralls.io/github/lupinthe14th/cTLS?branch=master)
71 changes: 62 additions & 9 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ package main
import (
"crypto/tls"
"fmt"
"net/smtp"
"os"
"sync"
"time"

log "github.com/sirupsen/logrus"
Expand All @@ -13,16 +15,50 @@ func init() {
os.Setenv("GODEBUG", os.Getenv("GODEBUG")+",tls13=1")
}

func statePeerCertificateExpireDate(host, port string) (expireTime time.Time, err error) {
func startTLSConnectionState(host, port string) (state tls.ConnectionState, err error) {
conn, err := smtp.Dial(fmt.Sprint(host, ":", port))
if err != nil {
log.Errorf("smtp: dial: %s", err)
return state, err
}
defer conn.Close()
conn.StartTLS(&tls.Config{ServerName: host})
state, _ = conn.TLSConnectionState()
return state, nil
}

func tlsConnectionState(host, port string) (state tls.ConnectionState, err error) {
conn, err := tls.Dial("tcp", fmt.Sprint(host, ":", port), &tls.Config{})
if err != nil {
log.Errorf("client: dial: %s", err)
return expireTime, err
log.Errorf("tls: dial: %s", err)
return state, err
}
defer conn.Close()
log.Debugln("client: connected to: ", conn.RemoteAddr())

state := conn.ConnectionState()
state = conn.ConnectionState()
return state, nil
}

func statePeerCertificateExpireDate(host, port string) (expireTime time.Time, err error) {
var state tls.ConnectionState
switch port {
case "587":
log.Debugf("case: %v", port)
state, err = startTLSConnectionState(host, port)
if err != nil {
log.Errorf("startTLS connection state: %s", err)
}
log.Debugf("startTLS connection state: %v", state)
default:
log.Debugf("case: %v", port)
state, err = tlsConnectionState(host, port)
if err != nil {
log.Errorf("TLS connection state: %s", err)
}
log.Debugf("TLS connection state: %v", state)
}

for _, v := range state.PeerCertificates {
if !v.IsCA {
log.Println(v.Subject)
Expand All @@ -35,10 +71,27 @@ func statePeerCertificateExpireDate(host, port string) (expireTime time.Time, er
}

func main() {
expireTime, err := statePeerCertificateExpireDate("www.google.com", "443")
if err != nil {
log.Panicln(err)
type addr struct {
host string
port string
}
var addrs = []addr{
{host: "www.google.com", port: "443"},
{host: "smtp.gmail.com", port: "587"},
}

var wg sync.WaitGroup
for i, a := range addrs {
wg.Add(1)
go func(i int, a addr) {
defer wg.Done()
expireTime, err := statePeerCertificateExpireDate(a.host, a.port)
if err != nil {
log.Panicln(err)
}
expireJSTTime := expireTime.In(time.FixedZone("Asia/Tokyo", 9*60*60))
fmt.Println(i, ": Peer Certificates: expire time:", expireJSTTime)
}(i, a)
}
expireJSTTime := expireTime.In(time.FixedZone("Asia/Tokyo", 9*60*60))
fmt.Println("Peer Certificates: expire time: ", expireJSTTime)
wg.Wait()
}
1 change: 1 addition & 0 deletions main_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ func TestStatePeerCertificateExpireDate(t *testing.T) {
port string
}{
{host: "www.google.com", port: "443"},
{host: "smtp.gmail.com", port: "587"},
}

for _, tt := range tests {
Expand Down

0 comments on commit a7fff36

Please sign in to comment.