* initial tls tapper commit
* add tls flag to mizu cli
* support ssl_read_ex/ssl_write_ex
* use hostproc to find libssl
* auto discover tls processes
* support libssl1.0
* recompile ebpf with old clang/llvm
* Update tap/passive_tapper.go
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Update tap/tlstapper/tls_poller.go
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Update tap/tlstapper/tls_poller.go
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Update tap/tlstapper/tls_poller.go
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Update tap/tlstapper/tls_poller.go
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Update tap/tlstapper/tls_poller.go
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Update tap/tlstapper/tls_poller.go
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* Update tap/tlstapper/tls_poller.go
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
* upgrade ebpf go lib
* handling big tls messages
* fixing max buffer size in ebpf
* remove unused import
* fix linter issues
* minor pr fixes
* compile with old clang
* fix cgroup file format
* pr fixes + cgroup extract enhance
* fix linter
* adding indirect ebpf dep to agent go.mod
* adding ebpf docker builder
* minor pr fixes
* add req resp matcher to dissect
* rename ssl hooks to ssl hooks structs
* move to alpine, use local copy of mizu instead of git, add readme
* use global req resp mather for tls
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Start with tests
* Expected file
* Almost works
* Make test stab;e
* 5 examples, not 6
* Add param type
* multipart example
* parsing multipart
* Commit
* Commit
* multipart
* Write encoding into schema
* Stable test
* Add reset
* Refactoring
* Refactoring
* Maintain the required flag
* lint
* Evidence of problems
* Improving it
* Progressing
* Progress
* Fixes
* progress
* log is not right
* Fixing thresholds
* Almost there
* Imptovements
* Move some false negatives into TODO
* cosmetics
* linter (I disagree)
* linter (I disagree)
* fix test
* 0.9 (#37)
* Update .gitignore
* WIP
* WIP
* Update README.md, root.go, and 4 more files...
* Update README.md
* Update README.md
* Update root.go
* Update provider.go
* Update provider.go
* Update root.go, go.mod, and go.sum
* Update mizu.go
* Update go.sum and provider.go
* Update portForward.go, watch.go, and mizu.go
* Update README.md
* Update watch.go
* Update mizu.go
* Update mizu.go
* no message
* no message
* remove unused things and use external for object id (instead of copy)
* no message
* Update mizu.go
* Update go.mod, go.sum, and 2 more files...
* no message
* Update README.md, go.mod, and resolver.go
* Update README.md
* Update go.mod
* Update loader.go
* some refactor
* Update loader.go
* no message
* status to statusCode
* return data directly
* Traffic viewer
* cleaning
* css
* no message
* Clean warnings
* Makefile - first draft
* Update Makefile
* Update Makefile
* Update Makefile, README.md, and 4 more files...
* Add api build and clean to makefile (files restructure) (#9)
* no message
* add clean api command
* no message
* stating with web socket
* Add tap as a separate executable (#10)
* Added tap.
* Ignore build directories.
* Added tapper build to Makefile.
* Improvements (#12)
* no message
* no message
* Feature/makefile (#11)
* minor fixes
* makefile fixes - docker build
* minor fix in Makefile
Co-authored-by: Alex Haiut <alex@up9.com>
* Update Dockerfile, multi-runner.sh, and 31 more files...
* Update multi-runner.sh
* no message
* Update .dockerignore, Dockerfile, and 30 more files...
* Update cleaner.go, grpc_assembler.go, and 2 more files...
* start the pod with host network and privileged
* fix multi runner passive tapper command
* add HOST_MODE env var
* do not return true in the should tap function
* remove line in the end
* default value in api is input
fix description and pass the parameter in the multi runner script
* missing flag.parse
* no message
* fix image
* Create main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Small fixes - permission + har writing exception (#17)
* Select node by pod (#18)
* Select node by pod.
* Removed watch pod by regex. Irrelevant for now.
* Changed default image to develop:latest.
* Features/clifix (#19)
* makefile fixes - docker build
* readme update, CLI usage fix
* added chmod
Co-authored-by: Alex Haiut <alex@up9.com>
* meta information
* Only record traffic of the requested pod. Filtered by pod IP. (#21)
* fixed readme and reduced batch size to 5 (#22)
Co-authored-by: Alex Haiut <alex@up9.com>
* API and TAP in single process (#24)
* no message
* no message
* CLI make --pod required flag and faster api image build (#25)
* makefile fixes - docker build
* readme update, CLI usage fix
* added chmod
* typo
* run example incorreect in makefile
* no message
* no message
* no message
Co-authored-by: Alex Haiut <alex@up9.com>
* Reduce delay between tap and UI - Skip dump to file (#26)
* Pass HARs between tap and api via channel.
* Fixed make docker commad.
* Various fixes.
* Added .DS_Store to .gitignore.
* Parse flags in Mizu main instead of in tap_output.go.
* Use channel to pass HAR by default instead of files.
* Infinite scroll (#28)
* no message
* infinite scroll + new ws implementation
* no message
* scrolling top
* fetch button
* more Backend changes
* fix go mod and sum
* mire fixes against develop
* unused code
* small ui refactor
Co-authored-by: Roee Gadot <roee.gadot@up9.com>
* Fix gRPC crash, display gRPC as base64, display gRPC URL and status code (#27)
* Added Method (POST) and URL (emtpy) to gRPC requests.
* Removed quickfix that skips writing HTTP/2 to HAR.
* Use HTTP/2 body to fill out http.Request and htt.Response.
* Make sure that in HARs request.postData.mimeType and response.content.mimeType are application/grpc in case of grpc.
* Comment.
* Add URL and status code for gRPC.
* Don't assume http scheme.
* Use http.Header.Set instead of manually acccessing the underlaying map.
* General stats api fix (#29)
* refactor and validation
* Show gRPC as ASCII (#31)
* Moved try-catch up one block.
* Display grpc as ASCII.
* Better code in entries fetch endpoint (#30)
* no message
* no message
* Feature/UI/filters (#32)
* UI filters
* refactor
* Revert "refactor"
This reverts commit 70e7d4b6ac.
* remove recursive func
* CLI cleanup (#33)
* Moved cli root command to tap subcommand.
* tap subcommand works.
* Added view and fetch placeholders.
* Updated descriptions.
* Fixed indentation.
* Added versio subcommand.
* Removed version flag.
* gofmt.
* Changed pod from flag to arg.
* Commented out "all namespaces" flag.
* CLI cleanup 2 (#34)
* Renamed dashboard -> GUI/web interface.
* Commented out --quiet, removed unused config variables.
* Quiter output when calling unimplemented subcommands.
* Leftovers from PR #30 (#36)
Co-authored-by: up9-github <info@up9.com>
Co-authored-by: RamiBerm <54766858+RamiBerm@users.noreply.github.com>
Co-authored-by: Liraz Yehezkel <lirazy@up9.com>
Co-authored-by: Alex Haiut <alex@testr.io>
Co-authored-by: lirazyehezkel <61656597+lirazyehezkel@users.noreply.github.com>
Co-authored-by: Alex Haiut <alex@up9.com>
Co-authored-by: nimrod-up9 <59927337+nimrod-up9@users.noreply.github.com>
Co-authored-by: RamiBerm <rami.berman@up9.com>
Co-authored-by: Alex Haiut <alex.haiut@gmail.com>
* remove leftovers (#43)
* end of week - develop to master (#50)
* Provide cli version as git hash from makefile
* Update Makefile, version.go, and 3 more files...
* Update mizuRunner.go
* Update README.md, resolver.go, and 2 more files...
* Update provider.go
* Feature/UI/light theme (#44)
* light theme
* css polish
* unused code
* css
* text shadow
* footer style
* Update mizuRunner.go
* Handle nullable vars (#47)
* Decode gRPC body (#48)
* Decode grpc.
* Better variable names.
* Added protobuf-decoder dependency.
* Updated protobuf-decoder's version.
Co-authored-by: RamiBerm <rami.berman@up9.com>
Co-authored-by: RamiBerm <54766858+RamiBerm@users.noreply.github.com>
Co-authored-by: lirazyehezkel <61656597+lirazyehezkel@users.noreply.github.com>
Co-authored-by: nimrod-up9 <59927337+nimrod-up9@users.noreply.github.com>
* Fix mizu image parameter (#53)
* remove file
* mizu release 2021-06-21 (#79)
* Show pod name and namespace (#61)
* WIP
* Update main.go, consts.go, and 2 more files...
* Update messageSensitiveDataCleaner.go
* Update consts.go and messageSensitiveDataCleaner.go
* Update messageSensitiveDataCleaner.go
* Update main.go, consts.go, and 3 more files...
* WIP
* Update main.go, messageSensitiveDataCleaner.go, and 6 more files...
* Update main.go, messageSensitiveDataCleaner.go, and 3 more files...
* Update consts.go, messageSensitiveDataCleaner.go, and tap.go
* Update provider.go
* Update serializableRegexp.go
* Update tap.go
* TRA-3234 fetch with _source + no hard limit (#64)
* remove the HARD limit of 5000
* TRA-3299 Reduce footprint and Add Tolerances(#65)
* Use lib const for DNSClusterFirstWithHostNet.
* Whitespace.
* Break lines.
* Added affinity to pod names.
* Added tolerations to NoExecute and NoSchedule taints.
* Implementation of Mizu view command
* .
* .
* Update main.go and messageSensitiveDataCleaner.go
* Update main.go
* String and not pointers (#68)
* TRA-3318 - Cookies not null and fix har file names (#69)
* no message
* TRA-3212 Passive-Tapper and Mizu share code (#70)
* Use log in tap package instead of fmt.
* Moved api/pkg/tap to root.
* Added go.mod and go.sum for tap.
* Added replace for shared.
* api uses tap module instead of tap package.
* Removed dependency of tap in shared by moving env var out of tap.
* Fixed compilation bugs.
* Fixed: Forgot to export struct field HostMode.
* Removed unused flag.
* Close har output channel when done.
* Moved websocket out of mizu and into passive-tapper.
* Send connection details over har output channel.
* Fixed compilation errors.
* Removed unused info from request response cache.
* Renamed connection -> connectionID.
* Fixed rename bug.
* Export setters and getters for filter ips and ports.
* Added tap dependency to Dockerfile.
* Uncomment error messages.
* Renamed `filterIpAddresses` -> `filterAuthorities`.
* Renamed ConnectionID -> ConnectionInfo.
* Fixed: Missed one replace.
* TRA-3342 Mizu/tap dump to har directory fails on Linux (#71)
* Instead of saving incomplete temp har files in a temp dir, save them in the output dir with a *.har.tmp suffix.
* API only loads har from *.har files (by extension).
* Add export entries endpoint for better up9 connect funcionality (#72)
* no message
* no message
* no message
* Filter 'cookie' header
* Release action (#73)
* Create main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* Update main.yml
* trying new approach
* no message
* yaml error
* no message
* no message
* no message
* missing )
* no message
* no message
* remove main.yml and fix branches
* Create tag-temp.yaml
* Update tag-temp.yaml
* Update tag-temp.yaml
* no message
* no message
* no message
* no message
* no message
* no message
* no message
* #minor
* no message
* no message
* added checksum calc to CLI makefile
* fixed build error - created bin directory upfront
* using markdown for release text
* use separate checksum files
* fixed release readme
* #minor
* readme updated
Co-authored-by: Alex Haiut <alex@up9.com>
* TRA-3360 Fix: Mizu ignores -n namespace flag and records traffic from all pods (#75)
Do not tap pods in namespaces which were not requested.
* added apple/m1 binary, updated readme (#77)
Co-authored-by: Alex Haiut <alex@up9.com>
* Update README.md (#78)
Co-authored-by: lirazyehezkel <61656597+lirazyehezkel@users.noreply.github.com>
Co-authored-by: RamiBerm <rami.berman@up9.com>
Co-authored-by: RamiBerm <54766858+RamiBerm@users.noreply.github.com>
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
Co-authored-by: nimrod-up9 <59927337+nimrod-up9@users.noreply.github.com>
Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
Co-authored-by: Alex Haiut <alex@up9.com>
* temp fix - ignore agent image in config command (#185)
* removed duplicate har page header (#187)
* Hotfix - ignore not allowed set flags (#192)
#patch
* Add to periodic stats print in tapper (#221)
#patch
* Fixing bad conflict resolution
* some changes in the read me (#241)
change prerequisite to permissions and kubeconfig. These are more FYIs as Mizu requires very little prerequisites.
Change the description to match getmizu.io
* added tapper count route and wait time for tappers in test (#226)
* Introducing API server provider (#243)
* added tap acceptance tests, fixed duplicate namespace problem (#244)
* added custom config path option (#247)
* Fixing call to analysis (#248)
* no message
* upgrade alpine base image (#413)
* Develop -> main (#544)
* Add support of listening to multiple netns (#418)
* multiple netns listen - initial commit
* multiple netns listen - actual work
* remove redundant log line
* map /proc of host to tapper
* changing kubernetes provider again after big conflict
* revert node-sass version back to 5.0.0
* Rename host_source to hostSource
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* PR fixes - adding comment + typos + naming conventions
* go fmt + making procfs read only
* setns back to the original value after packet source initialized
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* TRA-3842 daemon acceptance tests (#429)
* Update tap_test.go and testsUtils.go
* Update tap_test.go
* Update testsUtils.go
* Update tap_test.go and testsUtils.go
* Update tap_test.go and testsUtils.go
* Update testsUtils.go
* Update tap_test.go
* gofmt
* TRA-3913 support mizu via expose service (#440)
* Update README.md, tapRunner.go, and 4 more files...
* Update testsUtils.go
* Update proxy.go
* Update README.md, testsUtils.go, and 3 more files...
* Update testsUtils.go and provider.go
* fix readme titles (#442)
* Auto close inactive issues (#441)
* Migrate from SQLite to Basenine and introduce a new filtering syntax (#279)
* Fix the OOMKilled error by calling `debug.FreeOSMemory` periodically
* Remove `MAX_NUMBER_OF_GOROUTINES` environment variable
* Change the line
* Increase the default value of `TCP_STREAM_CHANNEL_TIMEOUT_MS` to `10000`
* Write the client and integrate to the new real-time database
* Refactor the WebSocket implementaiton for `/ws`
* Adapt the UI to the new filtering system
* Fix the rest of the issues in the UI
* Increase the buffer of the scanner
* Implement accessing single records
* Increase the buffer of another scanner
* Populate `Request` and `Response` fields of `MizuEntry`
* Add syntax highlighting for the query
* Add database to `Dockerfile`
* Fix some issues
* Update the `realtime_dbms` Git module commit hash
* Upgrade Gin version and print the query string
* Revert "Upgrade Gin version and print the query string"
This reverts commit aa09f904ee.
* Use WebSocket's itself to query instead of the query string
* Fix some errors related to conversion to HAR
* Fix the issues caused by the latest merge
* Fix the build error
* Fix PR validation GitHub workflow
* Replace the git submodule with latest Basenine version `0.1.0`
Remove `realtime_client.go` and use the official client library `github.com/up9inc/basenine/client/go` instead.
* Move Basenine host and port constants to `shared` module
* Reliably execute and wait for Basenine to become available
* Upgrade Basenine version
* Properly close WebSocket and data channel
* Fix the issues caused by the recent merge commit
* Clean up the TypeScript code
* Update `.gitignore`
* Limit the database size
* Add `Macros` method signature to `Dissector` interface and set the macros provided by the protocol extensions
* Run `go mod tidy` on `agent`
* Upgrade `github.com/up9inc/basenine/client/go` version
* Implement a mechanism to update the query using click events in the UI and use it for protocol macros
* Update the query on click to timestamps
* Fix some issues in the WebSocket and channel handling
* Update the query on clicks to status code
* Update the query on clicks to method, path and service
* Update the query on clicks to is outgoing, source and destination ports
* Add an API endpoint to validate the query against syntax errors
* Move the query background color state into `TrafficPage`
* Fix the logic in `setQuery`
* Display a toast message in case of a syntax error in the query
* Remove a call to `fmt.Printf`
* Upgrade Basenine version to `0.1.3`
* Fix an issue related to getting `MAX_ENTRIES_DB_BYTES` environment variable
* Have the `path` key in request details, in HTTP
* Rearrange the HTTP headers for the querying
* Do the same thing for `cookies` and `queryString`
* Update the query on click to table elements
Add the selectors for `TABLE` type representations in HTTP extension.
* Update the query on click to `bodySize` and `elapsedTime` in `EntryTitle`
* Add the selectors for `TABLE` type representations in AMQP extension
* Add the selectors for `TABLE` type representations in Kafka extension
* Add the selectors for `TABLE` type representations in Redis extension
* Define a struct in `tap/api.go` for the section representation data
* Add the selectors for `BODY` type representations
* Add `request.path` to the HTTP request details
* Change the summary string's field name from `path` to `summary`
* Introduce `queryable` CSS class for queryable UI elements and underline them on hover
* Instead of `N requests` at the bottom, make it `Displaying N results (queried X/Y)` and live update the values
Upgrade Basenine version to `0.2.0`.
* Verify the sha256sum of Basenine executable inside `Dockerfile`
* Pass the start time to web UI through WebSocket and always show the `EntriesList` footer
* Pipe the `stderr` of Basenine as well
* Fix the layout issues related to `CodeEditor` in the UI
* Use the correct `shasum` command in `Dockerfile`
* Upgrade Basenine version to `0.2.1`
* Limit the height of `CodeEditor` container
* Remove `Paused` enum `ConnectionStatus` in UI
* Fix the issue caused by the recent merge
* Add the filtering guide (cheatsheet)
* Update open cheatsheet button's title
* Update cheatsheet content
* Remove the old SQLite code, adapt the `--analyze` related code to Basenine
* Change the method signature of `NewEntry`
* Change the method signature of `Represent`
* Introduce `HTTPPair` field in `MizuEntry` specific to HTTP
* Remove `Entry`, `EntryId` and `EstimatedSizeBytes` fields from `MizuEntry`
Also remove the `getEstimatedEntrySizeBytes` method.
* Remove `gorm.io/gorm` dependency
* Remove unused `sensitiveDataFiltering` folder
* Increase the left margin of open cheatsheet button
* Add `overflow: auto` to the cheatsheet `Modal`
* Fix `GetEntry` method
* Fix the macro for gRPC
* Fix an interface conversion in case of AMQP
* Fix two more interface conversion errors in AMQP
* Make the `syncEntriesImpl` method blocking
* Fix a grammar mistake in the cheatsheet
* Adapt to the changes in the recent merge commit
* Improve the cheatsheet text
* Always display the timestamp in `en-US`
* Upgrade Basenine version to `0.2.2`
* Fix the order of closing Basenine connections and channels
* Don't close the Basenine channels at all
* Upgrade Basenine version to `0.2.3`
* Set the initial filter to `rlimit(100)`
* Make Basenine persistent
* Upgrade Basenine version to `0.2.4`
* Update `debug.Dockerfile`
* Fix a failing test
* Upgrade Basenine version to `0.2.5`
* Revert "Do not show play icon when disconnected (#428)"
This reverts commit 8af2e562f8.
* Upgrade Basenine version to `0.2.6`
* Make all non-informative things informative
* Make `100` a constant
* Use `===` in JavaScript no matter what
* Remove a forgotten `console.log`
* Add a comment and update the `query` in `syncEntriesImpl`
* Don't call `panic` in `GetEntry`
* Replace `panic` calls in `startBasenineServer` with `logger.Log.Panicf`
* Remove unnecessary `\n` characters in the logs
* Remove the `Reconnect` button (#444)
* Upgrade `github.com/up9inc/basenine/client/go` version (#446)
* Fix the `Analysis` button's style into its original state (#447)
* Fix the `Analysis` button's style into its original state
* Fix the MUI button style into its original state
* Fix the acceptance tests after the merger of #279 (#443)
* Enable acceptance tests
* Fix the acceptance tests
* Move `--headless` from `getDefaultCommandArgs` to `getDefaultTapCommandArgs`
* Fix rest of the failing acceptance tests
* Revert "Enable acceptance tests"
This reverts commit 3f919e865a.
* Revert "Revert "Enable acceptance tests""
This reverts commit c0bfe54b70.
* Ignore `--headless` in `mizu view`
* Make all non-informative things informative
* Remove `github.com/stretchr/testify` dependency from the acceptance tests
* Move the helper methods `waitTimeout` and `checkDBHasEntries` from `tap_test.go` to `testsUtils.go`
* Split `checkDBHasEntries` method into `getDBEntries` and `assertEntriesAtLeast` methods
* Revert "Revert "Revert "Enable acceptance tests"""
This reverts commit c13342671c.
* Revert "Revert "Revert "Revert "Enable acceptance tests""""
This reverts commit 0f8c436926.
* Make `getDBEntries` and `checkEntriesAtLeast` methods return errors instead
* Revert "Revert "Revert "Revert "Revert "Enable acceptance tests"""""
This reverts commit 643fdde009.
* Send the message into this WebSocket connection instead of all (#449)
* Fix the CSS issues in the cheatsheet modal (#448)
* Fix the CSS issues in the cheatsheet modal
* Change the Sass variable names
* moved headless to root config, use headless in view (#450)
* extend cleanup timeout to solve context timeout problem in dump logs (#453)
* Add link to exposing mizu wiki page in README (#455)
* changed logger debug mode to log level (#456)
* fixed acceptance test go sum (#458)
* Ignore `SNYK-JS-JSONSCHEMA-1920922` (#462)
Dependency tree:
`node-sass@5.0.0 > node-gyp@7.1.2 > request@2.88.2 > http-signature@1.2.0 > jsprim@1.4.1 > json-schema@0.2.3`
`node-sass` should fix it first.
* Optimize UI entry feed performance (#452)
* Optimize the React code for feeding the entries
By building `EntryItem` only once and updating the `entries` state on meta query messages.
* Upgrade `react-scrollable-feed-virtualized` version from `1.4.3` to `1.4.8`
* Fix the `isSelected` state
* Set the query text before deciding the background to prevent lags while typing
* Upgrade Basenine version from `0.2.6` to `0.2.7`
* Set the query background color only if the query is same after the HTTP request and use `useEffect` instead
* Upgrade Basenine version from `0.2.7` to `0.2.8`
* Use `CancelToken` of `axios` instead of trying to check the query state
* Turn `updateQuery` function into a state hook
* Update the macro for `http`
* Do the `source.cancel()` call in `axios.CancelToken`
* Reduce client-side logging
* Upgrade Basenine version from `0.2.8` to `0.2.9` (#465)
Fixes `limit` helper being not finished because of lack of meta updates.
* Set `response.bodySize` to `0` if it's negative (#466)
* Prevent `elapsedTime` to be negative (#467)
Also fix the `elapsedTime` for Redis.
* changes log format to be more readable (#463)
* Stop reduction of user agent header (#468)
* remove newline in logs, fixed logs time format (#469)
* TRA-3903 better health endpoint for daemon mode (#471)
* Update main.go, status_controller.go, and 2 more files...
* Update status_controller.go and mizuTapperSyncer.go
* fixed redact acceptance test (#472)
* Return `404` instead of `500` if the entry could not be found and display a toast message (#464)
* TRA-3903 add flag to disable pvc creation for daemon mode (#474)
* Update tapRunner.go and tapConfig.go
* Update tapConfig.go
* Revert "Update tapConfig.go"
This reverts commit 5c7c02c4ab.
* TRA-3903 - display targetted pods before waiting for all daemon resources to be created (#475)
* WIP
* Update tapRunner.go
* Update tapRunner.go
* Update the UI screenshots (#476)
* Update the UI screenshots
* Update `mizu-ui.png`
* TRA-3903 fix daemon mode in permission restricted configs (#473)
* Update tapRunner.go, permissions-all-namespaces-daemon.yaml, and 2 more files...
* Update tapRunner.go
* Update tapRunner.go and permissions-ns-daemon.yaml
* Update tapRunner.go
* Update tapRunner.go
* Update tapRunner.go
* TRA-3903 minor daemon mode refactor (#479)
* Update common.go and tapRunner.go
* Update common.go
* Don't omit the key-value pair if the value is `false` in `EntryTableSection` (#478)
* Sync entries in batches just as before (using `uploadIntervalSec` parameter) (#477)
* Sync entries in batches just as before (using `uploadIntervalSec` parameter)
* Replace `lastTimeSynced` value with `time.Time{}`
Since it will be overwritten by the very first iteration.
* Clear `focusedEntryId` state in case of a filter is applied (#482)
* Prevent the crash on client-side in case of `text` being undefined in `FancyTextDisplay` (#481)
* Prevent the crash on client-side in case of `text` being undefined in `FancyTextDisplay`
* Use `String(text)` instead
* Refactor watch pods to allow reusing watch wrapper (#470)
Currently shared/kubernetes/watch.go:FilteredWatch only watches pods.
This PR makes it reusable for other types of resources.
This is done in preparation for watching k8s events.
* Show the source and destination IP in the entry feed (#485)
* Upgrade Basenine version from `0.2.9` to `0.2.10` (#484)
* Upgrade Basenine version from `0.2.9` to `0.2.10`
Fixes the issues in `limit` and `rlimit` helpers that occur when they are on the left operand of a binary expression.
* Upgrade the client hash to latest
* Remove unnecessary `tcpdump` dependency from `Dockerfile` (#491)
* Ignore gob files (#488)
* Ignore gob files
* Remove `*.db` from `.gitignore`
* Update README (#486)
* Add token validity check (#483)
* Add support to auto discover envoy processes (#459)
* discover envoy pids using cluster ips
* add istio flag to cli + rename mtls flag to istio
* add istio.md to docs
* Fixing typos
* Fix minor typos and grammer in docs
Co-authored-by: Nimrod Gilboa Markevich <nimrod@up9.com>
* Improving daemon documentation (#457)
* Some changes to the doc (#494)
* Warn pods not starting (#493)
Print warning event related to mizu k8s resources.
In non-daemon print to CLI. In Daemon print to API-Server logs.
* Remove `tap/tester/` directory (#489)
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Disable IPv4 defragmentation and support IPv6 (#487)
* Remove the extra negation on `nodefrag` flag's value
* Support IPv4 fragmentation and IPv6 at the same time
* Re-enable `nodefrag` flag
* Make the `gRPC` and `HTTP/2` distinction (#492)
* Remove the extra negation on `nodefrag` flag's value
* Support IPv4 fragmentation and IPv6 at the same time
* Set `Method` and `StatusCode` fields correctly for `HTTP/2`
* Replace unnecessary `grpc` naming with `http2`
* Make the `gRPC` and `HTTP/2` distinction
* Fix the macros of `http` extension
* Fix the macros of other protocol extensions
* Update the method signature of `Represent`
* Fix the `HTTP/2` support
* Fix some minor issues
* Upgrade Basenine version from `0.2.10` to `0.2.11`
Sorts macros before expanding them and prioritize the long macros.
* Don't regex split the gRPC method name
* Re-enable `nodefrag` flag
* Remove `SetHostname` method in HTTP extension (#496)
* Remove prevPodPhase (#497)
prevPodPhase does not take into account the fact that there may be more
than one tapper pod. Therefore it is not clear what its value
represents. It is only used in a debug print. It is not worth the effort
to fix for that one debug print.
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* minor logging changes (#499)
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Use one channel for events instead of three (#495)
Use one channel for events instead of three separate channels by event type
* Add response body to the error in case of failure (#503)
* add response body to the error in case of failure
* fix typo + make inline condition
* Remove local dev instruction from readme (#507)
* Rename `URL` field to `Target URI` in the UI to prevent confusion (#509)
* Add HTTP2 Over Cleartext (H2C) support (#510)
* Add HTTP2 Over Cleartext (H2C) support
* Remove a parameter which is a remnant of debugging
* Hide `Encoding` field if it's `undefined` or empty in the UI (#511)
* Show the `EntryItem` as `EntrySummary` in `EntryDetailed` (#506)
* Fix the selected entry behavior by propagating the `focusedEntryId` through WebSocket (before #452) TRA-3983 (#513)
* Revert the select entry behavior into its original state RACING! (before #452) [TRA-3983 alternative 3]
* Remove the remaining `forceSelect`(s)
* Add a missing `focusedEntryId` prop
* Fix the race condition
* Propagate the `focusedEntryId` through WebSocket to prevent racing
* Handle unexpected socket close and replace the default `rlimit(100)` filter with `leftOff(-1)` filter (#508)
* Handle unexpected socket close and replace the default `rlimit(100)` filter with `leftOff(-1)` filter
* Rename `dontClear` parameter to `resetEntriesBuffer` and remove negation
* Add `Queryable` component to show a green add circle icon for the queryable UI elements (#512)
* Add `Queryable` component to show a green circle and use it in `EntryViewLine`
* Refactor `Queryable` component
* Use the `Queryable` component `EntryDetailed`
* Use the `Queryable` component `Summary`
* Instead of passing the style to `Queryable`, pass the children components directly
* Make `useTooltip = true` by default in `Queryable`
* Refactor a lot of styling to achieve using `Queryable` in `Protocol` component
* Migrate the last queryable elements in `EntryListItem` to `Queryable` component
* Fix some of the styling issues
* Make horizontal `Protocol` `Queryable` too
* Remove unnecessary child constants
* Revert some of the changes in 2a93f365f5
* Fix rest of the styling issues
* Fix one more styling issue
* Update the screenshots and text in the cheatsheet according to the change
* Use `let` not `var`
* Add missing dependencies to the React hook
* Bring back `GetEntries` HTTP endpoint (#515)
* Bring back `GetEntries` HTTP endpoint
* Upgrade Basenine version from `0.2.12` to `0.2.13`
* Accept negative `leftOff` value
* Remove `max`es from the validations
* Make `timeoutMs` optional
* Update the route comment
* Add `EntriesResponse` struct
* Disable telemetry by env var MIZU_DISABLE_TELEMTRY (#517)
* Replace `privileged` with specific CAPABILITIES requests (#514)
* Fix the styling of `Queryable` under `StatusCode` and `Summary` components (#519)
* Fix the CSS issue in `Queryable` inside `EntryViewLine` (#521)
* TRA-4017 Bring back `getOldEntries` method using fetch API and always start streaming from now (#518)
* Bring back `getOldEntries` method using fetch API
* Determine no more data on top based on `leftOff` value
* Remove `entriesBuffer` state
* Always open WebSocket with some `leftOff` value
* Rename `leftOff` state to `leftOffBottom`
* Don't set the `focusedEntryId` through WebSocket if the WebSocket is closed
* Call `setQueriedCurrent` with addition
* Close WebSocket upon reaching to top
* Open WebSocket upon snapping to bottom
* Close the WebSocket on snap broken event instead
* Set queried current value to zero upon filter submit
* Upgrade `react-scrollable-feed-virtualized` version and use `scrollToIndex` function
* Change the footer text format
* Improve no more data top logic
* Fix `closeWebSocket()` call logic in `onSnapBrokenEvent` and handle `data.meta` being `null` in `getOldEntries`
* Fix the issues around fetching old records
* Clean up `EntriesList.module.sass`
* Decrement initial `leftOffTop` value by `2`
* Fix the order of `incomingEntries` in `getOldEntries`
* Request `leftOffTop - 1` from `fetchEntries`
* Limit the front-end total entries fetched through WebSocket count to `10000`
* Lose the UI performance gain that's provided by #452
* Revert "Fix the selected entry behavior by propagating the `focusedEntryId` through WebSocket (before #452) TRA-3983 (#513)"
This reverts commit 873f252544.
* Fix the issues caused by 09371f141f
* Upgrade Basenine version from `0.2.13` to `0.2.14`
* Upgrade Basenine version from `0.2.14` to `0.2.15`
* Fix the condition of "Fetch old records" button visibility
* Upgrade Basenine version from `0.2.15` to `0.2.16` and fix the UI code related to fetching old records
* Make `newEntries` constant
* Add type switch for `Base` field of `MizuEntry` (#520)
* Disable version check for devs (#522)
* Report the platform in telemtry (#523)
Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
* Include milliseconds information into the timestamps in the UI (#524)
* Include milliseconds information into the timestamps in the UI
* Upgrade Basenine version from `0.2.16` to `0.2.17`
* Increase the `width` of timestamp
* Fix the CSS issues in queryable vertical protocol element (#526)
* Remove unnecessary fields and split `service` into `src.name` and `dst.name` (#525)
* Remove unnecessary fields and split `service` into `src.name` and `dst.name`
* Don't fall back to IP address but instead display `[Unresolved]` text
* Fix the CSS issues in the plus icon position and replace the separator `->` text with `SwapHorizIcon`
* make description of mizu config options public (#527)
* Fix the glitch (#529)
* Fix the glitch
* Bring back the functionality to "Fetch old records" and "Snap to bottom" buttons
* Fix the CSS issue in `Queryable` component for `src.name` field on heading mode (#530)
* API server stores tappers status (#531)
* Decreased API server boot time (#536)
* Change the connection status text and the toggle connection behavior (#534)
* Update the "Started listening at" timestamp and `queriedTotal` state based on database truncation (#533)
* Send pod info to tapper (#532)
* Alert on acceptance tests failure (#537)
* Fix health tapper status count (#538)
* Fix: acceptance tests (#539)
* Fix a JavaScript error in case of `null` attribute and an interface conversion error in the API server (#540)
* Bringing back the pod watch api server events to make acceptance test more stable (#541)
* TRA-4060 fix proxying error (#542)
* TRA-4062 remove duplicate target pod print (#543)
* Report pods "isTapped" to FE (#535)
* Fix acceptance tests (after pods status request change) (#545)
Co-authored-by: David Levanon <dvdlevanon@gmail.com>
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
Co-authored-by: RamiBerm <54766858+RamiBerm@users.noreply.github.com>
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
Co-authored-by: RoyUP9 <87927115+RoyUP9@users.noreply.github.com>
Co-authored-by: Nimrod Gilboa Markevich <59927337+nimrod-up9@users.noreply.github.com>
Co-authored-by: Nimrod Gilboa Markevich <nimrod@up9.com>
Co-authored-by: Alon Girmonsky <1990761+alongir@users.noreply.github.com>
Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
Co-authored-by: Alex Haiut <alex@up9.com>
* no message
* Implement counters per operation
* Add service total counters
* Fix the new method usage
* Fix compile
* Output counters into description
* Add svc-level description
* Auto-rearrange the imports
* Add hits/s
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
Co-authored-by: up9-github <info@up9.com>
Co-authored-by: RamiBerm <54766858+RamiBerm@users.noreply.github.com>
Co-authored-by: Liraz Yehezkel <lirazy@up9.com>
Co-authored-by: Alex Haiut <alex@testr.io>
Co-authored-by: lirazyehezkel <61656597+lirazyehezkel@users.noreply.github.com>
Co-authored-by: Alex Haiut <alex@up9.com>
Co-authored-by: nimrod-up9 <59927337+nimrod-up9@users.noreply.github.com>
Co-authored-by: RamiBerm <rami.berman@up9.com>
Co-authored-by: Alex Haiut <alex.haiut@gmail.com>
Co-authored-by: Roee Gadot <roee.gadot@up9.com>
Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
Co-authored-by: Igor Gov <iggvrv@gmail.com>
Co-authored-by: RoyUP9 <87927115+RoyUP9@users.noreply.github.com>
Co-authored-by: Alon Girmonsky <1990761+alongir@users.noreply.github.com>
Co-authored-by: Roy Island <roy@up9.com>
Co-authored-by: David Levanon <dvdlevanon@gmail.com>
Co-authored-by: M. Mert Yıldıran <mehmet@up9.com>
Co-authored-by: Nimrod Gilboa Markevich <nimrod@up9.com>
* debug builds and gcflags
* update dockerfile for debug
* service map routes and controller
* service map graph structure
* service map interface and new methods
* adding service map edges from mizu entries
* new service map count methods
* implementing the status endpoint
* ServiceMapResponse and ServiceMapEdge models
* service map get endpoint logic
* reset logic and endpoint
* fixed service map get status
* improvements to graph node structure
* front-end implementation and service map buttons
* new render endpoint to render the graph in real time
* spinner sass
* new ServiceMapModal component
* testing react-force-graph-2d lib
* Improvements to service map graph structure, added node id and updated edge source/destination type
* Revert "testing react-force-graph-2d lib"
This reverts commit 1153938386.
* testing react-graph-vis lib
* updated to work with react-graph-vis lib
* removed render endpoint
* go mod tidy
* serviceMap config flag
* using the serviceMap config flag
* passing mizu config to service map as a dependency
* service map tests
* Removed print functions
* finished service map tests
* new service property
* service map controller tests
* moved service map reset button to service map modal
reset closes the modal
* service map modal refresh button and logic
* reset button resets data and refresh
* service map modal close button
* node size/edge size based on the count value
edge color based on protocol
* nodes and edges shadow
* enabled physics to avoid node overlap, changed kafka protocol color to dark green
* showing edges count values and fixed bidirectional edges overlap
* go mod tidy
* removed console.log
* Using the destination node protocol instead of the source node protocol
* Revert "debug builds and gcflags"
Addressed by #624 and #626
This reverts commit 17ecaece3e.
* Revert "update dockerfile for debug"
Addressed by #635
This reverts commit 5dfc15b140.
* using the entire tap Protocol struct instead of only the protocol name
* using the backend protocol background color for node colors
* fixed test, the node list order can change
* re-factoring to get 100% coverage
* using protocol colors just for edges
* re-factored service map to use TCP Entry data. Node key is the entry ip-address instead of the name
* fallback to ip-address when entry name is unresolved
* re-factored front-end
* adjustment to main div style
* added support for multiple protocols for the same edge
* using the item protocol instead of the extension variable
* fixed controller tests
* displaying service name and ip-address on graph nodes
* fixed service map test, we cannot guarantee the slice order
* auth middleware
* created a new pkg for the service map
* re-factoring
* re-factored front-end
* reverting the import order as previous
* Aligning with other UI feature flags handling
* we don't need to get the status anymore, we have window["isServiceMapEnabled"]
* small adjustments
* renamed from .tsx to .ts
* button styles and minor improvements
* moved service map modal from trafficPage to app component
Co-authored-by: Igor Gov <igor.govorov1@gmail.com>
* Upgrade Basenine version from `0.2.26` to `0.3.0`
* Remove `Summarize` method from `Dissector` interface and refactor the data structures in `tap/api/api.go`
* Rename `MizuEntry` to `Entry` and `BaseEntryDetails` to `BaseEntry`
* Populate `ContractStatus` field as well
* Update the cheatsheet
* Upgrade the Basenine version in the helm chart as well
* Remove a forgoten `console.log` call
- Rename --istio flag to the more general --service-mesh
- Rename internal variables, consts and structures to reflect this conceptual change
- Update the docs accordingly
* Remove unnecessary fields and split `service` into `src.name` and `dst.name`
* Don't fall back to IP address but instead display `[Unresolved]` text
* Fix the CSS issues in the plus icon position and replace the separator `->` text with `SwapHorizIcon`
* Bring back `getOldEntries` method using fetch API
* Determine no more data on top based on `leftOff` value
* Remove `entriesBuffer` state
* Always open WebSocket with some `leftOff` value
* Rename `leftOff` state to `leftOffBottom`
* Don't set the `focusedEntryId` through WebSocket if the WebSocket is closed
* Call `setQueriedCurrent` with addition
* Close WebSocket upon reaching to top
* Open WebSocket upon snapping to bottom
* Close the WebSocket on snap broken event instead
* Set queried current value to zero upon filter submit
* Upgrade `react-scrollable-feed-virtualized` version and use `scrollToIndex` function
* Change the footer text format
* Improve no more data top logic
* Fix `closeWebSocket()` call logic in `onSnapBrokenEvent` and handle `data.meta` being `null` in `getOldEntries`
* Fix the issues around fetching old records
* Clean up `EntriesList.module.sass`
* Decrement initial `leftOffTop` value by `2`
* Fix the order of `incomingEntries` in `getOldEntries`
* Request `leftOffTop - 1` from `fetchEntries`
* Limit the front-end total entries fetched through WebSocket count to `10000`
* Lose the UI performance gain that's provided by #452
* Revert "Fix the selected entry behavior by propagating the `focusedEntryId` through WebSocket (before #452) TRA-3983 (#513)"
This reverts commit 873f252544.
* Fix the issues caused by 09371f141f
* Upgrade Basenine version from `0.2.13` to `0.2.14`
* Upgrade Basenine version from `0.2.14` to `0.2.15`
* Fix the condition of "Fetch old records" button visibility
* Upgrade Basenine version from `0.2.15` to `0.2.16` and fix the UI code related to fetching old records
* Make `newEntries` constant
* Bring back `GetEntries` HTTP endpoint
* Upgrade Basenine version from `0.2.12` to `0.2.13`
* Accept negative `leftOff` value
* Remove `max`es from the validations
* Make `timeoutMs` optional
* Update the route comment
* Add `EntriesResponse` struct
* Revert the select entry behavior into its original state RACING! (before #452) [TRA-3983 alternative 3]
* Remove the remaining `forceSelect`(s)
* Add a missing `focusedEntryId` prop
* Fix the race condition
* Propagate the `focusedEntryId` through WebSocket to prevent racing
* Remove the extra negation on `nodefrag` flag's value
* Support IPv4 fragmentation and IPv6 at the same time
* Set `Method` and `StatusCode` fields correctly for `HTTP/2`
* Replace unnecessary `grpc` naming with `http2`
* Make the `gRPC` and `HTTP/2` distinction
* Fix the macros of `http` extension
* Fix the macros of other protocol extensions
* Update the method signature of `Represent`
* Fix the `HTTP/2` support
* Fix some minor issues
* Upgrade Basenine version from `0.2.10` to `0.2.11`
Sorts macros before expanding them and prioritize the long macros.
* Don't regex split the gRPC method name
* Re-enable `nodefrag` flag
* Sync entries in batches just as before (using `uploadIntervalSec` parameter)
* Replace `lastTimeSynced` value with `time.Time{}`
Since it will be overwritten by the very first iteration.
* Fix the OOMKilled error by calling `debug.FreeOSMemory` periodically
* Remove `MAX_NUMBER_OF_GOROUTINES` environment variable
* Change the line
* Increase the default value of `TCP_STREAM_CHANNEL_TIMEOUT_MS` to `10000`
* Write the client and integrate to the new real-time database
* Refactor the WebSocket implementaiton for `/ws`
* Adapt the UI to the new filtering system
* Fix the rest of the issues in the UI
* Increase the buffer of the scanner
* Implement accessing single records
* Increase the buffer of another scanner
* Populate `Request` and `Response` fields of `MizuEntry`
* Add syntax highlighting for the query
* Add database to `Dockerfile`
* Fix some issues
* Update the `realtime_dbms` Git module commit hash
* Upgrade Gin version and print the query string
* Revert "Upgrade Gin version and print the query string"
This reverts commit aa09f904ee.
* Use WebSocket's itself to query instead of the query string
* Fix some errors related to conversion to HAR
* Fix the issues caused by the latest merge
* Fix the build error
* Fix PR validation GitHub workflow
* Replace the git submodule with latest Basenine version `0.1.0`
Remove `realtime_client.go` and use the official client library `github.com/up9inc/basenine/client/go` instead.
* Move Basenine host and port constants to `shared` module
* Reliably execute and wait for Basenine to become available
* Upgrade Basenine version
* Properly close WebSocket and data channel
* Fix the issues caused by the recent merge commit
* Clean up the TypeScript code
* Update `.gitignore`
* Limit the database size
* Add `Macros` method signature to `Dissector` interface and set the macros provided by the protocol extensions
* Run `go mod tidy` on `agent`
* Upgrade `github.com/up9inc/basenine/client/go` version
* Implement a mechanism to update the query using click events in the UI and use it for protocol macros
* Update the query on click to timestamps
* Fix some issues in the WebSocket and channel handling
* Update the query on clicks to status code
* Update the query on clicks to method, path and service
* Update the query on clicks to is outgoing, source and destination ports
* Add an API endpoint to validate the query against syntax errors
* Move the query background color state into `TrafficPage`
* Fix the logic in `setQuery`
* Display a toast message in case of a syntax error in the query
* Remove a call to `fmt.Printf`
* Upgrade Basenine version to `0.1.3`
* Fix an issue related to getting `MAX_ENTRIES_DB_BYTES` environment variable
* Have the `path` key in request details, in HTTP
* Rearrange the HTTP headers for the querying
* Do the same thing for `cookies` and `queryString`
* Update the query on click to table elements
Add the selectors for `TABLE` type representations in HTTP extension.
* Update the query on click to `bodySize` and `elapsedTime` in `EntryTitle`
* Add the selectors for `TABLE` type representations in AMQP extension
* Add the selectors for `TABLE` type representations in Kafka extension
* Add the selectors for `TABLE` type representations in Redis extension
* Define a struct in `tap/api.go` for the section representation data
* Add the selectors for `BODY` type representations
* Add `request.path` to the HTTP request details
* Change the summary string's field name from `path` to `summary`
* Introduce `queryable` CSS class for queryable UI elements and underline them on hover
* Instead of `N requests` at the bottom, make it `Displaying N results (queried X/Y)` and live update the values
Upgrade Basenine version to `0.2.0`.
* Verify the sha256sum of Basenine executable inside `Dockerfile`
* Pass the start time to web UI through WebSocket and always show the `EntriesList` footer
* Pipe the `stderr` of Basenine as well
* Fix the layout issues related to `CodeEditor` in the UI
* Use the correct `shasum` command in `Dockerfile`
* Upgrade Basenine version to `0.2.1`
* Limit the height of `CodeEditor` container
* Remove `Paused` enum `ConnectionStatus` in UI
* Fix the issue caused by the recent merge
* Add the filtering guide (cheatsheet)
* Update open cheatsheet button's title
* Update cheatsheet content
* Remove the old SQLite code, adapt the `--analyze` related code to Basenine
* Change the method signature of `NewEntry`
* Change the method signature of `Represent`
* Introduce `HTTPPair` field in `MizuEntry` specific to HTTP
* Remove `Entry`, `EntryId` and `EstimatedSizeBytes` fields from `MizuEntry`
Also remove the `getEstimatedEntrySizeBytes` method.
* Remove `gorm.io/gorm` dependency
* Remove unused `sensitiveDataFiltering` folder
* Increase the left margin of open cheatsheet button
* Add `overflow: auto` to the cheatsheet `Modal`
* Fix `GetEntry` method
* Fix the macro for gRPC
* Fix an interface conversion in case of AMQP
* Fix two more interface conversion errors in AMQP
* Make the `syncEntriesImpl` method blocking
* Fix a grammar mistake in the cheatsheet
* Adapt to the changes in the recent merge commit
* Improve the cheatsheet text
* Always display the timestamp in `en-US`
* Upgrade Basenine version to `0.2.2`
* Fix the order of closing Basenine connections and channels
* Don't close the Basenine channels at all
* Upgrade Basenine version to `0.2.3`
* Set the initial filter to `rlimit(100)`
* Make Basenine persistent
* Upgrade Basenine version to `0.2.4`
* Update `debug.Dockerfile`
* Fix a failing test
* Upgrade Basenine version to `0.2.5`
* Revert "Do not show play icon when disconnected (#428)"
This reverts commit 8af2e562f8.
* Upgrade Basenine version to `0.2.6`
* Make all non-informative things informative
* Make `100` a constant
* Use `===` in JavaScript no matter what
* Remove a forgotten `console.log`
* Add a comment and update the `query` in `syncEntriesImpl`
* Don't call `panic` in `GetEntry`
* Replace `panic` calls in `startBasenineServer` with `logger.Log.Panicf`
* Remove unnecessary `\n` characters in the logs
* WIP
* WIP
* WIP
* WIP
* WIP
* Update tapRunner.go and k8sTapManager.go
* Update cleanRunner.go, common.go, and 8 more files...
* Update common.go, tapConfig.go, and 2 more files...
* Update config.go, config.go, and 5 more files...
* Update tapRunner.go, config.go, and 7 more files...
* Update cleanRunner.go, logs.go, and 2 more files...
* Update k8sTapManager.go, provider.go, and watch.go
* Update go.sum, go.mod, and go.sum
* Update go.mod and go.sum
* Update go.mod, go.sum, and 2 more files...
* Revert "Update go.mod, go.sum, and 2 more files..."
This reverts commit 8140311349.
* Update funcWrappers.go, tapRunner.go, and 4 more files...
* Update main.go, tapRunner.go, and mizuTapperSyncer.go
* Remove `github.com/romana/rlog` dependency completely
* Comment out all the unnecessary logging in the protocol extensions
* Remove commented out all the unnecessary logging lines
* Remove two more lines related to logging
* Add OAS contract monitoring support
* Pass the contract failure reason to UI
* Fix the issues related to contract validation
* Fix rest of the issues in the UI
* Add documentation related to contract monitoring feature
* Fix a typo in the docs
* Unmarshal to `HTTPRequestResponsePair` only if the OAS validation is enabled
* Fix an issue caused by the merge commit
* Slightly change the logic in the `validateOAS` method
Change the `contractText` value to `No Breaches` or `Breach` and make the text `white-space: nowrap`.
* Retrieve and display the failure reason for both request and response
Also display the content of the contract/OAS file in the UI.
* Display the OAS under `CONTRACT` tab with syntax highlighting
Also fix the styling in the entry feed.
* Remove `EnforcePolicyFileDeprecated` constant
* Log the other errors as well
* Get context from caller instead
* Define a type for the contract status and make its values enum-like
* Remove an unnecessary `if` statement
* Validate OAS in the CLI before passing it to Agent
* Get rid of the `github.com/ghodss/yaml` dependency in `loadOAS` by using `LoadFromData`
* Fix an artifact from the merge conflict
* Replace all `rlog` occurrences with the shared logger
* Use the same log format in `InitLoggerStderrOnly` as well
* Convert one more `log.Fatal` to `logger.Log.Errorf` as well in the `cli`
* Replace `log.` occurrences with `logger.Log.` in `agent`
* Fix `cannot use err (type error)`
* Change the logging level to `DEBUG`
* Replace an `Errorf` with `Fatal`
* Add informative message
* type:latency to slo and latency field to response-time
* remove comment from import
* Friendly message on ignored rules and format
* formatting
* change conditional to catch negative values and ignore it
* Fix Bug Alon Reported
* sliceUtils to shared
* Omit the `RULES` tab if the policy rules feature is inactive (WIP)
* Propagate the boolean value `isRulesEnabled` from file read error to UI
* Remove the debug log
* Fix rules
* Not reay, error on running
* Empty dissector Rules()
* almost working
* Finally, fixed
* undo changes on agent/pkg/utils/har.go
* fix not showing service on rules detail
* Update tap/api/api.go
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Update agent/pkg/controllers/entries_controller.go
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* Update agent/pkg/controllers/entries_controller.go
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
* unwrap Data
* Fix bug off using more than one latency rule that always get the first.
* fix json type, decoding base64 before unmarshal
* Run `go mod tidy` on `cli/go.sum`
* Fix the linting issues
* Remove a `FIXME` comment
* Remove a CSS rule
* Adapt `ruleNumberText` CSS class to the design language of the UI
* Fix an issue in the UI related to `rule.Latency` slipping out
* Removed unecessary codes.
Co-authored-by: gadotroee <55343099+gadotroee@users.noreply.github.com>
Co-authored-by: M. Mert Yildiran <mehmet@up9.com>
* Separate HTTP related code into `extensions/http` as a Go plugin
* Move `extensions` folder into `tap` folder
* Move HTTP files into `tap/extensions/lib` for now
* Replace `orcaman/concurrent-map` with `sync.Map`
* Remove `grpc_assembler.go`
* Remove `github.com/up9inc/mizu/tap/extensions/http/lib`
* Add a build script to automatically build extensions from a known path and load them
* Start to define the extension API
* Implement the `run()` function for the TCP stream
* Add support of defining multiple ports to the extension API
* Set the extension name inside the extension
* Declare the `Dissect` function in the extension API
* Dissect HTTP request from inside the HTTP extension
* Make the distinction of outbound and inbound ports
* Dissect HTTP response from inside the HTTP extension
* Bring back the HTTP request-response pair matcher
* Return a `*api.RequestResponsePair` from the dissection
* Bring back the gRPC-HTTP/2 parser
* Fix the issues in `handleHTTP1ClientStream` and `handleHTTP1ServerStream`
* Call a function pointer to emit dissected data back to the `tap` package
* roee changes -
trying to fix agent to work with the "api" object) - ***still not working***
* small mistake in the conflicts
* Fix the issues that are introduced by the merge conflict
* Add `Emitter` interface to the API and send `OutputChannelItem`(s) to `OutputChannel`
* Fix the `HTTP1` handlers
* Set `ConnectionInfo` in HTTP handlers
* Fix the `Dockerfile` to build the extensions
* remove some unwanted code
* no message
* Re-enable `getStreamProps` function
* Migrate back from `gopacket/tcpassembly` to `gopacket/reassembly`
* Introduce `HTTPPayload` struct and `HTTPPayloader` interface to `MarshalJSON()` all the data structures that are returned by the HTTP protocol
* Read `socketHarOutChannel` instead of `filteredHarChannel`
* Connect `OutputChannelItem` to the last WebSocket means that finally the web UI started to work again
* Add `.env.example` to React app
* Marshal and unmarshal `*http.Request`, `*http.Response` pairs
* Move `loadExtensions` into `main.go` and map extensions into `extensionsMap`
* Add `Summarize()` method to the `Dissector` interface
* Add `Analyze` method to the `Dissector` interface and `MizuEntry` to the extension API
* Add `Protocol` struct and make it effect the UI
* Refactor `BaseEntryDetails` struct and display the source and destination ports in the UI
* Display the protocol name inside the details layout
* Add `Represent` method to the `Dissector` interface and manipulate the UI through this method
* Make the protocol color affect the details layout color and write protocol abbreviation vertically
* Remove everything HTTP related from the `tap` package and make the extension system fully functional
* Fix the TypeScript warnings
* Bring in the files related AMQP into `amqp` directory
* Add `--nodefrag` flag to the tapper and bring in the main AMQP code
* Implement the AMQP `BasicPublish` and fix some issues in the UI when the response payload is missing
* Implement `representBasicPublish` method
* Fix several minor issues
* Implement the AMQP `BasicDeliver`
* Implement the AMQP `QueueDeclare`
* Implement the AMQP `ExchangeDeclare`
* Implement the AMQP `ConnectionStart`
* Implement the AMQP `ConnectionClose`
* Implement the AMQP `QueueBind`
* Implement the AMQP `BasicConsume`
* Fix an issue in `ConnectionStart`
* Fix a linter error
* Bring in the files related Kafka into `kafka` directory
* Fix the build errors in Kafka Go files
* Implement `Dissect` method of Kafka and adapt request-response pair matcher to asynchronous client-server stream
* Do the "Is reversed?" checked inside `getStreamProps` and fix an issue in Kafka `Dissect` method
* Implement `Analyze`, `Summarize` methods of Kafka
* Implement the representations for Kafka `Metadata`, `RequestHeader` and `ResponseHeader`
* Refactor the AMQP and Kafka implementations to create the summary string only inside the `Analyze` method
* Implement the representations for Kafka `ApiVersions`
* Implement the representations for Kafka `Produce`
* Implement the representations for Kafka `Fetch`
* Implement the representations for Kafka `ListOffsets`, `CreateTopics` and `DeleteTopics`
* Fix the encoding of AMQP `BasicPublish` and `BasicDeliver` body
* Remove the unnecessary logging
* Remove more logging
* Introduce `Version` field to `Protocol` struct for dynamically switching the HTTP protocol to HTTP/2
* Fix the issues in analysis and representation of HTTP/2 (gRPC) protocol
* Fix the issues in summary section of details layout for HTTP/2 (gRPC) protocol
* Fix the read errors that freezes the sniffer in HTTP and Kafka
* Fix the issues in HTTP POST data
* Fix one more issue in HTTP POST data
* Fix an infinite loop in Kafka
* Fix another freezing issue in Kafka
* Revert "UI Infra - Support multiple entry types + refactoring (#211)"
This reverts commit f74a52d4dc.
* Fix more issues that are introduced by the merge
* Fix the status code in the summary section
* adding the cleaner again (why we removed it?).
add TODO: on the extension loop .
* fix dockerfile (remove deleting .env file) - it is found in dockerignore and fails to build if the file not exists
* fix GetEntrties ("/entries" endpoint) - working with "tapApi.BaseEntryDetail" (moved from shared)
* Fix an issue in the UI summary section
* Refactor the protocol payload structs
* Fix a log message in the passive tapper
* Adapt `APP_PORTS` environment variable to the new extension system and change its format to `APP_PORTS='{"http": ["8001"]}' `
* Revert "fix dockerfile (remove deleting .env file) - it is found in dockerignore and fails to build if the file not exists"
This reverts commit 4f514ae1f4.
* Bring in the necessary changes from f74a52d4dc
* Open the API server URL in the web browser as soon as Mizu is ready
* Make the TCP reader consists of a single Go routine (instead of two) and try to dissect in both client and server mode by rewinding
* Swap `TcpID` without overwriting it
* Sort extension by priority
* Try to dissect with looping through all the extensions
* fix getStreamProps function.
(it should be passed from CLI as it was before).
* Turn TCP reader back into two Goroutines (client and server)
* typo
* Learn `isClient` from the TCP stream
* Set `viewer` style `overflow: "auto"`
* Fix the memory leaks in AMQP and Kafka dissectors
* Revert some of the changes in be7c65eb6d
* Remove `allExtensionPorts` since it's no longer needed
* Remove `APP_PORTS` since it's no longer needed
* Fix all of the minor issues in the React code
* Check Kafka header size and fail-fast
* Break the dissectors loop upon a successful dissection
* Don't break the dissector loop. Protocols might collide
* Improve the HTTP request-response counter (still not perfect)
* Make the HTTP request-response counter perfect
* Revert "Revert some of the changes in be7c65eb6d3fb657a059707da3ca559937e59739"
This reverts commit 08e7d786d8.
* Bring back `filterItems` and `isHealthCheckByUserAgent` functions
* Remove some development artifacts
* remove unused and commented lines that are not relevant
* Fix the performance in TCP stream factory. Make it create two `tcpReader`(s) per extension
* Change a log to debug
* Make `*api.CounterPair` a field of `tcpReader`
* Set `isTapTarget` to always `true` again since `filterAuthorities` implementation has problems
* Remove a variable that's only used for logging even though not introduced by this branch
* Bring back the `NumberOfRules` field of `ApplicableRules` struct
* Remove the unused `NewEntry` function
* Move `k8sResolver == nil` check to a more appropriate place
* default healthChecksUserAgentHeaders should be empty array (like the default config value)
* remove spam console.log
* Rules button cause app to crash (access the service via incorrect property)
* Ignore all .env* files in docker build.
* Better caching in dockerfile: only copy go.mod before go mod download.
* Check for errors while loading an extension
* Add a comment about why `Protocol` is not a pointer
* Bring back the call to `deleteOlderThan`
* Remove the `nil` check
* Reduce the maximum allowed AMQP message from 128MB to 1MB
* Fix an error that only occurs when a Kafka broker is initiating
* Revert the change in b2abd7b990
* Fix the service name resolution in all protocols
* Remove the `anydirection` flag and fix the issue in `filterAuthorities`
* Pass `sync.Map` by reference to `deleteOlderThan` method
* Fix the packet capture issue in standalone mode that's introduced by the removal of `anydirection`
* Temporarily resolve the memory exhaustion in AMQP
* Fix a nil pointer dereference error
* Fix the CLI build error
* Fix a memory leak that's identified by `pprof`
Co-authored-by: Roee Gadot <roee.gadot@up9.com>
Co-authored-by: Nimrod Gilboa Markevich <nimrod@up9.com>