2020 timeout string
2121 interval string
2222 sigs chan os.Signal
23+
24+ httpMode bool
25+ httpHead bool
26+ httpPost bool
27+ httpUA string
2328)
2429
2530var rootCmd = cobra.Command {
@@ -82,11 +87,16 @@ var rootCmd = cobra.Command{
8287 return
8388 }
8489 }
85- protocol , err := ping .NewProtocol (schema )
86- if err != nil {
87- fmt .Println (err )
88- cmd .Usage ()
89- return
90+ var protocol ping.Protocol
91+ if httpMode {
92+ protocol = ping .HTTP
93+ } else {
94+ protocol , err = ping .NewProtocol (schema )
95+ if err != nil {
96+ fmt .Println (err )
97+ cmd .Usage ()
98+ return
99+ }
90100 }
91101 target := ping.Target {
92102 Timeout : timeoutDuration ,
@@ -99,8 +109,17 @@ var rootCmd = cobra.Command{
99109 var pinger ping.Pinger
100110 if schema == ping .TCP .String () {
101111 pinger = ping .NewTCPing ()
102- } else if schema == ping .HTTP .String () {
103- pinger = ping .NewHTTPing ()
112+ } else if schema == ping .HTTP .String () || schema == ping .HTTPS .String () {
113+ var httpMethod string
114+ switch {
115+ case httpHead :
116+ httpMethod = "HEAD"
117+ case httpPost :
118+ httpMethod = "POST"
119+ default :
120+ httpMethod = "GET"
121+ }
122+ pinger = ping .NewHTTPing (httpMethod )
104123 } else {
105124 fmt .Printf ("schema: %s not support\n " , schema )
106125 cmd .Usage ()
@@ -124,6 +143,12 @@ func init() {
124143 rootCmd .Flags ().IntVarP (& counter , "counter" , "c" , 4 , "ping counter" )
125144 rootCmd .Flags ().StringVarP (& timeout , "timeout" , "T" , "1s" , `connect timeout, units are "ns", "us" (or "µs"), "ms", "s", "m", "h"` )
126145 rootCmd .Flags ().StringVarP (& interval , "interval" , "I" , "1s" , `ping interval, units are "ns", "us" (or "µs"), "ms", "s", "m", "h"` )
146+
147+ rootCmd .Flags ().BoolVarP (& httpMode , "http" , "H" , false , `Use "HTTP" mode. will ignore URI Schema, force to http` )
148+ rootCmd .Flags ().BoolVar (& httpHead , "head" , false , `Use POST instead of GET in http mode.` )
149+ rootCmd .Flags ().BoolVar (& httpPost , "post" , false , `Use HEAD instead of GET in http mode.` )
150+ rootCmd .Flags ().StringVar (& httpUA , "user-agent" , "tcping" , `Use custom UA in http mode.` )
151+
127152}
128153
129154func main () {
0 commit comments