remove newline in logs, fixed logs time format (#469)

This commit is contained in:
RoyUP9
2021-11-16 12:07:48 +02:00
committed by GitHub
parent a6ec246dd1
commit 763f72a640
24 changed files with 50 additions and 52 deletions

View File

@@ -207,7 +207,7 @@ func loadExtensions() {
extensionsMap = make(map[string]*tapApi.Extension) extensionsMap = make(map[string]*tapApi.Extension)
for i, file := range files { for i, file := range files {
filename := file.Name() filename := file.Name()
logger.Log.Infof("Loading extension: %s\n", filename) logger.Log.Infof("Loading extension: %s", filename)
extension := &tapApi.Extension{ extension := &tapApi.Extension{
Path: path.Join(extensionsDir, filename), Path: path.Join(extensionsDir, filename),
} }
@@ -219,7 +219,7 @@ func loadExtensions() {
var ok bool var ok bool
dissector, ok = symDissector.(tapApi.Dissector) dissector, ok = symDissector.(tapApi.Dissector)
if err != nil || !ok { if err != nil || !ok {
panic(fmt.Sprintf("Failed to load the extension: %s\n", extension.Path)) panic(fmt.Sprintf("Failed to load the extension: %s", extension.Path))
} }
dissector.Register(extension) dissector.Register(extension)
extension.Dissector = dissector extension.Dissector = dissector
@@ -232,7 +232,7 @@ func loadExtensions() {
}) })
for _, extension := range extensions { for _, extension := range extensions {
logger.Log.Infof("Extension Properties: %+v\n", extension) logger.Log.Infof("Extension Properties: %+v", extension)
} }
controllers.InitExtensionsMap(extensionsMap) controllers.InitExtensionsMap(extensionsMap)

View File

@@ -76,7 +76,7 @@ func startReadingFiles(workingDir string) {
sort.Sort(utils.ByModTime(harFiles)) sort.Sort(utils.ByModTime(harFiles))
if len(harFiles) == 0 { if len(harFiles) == 0 {
logger.Log.Infof("Waiting for new files\n") logger.Log.Infof("Waiting for new files")
time.Sleep(3 * time.Second) time.Sleep(3 * time.Second)
continue continue
} }
@@ -109,7 +109,7 @@ func startReadingChannel(outputItems <-chan *tapApi.OutputChannelItem, extension
ctx := context.Background() ctx := context.Background()
doc, contractContent, router, err := loadOAS(ctx) doc, contractContent, router, err := loadOAS(ctx)
if err != nil { if err != nil {
logger.Log.Infof("Disabled OAS validation: %s\n", err.Error()) logger.Log.Infof("Disabled OAS validation: %s", err.Error())
disableOASValidation = true disableOASValidation = true
} }
@@ -154,7 +154,7 @@ func resolveIP(connectionInfo *tapApi.ConnectionInfo) (resolvedSource string, re
unresolvedSource := connectionInfo.ClientIP unresolvedSource := connectionInfo.ClientIP
resolvedSource = k8sResolver.Resolve(unresolvedSource) resolvedSource = k8sResolver.Resolve(unresolvedSource)
if resolvedSource == "" { if resolvedSource == "" {
logger.Log.Debugf("Cannot find resolved name to source: %s\n", unresolvedSource) logger.Log.Debugf("Cannot find resolved name to source: %s", unresolvedSource)
if os.Getenv("SKIP_NOT_RESOLVED_SOURCE") == "1" { if os.Getenv("SKIP_NOT_RESOLVED_SOURCE") == "1" {
return return
} }
@@ -162,7 +162,7 @@ func resolveIP(connectionInfo *tapApi.ConnectionInfo) (resolvedSource string, re
unresolvedDestination := fmt.Sprintf("%s:%s", connectionInfo.ServerIP, connectionInfo.ServerPort) unresolvedDestination := fmt.Sprintf("%s:%s", connectionInfo.ServerIP, connectionInfo.ServerPort)
resolvedDestination = k8sResolver.Resolve(unresolvedDestination) resolvedDestination = k8sResolver.Resolve(unresolvedDestination)
if resolvedDestination == "" { if resolvedDestination == "" {
logger.Log.Debugf("Cannot find resolved name to dest: %s\n", unresolvedDestination) logger.Log.Debugf("Cannot find resolved name to dest: %s", unresolvedDestination)
if os.Getenv("SKIP_NOT_RESOLVED_DEST") == "1" { if os.Getenv("SKIP_NOT_RESOLVED_DEST") == "1" {
return return
} }

View File

@@ -146,7 +146,7 @@ func websocketHandler(w http.ResponseWriter, r *http.Request, eventHandlers Even
var metadata *basenine.Metadata var metadata *basenine.Metadata
err = json.Unmarshal(bytes, &metadata) err = json.Unmarshal(bytes, &metadata)
if err != nil { if err != nil {
logger.Log.Debugf("Error recieving metadata: %v\n", err.Error()) logger.Log.Debugf("Error recieving metadata: %v", err.Error())
} }
metadataBytes, _ := models.CreateWebsocketQueryMetadataMessage(metadata) metadataBytes, _ := models.CreateWebsocketQueryMetadataMessage(metadata)
@@ -167,7 +167,7 @@ func websocketHandler(w http.ResponseWriter, r *http.Request, eventHandlers Even
func socketCleanup(socketId int, socketConnection *SocketConnection) { func socketCleanup(socketId int, socketConnection *SocketConnection) {
err := socketConnection.connection.Close() err := socketConnection.connection.Close()
if err != nil { if err != nil {
logger.Log.Errorf("Error closing socket connection for socket id %d: %v\n", socketId, err) logger.Log.Errorf("Error closing socket connection for socket id %d: %v", socketId, err)
} }
websocketIdsLock.Lock() websocketIdsLock.Lock()

View File

@@ -65,14 +65,14 @@ func (h *RoutesEventHandlers) WebSocketMessage(_ int, message []byte) {
var socketMessageBase shared.WebSocketMessageMetadata var socketMessageBase shared.WebSocketMessageMetadata
err := json.Unmarshal(message, &socketMessageBase) err := json.Unmarshal(message, &socketMessageBase)
if err != nil { if err != nil {
logger.Log.Infof("Could not unmarshal websocket message %v\n", err) logger.Log.Infof("Could not unmarshal websocket message %v", err)
} else { } else {
switch socketMessageBase.MessageType { switch socketMessageBase.MessageType {
case shared.WebSocketMessageTypeTappedEntry: case shared.WebSocketMessageTypeTappedEntry:
var tappedEntryMessage models.WebSocketTappedEntryMessage var tappedEntryMessage models.WebSocketTappedEntryMessage
err := json.Unmarshal(message, &tappedEntryMessage) err := json.Unmarshal(message, &tappedEntryMessage)
if err != nil { if err != nil {
logger.Log.Infof("Could not unmarshal message of message type %s %v\n", socketMessageBase.MessageType, err) logger.Log.Infof("Could not unmarshal message of message type %s %v", socketMessageBase.MessageType, err)
} else { } else {
// NOTE: This is where the message comes back from the intermediate WebSocket to code. // NOTE: This is where the message comes back from the intermediate WebSocket to code.
h.SocketOutChannel <- tappedEntryMessage.Data h.SocketOutChannel <- tappedEntryMessage.Data
@@ -81,7 +81,7 @@ func (h *RoutesEventHandlers) WebSocketMessage(_ int, message []byte) {
var statusMessage shared.WebSocketStatusMessage var statusMessage shared.WebSocketStatusMessage
err := json.Unmarshal(message, &statusMessage) err := json.Unmarshal(message, &statusMessage)
if err != nil { if err != nil {
logger.Log.Infof("Could not unmarshal message of message type %s %v\n", socketMessageBase.MessageType, err) logger.Log.Infof("Could not unmarshal message of message type %s %v", socketMessageBase.MessageType, err)
} else { } else {
providers.TapStatus.Pods = statusMessage.TappingStatus.Pods providers.TapStatus.Pods = statusMessage.TappingStatus.Pods
BroadcastToBrowserClients(message) BroadcastToBrowserClients(message)
@@ -90,7 +90,7 @@ func (h *RoutesEventHandlers) WebSocketMessage(_ int, message []byte) {
var outboundLinkMessage models.WebsocketOutboundLinkMessage var outboundLinkMessage models.WebsocketOutboundLinkMessage
err := json.Unmarshal(message, &outboundLinkMessage) err := json.Unmarshal(message, &outboundLinkMessage)
if err != nil { if err != nil {
logger.Log.Infof("Could not unmarshal message of message type %s %v\n", socketMessageBase.MessageType, err) logger.Log.Infof("Could not unmarshal message of message type %s %v", socketMessageBase.MessageType, err)
} else { } else {
handleTLSLink(outboundLinkMessage) handleTLSLink(outboundLinkMessage)
} }

View File

@@ -37,7 +37,7 @@ func PostTappedPods(c *gin.Context) {
providers.TapStatus.Pods = tapStatus.Pods providers.TapStatus.Pods = tapStatus.Pods
message := shared.CreateWebSocketStatusMessage(*tapStatus) message := shared.CreateWebSocketStatusMessage(*tapStatus)
if jsonBytes, err := json.Marshal(message); err != nil { if jsonBytes, err := json.Marshal(message); err != nil {
logger.Log.Errorf("Could not Marshal message %v\n", err) logger.Log.Errorf("Could not Marshal message %v", err)
} else { } else {
api.BroadcastToBrowserClients(jsonBytes) api.BroadcastToBrowserClients(jsonBytes)
} }

View File

@@ -164,10 +164,10 @@ func (resolver *Resolver) watchServices(ctx context.Context) error {
func (resolver *Resolver) saveResolvedName(key string, resolved string, eventType watch.EventType) { func (resolver *Resolver) saveResolvedName(key string, resolved string, eventType watch.EventType) {
if eventType == watch.Deleted { if eventType == watch.Deleted {
resolver.nameMap.Remove(key) resolver.nameMap.Remove(key)
logger.Log.Infof("setting %s=nil\n", key) logger.Log.Infof("setting %s=nil", key)
} else { } else {
resolver.nameMap.Set(key, resolved) resolver.nameMap.Set(key, resolved)
logger.Log.Infof("setting %s=%s\n", key, resolved) logger.Log.Infof("setting %s=%s", key, resolved)
} }
} }
@@ -188,7 +188,7 @@ func (resolver *Resolver) infiniteErrorHandleRetryFunc(ctx context.Context, fun
var statusError *k8serrors.StatusError var statusError *k8serrors.StatusError
if errors.As(err, &statusError) { if errors.As(err, &statusError) {
if statusError.ErrStatus.Reason == metav1.StatusReasonForbidden { if statusError.ErrStatus.Reason == metav1.StatusReasonForbidden {
logger.Log.Infof("Resolver loop encountered permission error, aborting event listening - %v\n", err) logger.Log.Infof("Resolver loop encountered permission error, aborting event listening - %v", err)
return return
} }
} }

View File

@@ -112,14 +112,14 @@ func GetAnalyzeInfo() *shared.AnalyzeStatus {
} }
func SyncEntries(syncEntriesConfig *shared.SyncEntriesConfig) error { func SyncEntries(syncEntriesConfig *shared.SyncEntriesConfig) error {
logger.Log.Infof("Sync entries - started\n") logger.Log.Infof("Sync entries - started")
var ( var (
token, model string token, model string
guestMode bool guestMode bool
) )
if syncEntriesConfig.Token == "" { if syncEntriesConfig.Token == "" {
logger.Log.Infof("Sync entries - creating anonymous token. env %s\n", syncEntriesConfig.Env) logger.Log.Infof("Sync entries - creating anonymous token. env %s", syncEntriesConfig.Env)
guestToken, err := createAnonymousToken(syncEntriesConfig.Env) guestToken, err := createAnonymousToken(syncEntriesConfig.Env)
if err != nil { if err != nil {
return fmt.Errorf("failed creating anonymous token, err: %v", err) return fmt.Errorf("failed creating anonymous token, err: %v", err)
@@ -133,7 +133,7 @@ func SyncEntries(syncEntriesConfig *shared.SyncEntriesConfig) error {
model = syncEntriesConfig.Workspace model = syncEntriesConfig.Workspace
guestMode = false guestMode = false
logger.Log.Infof("Sync entries - upserting model. env %s, model %s\n", syncEntriesConfig.Env, model) logger.Log.Infof("Sync entries - upserting model. env %s, model %s", syncEntriesConfig.Env, model)
if err := upsertModel(token, model, syncEntriesConfig.Env); err != nil { if err := upsertModel(token, model, syncEntriesConfig.Env); err != nil {
return fmt.Errorf("failed upserting model, err: %v", err) return fmt.Errorf("failed upserting model, err: %v", err)
} }
@@ -144,7 +144,7 @@ func SyncEntries(syncEntriesConfig *shared.SyncEntriesConfig) error {
return fmt.Errorf("invalid model name, model name: %s", model) return fmt.Errorf("invalid model name, model name: %s", model)
} }
logger.Log.Infof("Sync entries - syncing. token: %s, model: %s, guest mode: %v\n", token, model, guestMode) logger.Log.Infof("Sync entries - syncing. token: %s, model: %s, guest mode: %v", token, model, guestMode)
go syncEntriesImpl(token, model, syncEntriesConfig.Env, syncEntriesConfig.UploadIntervalSec, guestMode) go syncEntriesImpl(token, model, syncEntriesConfig.Env, syncEntriesConfig.UploadIntervalSec, guestMode)
return nil return nil
@@ -209,7 +209,7 @@ func syncEntriesImpl(token string, model string, envPrefix string, uploadInterva
// "http or grpc" filter indicates that we're only interested in HTTP and gRPC entries // "http or grpc" filter indicates that we're only interested in HTTP and gRPC entries
query := "http or grpc" query := "http or grpc"
logger.Log.Infof("Getting entries from the database\n") logger.Log.Infof("Getting entries from the database")
var connection *basenine.Connection var connection *basenine.Connection
var err error var err error

View File

@@ -282,7 +282,7 @@ func createMizuResources(ctx context.Context, cancel context.CancelFunc, kuberne
} }
if err := createMizuConfigmap(ctx, kubernetesProvider, serializedValidationRules, serializedContract, serializedMizuConfig); err != nil { if err := createMizuConfigmap(ctx, kubernetesProvider, serializedValidationRules, serializedContract, serializedMizuConfig); err != nil {
logger.Log.Warningf(uiUtils.Warning, fmt.Sprintf("Failed to create resources required for policy validation. Mizu will not validate policy rules. error: %v\n", errormessage.FormatError(err))) logger.Log.Warningf(uiUtils.Warning, fmt.Sprintf("Failed to create resources required for policy validation. Mizu will not validate policy rules. error: %v", errormessage.FormatError(err)))
} }
var err error var err error
@@ -441,7 +441,7 @@ func dumpLogsIfNeeded(ctx context.Context, kubernetesProvider *kubernetes.Provid
} }
func cleanUpMizuResources(ctx context.Context, cancel context.CancelFunc, kubernetesProvider *kubernetes.Provider) { func cleanUpMizuResources(ctx context.Context, cancel context.CancelFunc, kubernetesProvider *kubernetes.Provider) {
logger.Log.Infof("\nRemoving mizu resources\n") logger.Log.Infof("\nRemoving mizu resources")
var leftoverResources []string var leftoverResources []string
@@ -626,7 +626,7 @@ func watchApiServerPod(ctx context.Context, kubernetesProvider *kubernetes.Provi
break break
} }
logger.Log.Infof("Mizu is available at %s\n", url) logger.Log.Infof("Mizu is available at %s", url)
if !config.Config.HeadlessMode { if !config.Config.HeadlessMode {
uiUtils.OpenBrowser(url) uiUtils.OpenBrowser(url)
} }

View File

@@ -56,7 +56,7 @@ func runMizuView() {
return return
} }
logger.Log.Infof("Mizu is available at %s\n", url) logger.Log.Infof("Mizu is available at %s", url)
if !config.Config.HeadlessMode { if !config.Config.HeadlessMode {
uiUtils.OpenBrowser(url) uiUtils.OpenBrowser(url)

View File

@@ -78,6 +78,6 @@ func DumpLogs(ctx context.Context, provider *kubernetes.Provider, filePath strin
logger.Log.Debugf("Successfully added file %s", GetLogFilePath()) logger.Log.Debugf("Successfully added file %s", GetLogFilePath())
} }
logger.Log.Infof("You can find the zip file with all logs in %s\n", filePath) logger.Log.Infof("You can find the zip file with all logs in %s", filePath)
return nil return nil
} }

View File

@@ -9,7 +9,7 @@ import (
var Log = logging.MustGetLogger("mizu") var Log = logging.MustGetLogger("mizu")
var format = logging.MustStringFormatter( var format = logging.MustStringFormatter(
`%{time} %{level:.5s} ▶ %{message} ▶ %{pid} %{shortfile} %{shortfunc}`, `%{time:2006-01-02T15:04:05.999Z-07:00} %{level:-5s} ▶ %{message} ▶ %{pid} %{shortfile} %{shortfunc}`,
) )
func InitLogger(logPath string) { func InitLogger(logPath string) {

View File

@@ -2,9 +2,9 @@ package shared
import ( import (
"github.com/op/go-logging" "github.com/op/go-logging"
"github.com/up9inc/mizu/shared/logger"
"github.com/up9inc/mizu/tap/api" "github.com/up9inc/mizu/tap/api"
"io/ioutil" "io/ioutil"
"log"
"strings" "strings"
"gopkg.in/yaml.v3" "gopkg.in/yaml.v3"
@@ -141,14 +141,12 @@ func (r *RulePolicy) validateType() bool {
permitedTypes := []string{"json", "header", "slo"} permitedTypes := []string{"json", "header", "slo"}
_, found := Find(permitedTypes, r.Type) _, found := Find(permitedTypes, r.Type)
if !found { if !found {
log.Printf("Error: %s. ", r.Name) logger.Log.Errorf("Only json, header and slo types are supported on rule definition. This rule will be ignored. rule name: %s", r.Name)
log.Printf("Only json, header and slo types are supported on rule definition. This rule will be ignored\n")
found = false found = false
} }
if strings.ToLower(r.Type) == "slo" { if strings.ToLower(r.Type) == "slo" {
if r.ResponseTime <= 0 { if r.ResponseTime <= 0 {
log.Printf("Error: %s. ", r.Name) logger.Log.Errorf("When rule type is slo, the field response-time should be specified and have a value >= 1. rule name: %s", r.Name)
log.Printf("When type=slo, the field response-time should be specified and have a value >= 1\n\n")
found = false found = false
} }
} }

View File

@@ -287,7 +287,7 @@ func (h HTTPPayload) MarshalJSON() ([]byte, error) {
RawResponse: &HTTPResponseWrapper{Response: h.Data.(*http.Response)}, RawResponse: &HTTPResponseWrapper{Response: h.Data.(*http.Response)},
}) })
default: default:
panic(fmt.Sprintf("HTTP payload cannot be marshaled: %s\n", h.Type)) panic(fmt.Sprintf("HTTP payload cannot be marshaled: %s", h.Type))
} }
} }

View File

@@ -39,7 +39,7 @@ func StartMemoryProfiler(envDumpPath string, envTimeInterval string) {
filename := fmt.Sprintf("%s/%s__mem.prof", dumpPath, t.Format("15_04_05")) filename := fmt.Sprintf("%s/%s__mem.prof", dumpPath, t.Format("15_04_05"))
logger.Log.Infof("Writing memory profile to %s\n", filename) logger.Log.Infof("Writing memory profile to %s", filename)
f, err := os.Create(filename) f, err := os.Create(filename)
if err != nil { if err != nil {

View File

@@ -37,7 +37,7 @@ func (d dissecting) Register(extension *api.Extension) {
} }
func (d dissecting) Ping() { func (d dissecting) Ping() {
log.Printf("pong %s\n", protocol.Name) log.Printf("pong %s", protocol.Name)
} }
const amqpRequest string = "amqp_request" const amqpRequest string = "amqp_request"
@@ -218,7 +218,7 @@ func (d dissecting) Dissect(b *bufio.Reader, isClient bool, tcpID *api.TcpID, co
} }
default: default:
// log.Printf("unexpected frame: %+v\n", f) // log.Printf("unexpected frame: %+v", f)
} }
} }
} }

View File

@@ -58,7 +58,7 @@ func (d dissecting) Register(extension *api.Extension) {
} }
func (d dissecting) Ping() { func (d dissecting) Ping() {
log.Printf("pong %s\n", protocol.Name) log.Printf("pong %s", protocol.Name)
} }
func (d dissecting) Dissect(b *bufio.Reader, isClient bool, tcpID *api.TcpID, counterPair *api.CounterPair, superTimer *api.SuperTimer, superIdentifier *api.SuperIdentifier, emitter api.Emitter, options *api.TrafficFilteringOptions) error { func (d dissecting) Dissect(b *bufio.Reader, isClient bool, tcpID *api.TcpID, counterPair *api.CounterPair, superTimer *api.SuperTimer, superIdentifier *api.SuperIdentifier, emitter api.Emitter, options *api.TrafficFilteringOptions) error {

View File

@@ -37,7 +37,7 @@ func (d dissecting) Register(extension *api.Extension) {
} }
func (d dissecting) Ping() { func (d dissecting) Ping() {
log.Printf("pong %s\n", _protocol.Name) log.Printf("pong %s", _protocol.Name)
} }
func (d dissecting) Dissect(b *bufio.Reader, isClient bool, tcpID *api.TcpID, counterPair *api.CounterPair, superTimer *api.SuperTimer, superIdentifier *api.SuperIdentifier, emitter api.Emitter, options *api.TrafficFilteringOptions) error { func (d dissecting) Dissect(b *bufio.Reader, isClient bool, tcpID *api.TcpID, counterPair *api.CounterPair, superTimer *api.SuperTimer, superIdentifier *api.SuperIdentifier, emitter api.Emitter, options *api.TrafficFilteringOptions) error {

View File

@@ -36,7 +36,7 @@ func (d dissecting) Register(extension *api.Extension) {
} }
func (d dissecting) Ping() { func (d dissecting) Ping() {
log.Printf("pong %s\n", protocol.Name) log.Printf("pong %s", protocol.Name)
} }
func (d dissecting) Dissect(b *bufio.Reader, isClient bool, tcpID *api.TcpID, counterPair *api.CounterPair, superTimer *api.SuperTimer, superIdentifier *api.SuperIdentifier, emitter api.Emitter, options *api.TrafficFilteringOptions) error { func (d dissecting) Dissect(b *bufio.Reader, isClient bool, tcpID *api.TcpID, counterPair *api.CounterPair, superTimer *api.SuperTimer, superIdentifier *api.SuperIdentifier, emitter api.Emitter, options *api.TrafficFilteringOptions) error {

View File

@@ -313,7 +313,7 @@ func (p *RedisProtocol) Read() (packet *RedisPacket, err error) {
packet.Value = fmt.Sprintf("%s]", packet.Value) packet.Value = fmt.Sprintf("%s]", packet.Value)
} }
default: default:
msg := fmt.Sprintf("Unrecognized element in Redis array: %v\n", reflect.TypeOf(array[0])) msg := fmt.Sprintf("Unrecognized element in Redis array: %v", reflect.TypeOf(array[0]))
err = errors.New(msg) err = errors.New(msg)
return return
} }
@@ -333,7 +333,7 @@ func (p *RedisProtocol) Read() (packet *RedisPacket, err error) {
case int64: case int64:
packet.Value = fmt.Sprintf("%d", x.(int64)) packet.Value = fmt.Sprintf("%d", x.(int64))
default: default:
msg := fmt.Sprintf("Unrecognized Redis data type: %v\n", reflect.TypeOf(x)) msg := fmt.Sprintf("Unrecognized Redis data type: %v", reflect.TypeOf(x))
err = errors.New(msg) err = errors.New(msg)
return return
} }

View File

@@ -193,7 +193,7 @@ func startPassiveTapper(outputItems chan *api.OutputChannelItem) {
} }
if err := diagnose.DumpMemoryProfile(*memprofile); err != nil { if err := diagnose.DumpMemoryProfile(*memprofile); err != nil {
logger.Log.Errorf("Error dumping memory profile %v\n", err) logger.Log.Errorf("Error dumping memory profile %v", err)
} }
assembler.waitAndDump() assembler.waitAndDump()

View File

@@ -78,7 +78,7 @@ func (a *tcpAssembler) processPackets(dumpPacket bool, packets <-chan source.Tcp
if *checksum { if *checksum {
err := tcp.SetNetworkLayerForChecksum(packet.NetworkLayer()) err := tcp.SetNetworkLayerForChecksum(packet.NetworkLayer())
if err != nil { if err != nil {
logger.Log.Fatalf("Failed to set network layer for checksum: %s\n", err) logger.Log.Fatalf("Failed to set network layer for checksum: %s", err)
} }
} }
c := context{ c := context{

View File

@@ -66,7 +66,7 @@ func (h *tcpReader) Read(p []byte) (int, error) {
clientHello := tlsx.ClientHello{} clientHello := tlsx.ClientHello{}
err := clientHello.Unmarshall(msg.bytes) err := clientHello.Unmarshall(msg.bytes)
if err == nil { if err == nil {
logger.Log.Debugf("Detected TLS client hello with SNI %s\n", clientHello.SNI) logger.Log.Debugf("Detected TLS client hello with SNI %s", clientHello.SNI)
// TODO: Throws `panic: runtime error: invalid memory address or nil pointer dereference` error. // TODO: Throws `panic: runtime error: invalid memory address or nil pointer dereference` error.
// numericPort, _ := strconv.Atoi(h.tcpID.DstPort) // numericPort, _ := strconv.Atoi(h.tcpID.DstPort)
// h.outboundLinkWriter.WriteOutboundLink(h.tcpID.SrcIP, h.tcpID.DstIP, numericPort, clientHello.SNI, TLSProtocol) // h.outboundLinkWriter.WriteOutboundLink(h.tcpID.SrcIP, h.tcpID.DstIP, numericPort, clientHello.SNI, TLSProtocol)

View File

@@ -46,7 +46,7 @@ func (streamMap *tcpStreamMap) closeTimedoutTcpStreamChannels() {
if !stream.isClosed && time.Now().After(streamWrapper.createdAt.Add(tcpStreamChannelTimeout)) { if !stream.isClosed && time.Now().After(streamWrapper.createdAt.Add(tcpStreamChannelTimeout)) {
stream.Close() stream.Close()
diagnose.AppStats.IncDroppedTcpStreams() diagnose.AppStats.IncDroppedTcpStreams()
logger.Log.Debugf("Dropped an unidentified TCP stream because of timeout. Total dropped: %d Total Goroutines: %d Timeout (ms): %d\n", logger.Log.Debugf("Dropped an unidentified TCP stream because of timeout. Total dropped: %d Total Goroutines: %d Timeout (ms): %d",
diagnose.AppStats.DroppedTcpStreams, runtime.NumGoroutine(), tcpStreamChannelTimeout/1000000) diagnose.AppStats.DroppedTcpStreams, runtime.NumGoroutine(), tcpStreamChannelTimeout/1000000)
} }
} else { } else {

View File

@@ -33,7 +33,7 @@ func loadExtensions() ([]*tapApi.Extension, error) {
continue continue
} }
logger.Log.Infof("Loading extension: %s\n", filename) logger.Log.Infof("Loading extension: %s", filename)
extension := &tapApi.Extension{ extension := &tapApi.Extension{
Path: path.Join(extensionsDir, filename), Path: path.Join(extensionsDir, filename),
@@ -55,7 +55,7 @@ func loadExtensions() ([]*tapApi.Extension, error) {
dissector, ok := symDissector.(tapApi.Dissector) dissector, ok := symDissector.(tapApi.Dissector)
if !ok { if !ok {
return nil, errors.Errorf("Symbol Dissector type error: %v %T\n", file, symDissector) return nil, errors.Errorf("Symbol Dissector type error: %v %T", file, symDissector)
} }
dissector.Register(extension) dissector.Register(extension)
@@ -68,7 +68,7 @@ func loadExtensions() ([]*tapApi.Extension, error) {
}) })
for _, extension := range extensions { for _, extension := range extensions {
logger.Log.Infof("Extension Properties: %+v\n", extension) logger.Log.Infof("Extension Properties: %+v", extension)
} }
return extensions, nil return extensions, nil
@@ -92,7 +92,7 @@ func internalRun() error {
tap.StartPassiveTapper(&opts, outputItems, extenssions, &tapOpts) tap.StartPassiveTapper(&opts, outputItems, extenssions, &tapOpts)
logger.Log.Infof("Tapping, press enter to exit...\n") logger.Log.Infof("Tapping, press enter to exit...")
reader := bufio.NewReader(os.Stdin) reader := bufio.NewReader(os.Stdin)
reader.ReadLine() reader.ReadLine()
return nil return nil
@@ -104,9 +104,9 @@ func main() {
if err != nil { if err != nil {
switch err := err.(type) { switch err := err.(type) {
case *errors.Error: case *errors.Error:
logger.Log.Errorf("Error: %v\n", err.ErrorStack()) logger.Log.Errorf("Error: %v", err.ErrorStack())
default: default:
logger.Log.Errorf("Error: %v\n", err) logger.Log.Errorf("Error: %v", err)
} }
os.Exit(1) os.Exit(1)