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

ziproxy
ziproxy

20 Feb 15

D'autres logiciels de développeur Benoit Chesneau

Couchapp
Couchapp

14 Apr 15

http-parser
http-parser

12 May 15

http-parser
http-parser

20 Feb 15

Commentaires à tproxy

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