Add in tls for connection details

This commit is contained in:
Derek Collison
2015-12-01 19:23:42 -08:00
parent b61da04ef7
commit d1a333c713

View File

@@ -3,6 +3,7 @@
package server
import (
"crypto/tls"
"encoding/json"
"fmt"
"net"
@@ -33,19 +34,21 @@ type Connz struct {
// ConnInfo has detailed information on a per connection basis.
type ConnInfo struct {
Cid uint64 `json:"cid"`
IP string `json:"ip"`
Port int `json:"port"`
Pending int `json:"pending_bytes"`
InMsgs int64 `json:"in_msgs"`
OutMsgs int64 `json:"out_msgs"`
InBytes int64 `json:"in_bytes"`
OutBytes int64 `json:"out_bytes"`
NumSubs uint32 `json:"subscriptions"`
Name string `json:"name,omitempty"`
Lang string `json:"lang,omitempty"`
Version string `json:"version,omitempty"`
Subs []string `json:"subscriptions_list,omitempty"`
Cid uint64 `json:"cid"`
IP string `json:"ip"`
Port int `json:"port"`
Pending int `json:"pending_bytes"`
InMsgs int64 `json:"in_msgs"`
OutMsgs int64 `json:"out_msgs"`
InBytes int64 `json:"in_bytes"`
OutBytes int64 `json:"out_bytes"`
NumSubs uint32 `json:"subscriptions"`
Name string `json:"name,omitempty"`
Lang string `json:"lang,omitempty"`
Version string `json:"version,omitempty"`
TLSVersion string `json:"tls_version,omitempty"`
TLSCipher string `json:"tls_cipher_suite,omitempty"`
Subs []string `json:"subscriptions_list,omitempty"`
}
const DefaultConnListSize = 1024
@@ -66,6 +69,7 @@ func (s *Server) HandleConnz(w http.ResponseWriter, r *http.Request) {
// Walk the list
s.mu.Lock()
tlsRequired := s.info.TLSRequired
c.NumConns = len(s.clients)
// Copy the keys to sort by them
@@ -127,6 +131,13 @@ func (s *Server) HandleConnz(w http.ResponseWriter, r *http.Request) {
Version: client.opts.Version,
}
if tlsRequired {
conn := client.nc.(*tls.Conn)
cs := conn.ConnectionState()
ci.TLSVersion = tlsVersion(cs.Version)
ci.TLSCipher = tlsCipher(cs.CipherSuite)
}
if subs == 1 {
ci.Subs = castToSliceString(client.subs.All())
}