Projects STRLCPY prox5 Commits b6900a87
🤬
  • ■ ■ ■ ■ ■ ■
    conductor.go
    skipped 47 lines
    48 48  }
    49 49   
    50 50  func (p5 *Swamp) startDaemons() {
    51  - go p5.mapBuilder()
    52  - <-p5.conductor
    53  - p5.svcUp()
    54 51   go p5.jobSpawner()
    55  - 
    56  - for {
    57  - if p5.IsRunning() {
    58  - atomic.StoreUint32(&p5.Status, uint32(StateRunning))
    59  - break
    60  - }
    61  - }
    62 52  }
    63 53   
    64 54  // Resume will resume pause proxy pool operations, attempting to resume a running Swamp is returns an error.
    skipped 9 lines
  • ■ ■ ■ ■ ■ ■
    daemons.go
    skipped 4 lines
    5 5   "strconv"
    6 6   "strings"
    7 7   "sync"
    8  - "sync/atomic"
    9 8   "time"
    10 9   
    11 10   "git.tcp.direct/kayos/prox5/internal/pools"
    12 11  )
    13  - 
    14  -func (p5 *Swamp) svcUp() {
    15  - atomic.AddInt32(&p5.runningdaemons, 1)
    16  -}
    17  - 
    18  -func (p5 *Swamp) svcDown() {
    19  - atomic.AddInt32(&p5.runningdaemons, -1)
    20  -}
    21 12   
    22 13  type swampMap struct {
    23 14   plot map[string]*Proxy
    skipped 50 lines
    74 65   }
    75 66  }
    76 67   
    77  -func (p5 *Swamp) mapBuilder() {
    78  - if p5.pool.IsClosed() {
    79  - p5.pool.Reboot()
    80  - }
    81  - 
    82  - p5.dbgPrint(simpleString("map builder started"))
    83  - 
    84  - go func() {
    85  - defer p5.dbgPrint(simpleString("map builder paused"))
    86  - for {
    87  - select {
    88  - case <-p5.ctx.Done():
    89  - p5.svcDown()
    90  - return
    91  - case in := <-inChan:
    92  - if p, ok := p5.swampmap.add(in); !ok {
    93  - continue
    94  - } else {
    95  - p5.Pending <- p
    96  - }
    97  - default:
    98  - time.Sleep(500 * time.Millisecond)
    99  - p5.recycling()
    100  - }
    101  - }
    102  - }()
    103  - p5.conductor <- true
    104  -}
    105 68   
    106 69  func (p5 *Swamp) recycling() int {
    107 70   if !p5.GetRecyclingStatus() {
    skipped 38 lines
    146 109   select {
    147 110   case <-p5.ctx.Done():
    148 111   q <- true
    149  - p5.svcDown()
    150 112   return
    151 113   case sock := <-p5.Pending:
    152 114   if err := p5.pool.Submit(sock.validate); err != nil {
    skipped 12 lines
    165 127   }
    166 128   }()
    167 129   
    168  - p5.svcUp()
    169 130   <-q
    170 131   p5.pool.Release()
    171 132  }
    skipped 1 lines
  • ■ ■ ■ ■ ■ ■
    list_management.go
    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
  • ■ ■ ■ ■ ■ ■
    validator_engine.go
    skipped 212 lines
    213 213   pe.tally(sock)
    214 214  }
    215 215   
    216  -func (p5 *Swamp) tally(sock *Proxy) {
     216 +func (p5 *Swamp) tally(sock *Proxy) bool {
     217 + var target chan *Proxy
    217 218   switch sock.protocol.Get() {
    218 219   case ProtoSOCKS4:
    219 220   p5.stats.v4()
    220  - p5.Valids.SOCKS4 <- sock
     221 + target = p5.Valids.SOCKS4
    221 222   case ProtoSOCKS4a:
    222 223   p5.stats.v4a()
    223  - p5.Valids.SOCKS4a <- sock
     224 + target = p5.Valids.SOCKS4a
    224 225   case ProtoSOCKS5:
    225 226   p5.stats.v5()
    226  - p5.Valids.SOCKS5 <- sock
     227 + target = p5.Valids.SOCKS5
    227 228   case ProtoHTTP:
    228 229   p5.stats.http()
    229  - p5.Valids.HTTP <- sock
     230 + target = p5.Valids.HTTP
    230 231   default:
    231  - return
     232 + return false
     233 + }
     234 + select {
     235 + case target <- sock:
     236 + return true
    232 237   }
    233 238  }
    234 239   
Please wait...
Page is in error, reload to recover