tproxy

Software screenshot:
tproxy
Software informatie:
Versie: 0.5.4
Upload datum: 12 May 15
Ontwikkelaar: Benoit Chesneau
Licentie: Gratis
Populariteit: 26

Rating: 3.0/5 (Total Votes: 2)

tproxy is een eenvoudige TCP routing proxy (laag 7) gebouwd op Geven_t, waarmee u de routine logica in Python configureren & nbsp;. Het is zwaar geïnspireerd door proxy machine, maar hebben een aantal unieke, zoals de pre-fork werknemer model geleend om Gunicorn .
installatie:
tproxy vereist Python 2.x> = 2.5. Python 3.x ondersteuning is gepland.
pip gevent installeren
pip tproxy installeren
Voor het installeren van de bron:
git clone git: //github.com/benoitc/tproxy.git
cd tproxy
pip -r requirements.txt installeren
python setup.py installeren
Test je installatie door het uitvoeren van de command line:
tproxy voorbeelden / transparent.py
En ga op http://127.0.0.1:5000, moet u de Google homepage.
Gebruik:
tproxy -h
Gebruik: tproxy [OPTIES] script_path
Opties:
& Nbsp; - versie showprogramma's versienummer en exit
& Nbsp; -h, --help deze hulp bericht en afrit tonen
& Nbsp; - log-file = BESTAND Het logbestand te schrijven. [-]
& Nbsp; - log-level = NIVEAU De granulariteit van log uitgangen. [Info]
& Nbsp; - log-config = BESTAND De log config file te gebruiken. [Geen]
& Nbsp; -n STRING, --name = STRING
& Nbsp; Een basis te gebruiken met setproctitle voor proces-naamgeving.
& Nbsp; [Geen]
& Nbsp ;-D, --daemon daemon het proces Gunicorn. [Valse]
& Nbsp ;-p FILE, --pid = BESTAND een bestandsnaam om te gebruiken voor de PID-bestand. [Geen]
& Nbsp; -u USER, --user = USER Switch werkprocessen te draaien als deze gebruiker. [501]
& Nbsp; -g GROUP, --group = GROUP
& Nbsp; Switch werkproces te draaien als deze groep. [20]
& Nbsp; -m INT, --umask = INT Een beetje masker voor de file-modus op bestanden geschreven door
& Nbsp; Gunicorn. [0]
& Nbsp; -b ADRES, --bind = ADRES
& Nbsp; Het stopcontact te binden. [127.0.0.1:8000]
& Nbsp; - backlog = INT Het maximum aantal hangende verbindingen. [2048]
& Nbsp; w INT, --workers = INT
& Nbsp; Het aantal werkproces voor de behandeling van aanvragen.
& Nbsp; [1]
& Nbsp; - werknemer-aansluitingen = INT
& Nbsp; Het maximale aantal gelijktijdige clients per werknemer.
& Nbsp; [1000]
& Nbsp; -t INT, --timeout = INT
& Nbsp; Workers stil voor meer dan dit aantal seconden zijn
& Nbsp; gedood en hernieuwd. [30]
Signalen
STOP - Graceful afsluiten. Stop verbindingen accepteren meteen
& Nbsp; en wacht tot alle aansluitingen dicht
TERM - Fast shutdown. Stoppen met het accepteren en sluit alle conections
& Nbsp; na 10s.
INT - Zelfde als TERM
HUP - Graceful herladen. Herladen alle werknemers met de nieuwe code
& Nbsp; in je routing script.
USR2 - Upgrade tproxy on the fly
SLA - Toename van het aantal werknemers van 1
TTOU - Verlaag het aantal werknemers van 1
Exemple van routing script
import re
re_host = re.compile ("Host:. s * (*) r n")
klasse CouchDBRouter (object):
& Nbsp; # kijken naar de routing tafel en terug te keren een CouchDB knooppunt te gebruiken
& Nbsp; def lookup (zelf, naam):
& Nbsp; "" "iets te doen" ""
router = CouchDBRouter ()
# Voer content-bewust routing op basis van de stroom van gegevens. Hier, de
# Host header informatie van het HTTP-protocol wordt ontleed aan het vinden
# Gebruikersnaam en een lookup routine wordt uitgevoerd op de naam om de juiste te vinden
# Couchdb node. Als er geen wedstrijd nog kan worden gemaakt, niets doen met de
# Verbinding. (Maak je eigen couchone server ...)
def proxy (gegevens):
& Nbsp; wedstrijden = re_host.findall (data)
& Nbsp; Als wedstrijden:
& Nbsp; host = router.lookup (matches.pop ())
& Nbsp; return {"remote": host}
& Nbsp; terugkeren Geen
Voorbeeld SOCKS4 Proxy in 18 Lines
import socket
import struct
def proxy (gegevens):
& Nbsp; als 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 = gegevens [8: idx]
& Nbsp; Als Command == 1: #connect
& Nbsp; return dict (remote = "% s:% s"% (ip, port),
& Nbsp; antwoord = " 0 X5a 0 0 0 0 0 0",
& Nbsp; data = gegevens [idx:])
& Nbsp; anders:
& Nbsp; return {"close": " 0 X5b 0 0 0 0 0 0"}
Geldige return waarden
& Nbsp; {"remote": string of tuple} - String is de host: poort van de server die wordt proxy.
& Nbsp; {"remote": String, "data": String} - Hetzelfde als hierboven, maar stuurt de opgegeven gegevens in plaats.
& Nbsp; {"remote": String, "data": String, "antwoord": String} - Hetzelfde als hierboven, maar antwoorden met gegeven data terug naar de client
& Nbsp; Geen - niets doen.
& Nbsp; {"close": true} - Sluit de verbinding.
& Nbsp; {"close": String} - Sluit de verbinding na het verzenden van de String.
Handle fouten
Je kunt eenvoudig hanteren fout door het toevoegen van een proxy_error functie in het script:
def proxy_error (client, e):
& Nbsp; pas
. Deze functie krijgt de ClientConnection instantie (huidige verbinding) als eerste argumenten en de fout uitzondering in het tweede argument

Eisen

  • Python

Vergelijkbare software

IP Proxy Scraper
IP Proxy Scraper

20 Feb 15

MapProxy
MapProxy

20 Feb 15

nginx
nginx

22 Jun 18

Andere software van ontwikkelaar Benoit Chesneau

Restkit
Restkit

5 Jun 15

fserve
fserve

11 May 15

http-parser
http-parser

20 Feb 15

http-parser
http-parser

12 May 15

Reacties op tproxy

Reacties niet gevonden
Commentaar toe te voegen
Zet op de beelden!