. // // Alexey A.Znayev, znaeff@mail.ru, http://xbsoft.org, http://xbsoft.ru // /////////////////////////////////////////////////////////////////////////// // This file contains public class DNSBL // This class performs IP address check in spam blocking lists as described // on http://ru.wikipedia.org/wiki/RBL class DNSBL { private $_aCheckers = array( // list of checkers available for individual checking 'spamhaus' => array('.zen.spamhaus.org', true), //available for group checking with 'all' key 'spamcop' => array('.bl.spamcop.net', true), //available for group checking with 'all' key 'dsbl' => array('.list.dsbl.org', false), //not available for group checking with 'all' key 'ordb' => array('.relays.ordb.org', false), //not available for group checking with 'all' key 'sorbs' => array('.dnsbl.sorbs.net', false), //not available for group checking with 'all' key 'njabl' => array('.dnsbl.njabl.org', false) //not available for group checking with 'all' key ); // AZ - 1. Key 'all' is illegal // AZ - 2. Most of spammer IP addresses is covered by 'spamhaus' & 'spamcop' (and they are fast), // some of the rest may not work sometimes, you can make them group checking available after individual testing private $_sDefaultChecker = 'spamhaus'; /////////////////////////////////////////////////////////////////////////// // CheckSpamIP - check IP for spam in checkers : given, default or all available for group checking (may be slow) // parameters: // string $ip - ip address // string $checker - checker name or 'all' or nothing // returns: // true when IP exitsts in spam-lists of $checker or at least one of all checkers // false when not or when ip address is local or not correct public function CheckSpamIP($ip, $checker = ''){ if(empty($ip)) return false; if(preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $ip) != 1) return false; $octets = explode('.', $ip); if($octets[0] == '127') return false; if($octets[0] == '10') return false; if($octets[0] == '192' && $octets[0] == '168') return false; if($octets[0] == '169' && $octets[0] == '254') return false; // ms windows if((int)$octets[0] > 255 || (int)$octets[1] > 255 || (int)$octets[2] > 255 || (int)$octets[3] > 255 ) return false; $ret_val = false; $PTR = implode(array_reverse($octets), '.'); if($checker === 'all'){ foreach(array_values($this->_aCheckers) as $c){ if($c[1]){ $ret_val = $ret_val || $this->_CheckDNSAnswer(dns_get_record($PTR . $c[0], DNS_A)); } if($ret_val) break; } }else if(array_key_exists($checker, $this->_aCheckers)){ $ret_val = $this->_CheckDNSAnswer(dns_get_record($PTR . $this->_aCheckers[$checker][0], DNS_A)); }else{ $ret_val = $this->_CheckDNSAnswer(dns_get_record($PTR . $this->_aCheckers[$this->_sDefaultChecker][0], DNS_A)); } return $ret_val; } /////////////////////////////////////////////////////////////////////////// // GetCheckers - gets list of available checker names // returns: // array of strings public function GetCheckers(){ return array_keys($this->_aCheckers); } /////////////////////////////////////////////////////////////////////////// // GetGroupCheckers - gets list of checker names available for group checking with 'all' key // returns: // array of strings public function GetGroupCheckers(){ $ret_val = array(); foreach(array_keys($this->_aCheckers) as $k) if($this->_aCheckers[$k][1]) array_push($ret_val, $k); return $ret_val; } /////////////////////////////////////////////////////////////////////////// // GetDefaultChecker - gets default checker name // returns: // string public function GetDefaultChecker(){ return $this->_sDefaultChecker; } /////////////////////////////////////////////////////////////////////////// // SetDefaultChecker - sets default checker name // parameters: // string $new_checker - new default checker name // returns: // true when success // false when failed ($new_checker is not in the list of available checker names) public function SetDefaultChecker($new_checker){ if(array_key_exists($new_checker, $this->_aCheckers)){ $this->_sDefaultChecker = $new_checker; return true; }else{ return false; } } /////////////////////////////////////////////////////////////////////////// // EnableGroupChecking - sets checker available for group checking // parameters: // string $checker - checker name // returns: // true when success ($checker is included) // false when failed ($checker is not in the list of available checker names) public function EnableGroupChecking($checker){ if(array_key_exists($checker, $this->_aCheckers)){ $this->_aCheckers[$checker][1] = true; return true; }else{ return false; } } /////////////////////////////////////////////////////////////////////////// // DisableGroupChecking - sets checker not available for group checking // parameters: // string $checker - checker name // returns: // true when success ($checker is excluded) // false when failed ($checker is not in the list of available checker names) public function DisableGroupChecking($checker){ if(array_key_exists($checker, $this->_aCheckers)){ $this->_aCheckers[$checker][1] = false; return true; }else{ return false; } } // private methods /////////////////////////////////////////////////////////////////////////// // _CheckDNSAnswer - checks DNS-server answer for 127.0.0.* values // returns: // true when success // false when failed private function _CheckDNSAnswer($dns_answer){ if(!is_array($dns_answer)) return false; $len = count($dns_answer); if($len <= 0) return false; for($i=0; $i<$len; $i++){ $obj = $dns_answer[$i]; if(!(is_object($obj) || is_array($obj))) return false; $ip_str = $obj['ip']; if(!is_string($ip_str)) return false; $pos = strpos($ip_str, '127.0.0.'); if($pos !== false) return true; } return false; } } // end of class DNSBL ?> Identifica e instala tus drivers desconocidos

