Edited at

hubotにデフォルト通信にプロキシサーバを使用する設定をする2016

More than 3 years have passed since last update.


会社はプロキシで良くも悪くも守られているけど…

rubyやwget、nodejsなど、外部から情報をダウンロードするときに邪魔なプロキシサーバ。社内と外部のチャットツールを連携する場合、必ず社内のプロキシを通過する必要がある。

hubotのインストールでも手こずったけど(npm -g config set proxy)

hubotの通信でも手こずったので記録に残します。


ネットの情報

先達の方々は苦心していたようで、hubotが使用するscoped-http-clientを直接いじっちゃえ!という検索結果がよく出るけど、実はhubotはもうプロキシ対応している。

hubot + http proxy メモ


プロキシ対応方法について

Windows8.1 64bitで確認。

nodejsなどは、2016年3月28日時点で公式サイトからDLしたものを特にそのまま使用しています。


注意!

nodejsよく知らないので、間違っていたりする場合があります。

間違っていた場合は、お手数ですがコメントいただけますと幸いです。


公式ドキュメントより

Forwarding all HTTP requests through a proxy


 なんとなく和訳すると


  1. hubotをmoulesとして組み込んでいるフォルダでnpm install proxy-agent する

  2. hubotをmoulesとして組み込んでいるフォルダ(hubotモジュールでなく一番トップディレクトリ)直下のscriptsフォルダにproxy.coffeeを作る。

  3. proxy.coffeeをいい感じに編集する。ポート番号も書いていい。trueとfalseの違いはわかってない。


proxy.coffee

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

http://qiita.com/hironot/items/0fc72651afc601e772ac