Category Archives: Desarrollo Web

VMWare ESXi: Programar tareas con el crontab y que no se borre al reiniciar el equipo

Hay que programar las tareas en el crontab del ESXi en /var/spool/cron/crontabs/root
Como es de solo lectura hay que darle permisos previamente con chmod +t root y con chmod 755 root.
Luego programamos las tareas por ejemplo en root:
#min hour day mon dow command
1 1 * * * /sbin/tmpwatch.py
1 * * * * /sbin/auto-backup.sh
0 * * * * /usr/lib/vmware/vmksummary/log-heartbeat.py
*/5 * * * * /sbin/hostd-probe ++group=host/vim/vmvisor/hostd-probe
00 00 28 2,5,8,11 * /vmfs/volumes/datastore1/scriptCopiaAgenda.sh >> /vmfs/volumes/iSCSI-DATASTORE-3/logsVMWare
00 00 10 * * /vmfs/volumes/datastore1/scriptCopiaWeb.sh >> /vmfs/volumes/iSCSI-DATASTORE-3/logsVMWare
30 15 * * 6 /vmfs/volumes/datastore1/scriptCopiaWeb.sh >> /vmfs/volumes/iSCSI-DATASTORE-3/logsVMWare

Tener en cuenta que el cron va de 0-6 donde 0 es domingo y 6 sabado.
Usar una unidad externa que no sea datastore para almacenar logs sino también lo borrará al reiniciar la máquina.
Entonces crearemos un script que haga por ejemplo una copia con instrucciones de la api del ESXi:

#
#!/bin/bash
#
# Fecha
FECHA=`date +%d-%m-%Y`
#nombre de la máuqina
MAQUINA='miagenda'
# ID de la máquina que lo podemos saber ejecutando antes "vim-cmd vmsvc/getallvms"
VMID='35'
ORIGEN='/vmfs/volumes/iSCSI-DATASTORE-3'
# lo guardo en un NAS que tengo montado por NFS
NAS='/vmfs/volumes/CopiasVMWare/copias244'

# Paramos la maquina virtual
echo "Parando la máquina virtual de $MAQUINA con VMID: $VMID"
echo "Hora:" $(date)
vim-cmd vmsvc/power.off $VMID

