mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-09-03 19:48:45 +00:00
remove newline in logs, fixed logs time format (#469)
This commit is contained in:
@@ -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)
|
||||||
|
@@ -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
|
||||||
}
|
}
|
||||||
|
@@ -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()
|
||||||
|
@@ -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)
|
||||||
}
|
}
|
||||||
|
@@ -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)
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
@@ -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)
|
||||||
}
|
}
|
||||||
|
@@ -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)
|
||||||
|
@@ -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
|
||||||
}
|
}
|
||||||
|
@@ -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) {
|
||||||
|
@@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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 {
|
||||||
|
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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 {
|
||||||
|
@@ -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 {
|
||||||
|
@@ -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 {
|
||||||
|
@@ -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
|
||||||
}
|
}
|
||||||
|
@@ -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()
|
||||||
|
@@ -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{
|
||||||
|
@@ -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)
|
||||||
|
@@ -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 {
|
||||||
|
@@ -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)
|
||||||
|
Reference in New Issue
Block a user