Apache redireccionar ciertas ip hacia https
Queremos que sólo ciertas ip tengan acceso a contenido con http, y las demás las queremos redirigir a https. ¿Cómo lo hacemos?.
RewriteEngine On
RewriteCond %{REMOTE_ADDR} !^192\.168\.1\.4$
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
En este caso, sólo la dirección 192.168.1.4 tendría acceso via http, los demás serían redireccionados a https.
Yet another apache ssl installation manual on debian ubuntu / Aún otro manual de instalación de apache ssl en debian ubuntu
Nunca había instalado apache con SSL en debian. El proceso es muy sencillo:
Activar el módulo ssl:
sudo a2enmod ssl
Crear el certificado; primero lo creamos y luego lo copiamos en el directorio por defecto:
$mkdir ssl
cd ssl
openssl genrsa -des3 -out server.key 1024
openssl rsa -in server.key -out server.key.insecure
openssl req -new -key server.key -out server.csr
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Nota: si no queremos que cada vez que arrancamos el servidor http nos pida la clave del certificado hacemos,
openssl rsa -in server.key -out server.key.nopass
Y ahora "instalamos" el certificado,
sudo cp server.crt /etc/ssl/certs
sudo cp server.key.nopass /etc/ssl/private
En nuestro fichero de configuración de apache tenemos que añadir algo parecido a esto: virtualhost *:443
Ahora rearrancamos el servidor con
DocumentRoot /var/www/blahblah
SSLEngine on
SSLCertificateFile /etc/ssl/certs/server.crt
SSLCertificateKeyFile /etc/ssl/private/server.key.nopass
....sudo service apache2 restart
, y ya tenemos soporte SSL. Naturalmente, como el certificado lo creamos nosotros, los navegadores nos avisarán de que no ha sido emitido por una entidad de confianza pero tendremos las comunicaciones con el servidor aseguradas por https.
Usar cliente Mysql python en windows
Si has intentado, sin éxito, instalar el módulo MySQLdb en windows tal vez te interese pasar por este sitio web y bajarte el instalador para windows en vez de tener que compilar las librerías en tu PC ;-)
Paso de parámetros a programas en python / How to pass parameters to a python program
Para pasar parámetros a los programas se usa el módulo getopt, que nos permite trabajar cómodamente con ellos.
En primer lugar tenemos que saber que el contenido de la línea de comandos nos viene en forma de lista en sys.argv.
Si invocamos un programa en python, como parámetros nos interesará todo lo que venga después de la primera posición, es decir sys.argv[1:], así que en general llamaremos a una función main así
if __name__=='__main__':
main(sys.argv[1:])
Ahora veremos el funcionamiento de getopt, os paso un ejemplo:
def main(argv):Vemos que getopt toma tres argumentos:
try:
opts, args = getopt.getopt(argv, "hps:",
["help", "prn", "server="])
except getopt.GetoptError:
print "Opcion no valida"
usage()
sys.exit(2)
- El primero es la cadena que le pasamos para analizar
- El segundo son las opciones en forma corta, las que se usan con la sintaxis -h, -p, -s="algo"
- El tercero son las mismas opciones pero en forma larga que se usan con dos guiones --help, --prn, --server="algo"
Como ahora ya tenemos las opciones y sus posibles valores, el tratamiento será algo similar a esto
for opt, arg in opts:
if opt in ("-h", "--help"):
usage()
sys.exit()
elif opt in ('-p', "--prn"):
p_pantalla=True
elif opt in ("-s", "--server"):
r_server=arg
Si hay algún tipo de error durante el parseado de los argumentos, es una buena idea dar una ayuda al usuario antes de terminar el programa, por ejemplo
def usage():
print """
Opcions:
--help (-h)\t\tTreu aquesta ajuda
--prn (-p)\t\tTreu impressio de tickets per pantalla
--server (-s)\t\tServidor actualització
"""
Y esto es todo por hoy