Skip to content

Commit 9387a10

Browse files
Refactoring: changed variables names
1 parent a0cc109 commit 9387a10

File tree

2 files changed

+39
-36
lines changed

2 files changed

+39
-36
lines changed

cmd/gohpts/cli.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ func root(args []string) error {
8585
if err := flags.Parse(args); err != nil {
8686
return err
8787
}
88-
app := gohpts.New(&conf)
89-
app.Run()
88+
p := gohpts.New(&conf)
89+
p.Run()
9090
return nil
9191
}

gohpts.go

Lines changed: 37 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -82,19 +82,19 @@ func isLocalAddress(addr string) bool {
8282
return strings.HasSuffix(host, ".local") || host == "localhost"
8383
}
8484

85-
type app struct {
86-
hs *http.Server
87-
sc *http.Client
88-
hc *http.Client
89-
dialer proxy.Dialer
90-
logger *zerolog.Logger
85+
type proxyApp struct {
86+
httpServer *http.Server
87+
sockServer *http.Client
88+
httpClient *http.Client
89+
sockDialer proxy.Dialer
90+
logger *zerolog.Logger
9191
}
9292

93-
func (app *app) handleForward(w http.ResponseWriter, r *http.Request) {
93+
func (p *proxyApp) handleForward(w http.ResponseWriter, r *http.Request) {
9494

9595
req, err := http.NewRequest(r.Method, r.URL.String(), r.Body)
9696
if err != nil {
97-
app.logger.Error().Err(err).Msgf("Error during NewRequest() %s: %s", r.URL.String(), err)
97+
p.logger.Error().Err(err).Msgf("Error during NewRequest() %s: %s", r.URL.String(), err)
9898
w.WriteHeader(http.StatusInternalServerError)
9999
return
100100
}
@@ -107,26 +107,26 @@ func (app *app) handleForward(w http.ResponseWriter, r *http.Request) {
107107
}
108108
var resp *http.Response
109109
if isLocalAddress(r.Host) {
110-
resp, err = app.hc.Do(req)
110+
resp, err = p.httpClient.Do(req)
111111
if err != nil {
112-
app.logger.Error().Err(err).Msg("Connection failed")
112+
p.logger.Error().Err(err).Msg("Connection failed")
113113
w.WriteHeader(http.StatusServiceUnavailable)
114114
return
115115
}
116116
if resp == nil {
117-
app.logger.Error().Err(err).Msg("Connection failed")
117+
p.logger.Error().Err(err).Msg("Connection failed")
118118
w.WriteHeader(http.StatusServiceUnavailable)
119119
return
120120
}
121121
} else {
122-
resp, err = app.sc.Do(req)
122+
resp, err = p.sockServer.Do(req)
123123
if err != nil {
124-
app.logger.Error().Err(err).Msg("Connection to SOCKS5 server failed")
124+
p.logger.Error().Err(err).Msg("Connection to SOCKS5 server failed")
125125
w.WriteHeader(http.StatusServiceUnavailable)
126126
return
127127
}
128128
if resp == nil {
129-
app.logger.Error().Err(err).Msg("Connection to SOCKS5 server failed")
129+
p.logger.Error().Err(err).Msg("Connection to SOCKS5 server failed")
130130
w.WriteHeader(http.StatusServiceUnavailable)
131131
return
132132
}
@@ -139,7 +139,7 @@ func (app *app) handleForward(w http.ResponseWriter, r *http.Request) {
139139
w.WriteHeader(resp.StatusCode)
140140
n, err := io.Copy(w, resp.Body)
141141
if err != nil {
142-
app.logger.Error().Err(err).Msgf("Error during Copy() %s: %s", r.URL.String(), err)
142+
p.logger.Error().Err(err).Msgf("Error during Copy() %s: %s", r.URL.String(), err)
143143
w.WriteHeader(http.StatusInternalServerError)
144144
return
145145
}
@@ -149,10 +149,10 @@ func (app *app) handleForward(w http.ResponseWriter, r *http.Request) {
149149
} else {
150150
written = fmt.Sprintf("%dKB", n/kbSize)
151151
}
152-
app.logger.Debug().Msgf("%s - %s - %s - %d - %s", r.Proto, r.Method, r.Host, resp.StatusCode, written)
152+
p.logger.Debug().Msgf("%s - %s - %s - %d - %s", r.Proto, r.Method, r.Host, resp.StatusCode, written)
153153
}
154154

155-
func (app *app) handleTunnel(w http.ResponseWriter, r *http.Request) {
155+
func (p *proxyApp) handleTunnel(w http.ResponseWriter, r *http.Request) {
156156
var dstConn net.Conn
157157
var err error
158158
if isLocalAddress(r.Host) {
@@ -162,7 +162,7 @@ func (app *app) handleTunnel(w http.ResponseWriter, r *http.Request) {
162162
return
163163
}
164164
} else {
165-
dstConn, err = app.dialer.Dial("tcp", r.Host)
165+
dstConn, err = p.sockDialer.Dial("tcp", r.Host)
166166
if err != nil {
167167
http.Error(w, err.Error(), http.StatusServiceUnavailable)
168168
return
@@ -186,45 +186,45 @@ func (app *app) handleTunnel(w http.ResponseWriter, r *http.Request) {
186186
dstConnStr := fmt.Sprintf("%s->%s->%s", dstConn.LocalAddr().String(), dstConn.RemoteAddr().String(), r.Host)
187187
srcConnStr := fmt.Sprintf("%s->%s", srcConn.LocalAddr().String(), srcConn.RemoteAddr().String())
188188

189-
app.logger.Debug().Msgf("%s - %s - %s", r.Proto, r.Method, r.Host)
190-
app.logger.Debug().Msgf("src: %s - dst: %s", srcConnStr, dstConnStr)
189+
p.logger.Debug().Msgf("%s - %s - %s", r.Proto, r.Method, r.Host)
190+
p.logger.Debug().Msgf("src: %s - dst: %s", srcConnStr, dstConnStr)
191191

192192
var wg sync.WaitGroup
193193
wg.Add(2)
194-
go app.transfer(&wg, dstConn, srcConn, dstConnStr, srcConnStr)
195-
go app.transfer(&wg, srcConn, dstConn, srcConnStr, dstConnStr)
194+
go p.transfer(&wg, dstConn, srcConn, dstConnStr, srcConnStr)
195+
go p.transfer(&wg, srcConn, dstConn, srcConnStr, dstConnStr)
196196
wg.Wait()
197197
}
198198

199-
func (app *app) transfer(wg *sync.WaitGroup, destination io.Writer, source io.Reader, destName, srcName string) {
199+
func (p *proxyApp) transfer(wg *sync.WaitGroup, destination io.Writer, source io.Reader, destName, srcName string) {
200200
defer wg.Done()
201201
n, err := io.Copy(destination, source)
202202
if err != nil {
203-
app.logger.Error().Err(err).Msgf("Error during copy from %s to %s: %v", srcName, destName, err)
203+
p.logger.Error().Err(err).Msgf("Error during copy from %s to %s: %v", srcName, destName, err)
204204
}
205205
var written string
206206
if n < kbSize {
207207
written = fmt.Sprintf("%dB", n)
208208
} else {
209209
written = fmt.Sprintf("%dKB", n/kbSize)
210210
}
211-
app.logger.Debug().Msgf("copied %s from %s to %s", written, srcName, destName)
211+
p.logger.Debug().Msgf("copied %s from %s to %s", written, srcName, destName)
212212
}
213213

214-
func (app *app) handler() http.HandlerFunc {
214+
func (p *proxyApp) handler() http.HandlerFunc {
215215
return func(w http.ResponseWriter, r *http.Request) {
216216
if r.Method == http.MethodConnect {
217-
app.handleTunnel(w, r)
217+
p.handleTunnel(w, r)
218218
} else {
219-
app.handleForward(w, r)
219+
p.handleForward(w, r)
220220
}
221221
}
222222
}
223223

224-
func (app *app) Run() {
225-
app.hs.Handler = app.handler()
226-
if err := app.hs.ListenAndServe(); err != nil {
227-
app.logger.Fatal().Err(err).Msg("Unable to start HTTP server")
224+
func (p *proxyApp) Run() {
225+
p.httpServer.Handler = p.handler()
226+
if err := p.httpServer.ListenAndServe(); err != nil {
227+
p.logger.Fatal().Err(err).Msg("Unable to start HTTP server")
228228
}
229229
}
230230

@@ -237,7 +237,7 @@ type Config struct {
237237
Pass string
238238
}
239239

240-
func New(conf *Config) *app {
240+
func New(conf *Config) *proxyApp {
241241
var logger zerolog.Logger
242242
if conf.Json {
243243
logger = zerolog.New(os.Stdout).With().Timestamp().Logger()
@@ -275,7 +275,10 @@ func New(conf *Config) *app {
275275
ReadTimeout: readTimeout,
276276
WriteTimeout: writeTimeout,
277277
MaxHeaderBytes: 1 << 20,
278+
Protocols: new(http.Protocols),
278279
}
280+
hs.TLSNextProto = make(map[string]func(*http.Server, *tls.Conn, http.Handler))
281+
hs.Protocols.SetHTTP1(true)
279282
hc := &http.Client{
280283
Transport: &http.Transport{
281284
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
@@ -287,5 +290,5 @@ func New(conf *Config) *app {
287290
}
288291
logger.Info().Msgf("SOCKS5 Proxy: %s", conf.AddrSOCKS)
289292
logger.Info().Msgf("HTTP Proxy: %s", conf.AddrHTTP)
290-
return &app{hs: hs, sc: socks, hc: hc, dialer: dialer, logger: &logger}
293+
return &proxyApp{httpServer: hs, sockServer: socks, httpClient: hc, sockDialer: dialer, logger: &logger}
291294
}

0 commit comments

Comments
 (0)