nodeでip制限をしようとして挫折した話
varnishでx-forwarded-forつけてnode+expressに渡してる状態。
ok_flgとかださい琴してるけど入れてみたけどip_addressがどうにも取れない。
mp3ファイルを配信している。
単発のhtmlとかなら幸せになれる匂いもする。
ちょっと、飽きてしまった。。
ip制限リストをtxtで持って都度読みに行く部分はリアルタイムに
読みなおしてくれるのだけれど。。
var ok_flg = false; var ip_address = null; try{ ip_address = req.headers['x-forwarded-for']; } catch ( error ) { ip_address = req.connection.remoteAddress; } console.log(ip_address); //=>ここが undefinedとかなる。。。 // file読んでarrayにして回しながら正規表現を行う、と。 var fs = require('fs'); fs.readFileSync('/home/seijiro/sinatra/musicdb_dev/ok_ip.txt','utf-8',function (err, data) { if (err) throw err; var lines = data.toString().split("\n"); for(var i=0; i<lines.length; i++){ if (lines[i] != '') { var reg = new RegExp(lines[i]); if (reg.test(ip_address)){ console.log("ok!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"); ok_flg = true; } } } }); if (!ok_flg) { res.send(ip_address + " is not permitted."); } //------- ここまで通ったら処理してOK ----------
残念。