[bcn-pm] Consulta sobre hacer una web

Diego Kuperman diego a kuperman.com.ar
dij maig 3 05:23:33 PDT 2012


Hola!,

He visto que ya lo has resuelto y no he mirado como, pero acabo de ver 
el thread y me surge la duda:

On 5/2/12 3:50 PM, Jordi "Txor" Casas Ríos wrote:
> Ou shit!
>
> Com l'he liat amb l'HTML!!!
>
> get'/'  =>  sub  {
>      my  $self=  shift;
>      my  $cgi=  $self->param('cgi');
>      my  $local_ip=  $self->my_ip;
>      chomp($local_ip);
>      # Si posa /?cgi=nagios llavors redirect to Nagios.
>      if  (defined  $cgi)  {
>           if  ($cgieq  'nagios')  {
>               $self->redirect_to("http://$local_ip:8080/nagios/");
>           }
>      }
>      # Pinto la web igualment.
>      $self->render('remote');
> };
>
No tiene sentido hacer redirect y tambien render..., yo creo que con 
algo asi deberia valer:

if ( my $cgi = $self->param('cgi') ) {
   $self->redirect_to("http://$local_ip:8080/nagios/")
     && return if $cgi eq 'nagios';
}

> # Trapi lleig per obtenir la IP del server.
> helpermy_ip=>  sub  {
>      my  $interface=  "eth0";
>      my  $ifconfig=  "/sbin/ifconfig";
>      my  @lines=  qx|$ifconfig $interface|  or  die("Can't get info from ifconfig:".$!);
>      foreach(@lines){
>              if(/inet addr:([\d.]+)/){
>                      return  "$1\n";
>              last;
>              }
>      }
> };
>

Y ya como comentario adicional, veo que tienes varias configuraciones 
clavadas en el código. Probablemente sea mejor que estos sean valores 
por defecto (o que por defecto hagas un `which` al sistema) pero que se 
puedan configurar en la config de la app (app->config). Usando 
https://metacpan.org/module/Mojolicious::Plugin::JSONConfig por ejemplo.

-dk

