Lewati ke konten utama

Manajemen Proxy

Proxy attach per-client. Tambah / hapus dari pool global, terus redistribusi ke client yang udah dibuat dengan distributeProxies(limit). Default kind-nya SOCKS5 — key-nya entah "ip:port" (tanpa auth) atau "ip:port:user:pass" (pake auth).

addProxy("ip:port") -- tanpa auth
addProxy("ip:port:user:pass") -- dengan auth
removeProxy("ip:port")
getProxies()
distributeProxies(3) -- redistribusi, max 3 client per proxy

Shape Proxy

getProxies() balikin list 1-indexed dari ini. Read-only dari sisi Lua; pake setProxyEnabled / setProxyMaxBots buat ngubah.

FieldTipeCatatan
keystringKey lookup. Shape-nya sama kayak string yang dikasih ke addProxy() — 4-segment kalau ada auth, 2-segment kalau ngga.
infoProxyInfoBagian endpoint (ip / port / user). Tarik info.user buat display tanpa expose password.
passstring?Password auth. nil buat proxy tanpa auth. Jangan log ini — round-trip lewat Lua API plaintext.
enabledbooleanApakah registry routing bot lewat proxy ini.
maxBotsnumberMax bot yang bisa claim proxy ini sekaligus. 0 = unbounded.
max_botsnumberAlias snake-case dari maxBots. Dua-duanya expose value yang sama.

Shape ProxyInfo

Field info dari Proxy — host/port/user dipisahin biar bisa di-inspect tanpa ikut bawa password.

FieldTipeCatatan
ipstringHostname atau alamat IPv4 server proxy.
portnumberPort TCP. Default SOCKS5 itu 1080.
userstring?Username auth. nil buat proxy tanpa auth.

Globals

addProxy(key)

FieldTipe
Signature(key: string) → boolean
Returnstrue kalau sukses
Common errorsraise kalau key-nya malformed ("expected 'ip:port' or 'ip:port:user:pass'", "invalid port")
Asyncno

Default kind-nya SOCKS5.

addProxy("1.2.3.4:1080")
addProxy("1.2.3.4:1080:alice:hunter2")

removeProxy(key)

FieldTipe
Signature(key: string) → boolean
Returnsbooleantrue kalau key-nya cocok sama entry yang ada, false kalau ngga
Common errorsraise kalau key-nya malformed
Asyncno
removeProxy("1.2.3.4:1080:alice:hunter2")

getProxies()

FieldTipe
Signature() → {Proxy}
Returns{Proxy} — list 1-indexed semua proxy yang ke-register
Asyncno
for i, proxy in ipairs(getProxies()) do
print(proxy.key, proxy.enabled, proxy.maxBots)
print(" ", proxy.info.ip, proxy.info.port, proxy.info.user)
end

distributeProxies(limit)

FieldTipe
Signature(limit: number) → number
Returnsnumber — jumlah bot yang dapet assignment proxy
Asyncyes — yield pas baca list bot dan update assignment proxy per-bot

Round-robin semua proxy yang enabled ke list bot, ngehormatin limit sebagai cap bot per-proxy (juga di-persist ke field maxBots tiap proxy). Pass 0 buat clear proxy semua bot dan zero-in cap-nya.

local n = distributeProxies(3)
print("ke-assign", n, "bot")

setProxyEnabled(key, enabled)

FieldTipe
Signature(key: string, enabled: boolean) → boolean
Returnsbooleantrue kalau key-nya cocok sama entry yang ada, false kalau ngga
Common errorsraise kalau key-nya malformed
Asyncno

Toggle apakah registry routing bot lewat key.

setProxyEnabled("1.2.3.4:1080", false) -- disable tanpa hapus

setProxyMaxBots(key, n)

FieldTipe
Signature(key: string, n: number) → boolean
Returnsbooleantrue kalau key-nya cocok sama entry yang ada, false kalau ngga
Common errorsraise kalau key-nya malformed
Asyncno

Set cap bot per-proxy di key.

setProxyMaxBots("1.2.3.4:1080:alice:hunter2", 5) -- cap 5 client di proxy ini

Iterasi pool yang aktif

for i, proxy in pairs(getProxies()) do
proxy.key -- "ip:port" atau "ip:port:user:pass"
proxy.info.ip
proxy.info.port
proxy.info.user
proxy.pass
proxy.enabled -- di-skip pas distribusi kalau false
proxy.maxBots -- cap per-proxy (0 = unlimited)
end