tproxy

Software skärmdump:
tproxy
Mjukvaruinformation:
Version: 0.5.4
Ladda upp dagen: 12 May 15
Utvecklare: Benoit Chesneau
Licens: Gratis
Popularitet: 110

Rating: 3.0/5 (Total Votes: 2)

tproxy är en enkel TCP routing proxy (skikt 7) bygger på Geven_t, som låter dig konfigurera rutin logik i Python. & Nbsp; Det är starkt inspirerad av proxy maskin men har vissa unika som pre-gaffel arbetare modell lånats för att Gunicorn .
Installation:
tproxy kräver Python 2.x> = 2.5. Python 3.x stöd planeras.
PiP installera gevent
PiP installera tproxy
Så här installerar du från källan:
git clone git: //github.com/benoitc/tproxy.git
cd tproxy
Pip installera -r requirements.txt
python setup.py installera
Testa din installation genom att köra kommandoraden:
tproxy exempel / transparent.py
Och gå på http://127.0.0.1:5000, bör du se Googles startsida.
Användning:
tproxy -h
Användning: tproxy [ALTERNATIV] script_path
Alternativ:
& Nbsp; - version visa programmets versionsnummer och avsluta
& Nbsp; -h, --help visa denna hjälpmeddelande och avsluta
& Nbsp; - log-file = FIL Loggfilen att skriva till. [-]
& Nbsp; - log-level = NIVÅ granularitet logg utgångar. [Info]
& Nbsp; - log-config = FIL Logg konfigurationsfil att använda. [Ingen]
& Nbsp; -n STRING, --name = STRÄNG
& Nbsp; En bas för användning med setproctitle för process namngivning.
& Nbsp; [Ingen]
& Nbsp ;-D, --daemon Daemonize den Gunicorn processen. [False]
& Nbsp ;-P FIL, --pid = FIL Ett filnamn som ska användas för PID-filen. [Ingen]
& Nbsp; -u användare, --user = Användare Växla arbetsprocesser för att köra som den här användaren. [501]
& Nbsp; -g GROUP, --group = GROUP
& Nbsp; Switch arbetsprocess att köra som den här gruppen. [20]
& Nbsp; -m INT, --umask = INT Lite mask för filen läge på filer som skrivits av
& Nbsp; Gunicorn. [0]
& Nbsp; -b ADRESS, --bind = ADRESS
& Nbsp; Uttaget att binda. [127.0.0.1:8000]
& Nbsp; - eftersläpning = INT Det maximala antalet väntande anslutningar. [2048]
& Nbsp; w INT, --workers = INT
& Nbsp; Antalet arbetsprocesser för att hantera förfrågningar.
& Nbsp; [1]
& Nbsp; - arbetar anslutningar = INT
& Nbsp; Det maximala antalet samtidiga klienter per anställd.
& Nbsp; [1000]
& Nbsp; -t INT, --timeout = INT
& Nbsp; Arbetare tyst för mer än så här många sekunder är
& Nbsp; dödades och startas om. [30]
Signaler
AVSLUTA - Graceful avstängning. Sluta acceptera anslutningar omedelbart
& Nbsp; och vänta tills alla anslutningar nära
SIKT - Snabb avstängning. Sluta ta emot och stäng alla conections
& Nbsp; efter 10s.
INT - Samma som SIKT
HUP - Graceful omlastning. Ladda alla arbetstagare med den nya koden
& Nbsp; i dirigering skript.
USR2 - Uppgradera tproxy i farten
Ställn in - Öka antalet arbetstagare från 1
TTOU - Minska antalet arbetstagare från 1
Exempel på routing manus
import re
re_host = re.compile ("Värd:. s * (*) r n")
klass CouchDBRouter (objekt):
& Nbsp; # titta på routingtabellen och returnera en couchdb nod att använda
& Nbsp; def lookup (själv, namn):
& Nbsp; "" "göra något" ""
router = CouchDBRouter ()
# Utför innehållsmedveten routing baserad på strömdata. Här, den
# Värdrubrikinformation från HTTP-protokollet analyseras för att hitta den
# Användarnamn och en uppslag rutin körs på namnet för att hitta rätt
# Couchdb nod. Om ingen match kan göras ännu, gör ingenting med
# Anslutning. (Göra din egen couchone server ...)
def proxy (data):
& Nbsp; matcher = re_host.findall (data)
& Nbsp; om matcher:
& Nbsp; värd = router.lookup (matches.pop ())
& Nbsp; avkastning {"remote" värd}
& Nbsp; retur Ingen
Exempel SOCKS4 i 18 Lines
import uttag
import struct
def proxy (data):
& Nbsp; om len (data) <9:
& Nbsp; avkastning
& Nbsp; kommandot = ord (data [1])
& nbsp; ip, port = socket.inet_ntoa (data [4: 8]), struct.unpack ("> H", uppgifter [2: 4]) [0]
& Nbsp; idx = data.index (" 0")
& nbsp; Användar-ID = uppgifter [8: idx]
& Nbsp; om kommandot == 1: #connect
& Nbsp; retur dict (remote = "% s:% s"% (ip, port),
& Nbsp; svar = " 0 X5a 0 0 0 0 0 0",
& Nbsp; uppgifter = uppgifter [idx:])
& Nbsp; annan:
& Nbsp; avkastning {"close": " 0 X5b 0 0 0 0 0 0"}
Valid returvärden
& Nbsp; {"remote": sträng eller tupel} - String är värd: port på servern som ska proxy.
& Nbsp; {"remote": String "data": String} - Samma som ovan, men skicka givna data istället.
& Nbsp; {"remote": String "data": String "svar": String} - Samma som ovan, men svara med givna data tillbaka till klienten
& Nbsp; Ingen - Gör ingenting.
& Nbsp; {"nära": true} - Stäng anslutningen.
& Nbsp; {"nära": String} - Stäng anslutningen när du har skickat String.
hantera fel
Du kan enkelt hantera fel genom att lägga till en proxy_error funktion i skriptet:
def proxy_error (klient, e):
& Nbsp; pass
. Denna funktion får ClientConnection instans (aktuella anslutning) som första argument och undantag felet i andra argumentet

Krav :

  • Python

Liknande mjukvara

socks5
socks5

15 Apr 15

Octopasty
Octopasty

14 Apr 15

Annan programvara för utvecklare Benoit Chesneau

http-parser
http-parser

20 Feb 15

Restkit
Restkit

5 Jun 15

Couchapp
Couchapp

14 Apr 15

Kommentarer till tproxy

Kommentarer hittades inte
Kommentar
Slå på bilder!