Diciembre 10, 2017, 10:10:14 pm

Autor Tema: Avatares que cambiaban solos  (Leído 1012 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Solid Water

  • Yo vivo en CPH
  • ***
  • Mensajes: 1063
  • Sexo: Masculino
  • Vuelvan Hackers!
    • Ver Perfil
Avatares que cambiaban solos
« en: Noviembre 26, 2017, 07:20:19 pm »
Recuerdo tiempo atrás que algunos usuarios tenían avatares que cambiaban solos al actualizar el post o cambiar a otro post.

Quise recrear esto mismo, pero no sabía como lo hacian y se me ocurrió lo siguiente:

Un código que cuando accedas a una imagen.jpg que este alojada en tu servidor web, haga un mv y la cambie por otra y así hacer un bucle entre 2 o más imágenes para que vayan intercambiándose.

Para controlar el acceso a la imagen, encontré la librería inotify que se queda a la escucha de eventos sobre archivos o directorios.

Así que aloje en mi servidor web la imagen "perfil1.jpg" y "perfil2.jpg". Al ser perfil1.jpg accedida, sería movida a perfil3.jpg, perfil2.jpg sería movida a perfil1.jpg y perfil3.jpg a perfil2.jpg y listo tendría mi bucle para rotar entre 2 imágenes.
(Claro que el programa debería estar ejecutándose todo el tiempo en el servidor).

Código: (perl) You are not allowed to view links. Register or Login
#!/usr/bin/perl
 
  use Linux::Inotify2;

 # create a new object
 my $inotify = new Linux::Inotify2
    or die "unable to create new inotify object: $!";
 
my $i = 0;



# add watchers
 $inotify->watch ("/var/www/html/perfil", IN_CLOSE, sub {
    my $e = shift;
    my $name = $e->fullname;
    print "$name was opened $i\n";
   
   
#EL MV LO HACE DOBLE ACCESO
if($i % 2 == 0){
system("mv /var/www/html/perfil/perfil.jpg /var/www/html/perfil/perfil3.jpg");
       
    system("mv /var/www/html/perfil/perfil2.jpg /var/www/html/perfil/perfil.jpg");
       
            system("mv /var/www/html/perfil/perfil3.jpg /var/www/html/perfil/perfil2.jpg");
                 }
       
         $i += 1;

 });

1 while $inotify->poll;

exit;

Bueno el código funciona a la perfección cambia entre 2 imágenes cuando actualizo la web dónde están alojadas o las ejecuto con doble click.
Pero al llevar el código a CPH no funciona. Al parecer los navegadores ahora tiene una cache de imágenes  que hace que la imagen sea siempre la misma, a pesar de que si entras a la dirección donde esta alojada la imagen.jpg y actualizas cambia sola.
Para que cambie estando en etiqueta <img> debes eliminar los datos de navegación y actualizar.

Si alguien sabe otra forma de hacerlo cuéntenme que me llamó la atención cómo es que lo hacían.

Saludos,

Desconectado .xAk.

  • el engendro
  • Colaborador
  • ****
  • Mensajes: 7305
  • Sexo: Masculino
  • F0r3v3R NeWbI3
    • Ver Perfil
Re:Avatares que cambiaban solos
« Respuesta #1 en: Noviembre 30, 2017, 07:25:45 pm »
te pongo un ejemplo en que que tienes un array con tantas imagenes como quieras y el script selecciona una al azar y la muestra.

imaginemos el script llamado por ejemplo prueba.cgi su llamada sería You are not allowed to view links. Register or Login pero nosotros así no lo utilizaremos, extenderemos la llamada You are not allowed to view links. Register or Login y si no es llamado así devolverá error.

Ese valor que hemos añadido a la url se guarda en la variable PATH_INFO. Mira el código en perl:

Código: You are not allowed to view links. Register or Login
$ENV{'PATH_INFO'} eq "/imagen.jpg" or die;
@imagenes = ("img1.jpg", "img2.jpg", "img3.jpg");
$aleatorio = int(rand(@imagenes));
binmode( STDOUT );
select(STDOUT); $| = 1;
open (IMAGE, '<', $imagenes[$aleatorio]);
print "Content-type: image/jpeg\n\n";
print <IMAGE>;
close IMAGE;
exit;

Saludos
Is the truth out there?

Desconectado Solid Water

  • Yo vivo en CPH
  • ***
  • Mensajes: 1063
  • Sexo: Masculino
  • Vuelvan Hackers!
    • Ver Perfil
Re:Avatares que cambiaban solos
« Respuesta #2 en: Noviembre 30, 2017, 08:45:24 pm »
Gracias xAk, tengo el apache configurado para trabajar con perl, así que cuando termine algunas tareas tal vez lo pruebe.
Por otro lado acabo de darme cuenta que al parecer el foro antes admitía links como .php .cgi .pl yo creí que solo admitía .jpg .png etc y ahí fué donde me hice el lío. Pero con lo que dices de extender la llamada (eso no lo sabía) se solucionaba lo anterior.
La del header: print "Content-type: image/jpeg\n\n"; tampoco la tenía.

Edit: Ahí lo probé xAk funciona de 10!!

Saludos,
« Última modificación: Noviembre 30, 2017, 09:04:31 pm por Solid Water »

Desconectado .xAk.

  • el engendro
  • Colaborador
  • ****
  • Mensajes: 7305
  • Sexo: Masculino
  • F0r3v3R NeWbI3
    • Ver Perfil
Re:Avatares que cambiaban solos
« Respuesta #3 en: Noviembre 30, 2017, 09:14:53 pm »
 ;) es un código muy sencillo, que lo podemos realizar en todos los lenguajes. Lo dificil es encontrar servidores (gratuitos) donde aplicarlos. Tengo uno en perl, pero no puedo llevarlo a cabo, me redirecciona y se me pierde la info de path. Pero en php se puede realizar en todos.

