diff --git a/README.md b/README.md
index 7c22dd0..8bde88b 100644
--- a/README.md
+++ b/README.md
@@ -1,10 +1,20 @@
# probehost2
an http endpoint to query network diagnosis tools from remote hosts
-1. Overview
-2. Disclaimer
-3. Installation
-4. Usage
+- Overview
+- Disclaimer
+- Installation
+ - Building
+ - Systemd
+ - Docker
+ - Proxy
+- Usage
+ - Server
+ - Client
+ - General
+ - Ping
+ - MTR
+ - Traceroute
# Disclaimer
Dont expect good or even mediocre code here. This is my first take at go and is mostly for myself to learn. Suggestions and improvements are welcome.
@@ -69,21 +79,21 @@ All inputs are validated and invalid input is discarded. If the request contains
Local IP ranges are by default excluded from lookups, this currently only includes IPs and not hostnames and can be disabled on the server by passing the -l flag.
-Command options are based on the originally given cli flags but also have a more understandable altname (wip).
+Command options are based on the originally given cli flags but also have a more understandable altname.
### Ping
The default options are:
- `-c 10`: send 10 pings
Available options are:
-- `4`: force IPv4
-- `6`: force IPv6
-- `d`: print timestamps
-- `n`: no dns name resolution
-- `v`: verbose output
-- `c1`: send 1 ping
-- `c5`: send 5 pings
-- `c10`: send 10 pings
+- `4` / `force4`: force IPv4
+- `6` / `force6`: force IPv6
+- `d` / `timestamps`: print timestamps
+- `n` / `nodns`: no dns name resolution
+- `v` / `verbose`: verbose output
+- `c1` / `count1`: send 1 ping
+- `c5` / `count5`: send 5 pings
+- `c10` / `count10`: send 10 pings
Example query:
```sh
@@ -103,18 +113,18 @@ The default options are:
- `-c10`: send 10 pings
Available options are:
-- `4`: force IPv4
-- `6`: force IPv6
-- `u`: use UDP instead of ICMP echo
-- `t`: use TCP instead of ICMP echo
-- `e`: display information from ICMP extensions
-- `x`: output xml
-- `n`: do not resolve host names
-- `b`: show IP numbers and host names
-- `z`: display AS number
-- `c1`: send 1 ping
-- `c5`: send 5 pings
-- `c10`: send 10 pings
+- `4` / `force4`: force IPv4
+- `6` / `force6`: force IPv6
+- `u` / `udp`: use UDP instead of ICMP echo
+- `t` / `tcp`: use TCP instead of ICMP echo
+- `e` / `ext`: display information from ICMP extensions
+- `x` / `xml`: output xml
+- `n` / `nodns`: do not resolve host names
+- `b` / `cmb`: show IP numbers and host names
+- `z` / `asn`: display AS number
+- `c1` / `count1`: send 1 ping
+- `c5` / `count5`: send 5 pings
+- `c10` / `count10`: send 10 pings
Example query:
```
@@ -129,16 +139,16 @@ The default options are:
- none
Available options are:
-- `4`: force IPv4
-- `6`: force IPv6
-- `f`: do not fragment packets
-- `i`: use ICMP ECHO for tracerouting
-- `t`: use TCP SYN for tracerouting (default port is 80)
-- `n`: do not resolve IP addresses to their domain names
-- `u`: use UDP to particular port for tracerouting (default port is 53)
-- `ul`: Use UDPLITE for tracerouting (default port is 53)
-- `d`: Use DCCP Request for tracerouting (default port is 33434)
-- `b`: Guess the number of hops in the backward path and print if it differs
+- `4` / `force4`: force IPv4
+- `6` / `force6`: force IPv6
+- `f` / `dnf`: do not fragment packets
+- `i` / `ìcmp`: use ICMP ECHO for tracerouting
+- `t` / `tcp`: use TCP SYN for tracerouting (default port is 80)
+- `n` / `nodns`: do not resolve IP addresses to their domain names
+- `u` / `udp`: use UDP to particular port for tracerouting (default port is 53)
+- `ul` / `udplite`: Use UDPLITE for tracerouting (default port is 53)
+- `d` / `dccp`: Use DCCP Request for tracerouting (default port is 33434)
+- `b` / `back`: Guess the number of hops in the backward path and print if it differs
Example query:
```
diff --git a/main.go b/main.go
index f14885a..1d5a813 100644
--- a/main.go
+++ b/main.go
@@ -119,7 +119,10 @@ func prerunner(req *http.Request, cmd string, cmdopts map[string]string, default
func ping(w http.ResponseWriter, req *http.Request) {
cmd := "ping"
- cmdopts := map[string]string{"4": "-4", "6": "-6", "d": "-D", "n": "-n", "v": "-v", "c1": "-c1", "c5": "-c5", "c10": "-c10"}
+ cmdopts := map[string]string{
+ "4": "-4", "6": "-6", "d": "-D", "n": "-n", "v": "-v", "c1": "-c1", "c5": "-c5", "c10": "-c10",
+ "force4": "-4", "force6": "-6", "timestamps": "-D", "nodns": "-n", "verbose": "-v", "count1": "-c1", "count5": "-c5", "count10": "-c10",
+ }
var defaultopts []string
defaultopts = append(defaultopts, "-c10")
res := prerunner(req, cmd, cmdopts, defaultopts)
@@ -132,7 +135,10 @@ func ping(w http.ResponseWriter, req *http.Request) {
func mtr(w http.ResponseWriter, req *http.Request) {
cmd := "mtr"
- cmdopts := map[string]string{"4": "-4", "6": "-6", "u": "-u", "t": "-T", "e": "-e", "x": "-x", "n": "-n", "b": "-b", "z": "-z", "c1": "-c1", "c5": "-c5", "c10": "-c10"}
+ cmdopts := map[string]string{
+ "4": "-4", "6": "-6", "u": "-u", "t": "-T", "e": "-e", "x": "-x", "n": "-n", "b": "-b", "z": "-z", "c1": "-c1", "c5": "-c5", "c10": "-c10",
+ "force4": "-4", "force6": "-6", "udp": "-u", "tcp": "-T", "ext": "-e", "xml": "-x", "nodns": "-n", "cmb": "-b", "asn": "-z", "count1": "-c1", "count5": "-c5", "count10": "-c10",
+ }
var defaultopts []string
defaultopts = append(defaultopts, "-r", "-w", "-c10")
res := prerunner(req, cmd, cmdopts, defaultopts)
@@ -145,7 +151,10 @@ func mtr(w http.ResponseWriter, req *http.Request) {
func traceroute(w http.ResponseWriter, req *http.Request) {
cmd := "traceroute"
- cmdopts := map[string]string{"4": "-4", "6": "-6", "dnf": "-F", "i": "-I", "t": "-T", "n": "-n", "u": "-U", "ul": "-UL", "d": "-D", "b": "--back"}
+ cmdopts := map[string]string{
+ "4": "-4", "6": "-6", "f": "-F", "i": "-I", "t": "-T", "n": "-n", "u": "-U", "ul": "-UL", "d": "-D", "b": "--back",
+ "force4": "-4", "force6": "-6", "dnf": "-F", "icmp": "-I", "tcp": "-T", "nodns": "-n", "udp": "-U", "udplite": "-UL", "dccp": "-D", "back": "--back",
+ }
var defaultopts []string
//defaultopts = append(defaultopts) // no default options for traceroute
res := prerunner(req, cmd, cmdopts, defaultopts)