!!delegate http://delegate.hpcc.jp/delegate/ !start ./delegated +=dg.conf !stop ./delegated -Fkill +=dg.conf !!sample > ./delegated +=dg.conf !dg.conf % cat ./delegate/conf/dg.conf ## DeleGate configure file. -P18080 SERVER=http -v ADMIN=mymail@ours.domain # RELIABLE=192.168.100.[100-200] # RELIABLE=10.[10-254].0.[1-200] # PERMIT="*:*:192.168.100.0/255.255.255.0" PERMIT="*:*:10.0.0.0/255.0.0.0" # PERMIT="*:*:*" # !SSL 対応 |REMITTABLE="+,ssltunnel" するか |CMAP=thru-CONNECT:HTTPCONF:https:サーバ:クライアント するか delegated -Dst -P8080 !dg.conf ( sample2) # DeleGate config. file -P8080 SERVER=http-sp CACHE=do EXPIRE=7d !dg.conf (sample3) -P80 SERVER=http CACHE=do EXPIRE=100d ADMIN=you@your.domain # AUTH="admin::root:root" !dg.conf (sample4) -P80 DGROOT=/home/foobar/delegate OWNER=foo/bar REACHABLE="*" RELIABLE="*" SERVER="http" MOUNT="/* http://192.168.200.20:80/* cache=no" MOUNT="/sub/* http://dadd.foo.bar/hoge/* cache=no" !dg.conf ( sample 5 ) -P80 DGROOT=/home/foobar/delegate OWNER=foo/bar REACHABLE="*" RELIABLE="*" SERVER="tcprelay://192.168.200.20:80/" !Socks (sample6) -P8080 SERVER=socks DGROOT=/home/foobar/delegate -v ADMIN=mymail@ours.domain PERMIT="*:*:192.168.250.0/255.255.255.0" PERMIT="*:*:10.0.0.0/255.0.0.0" PERMIT="*:*:127.0.0.1/255.255.255.255" # $DGROOT/bin/dg9_9_13 -P18080 SERVER=socks ADMIN=hostmaster@example.com RELIABLE="192.168.0.0/24,10.0.0.0/16" # lsof -nPi TCP:1080 COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME dg9_9_13 9758 delegate 11u IPv4 2306802 0t0 TCP *:1080 (LISTEN) ---- Delegateで画像圧縮プロクシ 外部から携帯や Air H" でネット接続した時にデータの転送時間を短縮するため、Delegate に画像圧縮の機能を持たせてみる。 Air H" にはトルネードウェブという圧縮プロクシが用意されているが、この Mac OS X 版は何故か使えたり使えなかったりで、あまり役に立たない。 それならというわけで自前で用意してみる。   環境:Mac OS X 10.2.8 (Client), Delegate 8.9.4, ImageMagick 5.5.6 肝になるのは、 ImageMagick に付属する convert というコマンドを Delegate からフィルターとして利用すること。 まずは Delegate が必要だが、それは「無線LANをSSLトンネル」に書いたので省略。 次に、ImageMagick だが、これは Fink でインストール出来る。 材料は以上。あとは設定。 まず、xinetd から Delegate を起動させるため、次の内容を /etc/xinetd.conf に書き足すか、 /etc/xinetd.d/dg_comp というファイルを作って保存する。 service dg_comp { socket_type = stream protocol = tcp user = root groups = yes wait = yes port = 8080 type = UNLISTED disable = no server = /usr/local/sbin/delegated server_args = DGROOT=/Server/Delegate AUTHORIZER=127.0.0.1 SERVER=http PERMIT=*:*:syn@* REMITTABLE=http,https,ftp CACHE=do EXPIRE=1h FCL=sslway FTOCL=comp.cfi } ※ 「dg_comp」という部分は設定の名称なので任意だが、既存の設定と重複しない必要がある。 ※ SSLWayを使用しない場合は FCL=sslway の部分を削除する。 設定内容は次の通り。 ・8081ポートをListenする ・プロセスが使用するルートディレクトリを /Server/Delegate とする(この配下にログ やキャッシュを作成する) ・クライアント認証を依頼するFTPサーバのあるホスト ・プロクシサーバの種類はHTTPプロクシ ・アクセスコントロール:「httpとhttpsとftpプロトコルを受け付ける」、「全てのサー バへの接続を許可する」、「全てのサーバからのユーザーsynのアクセスを許可する」 ・対象プロトコルは http, https, ftp のみ ・クライアントからの接続は SSLWay を経由して SSL 接続させる。 ・キャッシュ有効 ・キャッシュ有効期限1時間 ・クライアントへの転送にcomp.cfiに記述されているフィルターを実行する キャッシュファイルを削除する設定が出来ないので、 root の crontab に次の設定を作る。 0 * * * * /usr/local/sbin/delegated -Fexpire /Server/Delegate/cache -rm -atime +1 -sum 次に、Delegate の LIB ディレクトリにフィルタースクリプト (comp.cfi) を作る。 #!cfi Content-Type: image/jpeg Body-Filter: /sw/bin/convert -colors 32 -quality 10 - - -- Content-Type: image/gif Body-Filter: /sw/bin/convert -colors 8 - - -- Content-Type: image/png Body-Filter: /sw/bin/convert -colors 8 -quality 8 - - 設定内容は次の通り。 ・image/jpeg ファイルの色数を32色に落とし、画質度数を 10 に制限する ・image/gif ファイルの色数を8色に落とす ・image/png ファイルの色数を8色に落とし、画質度数を 8 に制限する 画像の圧縮率などは使用する用途によって調整する。 上記の設定は私の自宅サーバ環境でクライアントにパソコンを使う事を前提に合わせてあ るが、クライアントにPDAなどで使う場合は圧縮率を上げ過ぎると端末の処理能力が追いつかなくなるので注意。 ついでにgzipを使ってHTMLも圧縮しようとしてみたが、HTTP応答ヘッダの書き換えがうま くいかないため、ブラウザがうまく反応しなかった。 Delegateを二段にする事も考えたが、閲覧するWebサイトごとにクライアント認証を促されてしまうために断念。 どうしても必要なら、SSHトンネルを -C オプション付きで作成し、gzip圧縮を有効にすればいいだろう。