Class: FightForNetNeutrality

Inherits:
Object
  • Object
show all
Defined in:
lib/fight_for_net_neutrality.rb

Constant Summary collapse

HTML =
"<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" />\n<title>Ressource inaccessible</title>\n<style>\nh1{font-size:14px; padding-top:5px}\nh2{font-size:12px}\n</style>\n</head>\n<body>\n<div style=\"width:800px; margin:0 auto;\">\n<img src=\"http://www.paulds.fr/p4ul/blocked/france.jpg\" alt=\"libert\u00E9, \u00E9galit\u00E9, fraternit\u00E9 ET Neutralit\u00E9\" style=\"float:left; margin-right:20px\" />\n\n<h1>Le serveur (son propri\u00E9taire en fait) n'a pas envie de vous laisser acc\u00E9der \u00E0 cette ressource...</h1>\n<h2>Et en m\u00EAme temps, vous l'avez bien cherch\u00E9...</h2>\n\n<p style=\"clear:both; text-align:justify; padding-top:50px\">Ce nom de\ndomaine, ainsi que beaucoup d'autres, ont \u00E9t\u00E9 saisis par les\ninternautes \u00E0 la suite d'attaques r\u00E9p\u00E9t\u00E9es \u00E0 l'encontre de la\nNeutralit\u00E9 du Net par les pouvoirs publics.</p>\n<p style=\"text-align:justify;\">Conduire, financer, g\u00EArer, superviser,\ndiriger ou proposer une atteinte \u00E0 la Neutralit\u00E9 du Net revient\nbasiquement \u00E0 s'attaquer \u00E0 la libert\u00E9 d'expression du peuple et devrait\n\u00EAtre consid\u00E9r\u00E9 comme une atteinte manifeste aux droits de l'Homme.</p>\n<p style=\"text-align:justify;\">Il n'y aura aucune suite \u00E0 cette saisie citoyenne.</p>\n<p style=\"text-align:justify;\">Les plages d'adresses IP filtr\u00E9es sont les suivantes : </p>\n\n<ul>\n%s\n</ul>\n<p>Plus d'informations ici : <a href=\"http://reflets.info/optimiser-son-internet-a-la-sauce-marland-militello/\">Optimiser son Internet \u00E0 la sauce Marland-Militello</a></p>\n\n</div>\n</body>\n</html>\n"

Instance Method Summary collapse

Constructor Details

#initialize(app, ips = nil) ⇒ FightForNetNeutrality

Returns a new instance of FightForNetNeutrality.



8
9
10
11
12
13
# File 'lib/fight_for_net_neutrality.rb', line 8

def initialize(app, ips=nil)
  ips ||= ["62.160.71.0/24", "84.233.174.48/28", "80.118.39.160/27"]
  @app = app
  @ips_banned = ips.map {|ip| IPAddr.new(ip) }
  @html = HTML % ips.map {|ip| "<li>#{ip}</li>" }.join
end

Instance Method Details

#call(env) ⇒ Object



15
16
17
18
19
20
21
22
23
# File 'lib/fight_for_net_neutrality.rb', line 15

def call(env)
  req = Rack::Request.new(env)
  ooo = (env["HTTP_X_FIREWALL"] || "").include? "OpenOffice"
  if @ips_banned.any? {|ips| ips.include? req.ip } || ooo
    [403, {"Content-Type" => "text/html; charset=utf8"}, [@html]]
  else
    @app.call(env)
  end
end