Eso de la salida estandar, la paso a binario por los dichosos caracteres de fin de linea y salto de linea que son diferentes en los diferentes sistemas. En linux y mac no hace falta ni pasar a binario el stdout ni vaciarlo, aunque así nos aseguramos que funcione en todos.

Me tenia rallado eso que hiciste de tener corriendo siempre la app sobre el sistema, es interesante la info sobre ello, muy interesante lo del inotify.

Saludos
« Última modificación: Diciembre 07, 2017, 09:43:04 am por .xAk. »

Desconectado Solid Water

  • Yo vivo en CPH
  • ***
  • Mensajes: 1063
  • Sexo: Masculino
  • Vuelvan Hackers!
    • Ver Perfil
Re:Avatares que cambiaban solos
« Respuesta #4 en: Noviembre 30, 2017, 09:23:47 pm »
Me la pasé buscando un hosting gratuito que diga que tiene soporte perl y no encontré.
Bueno todos los linux traen perl instalado (si no me equivoco), pero hay que ver si te dejan agregar el handler para usar .pl en vez de .cgi, instalar las bibliotecas que necesites, etc

Saludos,

Desconectado .xAk.

  • el engendro
  • Colaborador
  • ****
  • Mensajes: 7305
  • Sexo: Masculino
  • F0r3v3R NeWbI3
    • Ver Perfil
Re:Avatares que cambiaban solos
« Respuesta #5 en: Noviembre 30, 2017, 09:29:22 pm »
miraste por aca You are not allowed to view links. Register or Login :-)

si tienes un host con perl, es fácil instarte los módulos y sus dependencias que necesites. Puedes ponerlos en tus directorios y establecer las rutas de busqueda en tus scripts que los localicen añadiendolo al principio "use lib '/directorio/alContenedor/lib';" funciona muy bien, incluso en los host como el mio en el que me redireccionan a una sandbox.

