Mejora de emule y actualización de servidores

emuleEn estas fechas cuando familias y amigos se reúnen, y mas cuando eres informático, una pregunta rsuena al rededor… “¿que le pasa a mi emule?¿por que no tiene servidores?” ah, ¿que os pensabais que iba a ser otra? jejeje
El problema desde hace un tiempo a esta parte es que los servidores de emule empiezan a caer, y los repositorios desde donde todos los actualizábamos también de manera que tenemos que hacer unas pequeñas modificaciones.

Para que nuestro emule vuelva a funcionar tenemos que actualizarpincha sobre los siguientes enlaces..

http://ed2k.2x4u.de/fiee1n0h/max/server.met
http://esel-paradies.de/server/server.met
http://immissionsdaten.de/server.met
http://lakenet.i-networx.de/server.met
http://mullah5.tripod.com/server.met
http://ocbmaurice.dyns.net/pl/slist.pl?download/server-max.met
http://ottokar.i-networx.de/server.met
http://profesor666.no-ip.org:3000/server.met
http://users.servicios.retecal.es/ljpadillam/Baltab/server.met
http://usuarios.lycos.es/guillespi/server.met
http://vlom.yo.lv/donkey/server.met
http://www.donkeysupport.de/index.php?met=server-max
http://www.edonkey2000.com/server.met
http://www.gruk.org/server.met
http://www.hot.ee/ed2kest/server.met
http://www.peerates.net/servers.php
http://www.picsystems.net/emule/servermet/all_server.met
http://www.server-met.de/dl.php?load=max&trace=34170739.9444

Cada uno de los enlaces es un nuevo grupo de servidores.

servidorSi queremos mantener actualizada la lista cada vez que iniciemos el emule, solo tenemos que pinchar sobre Preferencias y en la ventana que sale, sobre servidor. Aquí, activamos las 3 casillas que aparecen al principio.. Auto-actualizar y los otros dos de actualizar lista de servidores. Una vez realizado esto pulsamos sobre el boton Editar... lo que mostrara una ventana de Bloc de notas. Pegamos las direcciones que funcionaron de arriba separadas con saltos de linea y guardamos. Pulsamos en aceptar y cerramos emule.
Al volver a abrir debería buscar los servidores y cargarlos de nuevo.

Opciones adicionalesSi a demas queremos mejorar sustancialmente la velocidad de descarga (a costa de algo del ancho de banda) solo tenemos que abrir Preferencias y en la ventana que sale Opciones adicionales. Una vez aqui, vemos que los dos primeros datos son Nuevas conexiones máx. y Máx conexiones a medio abrir. En el primero debería ponerse un numero algo.. como 100 (sin excederse.. podéis hacer pruebas) y en el segundo un numero menor a 99 (yo recomiendo un 80 o 95..) también deberíais probar.. depende de conexiones…

Con estas recomendaciones debería ser suficiente para tener un emule con buena velocidad si tenéis los puertos abiertos

pass_protect(), protege con contraseña cualquier directorio desde PHP

seguridadSeguramente en lo primero que piense cualquiera que quiera proteger algún archivo en internet es ese complejo sistema de bases de datos, archivos encriptados etc etc.. pero Apache nos permite hacer esto de una forma mucho mas sencilla y mezclandolo con PHP la cosa se pone 100 veces mas fácil..

Cuando queramos poner contraseña a una de las carpetas del servidor para que solo se pueda ver las paginas que contiene si se sabe la contraseña podemos usar pass_protect() una sola vez, o reutilizarla para reescribir el usuario y/o contraseña.
Para hacer esto solo tenemos que introducir en el primer lugar un nombre de usuario (o varios en formad e array), en segundo lugar una contraseña (o varias) y por ultimo (opcionalmente) un texto que aparecerá cuando no se sepa la contraseña, (el texto de la tercera variable no puede contener comillas).

Y ahora una tanda de ejemplos:
Si el nombre de usuario y la contraseña no son array, se asignarán haciendo un par natural (nombre de usuario – contraseña).
[PHP]
$name = ‘nombreusuario’;
$pass = ‘SeCrEtO’;
pass_protect($name, $pass);
[/PHP]

Si los valores de nombre y contraseña son array cada valor del array se emparejara haciendo un par (usuario-contraseña), con la excepción de que si uno de los dos no tiene suficientes valores, no se contaran como pares…
[PHP]
$name = array(‘nombre_1’, ‘nombre_2’, ‘nombre3’);
$pass = array(‘SeCrEtO_1’, ‘SeCrEtO2’, ‘SeCrEtO_3’, ‘contraseña_nula’);
pass_protect($name, $pass);
[/PHP]

Si los valores de nombre son array y la contraseña no, se emparejaran todos los nombres de usuario con la misma contraseña.
[PHP]
$name = array(‘nombre_1’, ‘nombre_2’, ‘nombre3’);
$pass = ‘SeCrEtO_unico’;
pass_protect($name, $pass);
[/PHP]

Si los valores de contraseña son array y solo hay un nombre de usuario, se asignara el mismo nombre de usuario con varias contraseñas.
[PHP]
$name = ‘nombredeusuario’;
$pass = array(‘SeCrEtO_1’, ‘SeCrEtO2’, ‘SeCrEtO_3’);
pass_protect($name, $pass);
[/PHP]

Por ultimo un ejemplo simple con modificación del mensaje..
[PHP]
$name = ‘nombredeusuario’;
$pass = ‘SeCrEtO’;
$mensaje = ‘No esta permitido entrar aquí sin autorización, pide una en juanito@algo.com’
pass_protect($name, $pass);
[/PHP]

