tproxy

Screenshot Software:
tproxy
Mga detalye ng Software:
Bersyon: 0.5.4
I-upload ang petsa: 12 May 15
Nag-develop: Benoit Chesneau
Lisensya: Libre
Katanyagan: 26

Rating: 3.0/5 (Total Votes: 2)

tproxy ay isang simpleng TCP routing proxy (layer 7) na binuo sa Geven_t, na nagpapahintulot sa iyo na isaayos ang mga gawain na lohika sa Python. & Nbsp; mabigat Ito ay inspirasyon mula sa proxy makina ngunit may ilang mga natatanging hitsura ng mga modelo pre-tinidor worker hiram na Gunicorn .
Instalation:
nangangailangan tproxy Python 2.x> = 2.5. Pag sawa 3.x ay binalak.
PIP install gevent
PIP install tproxy
Upang i-install mula sa source:
git clone git: //github.com/benoitc/tproxy.git
cd tproxy
PIP install r requirements.txt
python setup.py install
Subukan ang iyong pag-install sa pamamagitan ng pagpapatakbo ng command line:
tproxy halimbawa / transparent.py
At pumunta sa http://127.0.0.1:5000, dapat mong makita ang google homepage.
Paggamit ng:
tproxy h
Usage: tproxy [OPTION] script_path
Mga pagpipilian:
& Nbsp; - numero ng bersyon bersyon show program at lumabas
& Nbsp; h, help ipakita ang tulong na mensahe at exit
& Nbsp; - mag-log-file = FILE Ang log file na magsulat sa. [-]
& Nbsp; --level log = LEVEL Ang granularity ng outputs log. [Info]
& Nbsp; - mag-log-config = FILE Ang log config file upang gamitin. [Wala]
& Nbsp; n STRING, --name = STRING
& Nbsp; A base upang gamitin sa setproctitle para sa proseso ng pagbibigay ng pangalan.
& Nbsp; [Wala]
& Nbsp ;-D, --daemon Daemonize proseso Gunicorn. [Mali]
& Nbsp ;-p FILE, --pid = FILE A filename upang gamitin para sa PID file. [Wala]
& Nbsp; -u USER, proseso Switch worker --user = USER upang tumakbo bilang user na ito. [501]
& Nbsp; g GROUP, --group = GROUP
& Nbsp; manggagawa sa proseso Lumipat upang tumakbo bilang grupo na ito. [20]
& Nbsp; m INT, --umask = INT A bit mask para sa file mode sa mga file na isinulat ng
& Nbsp; Gunicorn. [0]
& Nbsp; b ADDRESS, --bind = ADDRESS
& Nbsp; socket upang panagutin. [127.0.0.1:8000]
& Nbsp; - panustos = INT Ang maximum na bilang ng mga nakabinbin na koneksyon. [2048]
& Nbsp; w INT, --workers = int
& Nbsp; Ang bilang ng mga manggagawa sa proseso para sa mga kahilingan paghawak.
& Nbsp; [1]
& Nbsp; - worker-koneksyon = int
& Nbsp; Ang pinakamataas na bilang ng mga sabay-sabay na mga kliyente bawat manggagawa.
& Nbsp; [1000]
& Nbsp; t int, --timeout = int
& Nbsp; Workers tahimik para sa higit pa kaysa sa ilang segundo ay
& Nbsp; namatay at restart. [30]
Signal
Tumigil - Graceful shutdown. Ihinto ang pagtanggap ng koneksyon immediatly
& Nbsp; at maghintay hanggang sa isara ang lahat ng mga koneksyon
TERM - Fast shutdown. Ihinto ang pagtanggap at isara ang lahat conections
& Nbsp; pagkatapos ng 10s.
INT - Kapareho ng TERM
Hi - Graceful reloading. I-reload ang lahat ng manggagawa na may mga bagong code
& Nbsp; sa iyong routing script.
USR2 - I-upgrade tproxy sa fly
TTIN - Palakihin ang bilang ng mga manggagawa mula sa 1
TTOU - Bawasan ang bilang ng mga manggagawa mula sa 1
exemple ng routing script
import re
re_host = re.compile ("Host:. s * (*) r n")
klase CouchDBRouter (object):
& Nbsp; # pagtingin sa mga routing table at bumalik sa isang couchdb node gamitin
& Nbsp; def lookup (self, pangalan):
& Nbsp; "" "gawin ang isang bagay" ""
router = CouchDBRouter ()
# Magsagawa routing nilalaman-aware batay sa data stream. Dito, ang
# Impormasyon Host header mula sa HTTP protocol ay parse upang mahanap ang
# Username at isang gawain lookup ay tumakbo sa mga pangalan upang mahanap ang tamang
# Couchdb node. Kung maaari ay ginawa pa walang tugma, walang may gagawin
# Connection. (Gumawa ng iyong sariling mga couchone server ...)
def proxy (data):
& Nbsp; matches = re_host.findall (data)
& Nbsp; kung matches:
& Nbsp; host = router.lookup (matches.pop ())
& Nbsp; return {"remote": host}
& Nbsp; bumalik None
Halimbawa SOCKS4 Proxy sa 18 Lines
import socket
import struct
def proxy (data):
& Nbsp; kung len (data) <9:
& Nbsp; return
& Nbsp; command = Ord (data [1])
& Nbsp; ip, port = socket.inet_ntoa (data [4: 8]), struct.unpack ("> H", data [2: 4]) [0]
& Nbsp; idx = data.index (" 0")
& Nbsp; userid = data [8: idx]
& Nbsp; kung utos == 1: #connect
& Nbsp; return dict (remote = "% s:% s"% (ip, port),
& Nbsp; reply = " 0 x5a 0 0 0 0 0 0",
& Nbsp; data = data [idx:])
& Nbsp; pa:
& Nbsp; return {"close": " 0 x5b 0 0 0 0 0 0"}
Values ​​ Valid return
& Nbsp; {"remote:": string o tuple} - String ay ang host: port ng server na ay proxied.
& Nbsp; {"remote": String, "data": String} - Kapareho ng sa itaas, ngunit ipadala ang mga ibinigay na data sa halip.
& Nbsp; {"remote": String, "data": String, "reply": String} - Kapareho ng sa itaas, ngunit sumagot sa ibinigay na data pabalik sa client
& Nbsp; Wala - Walang gawin.
& Nbsp; {"close": True} - Isara ang connection.
& Nbsp; {"close": String} - Isara ang koneksyon pagkatapos ng pagpapadala ng String.
Hawakan error
Maaari mong madaling paghawak ng error sa pamamagitan ng pagdaragdag ng isang proxy_error function sa iyong script:
def proxy_error (client, e):
& Nbsp; pass
. Ang function na ito makuha ang ClientConnection Halimbawa (kasalukuyang koneksyon) bilang unang argumento at ang mga pagbubukod sa pangalawang argumento error

Kinakailangan :

  • Sawa

Katulad na software

sec-wall
sec-wall

14 Apr 15

CherryProxy
CherryProxy

14 Apr 15

Siproxd
Siproxd

11 May 15

VNCAuthProxy
VNCAuthProxy

15 Apr 15

Iba pang mga software developer ng Benoit Chesneau

fserve
fserve

11 May 15

hroute
hroute

11 May 15

Restkit
Restkit

5 Jun 15

Couchapp
Couchapp

14 Apr 15

Mga komento sa tproxy

Mga Komento hindi natagpuan
Magdagdag ng komento
I-sa mga imahe!