Class: FightForNetNeutrality

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

Constant Summary collapse

HTML =
<<-EOS
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Ressource inaccessible</title>
<style>
h1{font-size:14px; padding-top:5px}
h2{font-size:12px}
</style>
</head>
<body>
<div style="width:800px; margin:0 auto;">
<img src="http://www.paulds.fr/p4ul/blocked/france.jpg" alt="liberté, égalité, fraternité ET Neutralité" style="float:left; margin-right:20px" />

<h1>Le serveur (son propriétaire en fait) n'a pas envie de vous laisser accéder à cette ressource...</h1>
<h2>Et en même temps, vous l'avez bien cherché...</h2>

<p style="clear:both; text-align:justify; padding-top:50px">Ce nom de
domaine, ainsi que beaucoup d'autres, ont été saisis par les
internautes à la suite d'attaques répétées à l'encontre de la
Neutralité du Net par les pouvoirs publics.</p>
<p style="text-align:justify;">Conduire, financer, gêrer, superviser,
diriger ou proposer une atteinte à la Neutralité du Net revient
basiquement à s'attaquer à la liberté d'expression du peuple et devrait
être considéré comme une atteinte manifeste aux droits de l'Homme.</p>
<p style="text-align:justify;">Il n'y aura aucune suite à cette saisie citoyenne.</p>
<p style="text-align:justify;">Les plages d'adresses IP filtrées sont les suivantes : </p>

<ul>
%s
</ul>
<p>Plus d'informations ici : <a href="http://reflets.info/optimiser-son-internet-a-la-sauce-marland-militello/">Optimiser son Internet à la sauce Marland-Militello</a></p>

</div>
</body>
</html>
EOS

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