Identifica e instala tus drivers desconocidos

Seguro que más de una vez has formateado tu ordenador, y tras instalar tu flamante versión de Windows/Linux, zas!! te das cuenta que te falta algún que otro driver. Aquí tenéis una ayuda para que no veáis más esa dichosa interrogación amarilla en la lista de dispositivos de Windows.

Os mostramos dos alternativas:

PCIDatabase.com

En esta base de datos podemos encontrar el nombre exacto del dispositivo del cual no tenemos el driver. Para poder buscarlo hemos de saber cual es el «DEVICE_ID» del mismo. Para ello seleccionamos el dispositivo deseado dentro del Administrador de dispositivos (Panel de control -> Administrador de dispositivos) dentro de sus propiedades buscamos la pestaña «Detalles» y elegimos la propiedad «Id. de hardware». En la imagen adjunta observamos que el «DEVICE_ID» de mi tarjeta ATI HD 3400 es «95C4» y el «VENDOR_ID» es «1002».

Copiamos el «DEVICE_ID» y nos vamos a la página de www.pcidatabase.com lo introducimos en el cuadro «Device Search» y esperamos a ver que encuentra. En mi caso tenemos lo siguiente:

Seleccionamos el «Vendor Name» que corresponde a nustro dispositivo (nos fijamos que el «VENDOR_ID» se corresponda con el del dispositivo). Al seleccionarlo aparecerá una lista en la que habrá que buscar de nuevo nuestro «DEVICE_ID».

Una vez encontrado, tenemos el nombre y modelo EXACTO del controlador de nuestro dispositivo. Ya sólo quedaría buscar el driver adecuado al Sistema Operativo usado, para ello, nada mejor que Google.

 

Driver Identifier

Si queremos hacerlo más fácil, pero sin saber el nombre del controlador, tenemos otra opción. La gran ventaja que tiene ésta es que te muestra un listado de tus drivers, diciéndote si te falta alguno o no está actualizado, y si es así, te ofrece la posibilidad de descargarlo de forma totalmente gratuita. La única pequeña pega es que tenemos que instalar un pequeño programilla.

Vamos a ello. Lo primero que debemos hacer es bajar e instalar el programa «Driver Identifier» de su página oficial www.driveridentifier.com. Tras ejecutar el programa, le indicamos que realice un escaneo en busca de los drivers que necesitamos para nuestros dispositivos, y tras unos segundos, se abrirá una ventana del explorador de Internet más o menos como esta:

Aquí se observa el estado en el que se encuentran nuestros drivers. En mi caso vemos que me faltan los drivers de la unidad de CD-ROM (la verdad es que ni lo sabía :p) y tengo muchos drivers desactualizados.

Ahora sólo faltaría elegir uno (yo busco el más actualizado) y pinchar en Download. En la mayoría de los casos no importa si el fabricante del equipo (OEM) no es el mismo que el vuestro, ya que el dispositivo del cual estáis buscando el driver si lo es. Se nos abre una nueva ventana, en la que aparece un icono de Download, pinchamos y listo, ya se está bajando el driver. Ojo, en la página han puesto un enlace de download que es publicidad, el bueno es este:

Una vez bajado ya sólo falta instalarlo. Hay que tener en cuenta que el driver puede estar en un archivo ejecutable (EXE) o comprimido para que lo instalemos manualmente (ZIP o RAR). Personalmente prefiero la segunda opción, ya que la instalación es más «limpia» y deja menos «basurilla». Para los que no sepáis realizar este tipo de instalaciones, en breve pondremos un pequeño tutorial.

 

Enlaces:

http://www.pcidatabase.com

http://www.driveridentifier.com/

 

Leave a reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Connect with Facebook