All Projects → ButterCam → Mediator

ButterCam / Mediator

Licence: Apache-2.0 License
Cross-platform GUI gRPC debugging proxy

Programming Languages

kotlin
9241 projects

Projects that are alternatives of or similar to Mediator

madbomber
Backtrace-on-throw C++ exception logger
Stars: ✭ 17 (-52.78%)
Mutual labels:  debugging, debugging-tool
ducky
Chrome extension to overlay a (super adorable) rubber duck, as a virtual companion during rubber duck debugging.
Stars: ✭ 80 (+122.22%)
Mutual labels:  debugging, debugging-tool
bugsnag-vue
[DEPRECATED] This package now lives within the monorepo for our Universal JS notifier "@bugsnag/js" • https://github.com/bugsnag/bugsnag-js
Stars: ✭ 26 (-27.78%)
Mutual labels:  debugging, debugging-tool
Bugsnag Ruby
Bugsnag error monitoring & reporting software for rails, sinatra, rack and ruby
Stars: ✭ 211 (+486.11%)
Mutual labels:  debugging, debugging-tool
awesome print.cr
It dreams about becoming ruby's awesome_print for crystal-lang, under light development.
Stars: ✭ 13 (-63.89%)
Mutual labels:  debugging, debugging-tool
Icecream Cpp
🍦 Never use cout/printf to debug again
Stars: ✭ 225 (+525%)
Mutual labels:  debugging, debugging-tool
dwarf import
This loads DWARF info from an open binary and propagates function names, arguments, and type info
Stars: ✭ 18 (-50%)
Mutual labels:  debugging, debugging-tool
Androidsnooper
Android library to record the network calls through the interceptor mechanism of the http clients.
Stars: ✭ 132 (+266.67%)
Mutual labels:  debugging, debugging-tool
vscode-cc65-debugger
VSCode extension for CC65 debugging with VICE or Mesen
Stars: ✭ 26 (-27.78%)
Mutual labels:  debugging, debugging-tool
TrackJS-Node
TrackJS Error Monitoring agent for NodeJS
Stars: ✭ 26 (-27.78%)
Mutual labels:  debugging, debugging-tool
Icecream
🍦 Never use print() to debug again.
Stars: ✭ 5,601 (+15458.33%)
Mutual labels:  debugging, debugging-tool
devmod
Developer Module for debugging web applications
Stars: ✭ 16 (-55.56%)
Mutual labels:  debugging, debugging-tool
Frodo2
Android Library for Logging RxJava2 Components
Stars: ✭ 142 (+294.44%)
Mutual labels:  debugging, debugging-tool
bugsnag-java
Bugsnag error reporting for Java.
Stars: ✭ 51 (+41.67%)
Mutual labels:  debugging, debugging-tool
Gdb Frontend
☕ GDBFrontend is an easy, flexible and extensionable gui debugger.
Stars: ✭ 2,104 (+5744.44%)
Mutual labels:  debugging, debugging-tool
emacs-inspector
Inspection tool for Emacs Lisp objects.
Stars: ✭ 71 (+97.22%)
Mutual labels:  debugging, debugging-tool
Frodo
Android Library for Logging RxJava Observables and Subscribers.
Stars: ✭ 1,496 (+4055.56%)
Mutual labels:  debugging, debugging-tool
Remix Ide
Documentation for Remix IDE
Stars: ✭ 1,768 (+4811.11%)
Mutual labels:  debugging, debugging-tool
Specter
Super simple debugging for PocketMine.
Stars: ✭ 73 (+102.78%)
Mutual labels:  debugging, debugging-tool
docker-pudb
Debug Python code within a Docker container remotely from your terminal using pudb
Stars: ✭ 18 (-50%)
Mutual labels:  debugging, debugging-tool

Mediator

Cross-platform GUI gRPC debugging proxy like charles but design for gRPC.

Build with Netty (proxy protocol), Compose Desktop (GUI), Sisyphus (Protobuf Runtime)

screenshot

Highlight features

Cross-platform, works on all your favorite platforms like Windows, macOS, Linux
Jetbrains Style GUI, easily integrating into your desktop
Host Rewrite, redirect the request to beta or test server without modifying client code
Server Reflection Support, parsing gRPC request and response message

Quick Start

Install

Download distribution from release page.

MSI for Windows, Dmg for macOS, Dmg(aarch64) for macOS(Apple Silicon), deb for Linux.

Run

Open the mediator app, the proxy server will listen 8888 port, the internal gRPC server will listen 9999 port by default.

Config Client

Config the proxy server in your client code.

Java Client (Android or Server)

Config proxy server by proxyDetector method of channel builder.

ManagedChannelBuilder.forAddress("foo.barapis.com", 9000)
    .usePlaintext()
    .proxyDetector {
        HttpConnectProxiedSocketAddress.newBuilder()
            .setTargetAddress(it as InetSocketAddress)
            .setProxyAddress(InetSocketAddress("<YOUR PC/MAC IP>", 8888))
            .build()
    }
    .build()

Objective C Client (iOS)

Set proxy server to Environment variable in main function before your app code.

int main(int argc, char * argv[]) {
    NSString * appDelegateClassName;
    @autoreleasepool {
        setenv("grpc_proxy", "http://<YOUR PC/MAC IP>:8888", 1);
        
        // Setup code that might create autoreleased objects goes here.
        appDelegateClassName = NSStringFromClass([AppDelegate class]);
    }
    return UIApplicationMain(argc, argv, nil, appDelegateClassName);
}

Go Client (Server)

Set proxy server to Environment variable.

package main

import (
	"os"
)

func main() {
	os.Setenv("HTTP_PROXY", "http://<YOUR PC/MAC IP>:8888")

	// Your code here.
}

Resolve messages

Mediator support renders message as JSON tree if your server supports the Server Reflection.

If you need to append the metadata to Server Reflection Request, you should config your server rule in settings.

Open the Mediator Settings, create a server rule for your server.

Enter the Regex in Host pattern input field which to match your server.

Add the metadata in Reflection api metadata table.

Enable this rule by Enable server rule checkbox.

Server Rule

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].