tproxy

Скріншот програми:
tproxy
Дані програми:
Версія: 0.5.4
Дата завантаження: 12 May 15
Розробник: Benoit Chesneau
Ліцензія: Безкоштовно
Популярність: 26

Rating: 3.0/5 (Total Votes: 2)

tproxy це просто проксі маршрутизації TCP (шар 7), побудований на Geven_t, який дозволяє настроїти звичайну логіку в Python & NBSP ;. Це в значній мірі натхненний від проксі-сервер, але є деякі унікальні, як моделі попередньо вилка робочий запозичили Gunicorn ,
<Сильний> Оздоблення:
tproxy потрібно Python 2.x> = 2.5. Підтримка Python 3.x планується.
пункт встановити gevent
пункт встановити tproxy
Для установки від джерела:
Git клон Git: //github.com/benoitc/tproxy.git
CD tproxy
пункт встановити -r requirements.txt
пітон setup.py встановити
Перевірте установку, запустивши командний рядок:
tproxy приклади / transparent.py
І перейти на http://127.0.0.1:5000, ви повинні побачити домашню Google.
<Сильний> Застосування:
tproxy -h
Використання: tproxy [опції] script_path
Опції:
& NBSP; - версія шоу-програма в номер версії і вийти
& NBSP; -h, --help показати цю довідку і вийти
& NBSP; - лог-файл = файл Файл журналу для запису. [-]
& NBSP; - увійти рівня = РІВЕНЬ деталізації виходів журналу. [Інформація]
& NBSP; - увійти-конфігурації = файл файл журналу конфігурації для використання. [Ні]
& NBSP; -n СТРОКА, --name = STRING
& NBSP; база для використання з setproctitle для іменування процесу.
& NBSP; [Відсутня]
& NBSP ;-D, --daemon демоном процес Gunicorn. [Брехня]
& NBSP ;-p файл, --pid = ФАЙЛ Файл, щоб використовувати для ПІД файлу. [Ні]
& NBSP; -u користувач, --user = USER процеси Переключити робочий для роботи в якості цього користувача. [501]
& NBSP; -g ГРУПА, --group = ГРУПА
& NBSP; робочий процес для виконання команди в якості цієї групи. [20]
& NBSP; -m INT, --umask = INT трохи маски для режиму файлу для файлів, написаних
& NBSP; Gunicorn. [0]
& NBSP; -b АДРЕСА, АДРЕСА --bind =
& NBSP; роз'єм для прив'язки. [127.0.0.1:8000]
& NBSP; - відставання = INT максимальну кількість очікуючих з'єднань. [2048]
& NBSP; -w INT, --workers = INT
& NBSP; кількість працівників процесі обробки запитів.
& NBSP; [1]
& NBSP; - робітники-з'єднання = INT
& NBSP; максимальна кількість одночасних клієнтів в працівнику.
& NBSP; [1000]
& NBSP; -t INT, --timeout = INT
& NBSP; Робітники мовчали більше, ніж це багато секунд
& NBSP; вбиті і перезавантаження. [30]
Сигнали
QUIT - коректне завершення роботи. Стоп приймати з'єднання негайно
& NBSP; і чекати, поки всі з'єднання близько
ТЕРМІН - швидке вимкнення. Зупинка прийому і закрити всі conections
& NBSP; через 10 секунд.
INT - Те ж, що ТЕРМІНУ
HUP - Витончений перезавантаження. Оновити всіх працівників з новим кодом
& NBSP; в сценарії маршрутизації.
USR2 - Оновлення tproxy на льоту
TTIN - Збільшення числа працівника від 1
TTOU - Зменшити кількість працівника від 1
<Сильний> b Приклад сценарію маршрутизації
імпорт повторно
re_host = re.compile ("Ведучий :. S * (*) г п")
клас CouchDBRouter (об'єкт):
& NBSP; # погляд на таблицю маршрутизації і повертає CouchDB вузол для застосування
& NBSP; Def пошуку (я, ім'я):
& NBSP; "" "зробити щось" ""
Маршрутизатор = CouchDBRouter ()
# Виконайте Content-Aware маршрутизацію на основі даних потоку. Тут
# Інформація заголовка хоста з протоколу HTTP обробляється знайти
# Ім'я користувача і процедура пошуку буде працювати на ім'я, щоб знайти правильний
# CouchDB вузол. Якщо збіг не може бути поки, нічого не робити з
# Підключення. (Зробити свій власний сервер couchone ...)
Def проксі (дані):
& NBSP; матчів = re_host.findall (дані)
& NBSP; якщо матчів:
& NBSP; хост = router.lookup (matches.pop ())
& NBSP; повернення {"дистанційного": господар}
& NBSP; чи не повернутися None
Приклад SOCKS4 проксі в 18 Лінії
імпорт гніздо
імпорт структура
Def проксі (дані):
& NBSP; If Len (дані) <9:
& NBSP; повернення
& NBSP; команда = Ord (дані [1])
і NBSP; IP, порт = socket.inet_ntoa (дані [4: 8]), struct.unpack ("> H", дані [2: 4]) [0]
& NBSP; IDX = data.index (" 0")
і NBSP; Userid = дані [8: IDX]
& NBSP; якщо команда == 1: #connect
& NBSP; повернення диктує (дистанційне =:% (IP, порт "% S% S"),
& NBSP; відповідь = " 0 X5a 0 0 0 0 0 0",
& NBSP; = дані дані [IDX:])
& NBSP; інше:
& NBSP; повернення {"Закрити": " 0 X5b 0 0 0 0 0 0"}
<Сильний> Дійсно повертаються значення
& NBSP; {"віддалений:": рядок або кортеж} - Рядок хост: порт сервера, який буде проксі.
& NBSP; {"дистанційного": Рядок, "дані": Рядок} - Те ж саме, але відправити дані відомості, а не.
& NBSP; {"дистанційного": Рядок, "дані": Рядок, "відповідь": Рядок} - Те ж саме, але відповісти наведених даних назад клієнту
& NBSP; None - нічого не робити.
& NBSP; {"Закрити": Правда} - Закрийте з'єднання.
& NBSP; {"Закрити": Рядок} - Закрийте з'єднання після відправки String.
обробляти помилки
Ви можете легко обробки помилки, додавши функцію proxy_error в сценарії:
Def proxy_error (клієнт, е):
& NBSP; передача
. Ця функція отримати примірник ClientConnection (поточне з'єднання) в якості перших аргументів і за винятком помилок в другому аргументі

Вимоги

  • Python

Схожі програми

Інші програми розробника Benoit Chesneau

hroute
hroute

11 May 15

Couchapp
Couchapp

14 Apr 15

http-parser
http-parser

20 Feb 15

fserve
fserve

11 May 15

tproxy

Коментар не знайдено
додати коментар
Включіть картинки!
Пошук за категоріями