会社はプロキシで良くも悪くも守られているけど…
rubyやwget、nodejsなど、外部から情報をダウンロードするときに邪魔なプロキシサーバ。社内と外部のチャットツールを連携する場合、必ず社内のプロキシを通過する必要がある。
hubotのインストールでも手こずったけど(npm -g config set proxy)
hubotの通信でも手こずったので記録に残します。
ネットの情報
先達の方々は苦心していたようで、hubotが使用するscoped-http-clientを直接いじっちゃえ!という検索結果がよく出るけど、実はhubotはもうプロキシ対応している。
プロキシ対応方法について
Windows8.1 64bitで確認。
nodejsなどは、2016年3月28日時点で公式サイトからDLしたものを特にそのまま使用しています。
注意!
nodejsよく知らないので、間違っていたりする場合があります。
間違っていた場合は、お手数ですがコメントいただけますと幸いです。
公式ドキュメントより
Forwarding all HTTP requests through a proxy
## なんとなく和訳すると
- hubotをmoulesとして組み込んでいるフォルダでnpm install proxy-agent する
- hubotをmoulesとして組み込んでいるフォルダ(hubotモジュールでなく一番トップディレクトリ)直下のscriptsフォルダにproxy.coffeeを作る。
- proxy.coffeeをいい感じに編集する。ポート番号も書いていい。trueとfalseの違いはわかってない。
proxy = require 'proxy-agent'
module.exports = (robot) ->
robot.globalHttpOptions.httpAgent = proxy('http://my-proxy-server.internal:proxy-port', false)
robot.globalHttpOptions.httpsAgent = proxy('http://my-proxy-server.internal:proxy-port', true)
覚書
これでプロキシを必ず通るようにできるようだけど、うちの社内はプロキシに認証をかけているので、pug meに失敗する。
wgetみたいに、http://username:password@proxy-server:port
みたいなことをやってもダメだった。
そこはやっぱり、hubotのリクエストのところで、proxy-authヘッダでも作らないといけないのかなぁ。それに、内部サーバ向けと外部サーバ向けでプロキシ経路が違うから、その住み分け対処も考えないといけないっすね。
Link