tproxy

Logiciel capture d'écran:
tproxy
Détails logiciels:
Version: 0.5.4
Date de transfert: 12 May 15
Développeur: Benoit Chesneau
Licence: Gratuit
Popularité: 26

Rating: 3.0/5 (Total Votes: 2)

Tproxy est une simple approximation TCP de routage (couche 7) construit sur Geven_t, qui vous permet de configurer la logique de routine en Python. & Nbsp; Il est fortement inspiré de la machine proxy mais ont une certaine unique comme le modèle des travailleurs pré-fourche emprunté pour Gunicorn .
installation:
Tproxy nécessite Python 2.x> = 2.5. Le support de Python 3.x est prévu.
pip installer gevent
pip installer Tproxy
Pour installer de la source:
git clone git: //github.com/benoitc/tproxy.git
cd Tproxy
pip installer requirements.txt -r
python setup.py install
Testez votre installation en exécutant la ligne de commande:
exemples Tproxy / transparent.py
Et allez sur http://127.0.0.1:5000, vous devriez voir la page d'accueil Google.
Utilisation:
Tproxy -h
Utilisation: Tproxy [OPTIONS] script_path
Options:
& Nbsp; - le nombre et la sortie de la version de la version programme du spectacle
& Nbsp; -h, --help afficher ce message d'aide et de sortie
& Nbsp; - log-file = FICHIER Le fichier journal pour écrire. [-]
& Nbsp; - niveau log = NIVEAU La granularité de sorties de journaux. [Info]
& Nbsp; - log-config = Le fichier journal de configuration à utiliser. [Aucun]
& Nbsp; STRING -n, --name = STRING
& Nbsp; Une base à utiliser avec setproctitle pour le processus nommage.
& Nbsp; [Aucun]
& Nbsp ;-D, --daemon daemonize le processus Gunicorn. [Faux]
& Nbsp FILE ;-p, --pid = FICHIER Un nom de fichier à utiliser pour le fichier de PID. [Aucun]
& Nbsp; -u USER, les processus de travail de l'interrupteur de --user = utilisateur d'exécuter tant que cet utilisateur. [501]
& Nbsp; -g groupe, --group = GROUPE
& Nbsp; processus de travail de passer en RUN car ce groupe. [20]
& Nbsp; -m INT, --umask = INT Un masque de bits pour le mode de fichier sur les fichiers écrits par
& Nbsp; Gunicorn. [0]
& Nbsp; ADRESSE -b, --bind = ADRESSE
& Nbsp; La prise de se lier. [127.0.0.1:8000]
& Nbsp; - backlog = INT Le nombre maximal de connexions en attente. [2048]
& Nbsp; -w INT, --workers = INT
& Nbsp; Le nombre de processus de travail pour traiter les demandes.
& Nbsp; [1]
& Nbsp; - ouvriers connexions = INT
& Nbsp; Le nombre maximum de clients simultanés par travailleur.
& Nbsp; [1000]
& Nbsp; -t INT, --timeout = INT
& Nbsp; Les travailleurs silencieux pendant plus de ce nombre de secondes sont
& Nbsp; tué et redémarré. [30]
Signaux
QUIT - Arrêt progressif. Arrêtez immédiatement d'accepter les connexions
& Nbsp; et attendre que toutes les connexions à proximité
TERME - arrêt rapide. Cesser d'accepter et fermer tous conections
& Nbsp; après 10s.
INT - Même que TERME
HUP - rechargement gracieuse. Recharger tous les travailleurs avec le nouveau code
& Nbsp; dans votre script de routage.
USR2 - Upgrade Tproxy à la volée
ISE - Augmenter le nombre de travailleur de 1
TTOU - Diminuer le nombre de travailleur de 1
Exemple de script de routage
re d'importation
re_host = re.compile ("Host:. s * (*) r n")
CouchDBRouter classe (objet):
& Nbsp; # oeil à la table de routage et revenir un noeud de couchdb à utiliser
& Nbsp; def recherche (self, nom):
& Nbsp; "" "faire quelque chose" ""
routeur CouchDBRouter = ()
# Effectuer sensible au contenu routage basé sur les données de flux. Ici, la
# Informations d'en-tête de l'hôte du protocole HTTP est analysé pour trouver le
# Nom d'utilisateur et une routine de recherche est exécuté sur le nom pour trouver la bonne
noeud couchdb de #. Si aucune correspondance ne peut pas encore être fait, ne rien faire avec le
# Connexion. (Faites votre propre serveur de couchone ...)
proxy def (de données):
& Nbsp; = matchs re_host.findall (données)
& Nbsp; si des correspondances:
& Nbsp; host = router.lookup (matches.pop ())
& Nbsp; return {"à distance": host}
& Nbsp; retournera None
Exemple SOCKS4 proxy dans 18 Lines
prise d'importation
struct d'importation
proxy def (de données):
& Nbsp; si len (données) <9:
& Nbsp; retour
& Nbsp; commande = ord (données [1])
& nbsp; IP, port = socket.inet_ntoa (données [4: 8]) (données "> H", [2: 4]), struct.unpack [0]
& Nbsp; idx = data.index (" 0")
& nbsp; userid = données [8: idx]
& Nbsp; si la commande == 1: # Connecter
& Nbsp; retour dict (= distance:% (ip, port "de% s%"),
& Nbsp; réponse = " 0 x5a 0 0 0 0 0 0",
& Nbsp; données = données [IDX:])
& Nbsp; d'autre:
& Nbsp; return {"close": " 0 X5b 0 0 0 0 0 0"}
Les valeurs retour valide
& Nbsp; {"à distance:": chaîne ou tuple} - String est l'hôte: port du serveur proxy qui sera.
& Nbsp; {"à distance": String, «données»: String} - Idem que ci-dessus, mais envoyer les données fournies à la place.
& Nbsp; {"à distance": String, «données»: String, "réponse": String} - Idem que ci-dessus, mais répondre avec les indications données au client
& Nbsp; Aucun - Ne rien faire.
& Nbsp; {"close": true} - Fermer la connexion.
& Nbsp; {"close": String} - Fermeture de la connexion après l'envoi de la chaîne.
gérer les erreurs
Vous pouvez facilement gestion des erreurs en ajoutant une fonction de proxy_error dans votre script:
def proxy_error (client, e):
& Nbsp; passe
. Cette fonction obtenir l'instance de ClientConnection (connexion actuelle) comme premiers arguments et l'exception d'erreur dans le deuxième argument

Exigences :

  • Python

Logiciel similaire

Socks Server 5
Socks Server 5

11 May 15

Stunnel
Stunnel

22 Jun 18

nginx
nginx

22 Jun 18

Sirious
Sirious

14 Apr 15

D'autres logiciels de développeur Benoit Chesneau

Couchapp
Couchapp

14 Apr 15

fserve
fserve

11 May 15

http-parser
http-parser

12 May 15

Commentaires à tproxy

Commentaires non trouvées
Ajouter un commentaire
Tourner sur les images!