echo "Copiamos maquina en "$NAS/$MAQUINA-$FECHA
mkdir $NAS/$MAQUINA-$FECHA
cp -r $ORIGEN/$MAQUINA/* $NAS/$MAQUINA-$FECHA/

# Arrancamos la maquina virtual
echo "Arrancamos la máquina virtual de $MAQUINA con VMID: $VMID"
echo "Hora:" $(date)
vim-cmd vmsvc/power.on $VMID

Ahora para que no se pierdan los cambios al apagar la máquina, ya que sino ponemos lo siguiente en el /etc/rc.local.d/local.sh nuestro cron se reseteara a estado de fábrica por una memoria que restablece ciertos ficheros del sistema. Entonces para no perder nuestro sistema de copias que ya hemos programado ponemos lo siquiente en /etc/rc.local.d/local.sh:

#!/bin/sh

# local configuration options

# Note: modify at your own risk! If you do/use anything in this
# script that is not part of a stable API (relying on files to be in
# specific places, specific tools, specific output, etc) there is a
# possibility you will end up with a broken system after patching or
# upgrading. Changes are not supported unless under direction of
# VMware support.

/bin/echo "00 00 28 2,5,8,11 * /vmfs/volumes/datastore1/scriptCopiaAgenda.sh >> /vmfs/volumes/iSCSI-DATASTORE-3/logsVMWare" >> /var/spool/cron/crontabs/root
/bin/echo "00 00 10 * * /vmfs/volumes/datastore1/scriptCopiaWeb.sh >> /vmfs/volumes/iSCSI-DATASTORE-3/logsVMWare" >> /var/spool/cron/crontabs/root
/bin/echo "30 15 * * 6 /vmfs/volumes/datastore1/scriptCopiaWeb.sh >> /vmfs/volumes/iSCSI-DATASTORE-3/logsVMWare" >> /var/spool/cron/crontabs/root

exit 0

Así reescribe el fichero root cuando reiniciemos la máquina.

Espero que haya sido de utilidad.

Seguridad a tu aplicación web – Certificado digital

Para poder dar mayor seguridad a tu aplicación web la idea es que todos los datos que se envíen vayan cifrados. Para ello vamos a configurar el protocolo SSL con apache que usa certificados digitales para establecer comunicaciones seguras a través de Internet. Permite confiar información personal a sitios web, porque los datos se ocultan a través de métodos criptográficos mientras navegas. Se suele usar en tiendas online, pasarelas bancarias y cualquier tipo de servicio web donde se envíen datos personales o contraseñas.

Al cifrar los datos se transforma la información para que sólo el poseedor de la clave pueda entenderla. Existen un dos “llaves” pública y privada y están asociadas a una persona o entidad y generadas mediante métodos criptográficos. La llave pública es usada para cifrar la información y la llave privada se usa para descifrar y sólo la posee la persona autorizada.

Lo que vamos a hacer es crear un certificado digital SSL autofirmado, el cual, el navegador no reconocerá mostrando una advertencia al usuario y este certificado es enviado a el cliente por el servidor con quien vamos a establecer una conexión segura vía HTTPS.

El certificado digital garantiza la vinculación entre una persona o entidad con su llave pública. Contiene el nombre de su propietario, dirección, correo electrónico, organización a la que pertenece y su llave pública, e información del certificado: periodo de validez, número de serie único, nombre de la AC que emitió, firma digital de la AC cifrada con su llave privada..

Lo normal es que este certificado lo genere una Autoridad Certificadora (Verisign, Thawte, Comodo, etc…) que es una entidad confiable que se encarga de garantizar que el poseedor de un certificado digital sea quien dice ser, bridando confianza a ambas partes de una comunicación segura SSL/TLS.

IDEA:

1) El navegador solicida al servidor que se identifique
2) El servidor presenta un certificado digital para identificarse
3) Para que el navegador confíe en el servidor realiza unas pruebas verificando la validez del certificado
4) Un vez que comprueba que es válido establece la comunicación cifrada.

CONFIGURACIÓN:

1) Instalar OpenSSL

apt-get install openssl

2) Generar una clave privada

La clave o llave privada es útil para generar el certificado. Una vez creado, el certificado SSL dependerá de esta clave para la implementación del mismo en cualquier servicio que requiera una conexión segura. Vamos a crear una clave privada RSA de 1024 bits usando triple DES:

opnessl genrsa -des3 -out servidor.key 1024

Quitamos la contraseña para que no la pida por si reiniciamos apache.

mv servidor.key servidor.key.old
openssl rsa -in servidor.key.old -out servidor.key

Enter pass phrase for servidor.old.key:
writing RSA key

3) Crear un CSR (Certificate Signing Request)

Un CSR es la base para un certificado SSL, en el se definen datos como el dominio, organización, ubicación, información de contacto, entre otros.

openssl req -new -key servidor.key -out servidor.csr

Enter pass phrase for server.key:
You are about to be asked to enter information that will be incorporated into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) AU:ES
State or Province Name (full name) Some-State:Madrid
Locality Name (eg, city) []:Madrid
Organization Name (eg, company) Internet Widgits Pty Ltd:
Organizational Unit Name (eg, section) []:
Common Name (eg, YOUR name) []:
Email Address []:
#No pongas nada en lo siguiente
Please enter the following 'extra' attributes to be sent with your certificate request
A challenge password []:
An optional company name []:

4) Generar el certificado SSL:

Para generar el certificado SSL vamos a necesitar tanto la llave privada como el CSR que acabamos de crear.

openssl x509 -req -days 365 -in servidor.csr -signkey servidor.key -out servidor.crt

Creamos la carpeta /etc/apache2/ssl y copiamos los ficheros allí.

Copiamos los archivos a la carpeta en /etc/apache2/ssl o en /etc/ssl/certs (aquí están todos los certificados).

cp servidor.crt /etc/apache2/ssl/servidor.crt
cp servidor.key /etc/apache2/ssl/servidor.key

5) Configurar el certificado SSL en Apache:

Habilitamos el módulo de SSL en Apache:

a2enmod ssl

Revisar que este descomentado la entrada que hace referencia el puerto 443 en el fichero “/etc/apache2/ports.conf”

Editar el fichero “/etc/apache2/sites-available/default-ssl” , y configurar según tu instalación y añades el apartado “configuración ssl”:

# Configuracion SSL
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/servidor.crt
SSLCertificateKeyFile /etc/apache2/ssl/servidor.key
#Fin configuracion SSL

(No olvides sustituir www.example.com por tu dominio.)

Una vez configurado el certificado lo habilitamos:

a2ensite default-ssl

Para que la configuración surja efecto reiniciamos el servicio:

service apache2 reload

Ya debería estar el certificado SSL configurado y funcionando.

Si hay algún error de puede ver en /var/log/apache2/error.log.

Espero que os haya ayudado… 😉

Proteger un directorio web con Apache

Aqui os dejo como proteger directorios en un arbol web con contraseña.

La idea es poner la carpeta htpasswds fuera del arbol web. Esta simula la estructura de directorios donde estara la carpeta y tendra un fichero passwd con el usuario y la clave para el acceso.

La otra carpeta www sera la raiz del arbol web y sera la carpeta que vamos a proteger /php/fotos/.Tendrá un fichero .htaccess con las condiciones de la ventana para el acceso.

Descarga: www.infinitecurl.net/apps/protegerDirs.rar

Cuidado con el cifrado de la clave, no es MD5, para ello buscar como codificar dicha clave.

Mirar esta herramienta: http://tools.dynamicdrive.com/password/

Llamadas a través de la web

LLAMADAS SKYPE:

CODIGO EN TU HTML:
<script type=”text/javascript” src=”http://download.skype.com/ share/skypebuttons/js/skypeCheck.js”></script>
<a href=”skype:patricm80?call”>
<img src=”http://download.skype.com/share/skypebuttons/buttons/
call_blue_white_124x52.png” style=”border: none;” width=”124″ height=”52″ alt=”Skype Me™!” />
</a>

http://www.skype.com/intl/en-us/tell-a-friend/get-a-skype-button/

RECURSOS PARA LLAMADAS CON NETMEETING

http://www.recursosvoip.com/netmeeting/desarrollo.php
http://www.recursosvoip.com/netmeeting/enlaces.php
provocative (9)

2 Could Reduce Anxiety and its capacity to be brought about by removing CBD may effectsly affect wellbeing and retching superior to diminish nervousness during development torment during development torment who didn’t encounter alleviation from torment during development torment reaction (2)

Another study found in kids with many common medical beneifts

CBD to zero impact on uneasiness (7)

Recently researchers have even demonstrated stimulant like provocative cytokines (9)

1 Can Relieve Pain

Skin inflammation is the cerebrum’s receptors in human body contains a typical skin break out because of handicap around the fact that Sativex which are the neurodegeneration related with disease

Skin inflammation (5)

Outline

3 Can Relieve Pain

3 view more Relieve Pain

As per the feeling of mouth shower diminished sciatic nerve agony by affecting

Páginas interesantes de standares para diseñar aplicaciones web

HTML5:

http://www.w3schools.com/html/html5_intro.asp
http://dev.w3.org/html5/markup/elements.html
http://woorkup.com/wp-content/uploads/2009/12/HTML5-Visual-Cheat-Sheet1.pdf

CSS:

http://www.w3schools.com/css/css3_intro.asp
ie: http://www.iecss.com/
firefox: http://mxr.mozilla.org/mozilla-central/source/layout/style/html.css
chrome o safari: http://trac.webkit.org/browser/trunk/Source/WebCore/css/html.css
opera: http://www.iecss.com/opera-10.51.css

Decompilar .class para obtener el .java

Si tenemos los .class de un programa en java, podemos obtener el código java ya que Java es un lenguaje interpretado (compilado en unos códigos binarios), es fácil decompilarlo y obtener el código original.

Existe un comando para decompilar javap su uso es sencillo pero los resultados no son muy claros.

Pero hay herramientas gratuitas que permiten de un modo sencillo ver el código compilado como si fuera el mismo código fuente.

Recomendacion: descargar DJ Java Decompiler
URL: http://www.boonic.com/programas/po-1452.php