| skipped 1 lines |
2 | 2 | | |
3 | 3 | | import ( |
4 | 4 | | "bufio" |
5 | | - | "fmt" |
| 5 | + | "errors" |
6 | 6 | | "io" |
7 | 7 | | "os" |
8 | 8 | | "strings" |
9 | 9 | | ) |
10 | | - | |
11 | | - | // throw shit proxies here, get map |
12 | | - | // see daemons.go |
13 | | - | var inChan chan string |
14 | | - | |
15 | | - | func init() { |
16 | | - | inChan = make(chan string, 100000) |
17 | | - | } |
18 | 10 | | |
19 | 11 | | // LoadProxyTXT loads proxies from a given seed file and feeds them to the mapBuilder to be later queued automatically for validation. |
20 | 12 | | // Expects one of the following formats for each line: |
| skipped 34 lines |
55 | 47 | | // - yeet.com:1080:user:pass |
56 | 48 | | // - [fe80::2ef0:5dff:fe7f:c299]:1080 |
57 | 49 | | // - [fe80::2ef0:5dff:fe7f:c299]:1080:user:pass |
58 | | - | func (p5 *Swamp) LoadSingleProxy(sock string) (ok bool) { |
| 50 | + | func (p5 *Swamp) LoadSingleProxy(sock string) bool { |
| 51 | + | var ok bool |
59 | 52 | | if sock, ok = filter(sock); !ok { |
60 | | - | return |
| 53 | + | return false |
| 54 | + | } |
| 55 | + | if err := p5.loadSingleProxy(sock); err != nil { |
| 56 | + | return false |
61 | 57 | | } |
62 | | - | go p5.loadSingleProxy(sock) |
63 | | - | return |
| 58 | + | return true |
64 | 59 | | } |
65 | 60 | | |
66 | 61 | | func (p5 *Swamp) loadSingleProxy(sock string) error { |
67 | | - | for { |
68 | | - | select { |
69 | | - | case inChan <- sock: |
70 | | - | return nil |
71 | | - | default: |
72 | | - | return fmt.Errorf("cannot load %s, channel is full", sock) |
73 | | - | } |
| 62 | + | if _, ok := p5.swampmap.add(sock); !ok { |
| 63 | + | return errors.New("proxy already exists") |
74 | 64 | | } |
| 65 | + | return nil |
75 | 66 | | } |
76 | 67 | | |
77 | 68 | | // LoadMultiLineString loads a multiine string object with proxy per line. |
| skipped 25 lines |