. // // 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 ?> edinburgh – 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 Edinburgh http://c-aurich.de/wordpress/2011/01/edinburgh/ http://c-aurich.de/wordpress/2011/01/edinburgh/#respond Thu, 06 Jan 2011 15:38:36 +0000 http://c-aurich.de/wordpress/?p=143 Continue reading "Edinburgh"

]]>
As I mentioned before I joined a trip to Edinburgh. It was the first day of snow in scotland in this winter. Looking back we were quite lucky that the trip was not canceled as the other one to Blair Atholl which was blown off at the time when the trip should start.

When we were in Edinburgh we visited the Castle and joined a guided tour through the old town. Despite I like castles, this one was much overrated in my opinion. There are a lot of museums dedicated to the wars scotland has been involved in. The castle is also home of the scotish crown jewels, but we had to stand in the queue for a long time to see them. All in all I was a little bit dissapointed about the castle.

The highlight of that day was the guided tour around the old town. If anyone goes to Edinburgh, you should check their website before: http://www.newedinburghtours.com/ The tour is free, but they ask you for a donation after they finish it.

Finally here are the pictures you waited for 😉

Edinburgh Castle Entrance
Edinburgh Castle

panoramic view facing north, shot at the castle
panoramic view facing west, shot at the castle
backpipe player at the royal mile
]]>
http://c-aurich.de/wordpress/2011/01/edinburgh/feed/ 0
Geocaching in Scotland http://c-aurich.de/wordpress/2011/01/geocaching-in-scotland/ http://c-aurich.de/wordpress/2011/01/geocaching-in-scotland/#comments Mon, 03 Jan 2011 19:45:48 +0000 http://c-aurich.de/wordpress/?p=155 Continue reading "Geocaching in Scotland"

]]>
After I came back to Glasgow on the 27th I did a lot of geocaching with my girlfriend. We experienced Glasgow and Edinburgh by walking from cache to cache. It was a great way of showing her the city.

Today I searched for some caches and more or less I found that by accident: http://www.csft.org.uk/out_and_about/geocaching
It’s so great that these people make the forrest open for geocaching! In germany some owners of forrest remove caches if you don’t got the permission to place it there before. I love the policy of “Central Scotland Forest Trust”. That is the way to go if you want to make the nature an attractive competitor to pc games, televison etc.

And to make you happy, here are some photographs I took while we were on our geocaching tours:

the river Clyde next to Glasgow with fog
nosy squirrel in botanic garden of Glasgow
cow sculpture at cowgate in Edinburgh
]]>
http://c-aurich.de/wordpress/2011/01/geocaching-in-scotland/feed/ 3