Saludos
« Última modificación: Noviembre 30, 2017, 09:50:08 pm por .xAk. »

Desconectado Solid Water

  • Yo vivo en CPH
  • ***
  • Mensajes: 1063
  • Sexo: Masculino
  • Vuelvan Hackers!
    • Ver Perfil
Re:Avatares que cambiaban solos
« Respuesta #6 en: Noviembre 30, 2017, 09:59:02 pm »
Pero no te dan permisos de super usuario para hacer apt- get install? Tenes que instalar todo a mano?

Después te voy a compartir mi página web, que vos me compartiste una vez una tuya. Pero no me hackees.

Saludos,
« Última modificación: Noviembre 30, 2017, 10:06:22 pm por Solid Water »

Desconectado .xAk.

  • el engendro
  • Colaborador
  • ****
  • Mensajes: 7305
  • Sexo: Masculino
  • F0r3v3R NeWbI3
    • Ver Perfil
Re:Avatares que cambiaban solos
« Respuesta #7 en: Noviembre 30, 2017, 11:19:08 pm »
no te tienes que preocupar por ello. A mano, es muy facil localizar los módulos que te faltan y los vas subiendo via ftp sin más. No te preocupes por su compilación, a mi me ha sorprendido que sólo añadiendolos funcionan. Los bajaba de cpan y luego tal cual los subia, resolvia todas las dependencias y adelante.


Tienes muchos más, mírate el archivo /etc/mime.types puedes lanzar cualquiera de ellos ;-)

edit:
Puedes realizarlo también de este otro modo, que seguro también lo encontrarás interesante. Crea un directorio, llamado img y cópia dentro el mismo código pero comentando la primera línea, la del PATH_INFO, y en lugar de llamarlo prueba.cgi renombralo a test.jpg

luego crea un archivo .htaccess con el siguiente contenido

Código: You are not allowed to view links. Register or Login
AddType application/x-httpd-perl .jpg
copias las imagenes y ahora puedes llamarlo de este modo: You are not allowed to view links. Register or Login

Saludos
« Última modificación: Diciembre 02, 2017, 09:39:12 pm por .xAk. »

Desconectado Solid Water

  • Yo vivo en CPH
  • ***
  • Mensajes: 1063
  • Sexo: Masculino
  • Vuelvan Hackers!
    • Ver Perfil
Re:Avatares que cambiaban solos
« Respuesta #8 en: Diciembre 05, 2017, 10:09:22 am »
Muy bien xAk, gracias muy buena, ahí probé eso mismo, en mi caso agregando en el apache.conf

AddHandler cgi-script .cgi
<Files ~ “\.pl$”>
    Options +ExecCGI
</Files>
<Files ~ “\.jpg$”>
    Options +ExecCGI
</Files>

<Files ~ “\.cgi$”>
    Options +ExecCGI
</Files>

Saludos

Desconectado .xAk.

  • el engendro
  • Colaborador
  • ****
  • Mensajes: 7305
  • Sexo: Masculino
  • F0r3v3R NeWbI3
    • Ver Perfil
Re:Avatares que cambiaban solos
« Respuesta #9 en: Diciembre 05, 2017, 12:09:15 pm »
Habílita el uso de .htaccess You are not allowed to view links. Register or Login

Como experimento te descubre cosas sobre el funcionamiento de apache. Si haces eso sólo tiene que aplicarse a un directorio. La configuración, aunque yo esté muy oxidado, va a ser global y así anulas las imagenes jpg en sí, me parece.

Saludos

Desconectado Solid Water

  • Yo vivo en CPH
  • ***
  • Mensajes: 1063
  • Sexo: Masculino
  • Vuelvan Hackers!
    • Ver Perfil
Re:Avatares que cambiaban solos
« Respuesta #10 en: Diciembre 05, 2017, 03:50:53 pm »
Puede ser, no tenía imagenes en cgi-bin para comprobarlo, pero después agregué .jpg acá:

