Proxy apache con https

Cuando tienes pocas IPs y muchas maquinas una de las opciones que tienes para preservar IPs es usar proxy_http de apache, pero ¿qué ocurre cuando quieres proxyear conexiones https?

Lo lógico ha sido crear el certificado en la máquina que contiene el servicio bajo ssl, hasta aquí todo OK, pero se complicaba la cosa al tratar de hacerlo pasar por el servidor que hace de proxy apache.

Vamos a ver como lo he hecho, no es exactamente como quería, pero la cosa es que funciona :P

Para recopilar un poco y como ha habido cambios en la web startssl voy a poner el paso a paso, además que el post que tengo es un poco viejuno ya!…

Dump MySQL a través de PHP

Tengo un servidor al que sacarle una copia de la bbdd pero no me deja usar exec y como consecuencia mysqldump… así que un script para hacerlo de otra forma:

backup_tables('localhost','username','password','blog');

/* backup the db OR just a table */
function backup_tables($host,$user,$pass,$name,$tables = '*')
{
	
	$link = mysql_connect($host,$user,$pass);
	mysql_select_db($name,$link);
	
	//get all of the tables
	if($tables == '*')
	{
		$tables = array();
		$result = mysql_query('SHOW TABLES');
		while($row = mysql_fetch_row($result))
		{
			$tables[] = $row[0];
		}
	}
	else
	{
		$tables = is_array($tables) ? $tables : explode(',',$tables);
	}
	
	//cycle through
	foreach($tables as $table)
	{
		$result = mysql_query('SELECT * FROM '.$table);
		$num_fields = mysql_num_fields($result);
		
		$return.= 'DROP TABLE '.$table.';';
		$row2 = mysql_fetch_row(mysql_query('SHOW CREATE TABLE '.$table));
		$return.= "\n\n".$row2[1].";\n\n";
		
		for ($i = 0; $i < $num_fields; $i++) 
		{
			while($row = mysql_fetch_row($result))
			{
				$return.= 'INSERT INTO '.$table.' VALUES(';
				for($j=0; $j < $num_fields; $j++) 
				{
					$row[$j] = addslashes($row[$j]);
					$row[$j] = ereg_replace("\n","\\n",$row[$j]);
					if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
					if ($j < ($num_fields-1)) { $return.= ','; }
				}
				$return.= ");\n";
			}
		}
		$return.="\n\n\n";
	}
	
	//save file
	$handle = fopen('db-backup-'.time().'-'.(md5(implode(',',$tables))).'.sql','w+');
	fwrite($handle,$return);
	fclose($handle);
}

Te guarda el dump en la raiz del script.…

Proxmox + nat + iptables

Acabo de contratar un servidor en un datacenter y sólo me dan una sola ip.
Como me gusta tener los servicios separados y todo bien ordenadito le he instalado proxmox 4, con soporte LXC, pero necesito que el host se comunique con los contenedores de alguna forma.

Lo que vamos a crear va a ser una interfaz virtual nueva, donde crearemos nuestra subred y luego redigiremos los puertos con iptables. Esto es lo que se llama hacer nat y redirección de puertos :P…

Las emociones equiparadas a un termómetro de Galileo

Estaba hablando con una persona y lo típico de ¿qué tal estamos? y la respuesta que le he dado ha sido la de “como un termómetro de Galileo”. Aunque la respuesta ha sido espontánea nos ha encantado a ambas la definición, así que voy a tratar de desarrollarla un poco :)

galileo thermometer 2

Primero de todo, el termómetro de Galileo consiste en un tubo de cristal cilíndrico lleno de un líquido con un coeficiente de dilatación mayor que el del agua (una mezcla de hidrocarburos) y dentro un conjunto de ampollas de cristal de distintas medidas que contienen agua o alcohol teñido. Depende de la temperatura que haga, la disposición de las ampollas de cristal es una u otra debido a la modificación de las densidades de los líquidos.

La equiparación pues entre las emociones y el termómetro de Galileo, vendría a ser que cada una de nuestras emociones corresponderían a las ampollas dentro del cilindro, la temperatura nuestro entorno (nuestro trabajo, las relaciones con otras personas, etc.) y el líquido del cilindro nuestro cuerpo evolutivo. En el conjunto de los 3 tendríamos pues nuestro estado emocional.

La temperatura es un factor que no podemos controlar, de repente hace frío (conflictos) y de repente calor (acuerdos, buenas noticias, tranquilidad, paz, etc.). La densidad del líquido del cilindro sería nuestro trabajo interno, su densidad sería una u otra dependiendo de lo atentos e identificados que estamos de nosotros mismos y las ampollas cada una de las emociones.
El conjunto hace que prevalga una …

Compartir una sesión de terminal con screen

A veces es necesario que dos usuarios conectados remotamente accedan a la misma sesión, sea para realizar juntos una configuración o para que uno le muestre al otro como hacer alguna cosa.
Una herramienta super cómoda será screen.

El usuario que va a crear la terminal compartida ejecuta el siguiente comando para iniciar la sesión de screen y nombrarla (mySharedSession en este caso).

$ screen -d -m -S mySharedSession

El siguiente paso radica en unir la terminal del usuario a la sesión compartida de screen mediante la ejecución del siguiente comando que debe ser ejecutado por todos los usuarios incluyendo al creador de la sesión ya que esta se crea inicialmente separada de su terminal actual.

$ screen -x mySharedSession

En cualquier momento es posible listar las sesiones de screen disponibles mediante la ejecución del siguiente comando.

$ screen -ls

Salir y terminar sesiones

Para salir de una sesión compartida sin destruírla es necesario ejecutar la siguiente combinación de teclas: CTRL+a d.

Para salir de una sesión destruyéndola se puede utilizar el comando exit (cierre brusco) o la combinación de teclas CTRL+a k (cierre limpio) la cual es equivalente a CTRL+a :kill. Debe tener en cuenta que la destrucción de la sesión afecta a todos los usuarios que se encontraban conectados a ella.

Fuente: Jorgeivanmeza

Instalar OTRS con MySQL

Trac está muy bien, pero tiene un pequeño problema, y es que una de las necesidades que tengo es que los usuarios manden un correo electrónico a una dirección y se añada la petición como tiquet. Estas semanas me he estado peleando con ello, pero el script que encontré estaba desactualizado y no funcionaba muy bien, si insertaba los tiquets, pero no leía correctamente el cuerpo de los correos electrónicos :( traté de pelearme con el script pero no avanzaba. Así que he tenido que buscar otro software, un poquillo mas modernillo que si permita esto, se trata de OTRS.

A continuación todos los pasos que he tenido que realizar para instalarlo, partimos de una debian jessie 8.2.

Empezamos instalando algunas dependencias

root@epsilon-noc:~# apt-get install libapache2-mod-perl2 libdbd-mysql-perl libtimedate-perl libnet-dns-perl libnet-ldap-perl libio-socket-ssl-perl libpdf-api2-perl libdbd-mysql-perl libsoap-lite-perl libgd-text-perl libtext-csv-xs-perl libjson-xs-perl libgd-graph-perl libapache-dbi-perl libxml-libxml-perl libxml-xslt-perl