Compare commits

...

13 Commits

Author SHA1 Message Date
Vladislav Yarmak
683bc5f1ec bump snap version 2021-03-12 22:30:29 +02:00
Snawoot
be2e4e5420 Merge pull request #26 from Snawoot/holaapi_req_2xx
hola: expect only 2xx responses
2021-03-12 22:29:46 +02:00
Vladislav Yarmak
95adb40377 hola: expect only 2xx responses 2021-03-12 22:27:31 +02:00
Snawoot
6ced446e68 Merge pull request #25 from Snawoot/detect_block
Detect block
2021-03-12 21:01:12 +02:00
Vladislav Yarmak
9c15f5eda9 add few helper targets to makefile 2021-03-12 20:59:26 +02:00
Vladislav Yarmak
afe3e3f732 detect ban in bg_init response 2021-03-12 20:58:30 +02:00
Vladislav Yarmak
e67b30a116 bump snap version 2021-03-08 01:08:17 +02:00
Snawoot
edc367f194 Merge pull request #22 from rany2/master
Fix nonsense help page
2021-03-08 01:07:48 +02:00
rany
ed77f8a254 help page update in README 2021-03-08 00:19:58 +02:00
rany
45977423f6 Fix -dont-use-trial 2021-03-08 00:18:53 +02:00
rany
64c90af10b change wording in readme 2021-03-08 00:15:55 +02:00
rany
c3180ad245 change wording 2021-03-08 00:15:12 +02:00
rany
0052dea171 Fix nonsense help page 2021-03-08 00:13:33 +02:00
6 changed files with 48 additions and 8 deletions

View File

@@ -54,3 +54,21 @@ $(OUTSUFFIX).windows-386.exe: $(src)
clean:
rm -f bin/*
fmt:
go fmt ./...
run:
go run .
.PHONY: clean all native fmt \
bin-native \
bin-linux-amd64 \
bin-linux-386 \
bin-linux-arm \
bin-freebsd-amd64 \
bin-freebsd-386 \
bin-freebsd-arm \
bin-darwin-amd64 \
bin-windows-amd64 \
bin-windows-386

View File

@@ -154,7 +154,9 @@ Usage of /home/user/go/bin/hola-proxy:
-country string
desired proxy location (default "us")
-dont-use-trial
use regular ports instead of trial ports (default true)
use regular ports instead of trial ports
-force-port-field string
force specific port field/num (example 24232 or lum)
-limit uint
amount of proxies in retrieved list (default 3)
-list-countries

View File

@@ -5,6 +5,8 @@ import (
"context"
"encoding/hex"
"encoding/json"
"errors"
"fmt"
"github.com/campoy/unique"
"github.com/google/uuid"
"io/ioutil"
@@ -24,12 +26,17 @@ const BG_INIT_URL = CCGI_URL + "background_init"
const ZGETTUNNELS_URL = CCGI_URL + "zgettunnels"
const LOGIN_PREFIX = "user-uuid-"
var TemporaryBanError = errors.New("temporary ban detected")
var PermanentBanError = errors.New("permanent ban detected")
type CountryList []string
type BgInitResponse struct {
Ver string `json:"ver"`
Key int64 `json:"key"`
Country string `json:"country"`
Ver string `json:"ver"`
Key int64 `json:"key"`
Country string `json:"country"`
Blocked bool `json:"blocked,omitempty"`
Permanent bool `json:"permanent,omitempty"`
}
type PortMap struct {
@@ -81,6 +88,11 @@ func do_req(ctx context.Context, method, url string, query, data url.Values) ([]
if err != nil {
return nil, err
}
switch resp.StatusCode {
case http.StatusOK, http.StatusCreated, http.StatusAccepted, http.StatusNoContent:
default:
return nil, errors.New(fmt.Sprintf("Bad HTTP response: %d %s", resp.StatusCode, resp.Status))
}
body, err := ioutil.ReadAll(resp.Body)
resp.Body.Close()
if err != nil {
@@ -118,7 +130,15 @@ func background_init(ctx context.Context, user_uuid string) (res BgInitResponse,
reterr = err
return
}
reterr = json.Unmarshal(resp, &res)
if reterr == nil && res.Blocked {
if res.Permanent {
reterr = PermanentBanError
} else {
reterr = TemporaryBanError
}
}
return
}

View File

@@ -63,7 +63,7 @@ func parse_args() CLIArgs {
flag.StringVar(&args.resolver, "resolver", "https://cloudflare-dns.com/dns-query",
"DNS/DoH/DoT resolver to workaround Hola blocked hosts. "+
"See https://github.com/ameshkov/dnslookup/ for upstream DNS URL format.")
flag.BoolVar(&args.use_trial, "dont-use-trial", true, "use regular ports instead of trial ports") // would be nice to not show in help page
flag.BoolVar(&args.use_trial, "dont-use-trial", false, "use regular ports instead of trial ports") // would be nice to not show in help page
flag.Parse()
if args.country == "" {
arg_fail("Country can't be empty string.")

View File

@@ -1,5 +1,5 @@
name: hola-proxy
version: '1.4.0'
version: '1.4.2'
summary: Standalone Hola proxy client.
description: |
Standalone Hola proxy client. Just run it and it'll start plain HTTP proxy server forwarding traffic via Hola proxies of your choice.

View File

@@ -116,13 +116,13 @@ func get_endpoint(tunnels *ZGetTunnelsResponse, typ string, trial bool, force_po
}
if typ != "skip" {
if typ == "direct" || typ == "lum" || typ == "pool" || typ == "virt" {
if trial {
if !trial {
port = tunnels.Port.Trial
} else {
port = tunnels.Port.Direct
}
} else if typ == "peer" {
if trial {
if !trial {
port = tunnels.Port.TrialPeer
} else {
port = tunnels.Port.Peer