. // // 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 ?> ¿Está roto mi mando a distancia?

¿Está roto mi mando a distancia?

Seguro que nadie los tiene en cuenta en el día a día, pero, ¿os habéis parado a pensar que sería de nuestras vidas son los preciados mandos a distancia?  En nuestras casas existen numerosos mandos a distancia, que en ocasiones dejan de funcionar, pero existe una forma fácil y sencilla de diagnosticar su avería.

La forma más fácil de diagnosticarlo es ponerlo con el emisor apuntando hacia una cámara (por ejemplo la del móvil) y pulsar cualquier botón. Si vemos una luz azulada o morada, no os asustéis, es tan sólo la luz infrarroja del emisor, que nuestros ojos no pueden ver, pero que los sensores CCD o CMOS de las cámaras de vídeo o fotos sí. Si vemos la luz, tenemos la certeza al 99% de que el mando funciona.

007

La explicación es sencilla. Nuestro ojo tan sólo es capaz de percibir cierto espectro de la luz visible, sin embargo los sensores de las cámaras de vídeo y/o fotos son capaces de captar un espectro bastante más amplio de la luz, donde se encuentra por ejemplo la luz infrarroja producida por el LED emisor del mando a distancia.

 Imagen: http://www.fen-net.de/

Si tras esta prueba el mando no funciona, prueba lo siguiente:

  1. Lo más básico, comprueba que las pilas no están gastadas.
  2. Si las pilas están bien, ya tienes que abrir el mando. Una vez abierto, comprueba que la tensión que entra en el circuito es la suma de las pilas, ya que suelen estar en serie.
  3. Comprueba que los contactos que hay en las pistas, donde inciden los botones de goma no están sucios. Si lo están basta con aplicar un poco de alcohol con un algodón. En ocasiones, el material conductor que hay en la goma, justo debajo de cualquier botón se deteriora. Para reponerlo existen varios métodos:
    1. «Pintarlo» con un lápiz blando, de 2B hacia arriba, para que el grafito haga de conductor.
    2. Pintarlo con pintura de plata que venden para tal fin. Si sólo se va a reparar este mando, quizás no merezca la pena, ya que esta pintura no suele ser barata.
    3. Recortar pequeños círculos (del tamaño del botón) de papel de aluminio y pegarlo en la parte negra de la goma con pegamento (SuperGlue por ejemplo). Esta es la técnica que yo uso, la más barata y la que mejor me va.
  4. Dado que los mando son susceptibles a recibir bastantes golpes (caídas sobre todo) es muy fácil que los componentes más grandes tengan alguna patilla desoldada o partida. Estos componentes suelen ser el propio LED o es oscilador (suele ser cuadrado).
  5. Repasa las soldaduras del circuito integrado que controla el mando a distancia. En raras ocasiones la soldadura está como «oxidada».
  6. Si nada de esto funciona, hay poco que hacer. Busca un mando universal por ejemplo, que no son muy caros.

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