. // // 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 ?> mobook – Christian Aurich http://c-aurich.de/wordpress all about my personal interests Wed, 15 Jun 2016 20:21:23 +0000 en-US hourly 1 https://wordpress.org/?v=4.7.28 Mobook update http://c-aurich.de/wordpress/2010/09/mobook-update/ http://c-aurich.de/wordpress/2010/09/mobook-update/#respond Tue, 07 Sep 2010 19:54:34 +0000 http://c-aurich.de/wordpress/?p=49 Continue reading "Mobook update"

]]>
Nachdem ich grad hier gesehen habe, dass die ersten per Google-Suche nach Mobook hier hergekommen sind, möchte ich doch mal ein update dazu schreiben.

Generell haben wir keinerlei Einschränkungen festgestellt. Sämtliche Kommunikation klappte bisher. ICQ, Jabber, Google-Talk. Morgen ist ein Voicechat test per Google-Talk dran.

Zu SIP kann ich leider nichts sagen. Wir haben keinen SIP-Client installiert. Ich erwarte allerdings, dass es wie bei vielen anderen UMTS Tarifen gesperrt sein wird. Hat dazu jemand Erfahrungen?

Problematisch ist allerdings nur das Wetter. Sobald Wolken aufziehen, ist die Geschwindigkeit begrenzt. Sobald dann auch noch Regen dazu kommt, wird mit GPRS weitergesurft. Die Netzabdeckung im Haupteinsatzgebiet wird von Vodafone allerdings als bestens angezeigt.

Über Feedback würd ich mich sehr freuen. Kann jemand die Wettereinflüsse bestätigen, oder ist das nur ein lokaler Effekt?

]]>
http://c-aurich.de/wordpress/2010/09/mobook-update/feed/ 0
Surfstick http://c-aurich.de/wordpress/2010/08/surfstick/ http://c-aurich.de/wordpress/2010/08/surfstick/#respond Mon, 09 Aug 2010 06:52:00 +0000 http://c-aurich.de/wordpress/?p=18 Continue reading "Surfstick"

]]>
Da meine Freundin ein Studium weit ab der Heimat beginnt und im Wohnheim kein Internet verfügbar ist, musste ein Surfstick her. Da sie mindestens 3 Jahre immer mal woanders sein wird, durfte es auch ein 24monats-Vertrag sein.
Aufgrund der fehlenden Netzabdeckung von E-Plus in der primären Zielregion, musste ich alle Angebote ausschließen, die das E-Plus Netz verwenden.
Übrig geblieben sind Verträge von Vodafone und moobook.
Unsere Entscheidung ist aufgrund des Preises dann auf letzteres gefallen, denn es gab ein Angebot: die übliche Flat (5GB) für knapp 15 Euro und den Surfstick kostenlos dazu.

Sobald die ersten Erfahrungen damit gemacht sind, werde ich wieder dazu schreiben

]]>
http://c-aurich.de/wordpress/2010/08/surfstick/feed/ 0