viernes, 22 de julio de 2016

c# - Quitar el borde del botón que recibe el foco (se pincha)

No hay ninguna propiedad para evitar que se pinte un borde más grueso sobre el botón que se han pinchado en un formulario del visual C#. Hacerlo programáticamente a mí no me ha resultado pero hay un pequeño truco que lo quita para siempre. Se trata de crear un label en el formulario (si ya hay uno creado para otro uso nos vale) y hacer que en el evento CLICK (doble click encima del botón) del botón en cuestión hagamos que el label reciba loco con label.Focus(); sustituyendo la palabra label por el nombre de nuestro label. Si hemos tenido que crear un label para esto, podemos ponerlo enciman del propio botón y con el botón derecho del ratón le damos a "Send to back" (Enviar al fondo) para que quede oculto detrás del botón o de cualquier otro elemento. También si le quitamos la propiedad Text al label y la dejamos vacía no será visible en la ejecución del formulario.

martes, 19 de julio de 2016

WordPress - Cambiar Permisos para Actualizar e Instalar Directamente desde la Web de Administración

Para poder actualizar WordPress directamente desde la web de administración de nuestro sitio cuando los tenemos instalado en nuestro propio servidor hay que hacer una pequeña modificación en lo que respecta a la propiedad y permisos de los archivos y directorios del site:

Primero que nada tenemos que saber cual es el usuario de linux que utiliza nuestro servidor web apache para trabajar, en el caso de ubuntu suele ser www-data. Si quieres saber que usuario usa apache los puedes saber con la sentencia:


$ ps auwwfx | grep apache

Nos devuelve algo así:

www-data 19297  0.0  2.9 409676 50656 ?        S    22:29   0:00  \_ /usr/sbin/apache2 -k start
www-data 19299  0.0  2.5 406560 44276 ?        S    22:29   0:00  \_ /usr/sbin/apache2 -k start
www-data 19835  0.0  2.5 408104 44032 ?        S    22:50   0:00  \_ /usr/sbin/apache2 -k start
www-data 19904  0.0  2.3 406148 41684 ?        S    22:54   0:00  \_ /usr/sbin/apache2 -k start
www-data 19905  0.0  2.3 405772 41368 ?        S    22:54   0:00  \_ /usr/sbin/apache2 -k start


Donde vemos que el usuario en mi sistema es: www-data

Ahora vamos al directorio donde tenemos nuestro site apache:

$ cd /var/www/html/wordpress

Cambiamos el grupo de todos los archivos y subdirectorios del site con:

