diff --git a/CHANGELOG.md b/CHANGELOG.md index 681c15f..9273014 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ ## [Unreleased] +## v1.3.0 +### Added +- add argument to define the configuration file + ## v1.2.0 ### Added - allow to use a configuration file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..4db19a3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +FROM debian:stable-slim + +RUN apt-get update && apt-get install ca-certificates -y + +COPY ./capture /usr/bin/capture + +WORKDIR /app + +ENTRYPOINT ["/usr/bin/capture"] diff --git a/README.md b/README.md index 68bdfc7..3314d2c 100644 --- a/README.md +++ b/README.md @@ -13,13 +13,13 @@ Forked from [ofabricio/capture](https://github.com/ofabricio/capture). #### Settings -| param | description | -|--------------|-------------| -| `-url` | **Required.** Set the url you want to proxy | -| `-port` | Set the proxy port. Default: *9000* | -| `-dashboard` | Set the dashboard port. Default: *9001* | -| `-captures` | Set how many captures to show in the dashboard. Default: *16* | - +| param | description | +| -------------- | ------------- | +| `-url` | **Required.** Set the url you want to proxy | +| `-port` | Set the proxy port. Default: *9000* | +| `-dashboard` | Set the dashboard port. Default: *9001* | +| `-captures` | Set how many captures to show in the dashboard. Default: *16* | +| `-config` | Set the configuration file. Default: *.capture.ini* | You can create a file named `.capture.ini` and set the configuration inside: @@ -37,10 +37,9 @@ address. Hence, calling `http://localhost:9000/users/1` is like calling `http:// *Capture* saves all requests and responses so that you can see them in the dashboard. - ## Dashboard -To access the dashboard go to `http://localhost:9001/` +To access the dashboard go to `http://127.0.0.1:9001/` ##### Preview diff --git a/config.go b/config.go index c571ebe..4344540 100644 --- a/config.go +++ b/config.go @@ -21,32 +21,34 @@ func ReadConfig() Config { defaultProxyPort := "9000" defaultDashboardPort := "9001" defaultMaxCaptures := 16 - - configFile := ".capture.ini" - - if _, err := os.Stat(configFile); err == nil { - cfg, err := ini.Load(configFile) - - if err != nil { - fmt.Printf("Fail to read file %s: %v", configFile, err) - os.Exit(1) - } - - section := cfg.Section("") - - defaultTargetURL = section.Key("url").MustString(defaultTargetURL) - defaultProxyPort = section.Key("port").MustString(defaultProxyPort) - defaultDashboardPort = section.Key("dashboard").MustString(defaultDashboardPort) - defaultMaxCaptures = section.Key("captures").MustInt(defaultMaxCaptures) - } + defaultConfigFile := ".capture.ini" targetURL := flag.String("url", defaultTargetURL, "Required. Set the url you want to proxy") + configFile := flag.String("config", defaultConfigFile, "Set the configuration file") proxyPort := flag.String("port", defaultProxyPort, "Set the proxy port") dashboardPort := flag.String("dashboard", defaultDashboardPort, "Set the dashboard port") maxCaptures := flag.Int("captures", defaultMaxCaptures, "Set how many captures to show in the dashboard") flag.Parse() + if _, err := os.Stat(*configFile); err == nil { + cfg, err := ini.Load(*configFile) + + if err != nil { + fmt.Printf("Fail to read file %s: %v", *configFile, err) + os.Exit(1) + } + + section := cfg.Section("") + + return Config{ + TargetURL: section.Key("url").MustString(*targetURL), + ProxyPort: section.Key("port").MustString(*proxyPort), + MaxCaptures: section.Key("captures").MustInt(*maxCaptures), + DashboardPort: section.Key("dashboard").MustString(*dashboardPort), + } + } + return Config{ TargetURL: *targetURL, ProxyPort: *proxyPort, diff --git a/main.go b/main.go index 7dac2f0..520bce7 100644 --- a/main.go +++ b/main.go @@ -30,9 +30,9 @@ var dashboardHTML []byte func main() { cfg := ReadConfig() - fmt.Printf("Target is %s", cfg.TargetURL) - fmt.Printf("\nListening on http://localhost:%s", cfg.ProxyPort) - fmt.Printf("\nDashboard on http://localhost:%s", cfg.DashboardPort) + fmt.Printf("Target is %s\n", cfg.TargetURL) + fmt.Printf("Listening on http://127.0.0.1:%s\n", cfg.ProxyPort) + fmt.Printf("Dashboard on http://127.0.0.1:%s\n", cfg.DashboardPort) fmt.Println() srv := NewCaptureService(cfg.MaxCaptures)