> Source code:
> get '/' => sub { my $self = shift; my $cgi = $self->param('cgi'); my
> $local_ip = $self->my_ip; chomp($local_ip); # Si posa /?cgi=nagios
> llavors redirect to Nagios. if (defined $cgi) { if ($cgi eq 'nagios') {
> $self->redirect_to("http://$local_ip:8080/nagios/"); } } # Pinto la web
> igualment. $self->render('remote'); }; # Trapi lleig per obtenir la IP
> del server. helper my_ip => sub { my $interface = "eth0"; my $ifconfig =
> "/sbin/ifconfig"; my @lines = qx|$ifconfig $interface| or die("Can't get
> info from ifconfig: ".$!); foreach(@lines){ if(/inet addr:([\d.]+)/){
> return "$1\n"; last; } } };
> 	
> 	
>
>
> Ara si?
>
>
> 2012/5/2 Jordi "Txor" Casas Ríos <txorlings en gmail.com
> <mailto:txorlings en gmail.com>>
>
>     Diria que no es aixó el que vull, vull que un botó de l'HTML que
>     dona la meva aplicació et canvii el port, de fet crec que lo
>     interessant seria qué poso a l'href on m'magino que hi ha algo de
>     màgia Mojo...
>
>     Adjunto una foto amb el que tinc muntat ara mateix (uala com m'he
>     liat al final, ho utilitzaré per a memória!)...
>
>     I finalment adjunto el codi implicat, com veieu utilitzo un helper
>     per obtenir la IP que hi ha a eth0. Aixó no em serveix perque
>     podrien haver-hi més interfícies. Segur que es pot fer d'una altra
>     manera, redirect_to posant només el port i el directori?
>     MMmmmmMMMmmMMmmm.... ¿Com deu ser?
>
>     <pre style='color:#000000;background:#ffffff;'>get <span
>     style='color:#0000e6; '>'/'</span> <span style='color:#808030;
>     '>=</span><span style='color:#808030; '>></span> <span
>     style='color:#800000; font-weight:bold; '>sub</span> <span
>     style='color:#800080; '>{</span>
>     <span style='color:#800000; font-weight:bold; '>my</span> $self
>     <span style='color:#808030; '>=</span> <span style='color:#400000;
>     '>shift</span><span style='color:#800080; '>;</span>
>     <span style='color:#800000; font-weight:bold; '>my</span> $cgi <span
>     style='color:#808030; '>=</span> $self<span style='color:#808030;
>     '>-></span>param<span style='color:#808030; '>(</span><span
>     style='color:#0000e6; '>'cgi'</span><span style='color:#808030;
>     '>)</span><span style='color:#800080; '>;</span>
>     <span style='color:#800000; font-weight:bold; '>my</span> $local_ip
>     <span style='color:#808030; '>=</span> $self<span
>     style='color:#808030; '>-></span>my_ip<span style='color:#800080;
>     '>;</span>
>     <span style='color:#400000; '>chomp</span><span
>     style='color:#808030; '>(</span>$local_ip<span style='color:#808030;
>     '>)</span><span style='color:#800080; '>;</span>
>     <span style='color:#696969; '># Si posa /?cgi=nagios llavors
>     redirect to Nagios.</span>
>     <span style='color:#800000; font-weight:bold; '>if</span> <span
>     style='color:#808030; '>(</span><span style='color:#800000;
>     font-weight:bold; '>defined</span> $cgi<span style='color:#808030;
>     '>)</span> <span style='color:#800080; '>{</span>
>     <span style='color:#800000; font-weight:bold; '>if</span> <span
>     style='color:#808030; '>(</span>$cgi <span style='color:#808030;
>     '>eq</span> <span style='color:#0000e6; '>'nagios'</span><span
>     style='color:#808030; '>)</span> <span style='color:#800080; '>{</span>
>                   $self<span style='color:#808030;
>     '>-></span>redirect_to<span style='color:#808030; '>(</span><span
>     style='color:#0000e6; '>"http://$local_ip:</span><span
>     style='color:#008c00; '>8080</span><span style='color:#0000e6;
>     '>/nagios/"</span><span style='color:#808030; '>)</span><span
>     style='color:#800080; '>;</span>
>     <span style='color:#800080; '>}</span>
>     <span style='color:#800080; '>}</span>
>     <span style='color:#696969; '># Pinto la web igualment.</span>
>          $self<span style='color:#808030; '>-></span>render<span
>     style='color:#808030; '>(</span><span style='color:#0000e6;
>     '>'remote'</span><span style='color:#808030; '>)</span><span
>     style='color:#800080; '>;</span>
>     <span style='color:#800080; '>}</span><span style='color:#800080;
>     '>;</span>
>
>     <span style='color:#696969; '># Trapi lleig per obtenir la IP del
>     server.</span>
>     helper <span style='color:#797997; '>my_ip </span><span
>     style='color:#808030; '>=></span> <span style='color:#800000;
>     font-weight:bold; '>sub</span> <span style='color:#800080; '>{</span>
>     <span style='color:#800000; font-weight:bold; '>my</span> $interface
>     <span style='color:#808030; '>=</span> <span style='color:#0000e6;
>     '>"eth0"</span><span style='color:#800080; '>;</span>
>     <span style='color:#800000; font-weight:bold; '>my</span> $ifconfig
>     <span style='color:#808030; '>=</span> <span style='color:#0000e6;
>     '>"/sbin/ifconfig"</span><span style='color:#800080; '>;</span>
>     <span style='color:#800000; font-weight:bold; '>my</span> @lines
>     <span style='color:#808030; '>=</span> <span style='color:#800000;
>     background:#ffffe8; font-weight:bold; '>qx</span><span
>     style='color:#800000; background:#ffffe8; '>|</span><span
>     style='color:#000000; background:#ffffe8; '>$ifconfig
>     $interface</span><span style='color:#800000; background:#ffffe8;
>     '>|</span> <span style='color:#808030; '>or</span> <span
>     style='color:#800000; font-weight:bold; '>die</span><span
>     style='color:#808030; '>(</span><span style='color:#0000e6; '>"Can't
>     get info from ifconfig: "</span><span style='color:#808030;
>     '>.</span><span style='color:#797997; '>$!</span><span
>     style='color:#808030; '>)</span><span style='color:#800080; '>;</span>
>     <span style='color:#800000; font-weight:bold; '>foreach</span><span
>     style='color:#808030; '>(</span>@lines<span style='color:#808030;
>     '>)</span><span style='color:#800080; '>{</span>
>     <span style='color:#800000; font-weight:bold; '>if</span><span
>     style='color:#808030; '>(</span><span style='color:#800000;
>     '>/</span><span style='color:#0000e6; '>inet addr:</span><span
>     style='color:#808030; '>(</span><span style='color:#808030;
>     '>[</span><span style='color:#797997; '>\d</span><span
>     style='color:#0000e6; '>.</span><span style='color:#808030;
>     '>]</span><span style='color:#808030; '>+</span><span
>     style='color:#808030; '>)</span><span style='color:#800000;
>     '>/</span><span style='color:#808030; '>)</span><span
>     style='color:#800080; '>{</span>
>     <span style='color:#800000; font-weight:bold; '>return</span> <span
>     style='color:#0000e6; '>"</span><span style='color:#797997;
>     '>$1</span><span style='color:#0f69ff; '>\n</span><span
>     style='color:#0000e6; '>"</span><span style='color:#800080; '>;</span>
>     <span style='color:#800000; font-weight:bold; '>last</span><span
>     style='color:#800080; '>;</span>
>     <span style='color:#800080; '>}</span>
>     <span style='color:#800080; '>}</span>
>     <span style='color:#800080; '>}</span><span style='color:#800080;
>     '>;</span>
>     </pre>
>
>     Salut i gràcies pel vostre temps!!
>
>
>     2012/5/1 Alex Muntada <alexm en alexm.org <mailto:alexm en alexm.org>>
>
>         + Jordi "Txor" Casas Ríos:
>
>          > Como se redirecciona a un cliente remoto hacia el puerto 8080
>
>         Si et refereixes a canviar el port de l'hypnotoad:
>         https://metacpan.org/module/Mojo::Server::Hypnotoad#listen
>
>         Si et refereixes a tenir un proxy invers al port 8080 que
>         connecti al
>         port de l'hypnotoad com a backend, pots usar apache mod_proxy,
>         nginx,
>         pound, varnish, perlbal, etc. Hi ha moltes opcions, però primer
>         caldria saber exactament el que vols dir.
>
>          > la ruta /nagios independientemente de la IP en que escuche el
>         server?
>
>         # Suposant que hagi entès bé el que vols, potser això?
>
>         define command {
>                 command_name check_http_port_url
>                 command_line /usr/lib/nagios/plugins/check_http -H
>         '$ARG1$' -p
>         '$ARG2$ -u '$ARG3$' -f follow
>         }
>
>         define command {
>                 command_name check_http_hostaddress_port_url
>                 command_line /usr/lib/nagios/plugins/check_http -H
>         '$HOSTADDRESS$' -p '$ARG1' -u '$ARG2$' -f follow
>         }
>
>         define service {
>                 use generic-service
>                 host_name web.example.org <http://web.example.org>
>                 service_description Hypnotoad App
>                 check_command check_http_port_url!www.example.com
>         <http://www.example.com>!8080!/foo/bar
>                 # check_command
>         check_http_hostaddress_port_url!8080!/foo/bar
>         }
>
>          > Cuando lo tenega totalmente arreglado y limpito os cuelgo el
>         código!
>
>         Genial! :-)
>
>         --
>         Alex Muntada <alexm en alexm.org <mailto:alexm en alexm.org>>
>         http://alexm.org/
>         _______________________________________________
>         llista dels Barcelona-pm
>         Barcelona-pm en pm.org <mailto:Barcelona-pm en pm.org>
>         http://mail.pm.org/mailman/listinfo/barcelona-pm
>         BCN Perl Mongers: http://barcelona.pm.org
>
>
>
>
>
> _______________________________________________
> llista dels Barcelona-pm
> Barcelona-pm en pm.org
> http://mail.pm.org/mailman/listinfo/barcelona-pm
> BCN Perl Mongers: http://barcelona.pm.org



Més informació sobre la llista de correu Barcelona-pm