$ sudo chgrp -R www-data ./*

Cambiamos los permisos de los archivos con:

$ sudo chmod -R g+rw ./*

Por último modificamos el archivo de configuración de WordPress:

 $ sudo nano /var/www/html/wordpress/wp-config.php

Justo después de la linea:

require_once(ABS_PATH . 'wp-settings.php');

Añadimos:

define('FS_METHOD', 'direct');

Y esto es todo...


jueves, 5 de febrero de 2015

MYSQL --> LOAD DATA INFILE produce como resultado FILE NOT FOUND aún con la certeza de que existe el archivo

Recientes versiones del Ubuntu Server (desde la 10.04) se empaquetan con AppArmor y MySQL's en modo enforcing por defecto. Puede chequear esto ejecutando:sudo aa-status obteniendo un resultado aproximado a esto:
# sudo aa-status
5 profiles are loaded.
5 profiles are in enforce mode.
   /usr/lib/connman/scripts/dhclient-script
   /sbin/dhclient3
   /usr/sbin/tcpdump
   /usr/lib/NetworkManager/nm-dhcp-client.action
   /usr/sbin/mysqld
0 profiles are in complain mode.
1 processes have profiles defined.
1 processes are in enforce mode :
   /usr/sbin/mysqld (1089)
0 processes are in complain mode.
Si mysqld está incluido en el modo enforce, entonces esto es lo que puede producir este resultado tanto para lectura como escritura. Lo que puedes hacer es editar:

nano/etc/apparmor.d/usr.sbin.mysqld y añadir /ruta-de-carpeta/ and /ruta-de-carpeta/* al final del todo como muestra el ejemplo a continuación:
...
/usr/sbin/mysqld {
    ...
    /var/log/mysql/ r,
    /var/log/mysql/* rw,
    /var/run/mysqld/mysqld.pid w,
    /var/run/mysqld/mysqld.sock w,
    /ruta-de-carpeta/ r,
    /ruta-de-carpeta/* rw,

}
Después de esto tienes que recargar los perfiles del AppArmor con:.
# sudo /etc/init.d/apparmor reload
CUIDADO: este cambio propuesto permitirá a MySQL leer y escribir en la ruta incluida del directorio. Valora las implicaciones de seguridad que esto conlleva en tu caso concreto.

sábado, 13 de diciembre de 2014

Asegurar un Servidor Apache


1. Activar los módulos 'ssl' y 'rewrite' de apache2 

Activamos los módulos ssl:
sudo a2enmod ssl

Activamos el módulo 'rewrite':
sudo a2enmod rewrite

Nos dirá que tenemos que ejecutar 'sudo service apache2 restart' para que estas  activaciones tengan efecto pero lo haremos al final de todos los comandos para no hacerlo varias veces.

2. Esconder la versión del servidor








sudo nano /etc/apache2/apache2.conf

Para ocultar la versión del servidor hemos de incluir al final del archivo de configuración global de Apache2 (/etc/apache2/apache2.conf) las siguientes dos lineas:

ServerSignature Off
ServerTokens Prod

3. Deshabilitar la visibilidad del contenido de los directorios del servidor


Hay que incluir en el mismo archivo de configuración del punto anterior, al final, el siguiente texto:
<Directory /var/www/html>
     Options -Indexes
</Directory>

4. Forzar https

sudo nano /etc/apache2/sites-available/000-default.conf

Para redirigir todas las llamadas http (puerto 80) al puerto seguro 443 (https) deberemos incluir en archivo del virtual host por defecto del puerto 80 (/etc/apache2/sites-available/000-default.conf) las siguiente lineas justo después de <VirtualHost domain.com:80>

RewriteEngine on
ReWriteCond %{SERVER_PORT} !^443$
RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [NC,R,L]


Nota imporanta: después de cada punto o al final de realizarlos todos se ha de reiniciar el servidor apache tecleando en el prompt: 

sudo service apache2 restart

lunes, 10 de febrero de 2014

Instalar ssmtp en ubuntu con gmail - PHP mail() funcionando

1. Instalamos SSMTP
> sudo apt-get install ssmtp

2. Editamos en archivo de configuración:
> sudo nano /etc/ssmt/ssmtp.conf

(En verde sustituir por nuestros datos y en rojo lo que hay que poner tal cual)

Modificamos las siguentes líneas:
root=nuestra.dirección.de.gmail.completa
mailhub=smtp.gmail.com:587
hostname=nuestra.dirección.de.gmail.completa
#FromLineOverride=YES

UseSTARTTLS=YES
AuthUser=nuestra.dirección.de.gmail.completa

AuthPass=nuestra.contraseña.de.gmail.completa

3. Configurar usuarios...
> sudo nano /etc/ssmt/revaliases

Escribimos una linea para cada usuario que queramos de la siguiente manera:
usuarioejemplo:ejemplo@gmail.com:smtp.gmail.com:587

4. Configuramos PHP con php.ini
> sudo nano /etc/php5/apache2/php.ini

y buscamos la siguiente linea, la descomentamos (quitarle el punto y coma de delante) y la dejamos así:

sendmail_path = /usr/sbin/ssmtp -t

y reiniciamos apache con:

> sudo service apache2 restart

Para enviar un email desde php y hacer una prueba utilizamos el siguiente código:

<?php
$envio = mail("destinatario@dominio.com", "Este es el asunto...", "Este es el cuerpo del mensaje");
var_export ($envio);
?>

Esto nos devolverá "true" si el mensaje se envió correctamente.

jueves, 6 de febrero de 2014

Como crear un certificado SLL para Apache en UBUNTU

Entendemos que tienes apache instalado, si no es así lo puedes hacer con el siguiente comando:
sudo apt-get install apache2
 Habilitamos el SLL en Apache
sudo a2enmod ssl
 Rearrancamos apache
sudo service apache2 restart
 Creamos un nuevo directorio donde vamos a guardar los certificados
sudo mkdir /etc/apache2/ssl
 Generamos el certificado
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
 el parámetro 365 despues de -days es el número de días que queremos que nuestro certificado tenga validez, podemos poner un mayor número de días.

Cuando ejecutamos este comando nos hace una serie de preguntas que explicamos a continuación (lo que está en verde es lo que tenemos que configurar para nuestro caso):

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]:LAS PALMAS
Locality Name (eg, city) []:LAS PALMAS DE GRAN CANARIA
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Nuestro nombre o de la empresa
Organizational Unit Name (eg, section) []:Nombre del departamento de la empresa
Common Name (e.g. server FQDN or YOUR name) []:dominio.com                 
Email Address []:mail@dominiodemail.com

Es importante el Common Name, debemos poner el nombre del dominio de nuestro servidor, es decir, la dirección que pondrán los que se quieran conectar a nuestra máquina, si no coinciden el certificado no valdrá.

Ahora configuramos nuestro host virtual seguro modificando el siguiente archivo:
sudo nano /etc/apache2/sites-available/default-ssl 

 después del apartado <VirtualHost _default_:443>, justo debajo del la linea del ServerAdmin ponemos la siguiente linea adaptandola a nuestro dominio:

ServerName dominio.com:443

Buscamos más abajo las siguiente lineas y las dejamos como se muestra a continuación:

SSLEngine on
SSLCertificateFile /etc/apache2/ssl/apache.crt
SSLCertificateKeyFile /etc/apache2/ssl/apache.key
 
Grabamos y salimos.

Activamos nuestro nuevo HOST virtual
sudo a2ensite default-ssl 
Recargamos apache para coja la nueva configuracióN
sudo service apache2 reload
Ahora ya podemos teclear en nuestro navegador nuestro dominio con https:// delante y debería funcionar


Instalar los Drivers WIFI en UBUNTU

Esto funciona para unas cuantas tarjetas wifi.

Comprobamos el tipo de tarjeta te tenemos instalada:
> lspci -vvnn | grep 14e4

Nos debería devolver las especificaciones de las tarjetas de red que tenemos instaladas, en mi caso:

02:00.0 Network controller [0280]: Broadcom Corporation BCM4312 802.11b/g LP-PHY [14e4:4315] (rev 01)
03:00.0 Ethernet controller [0200]: Broadcom Corporation NetLink BCM57780 Gigabit Ethernet PCIe [14e4:1692] (rev 01)

Lo que he puesto en negrita es fundamental para ver que podamos instalar el siguiente driver que incluye los siguientes modelos:

BCM4311
BCM4312
BCM4313
BCM4321
BCM4322
BCM4324
BCM4325
BCM4327
BCM4328

Si la nuestra está en la lista tecleamos:
> sudo apt-get update
> sudo apt-get install bcmwl-kernel-source

Con esto ya debería funcionar la wifi, comprueba que puedes ver las redes de casa en la parte superior derecha de tu escritorio.