tproxy

Screenshot der Software:
tproxy
Softwarebeschreibung:
Version: 0.5.4
Upload-Datum: 12 May 15
Entwickler: Benoit Chesneau
Lizenz: Frei
Popularität: 26

Rating: 3.0/5 (Total Votes: 2)

TProxy ist ein einfaches TCP-Routing-Proxy (Schicht 7) auf Geven_t gebaut, unter der Sie die Routine-Logik in Python konfigurieren können. & Nbsp; Es ist stark von Proxy-Maschine inspiriert, haben aber einige einzigartige wie die Pre-Gabel worker Modell entlehnt zu Gunicorn .
Instalation:
TProxy erfordert Python 2.x> = 2,5. Python 3.x Unterstützung ist geplant.
pip gevent installieren
pip TProxy installieren
So installieren Sie von der Quelle:
git clone git: //github.com/benoitc/tproxy.git
cd TProxy
pip -r requirements.txt installieren
python setup.py install
Testen Sie Ihre Installation, indem Sie die Befehlszeile:
TProxy Beispiele / transparent.py
Und auf http://127.0.0.1:5000 gehen, sollten Sie die Google-homepage.
Usage:
TProxy -h
Verbrauch: TProxy [OPTIONS] script_path
Optionen:
& Nbsp; - Version Show-Programm die Versionsnummer und Ausgang
& Nbsp; -h, --help diese Hilfe und beende zeigen
& Nbsp; - log-file = Datei Die Protokolldatei zu schreiben. [-]
& Nbsp; - log-level = LEVEL Die Granularität der Log-Ausgaben. [Info]
& Nbsp; - log-config = Datei Die Protokollkonfigurationsdatei zu verwenden. [Keine]
& Nbsp; -n STRING, --name = STRING
& Nbsp; Eine Basis, um mit setproctitle für Prozess Namensgebung verwenden.
& Nbsp; [Keine]
& Nbsp ;-D, --daemon daemonize die Gunicorn Prozess. [False]
& Nbsp ;-p FILE, --pid = FILE A Dateinamen für die PID-Datei verwenden. [Keine]
& Nbsp; -u Benutzer, --user = USER-Schalter Arbeitsprozesse als dieser Benutzer laufen. [501]
& Nbsp; -g GROUP, --group = GROUP
& Nbsp; Schalter Arbeitsprozess als diese Gruppe laufen. [20]
& Nbsp; -m INT, --umask = INT A Bit-Maske für den Dateimodus auf Dateien geschrieben
& Nbsp; Gunicorn. [0]
& Nbsp; -b ADDRESS, --bind W =
& Nbsp; Der Socket zu binden. [127.0.0.1:8000]
& Nbsp; - Bestand = INT Die maximale Anzahl von ausstehenden Verbindungen. [2048]
& Nbsp; -w INT, --workers = INT
& Nbsp; Die Anzahl der Worker-Prozess für die Bearbeitung von Anträgen.
& Nbsp; [1]
& Nbsp; - Arbeitnehmer-Verbindungen = INT
& Nbsp; Die maximale Anzahl gleichzeitiger Clients pro Arbeitnehmer.
& Nbsp; [1000]
& Nbsp; -t INT, --timeout = INT
& Nbsp; Workers schwieg mehr als diese viele Sekunden sind
& Nbsp; getötet und neu gestartet. [30]
Die Signale
VERL - Ordnungsgemäßes Herunterfahren. Mehr annehmen Verbindungen sofort
& Nbsp; und warten, bis alle Verbindungen in der Nähe
TERM - Schnellabschaltung. Mehr annehmen und schließen Sie alle conections
& Nbsp; nach 10s.
INT - Wie TERM
HUP - Graceful Nachladen. Seite neu laden alle Arbeitnehmer mit dem neuen Code
& Nbsp; im Routing-Skript.
USR2 - Rüsten TProxy on the fly
Die ers - Erhöhung der Zahl der Arbeiter von 1
TTOU - Verringern Sie die Anzahl der Worker-1
Exemple von Routing-Skript
import re
re_host = re.compile ("Host:. s * (*) r n")
Klasse CouchDBRouter (Objekt):
& Nbsp; # Blick auf die Routing-Tabelle und gibt eine CouchDB Knoten zu verwenden
& Nbsp; def Lookup (self, name):
& Nbsp; "" "etwas zu tun" ""
Router = CouchDBRouter ()
# Führen Sie Content-Aware-Routing auf der Basis der Stromdaten. Hier wird das
# Host-Header-Informationen aus dem HTTP-Protokoll wird analysiert, um das zu finden
# Benutzernamen und ein Lookup-Routine auf den Namen laufen die richtige zu finden
# Couchdb Knoten. Wenn keine Übereinstimmung kann noch gemacht werden, nichts zu tun mit der
# Verbindung. (Einfach deine eigene couchone Server ...)
def-Proxy (Daten):
& Nbsp; Matches = re_host.findall (Daten)
& Nbsp; wenn Spiele:
& Nbsp; host = router.lookup (matches.pop ())
& Nbsp; Rück {"remote": host}
& Nbsp; return None
Beispiel SOCKS4 Proxy in 18 Zeilen
Import-Buchse
import struct
def-Proxy (Daten):
& Nbsp; if len (Daten) <9:
& Nbsp; Rückkehr
& 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 = Daten [8: idx]
& Nbsp; wenn Befehl == 1: #CONNECT
& Nbsp; Rück dict (remote = "% s:% s"% (ip, port),
& Nbsp; Antwort = " 0 X5A 0 0 0 0 0 0"
& Nbsp; data = Daten [idx:])
& Nbsp; sonst:
& Nbsp; Rück {"Schließen": " 0 X5B 0 0 0 0 0 0"}
Valid Rückgabewerte
& Nbsp; {"Remote": String oder Tupel} - String ist der Host: Port des Servers, der als Proxy wird.
& Nbsp; {"remote": String, "data": String} - Wie oben, aber die angegebenen Daten zu senden, statt.
& Nbsp; {"remote": String, "data": String, "Antwort": String} - Wie oben, aber antworten mit angegebenen Daten zurück an den Client
& Nbsp; Keine - Nichts tun.
& Nbsp; {"Schließen": True} - Schließen Sie die Verbindung.
& Nbsp; {"Schließen": String} - Schließen Sie die Verbindung nach dem Senden des String.
Behandeln von Fehlern
Sie können auf einfache Bedienungsfehler durch Zugabe eines proxy_error Funktion in Ihrem Skript:
def proxy_error (Client, e):
& Nbsp; Pass
. Mit dieser Funktion erhalten die ClientConnection Instanz (Stromanschluss) als ersten Argumente und der Ausnahmefehler in zweite Argument

Anforderungen :

  • Python

Ähnliche Software

uwhoisd
uwhoisd

20 Feb 15

mallory
mallory

20 Feb 15

Squid
Squid

22 Jun 18

Andere Software von Entwickler Benoit Chesneau

fserve
fserve

11 May 15

http-parser
http-parser

20 Feb 15

Couchapp
Couchapp

14 Apr 15

http-parser
http-parser

12 May 15

Kommentare zu tproxy

Kommentare nicht gefunden
Kommentar hinzufügen
Schalten Sie auf die Bilder!