. এটা প্রচন্ডভাবে প্রক্সি মেশিন থেকে অনুপ্রাণিত কিন্তু প্রাক-কাঁটাচামচ কর্মী মডেল মত কিছু অনন্য আছে এর Gunicorn করতে ধার;
tproxy আপনি পাইথন রুটিন যুক্তি কনফিগার করতে দেয় & nbsp যা Geven_t উপর নির্মিত একটি সহজ করে TCP রাউটিং প্রক্সি (স্তর 7), হয় .
Instalation:
tproxy পাইথন 2.x> = 2.5 প্রয়োজন. পাইথন 3.x সমর্থন পরিকল্পনা করা হয়েছে.
gevent ইনস্টল বীচি
tproxy ইনস্টল বীচি
উৎস থেকে ইনস্টল করার জন্য:
Git ক্লোন Git: //github.com/benoitc/tproxy.git
সিডি tproxy
-r requirements.txt ইনস্টল বীচি
পাইথন ইনস্টল setup.py
কমান্ড লাইন থেকে ব্যবহারযোগ্য চলমান দ্বারা ইনস্টলকৃত ফাইলগুলো পরীক্ষা করুন:
tproxy উদাহরণ / transparent.py
এবং আপনি Google হোমপেজে দেখতে পাবেন, http://127.0.0.1:5000 নেভিগেশন এড়িয়ে যান.
ব্যবহার:
tproxy -h
ব্যবহার: tproxy [বিকল্প] script_path
বিকল্প:
& Nbsp; - সংস্করণ শো প্রোগ্রামের সংস্করণ সংখ্যা প্রদর্শন করে প্রস্থান
& Nbsp; -h, এই সহায়তা বার্তা প্রদর্শন করে প্রস্থান --help
& Nbsp; - = ফাইল লগ ইন লিখতে পাসওয়ার্ড ভুলে গেছেন? ফাইল ফাইল. [-]
& Nbsp; - লগ ইন স্তর = স্তর পাসওয়ার্ড ভুলে গেছেন? আউটপুট কণিকাভাবটি. [তথ্য]
& Nbsp; - =-কনফিগ করুন ব্যবহার পাসওয়ার্ড ভুলে গেছেন? কনফিগ ফাইলে ফাইল. [একটিও না]
& Nbsp; -n স্ট্রিং, --name = STRING কে
& Nbsp; বেস প্রক্রিয়া নামকরণ জন্য setproctitle সঙ্গে ব্যবহার করার জন্য.
& Nbsp; [একটিও না]
& Nbsp ;-D, --daemon Daemonize Gunicorn প্রক্রিয়া. [মিথ্যা]
& Nbsp ;-p ফাইল, --pid = file একটি ফাইলের নাম পিআইডি ফাইল ব্যবহার করার জন্য. [একটিও না]
& Nbsp; -u ব্যবহারকারী, --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]
সংকেত
প্রস্থান - সুতনু বন্ধ. অবিলম্বে সংযোগ গ্রহণ বন্ধ
& Nbsp; এবং না হওয়া পর্যন্ত সব সংযোগ বন্ধ অপেক্ষা
টার্ম - ফাস্ট বন্ধ. গ্রহণ বন্ধ এবং সব conections বন্ধ
& Nbsp; 10s পর.
Int - শব্দ হিসাবে একই
Hup - সুতনু পুনরায় লোড. নতুন কোড সঙ্গে সব শ্রমিক পুনঃ লোড করুন
& Nbsp; আপনার রাউটিং স্ক্রিপ্টের মধ্যে.
USR2 - উড়ে tproxy আপগ্রেড
TTIN - 1 থেকে কর্মী সংখ্যা বৃদ্ধি
TTOU - 1 থেকে কর্মী সংখ্যা হ্রাস
রাউটিং স্ক্রিপ্ট Exemple
আমদানি পুনরায়
re_host = re.compile ("হোস্ট:. S * (*) r n")
বর্গ CouchDBRouter (বস্তু):
& Nbsp; রাউটিং টেবিল এ # চেহারা এবং ব্যবহার করার জন্য একটি CouchDB নোড ফিরে
& Nbsp; Def লুকআপ (স্ব, নাম):
& Nbsp; "" "কিছু না" ""
রাউটার = CouchDBRouter ()
# স্ট্রিম তথ্য উপর ভিত্তি করে কন্টেন্ট সচেতন রাউটিং সঞ্চালন করতে ব্যবহৃত হয়. এখানে,
# HTTP প্রোটোকলের থেকে হোস্ট হেডারের তথ্য খুঁজে পেতে পার্স করা হয়
# ব্যবহারকারীর নাম এবং একটি লুকআপ রুটিন সঠিক খুঁজে পেতে নাম চালানো হয়
# CouchDB নোড. কোন ম্যাচ এখনো তৈরি করা সম্ভব হলে সঙ্গে কিছুই না
# সংযোগ. (আপনার নিজের couchone সার্ভার করা ...)
Def প্রক্সি (তথ্য):
& Nbsp; ম্যাচ = re_host.findall (তথ্য)
& Nbsp; মিলে গেলে:
& Nbsp; হোস্ট = router.lookup (matches.pop ())
& Nbsp; ফিরে {"দূরবর্তী": হোস্ট}
& Nbsp; কেউ ফিরে
উদাহরণ socks4 proxy -এ 18 লাইনস
আমদানি সকেট
আমদানি struct
Def প্রক্সি (তথ্য):
& Nbsp; যদি Len (তথ্য) <9:
& Nbsp; ফিরে
& Nbsp; কমান্ড = Ord (তথ্য [1])
& Nbsp; আইপি, পোর্ট = socket.inet_ntoa (তথ্য [4: 8]), struct.unpack ("> এইচ", তথ্য [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; {"বন্ধ": "x5b 0 0 0 0 0 0 0 "} ফিরে
বৈধ ফিরে মান
& Nbsp; {"দূরবর্তী:": স্ট্রিং বা Tuple} - স্ট্রিং হোস্ট: প্রক্সি করা হবে যে সার্ভারের পোর্ট.
& Nbsp; {"দূরবর্তী": স্ট্রিং, "তথ্য": স্ট্রিং} - উপরে হিসাবে একই, কিন্তু প্রদত্ত তথ্য পরিবর্তে পাঠাতে.
& Nbsp; {"দূরবর্তী": স্ট্রিং, "তথ্য": স্ট্রিং, "উত্তর": স্ট্রিং} - উপরে হিসাবে একই, কিন্তু ক্লায়েন্ট ফিরে দেওয়া তথ্য দিয়ে উত্তর
& Nbsp; কেউ না - কিছু করবেন না.
& Nbsp; {"বন্ধ": সত্য} - সংযোগ বন্ধ.
& Nbsp; {"বন্ধ": স্ট্রিং} - স্ট্রিং পাঠানোর পর সংযোগ বন্ধ.
হ্যান্ডেল ত্রুটি
আপনি সহজেই আপনার স্ক্রিপ্টের মধ্যে একটি proxy_error ফাংশন যুক্ত করে ত্রুটি পরিচালনার ব্যবস্থা করতে পারেন:
Def proxy_error (ক্লায়েন্ট, ঙ):
& Nbsp; পাস
. এই ফাংশনটি প্রথম আর্গুমেন্ট এবং দ্বিতীয় যুক্তি ত্রুটি ব্যতিক্রম হিসাবে ClientConnection উদাহরণস্বরূপ (বর্তমান সংযোগ) পেতে
আবশ্যক
- পাইথন
পাওয়া মন্তব্যসমূহ না