y aquí os dejo la función:
[PHP]
function pass_protect($name, $pass, $msg=’Area solo para usuarios registrados’){
$files[‘.htaccess’] = array(
‘AuthName “‘.$msg.'” ‘,
‘AuthType Basic ‘,
‘AuthUserFile ‘.realpath(‘./’).’/.htpasswd ‘,
//’AuthGroupFile /dev/null ‘,
‘require valid-user ‘
);
if(is_array($name) && is_array($pass)){ //si ambos son array
foreach($name as $k => $v){
if( !empty($name[$k]) && !empty($pass[$k]) ){ $files[‘.htpasswd’][] = $name[$k].’:’.crypt($pass[$k]); }
}
} elseif(is_array($name)){ foreach($name as $k => $v){ $files[‘.htpasswd’][] = $v.’:’.crypt($pass); } //si el nombre es una array
} elseif(is_array($pass)){ foreach($pass as $k => $v){ $files[‘.htpasswd’][] = $name.’:’.crypt($v); } //si el pass es un array
} else { $files[‘.htpasswd’][] = $name.’:’.crypt($pass); //si nunguno es un array
}

foreach($files as $filename => $cont){
$cont = implode(“\n”, $cont);
$fp = fopen($filename, ‘w+’);
$read = fwrite($fp, $cont, strlen($cont));
fclose($fp);
}
return true;
}
[/PHP]
que la disfrutéis..

Tierra0 en rediseño..

Imagen antigua tierra0Entre ayer y hoy he logrado sacar un poco de tiempo para terminar de dar otro pequeño toque a Tierra0 así que puede que se experimenten algunos cambios inesperados en la web esta mañana.. (los cambios van a ser pequeños así que no creo que tengáis muchos problemas..

Si alguien quiere ver los cambios he echo una captura del theme actual para que podáis comparar..

source_extract(), extrae el código fuente aun que tengan verificación por cookie

icon source_extractCasi todos los foros, webs 2.0 y demás paginas actuales tienen registros. Y muchas de estas webs solo permiten el acceso o lectura de los datos a partir de estos registros, por esto hoy os dejo esta función.
La función source_extract() es una encapsulación de la función curl, la cual permite enviar y recibir contenido por http, ftp…. en nuestro caso solo tendremos que indicarle 3 parámetros.
El primero es la dirección de la web a extraer, el siguiente es una dirección en el servidor con un nombre de archivo en el que se puedan guardar las cookies necesarias para almacenar los datos recibidos de la web consultada, y el tercero son datos en POST a enviar.

Utilizando esta función podremos mantener una cookie a lo largo de varias consultas como si de un navegador se tratara, de echo la función envía datos emulando ser un navegador firefox en un windows NT (algunas web detectan si es un navegador o no el que accede para permitir el envío de datos). De esta manera podemos acceder a una web, ingresar nuestros datos y realizar tareas en su interior de manera natural y automatizada.

un ejemplo rápido:
[PHP]
$codigo = source_extract(‘http://www.ejemplo.com/wp-admin’, ‘./cookie.txt’);

//codigo ahora mostraría el panel para introducir los datos
$user = ‘paquito84’;
$pass = ‘sEcReTo_123’;
$post = ‘log=’.$user.’&pwd=’.$pass;
$codigo = source_extract(‘http://www.ejemplo.com/wp-admin’, ‘./cookie.txt’, $pos);
//en esta consulta en $codigo nos mostrará el panel de administración

$codigo = source_extract(‘http://www.ejemplo.com/wp-admin/post-new.php’, ‘./cookie.txt’, $pos);
//y ahora si q podríamos inclusive ver la pagina de nuevo post
print_r($codigo);
[/PHP]

y el código completo..
[PHP]
function source_extract($file, $cookie, $postdata = ”){
$user_agent = ‘Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.9) Gecko/20061206 Firefox/1.5.0.9’;
$ch = curl_init($file);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt ($ch, CURLOPT_USERAGENT, $user_agent);
if($postdata!=”) curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt ($ch, CURLOPT_POST, 1);
$file_content = curl_exec ($ch);
curl_close($ch);
return $file_content;
}
[/PHP]

El ejemplo anterior es un código para ver como se podría componer una consulta con datos ficticios, pero prometido que para el próximo post traigo algo más interesante y real… 😉

Actualización que mejora las capacidades de la función.

colorselect(), Selecciona entre colores predefinidos en tus formularios con jquery

crayonsA veces necesitamos ofrecer unos cuantos colores predefinidos a un usuario para que pueda seleccionar cual de todos prefiere para pintar un objeto o dejar como color predeterminado de una parte de nuestra pagina.

Jquery nos ayuda mucho en esto así que he terminado de ayudarnos haciendo una función propia de jquery llamada colorselect().
[JS]
$.fn.colorselect = function(colores, campo, tamanio) {
if(tamanio==”){ tamanio = 20; }
if(campo==”){ campo = ‘color’; }
var o = ‘‘;
for(i=0;i

\n’;
}
$(this).html(o);
};
[/JS]

Esta función no se diferencia mucho de las que solemos ver en PHP, también tiene varios valores opcionales.
El primer valor es un array con los nombres de los colores en tipo css (nombres predeterminados como “black” o “red” y nombres en hexadecimales como “#000”), el segundo el nombre del campo que almacenará el color seleccionado y el tercero el tamaño del cubo de selección.

Ejemplo para el ID “color_select”:
[JS]
$(document).ready(function(){
$(“#color_select”).colorselect(Array(‘black’, ‘green’, ‘yellow’, ‘orange’, ‘red’, ‘blue’), ‘color’, 20);
});
[/JS]

A continuación dejo un ejemplo de una pequeña pagina para probarlo..
[HTML]


LiveCuadricula




contenido por si el Javascript está desactivado



[/HTML]