tproxy بسيط وكيل التوجيه TCP (طبقة 7) مبنية على Geven_t، والتي تمكنك من تكوين منطق روتيني في بيثون & nbsp؛ يمكنك الموحى بها وبشدة من آلة وكيل ولكن لديها بعض فريدة من نوعها مثل نموذج عامل قبل شوكة اقترضت لGunicorn .
التركيب:
يتطلب tproxy بيثون 2.X> = 2.5. ومن المقرر دعم الثعبان 3.X.
PIP تثبيت gevent
PIP تثبيت tproxy
لتثبيت من المصدر:
بوابة استنساخ بوابة: //github.com/benoitc/tproxy.git
مؤتمر نزع السلاح tproxy
PIP تثبيت requirements.txt -r
بيثون setup.py تثبيت
اختبار التثبيت عن طريق تشغيل سطر الأوامر:
أمثلة tproxy / transparent.py
وعلى المضي قدما http://127.0.0.1:5000، سترى صفحة Google الرئيسية.
الاستعمال:
tproxy -h
الاستعمال: tproxy [OPTIONS] script_path
خيارات:
على & nbsp؛ - رقم إصدار نسخة عرض البرنامج والخروج
على & nbsp؛ -h، --help إظهار هذه الرسالة مساعدة والخروج
على & nbsp؛ - سجل لملف = ملف ملف السجل الكتابة إلى. [-]
على & nbsp؛ - مستوى تسجيل الدخول = مستوى تحبب النواتج السجل. [معلومات]
على & nbsp؛ - تسجيل-التكوين = ملف ملف سجل التكوين للاستخدام. [لا يوجد]
على & nbsp؛ STRING -n، --name = STRING
على & nbsp؛ قاعدة لاستخدامه مع setproctitle لعملية التسمية.
على & nbsp؛ [لا يوجد]
على & nbsp ؛-D، --daemon Daemonize عملية Gunicorn. [خطأ]
وFILE ؛-p نبسب، --pid = FILE اسم ملف لاستخدام لملف PID. [لا يوجد]
على & nbsp؛ -u المستخدم، وعمليات تبديل عامل --user = المستخدم لتشغيل كمستخدم هذا. [501]
على & nbsp؛ مجموعة -g، --group = مجموعة
على & nbsp؛ العملية المنفذة تبديل لتشغيل كما هذه المجموعة. [20]
على & nbsp؛ -m INT، --umask = INT A قناع بت لوضع الملف على الملفات التي كتبها
على & nbsp؛ Gunicorn. [0]
على & nbsp؛ عنوان -b، --bind = ADDRESS
على & 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؛ بعد 10S.
INT - نفس المدة
HUP - إعادة تحميل رشيقة. تحديث جميع العاملين مع القانون الجديد
على & nbsp؛ في البرنامج النصي التوجيه الخاص بك.
USR2 - ترقية tproxy على الطاير
متحطين - زيادة عدد العاملين من 1
TTOU - خفض عدد العمال من 1
Exemple من النصي التوجيه
إعادة استيراد
re_host = re.compile ("المضيف: ق * (*) ص ن")
فئة CouchDBRouter (كائن):
على & nbsp؛ # نظرة على جدول التوجيه والعودة عقدة couchdb استخدام
على & nbsp؛ مواطنه بحث (النفس، الاسم):
على & nbsp؛ "" "لا شيء" ""
توجيه = CouchDBRouter ()
# نفذ المحتوى يدرك التوجيه استنادا إلى البيانات تيار. هنا،
# يتم تحليل المعلومات رأس المضيف من بروتوكول HTTP للعثور على
يتم تشغيل # اسم المستخدم وروتين البحث عن اسم للعثور على الصحيحين
عقدة couchdb #. إذا لم يكن هناك مباراة يمكن إجراء حتى الآن، لا تفعل شيئا مع
# الصدد. (جعل خادم couchone الخاصة بك ...)
وكيل مواطنه (البيانات):
على & nbsp؛ مباريات = re_host.findall (بيانات)
& nbsp؛ إذا المباريات:
على & nbsp؛ المضيف = router.lookup (matches.pop ())
على & nbsp؛ العودة {"عن بعد": المضيف}
على & nbsp؛ العودة لا أحد
مثال SOCKS4 الوكيل في 18 خطوط
مأخذ استيراد
بنية الواردات
وكيل مواطنه (البيانات):
& nbsp؛ إذا ليون (البيانات) <9:
على & nbsp؛ عودة
على & nbsp؛ الأمر = أورد (بيانات [1])
على & nbsp؛ الملكية الفكرية، وميناء = socket.inet_ntoa (بيانات [4: 8])، struct.unpack ("> H"، بيانات [2: 4]) [0]
على & nbsp؛ IDX = data.index (" 0")
على & nbsp؛ حاليا = بيانات [8: IDX]
& nbsp؛ إذا أمر == 1: #connect
على & nbsp؛ ديكت عودة (البعيد = "٪ الصورة:٪ ليالي"٪ (الملكية الفكرية، والميناء)،
على & nbsp؛ الرد = " 0 x5a 0 0 0 0 0 0"
على & nbsp؛ البيانات = بيانات [IDX:])
على & nbsp؛ آخر:
على & nbsp؛ العودة {"إغلاق": " 0 x5b 0 0 0 0 0 0"}
قيم الإرجاع صالحة
على & nbsp؛ {"عن بعد": سلسلة أو الصفوف (tuple)} - سلسلة هو المضيف: منفذ الملقم الذي سيتم بروكسي.
على & nbsp؛ {"عن بعد": سلسلة "البيانات": سلسلة} - نفس ما ورد أعلاه، ولكن إرسال البيانات المعطاة عوضا عن ذلك.
على & nbsp؛ {"عن بعد": سلسلة "البيانات": سلسلة "الرد": سلسلة} - كما سبق، ولكن الرد مع البيانات الواردة مرة أخرى إلى العميل
على & nbsp؛ لا يوجد - لا تفعل شيئا.
على & nbsp؛ {"إغلاق": صحيح} - إغلاق الاتصال.
على & nbsp؛ {"إغلاق": سلسلة} - إغلاق الاتصال بعد ارسال السلسلة.
معالجة الأخطاء
يمكنك بسهولة التعامل مع الخطأ عن طريق إضافة وظيفة proxy_error في السيناريو الخاص بك:
proxy_error مواطنه (العميل، ه):
على & nbsp؛ تمريرة
هذه الوظيفة الحصول على سبيل المثال ClientConnection (الاتصال الحالي) كوسائط الأولى وباستثناء خطأ في الحجة الثانية
المتطلبات:.
بيثون
لم يتم العثور على التعليقات