<Directory "var/www/html">
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl .jpg
</Directory>
Y se me anularon las imágenes aun estando en etiquetas img.
Así que estuve agregando al apache.conf el AddType tanto en cgi-bin como en www.

En cgi-bin funciona.
Pero en www/html no.

Al parecer el AddType aquí no está funcionando:

<Directory "var/www/html">
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
    AddType application/x-httpd-perl .jpg
 
</Directory>

Pero poniéndolo afuera de todo funciona en cgi-bin.

Te mandé un MP.

Saludos,
« Última modificación: Diciembre 05, 2017, 06:28:43 pm por Solid Water »

Desconectado .xAk.

  • el engendro
  • Colaborador
  • ****
  • Mensajes: 7305
  • Sexo: Masculino
  • F0r3v3R NeWbI3
    • Ver Perfil
Re:Avatares que cambiaban solos
« Respuesta #11 en: Diciembre 06, 2017, 01:30:05 am »
he ampliado el código para utilizar todas las imágenes del directorio

Código: You are not allowed to view links. Register or Login
use strict;
use warnings;
#my $llamadaExtendida;
my @imagenes; # declaramos el array.
#recogemos los archivos del directorio
my @archivos = glob("*.jpg *.jpeg");
#$llamadaExtendida = $ENV{'PATH_INFO'};
# comprobamos que son imagenes jpg con su "magic number"
foreach my $archivo (@archivos) {
  push @imagenes, $archivo if unosBytes ($archivo) eq "FFD8FF";
}
# Seleccionamos al azar
my $aleatorio = int(rand(@imagenes));
binmode( STDOUT ); # Pasamos la salida estandar a binario
select(STDOUT); $| = 1; # La vaciamos
open (IMAGE, '<', $imagenes[$aleatorio]); # abrimos la imagen
#Iniciamos la respuesta por la salida estandar.
print "Content-type: image/jpeg\n\n";
print <IMAGE>;
close IMAGE;
exit 0;

sub unosBytes {
  my $archivo = $_[0];
  my $hexa;
  eval {
    if (open(ARCHIVO, $archivo)) {
      binmode(ARCHIVO);
      my $bytes;
      sysread(ARCHIVO,$bytes,3);
      close(ARCHIVO);
      $hexa = uc(unpack("H*",$bytes));
    }
  };
  return ($hexa);
}


xx
Cigarrillos que se apagan solos

Iniciado por Chino Antrax

4 Respuestas
871 Vistas
Último mensaje Agosto 06, 2008, 08:57:52 am
por proton6
xx
¿Ubuntu mata los discos duros?, No se mueren Solos

Iniciado por Dj_Dexter

0 Respuestas
864 Vistas
Último mensaje Junio 09, 2008, 06:01:00 pm
por Dj_Dexter
xx
Como crear un Bot para el MSN? esos que responden solos

Iniciado por vicver

1 Respuestas
7950 Vistas
Último mensaje Agosto 07, 2006, 09:53:09 am
por ranefi
xx
¡ Avatares !

Iniciado por Hash_

17 Respuestas
4505 Vistas
Último mensaje Enero 22, 2008, 01:06:20 pm
por (B.O.A.O)
xx
Avatares Impresionantes!!!

Iniciado por Jayelle®©

2 Respuestas
1247 Vistas
Último mensaje Marzo 31, 2009, 12:53:00 pm
por txged
xx
Sus avatares tienen sentido? El mio sip xD!

Iniciado por Sknight

29 Respuestas
5860 Vistas
Último mensaje ſeptiembre 02, 2007, 07:26:28 pm
por kran
exclamation
Torneo [Creacion de Avatares]

Iniciado por vart001

10 Respuestas
3957 Vistas
Último mensaje Abril 18, 2006, 01:30:14 pm
por BbHacker