tproxy

ソフトウェアのスクリーンショット:
tproxy
ソフトウェアの詳細:
バージョン: 0.5.4
日付のアップロード: 12 May 15
開発者: Benoit Chesneau
ライセンス: 無料
人気: 110

Rating: 3.0/5 (Total Votes: 2)

。それが重くプロキシマシンからインスピレーションを得たが、前フォークワーカーモデルのようにいくつかのユニークなを持っていますGunicornする借り;

tproxyあなたはPythonでルーチン·ロジックを設定することができます&NBSPはGeven_t上に構築された単純なTCPのルーティングプロキシ(レイヤ7)が、あります。
インスタレーション:
tproxyは、Python 2.xの> = 2.5が必要です。 Pythonの3.xのサポートが計画されています。
geventをインストールピップ
tproxyをインストールピップ
ソースからインストールするには:
gitのクローンgitの://github.com/benoitc/tproxy.git
CDのtproxy
ピップ-r requirements.txtをインストール
Pythonはsetup.py installを
コマンドラインを実行して、インストールをテストします:
tproxy例/ transparent.py
そして、あなたは、Googleのホームページを参照してくださいする必要があり、http://127.0.0.1:5000に行きます。
使用法:
tproxy -h
使用法:tproxy [オプション] script_path
オプション:
  - バージョンショーのプログラムのバージョン番号を表示して終了します
  -h、このヘルプメッセージを表示して終了--help
  - = - ログファイルに書き込むためのログファイル。 [ - ]
  - ログレベル= LEVELログ出力の細かさ。 [情報]
  - = - 設定を記録に使用するログ設定ファイルをファイルです。 [なし]
  -n STRING、--name = STRING
 プロセス命名setproctitleで使用するベース。
  [なし]
&NBSP ;-D、--daemonデーモンGunicornプロセス。 [FALSE]
&NBSP ;-p FIL​​E、--pid = FILE PIDファイルに使用するファイル名。 [なし]
 このユーザーとして実行されるように-u USER、--user = USERスイッチのワーカープロセス。 [501]
  -g GROUP、--group = GROUP
 スイッチワーカープロセスがグループとして実行します。 [20]
  -m INT、--umask = INTが書き込むファイルのファイルモードのビットマスク
  Gunicorn。 [0]
  -b ADDRESS、--bind = ADDRESS
 ソケットがバインドします。 [127.0.0.1:8000]
  - バックログ= INT保留状態にある接続の最大数。 [2048]
  -w INT、--workers = INT
 要求を処理するワーカープロセスの数。
  [1]
  - 労働者の接続= INT
 労働者一人当たりの同時クライアントの最大数。
  [1000]
  -t INT、--timeout = INT
 労働者サイレントこの秒数である以上用
 停止して再起動。 [30]
信号
QUIT - グレースフルシャットダウンを。すぐに接続の受け入れを停止します
 と近いすべての接続まで待ちます
TERM - 高速シャットダウン。受け入れを停止し、すべてのconectionsを閉じます
  10秒後。
INT - TERMと同じ
HUP - 優雅なリロード。新しいコードで、すべての労働者を再読み込み
 あなたのルーティングスクリプトで。
USR2 - オンザフライでtproxyアップグレード
TTIN - 1から労働者の数を増やします
TTOU - 1から労働者の数を減らして
ルーティングスクリプトのExemple
輸入再
re_host = re.compile( "ホスト: S *(*) r n"が)
クラスCouchDBRouter(オブジェクト):
 ルーティングテーブルに#の外観と使用するCouchDBのノードを返します
 デフルックアップ(自己、名):
  "" "" "何かを"
ルータ= CouchDBRouter()
#ストリームデータに基づいて、コンテンツアウェアルーティングを実行します。ここに、
HTTPプロトコルから#ホストヘッダ情報は見つけるために解析されます
#ユーザ名とルックアップルーチンが正しいを見つけるために、名前で実行されています
#1のCouchDBノード。一致がまだ行われていないことができれば、と何もしません
#接続。 (自分のcouchoneサーバーを作ります...)
デフプロキシ(データ):
 一致= re_host.findall(データ)
 一致の場合:
 ホスト= router.lookup(matches.pop())
 リターン{"リモート":ホスト}
  Noneを返します
18行目の例でSOCKS4プロキシ
輸入ソケット
輸入構造
デフプロキシ(データ):
&NBSP;場合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;ユーザーID =データ[8:IDX]
&NBSP; ifコマンド== 1:#CONNECT
&NBSP;リターンのdict(リモート= "%sの:%s"は%(IP、ポート)、
&NBSP;返信= " 0 X5A 0 0 0 0 0 "、
&NBSP;データ=データ[IDX:])
&NBSP;他:
&NBSP; {"閉じる": "X5B 0 0 0 0 0 0 "}リターン
有効な戻り値
&NBSP; {"リモート":文字列またはタプル} - :プロキシされるサーバーのポート文字列は、ホストです。
&NBSP; {「リモート」:文字列、「データ」:文字列} - 上記と同じですが、代わりに与えられたデータを送信します。
&NBSP; {「リモート」:文字列、「データ」:文字列、「返信」:文字列} - 上記と同じですが、クライアントに与えられたデータを返信
&NBSP;なし - 何もしません。
&NBSP; {「閉じる」:真} - 接続を閉じます。
&NBSP; {「閉じる」:文字列} - 文字列を送信した後に接続を閉じます。
エラーを処理
簡単にあなたのスクリプトでproxy_error機能を追加することで、エラーを処理することができます。
デフproxy_error(クライアント、E):
&NBSP;パス
この関数は、第一引数と第二引数でエラー例外としてClientConnectionインスタンス(現在の接続)を取得

この要件:ます。

Pythonの

同じようなソフトウェア

UProxy
UProxy

3 Jun 15

Seeks
Seeks

15 Apr 15

Octopasty
Octopasty

14 Apr 15

CGIProxy
CGIProxy

17 Feb 15

開発者の他のソフトウェア Benoit Chesneau

Couchapp
Couchapp

14 Apr 15

hroute
hroute

11 May 15

Restkit
Restkit

5 Jun 15

fserve
fserve

11 May 15

へのコメント tproxy

コメントが見つかりません
コメントを追加
画像をオンにする!