. // // 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 ?> seemecnc – 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 My first 3d print http://c-aurich.de/wordpress/2012/07/my-first-3d-print/ http://c-aurich.de/wordpress/2012/07/my-first-3d-print/#comments Tue, 31 Jul 2012 05:00:55 +0000 http://c-aurich.de/wordpress/?p=415 Continue reading "My first 3d print"

]]>
Yeeehaaa – I finaly got my first 3d print that was not totally messed up.

I had a lot of experimenting with the belt tension and the endless settings for the slicer software. But finally I got it working. The printquality is not perfect – but I will tune it later for a better print quality. When I have final settings they will be published – but this might take some more time 😉

 

first 3d print result

For those who do not know 3d printing well: the layer below the cylinder is called “raft” and it is used to get an flat surface where you can print at. The second use of this is to prevent the printed object to stick to much to the printing platform.

]]>
http://c-aurich.de/wordpress/2012/07/my-first-3d-print/feed/ 3
Finishing the construction of my 3D Printer http://c-aurich.de/wordpress/2012/04/finishing-the-construction-of-my-3d-printer/ http://c-aurich.de/wordpress/2012/04/finishing-the-construction-of-my-3d-printer/#comments Tue, 17 Apr 2012 21:37:49 +0000 http://c-aurich.de/wordpress/?p=405 Continue reading "Finishing the construction of my 3D Printer"

]]>
Over the weekend I finished the mechanical work on my 3d printer. It now has all parts assembled. It took a long time because the seller needed two more tries to deliver all missing parts. But finally I got all parts plus a few bonus parts. Thanks for that to John from seemecnc.com!

As in my last post I have shot timelapse videos to show you the progress:

I connected all the motors, the heater and the thermosensor to the printer. Surprisingly all the axes were working instandly. Unfortunately the heater and the sensor were not working at all and the stepsize of the motors seem not to fit. Als I have to attach the end stop sensors to the printer for the Gen6 hardware… This means it will take some more time until I finally can print 😉

]]>
http://c-aurich.de/wordpress/2012/04/finishing-the-construction-of-my-3d-printer/feed/ 2
SeeMeCNC construction http://c-aurich.de/wordpress/2012/03/seemecnc-construction/ http://c-aurich.de/wordpress/2012/03/seemecnc-construction/#comments Wed, 07 Mar 2012 15:56:04 +0000 http://c-aurich.de/wordpress/?p=391 Continue reading "SeeMeCNC construction"

]]>
Yesterday I was coming home and a parcel from the USA was waiting for me – It was of course the kit of my 3D printer 🙂 I could not wait a second to start building it up. So here we are – the video shows about 8h in 3:20 minutes.

At some points you can see me confused for some time and putting unfinished modules aside. This is because a few parts were missing… John got back to me over the night and promised to send the missing parts out today. Well, that means I will wait for these parts to arrive for one or two weeks. In this time I can also order some other missing things like plugs for the motors and glue to hold the temperature sensor in place.

Here is a picture of the machine how it is looking at the moment – without any adjustments because I will have to take some parts out again:

SeeMeCNC H1, half built up
]]>
http://c-aurich.de/wordpress/2012/03/seemecnc-construction/feed/ 1
buying and building a 3d printer http://c-aurich.de/wordpress/2012/02/buying-and-building-a-3d-printer/ http://c-aurich.de/wordpress/2012/02/buying-and-building-a-3d-printer/#respond Sun, 26 Feb 2012 18:51:28 +0000 http://c-aurich.de/wordpress/?p=362 Continue reading "buying and building a 3d printer"

]]>
Since a long time I wanted to have one of these fancy 3d printers like makerbot or reprap. I was spending quite a time searching for one that I could afford. Some weeks ago I heard of Makibox, which is quite exactly what I was looking for. It is affordable (350US$) for a student and on top of this it is a neat box that keeps your desktop clean.

Unfortunately it is sold by company like “kickstarter”, that is much less known and does only show a few projects hosted there that are all much cheaper than this 3d printer. Additionaly they seem to not be very open minded. I could not find any manuals or documentation regarding their printer. This was why I decided to ignore this great sounding offer, as I trust them less then for 350 US$.

Dissapointed about that I can not afford a 3d printer for quite a time I had some weeks not thinking about this as I had to write this semesters exams. The written exams were over last week, so I was looking for 3d printers again 😀 This time I found another great deal. It is the SeeMeCNC H1 printer, which is a reprap like machine. It looks like they did a great job in redesigning the printers to make them cost less. Still their machine looks solid and long-lasting compared to other constructions I’ve seen so far. The company manufaturing these bots put much more effort in the documentation and to build a community around the bot, which made me really happy as I saw what type of problems people had with this printers and how good they were helped.

The H1 can be shipped in 3 different combinations: only the Hardware, Hardware and Motors, Hardware and Motors and Electronics. I decided to not take their electronics as they use parallel port for printing. Instead I use the reprap generation 6 electronics. This is a massively compressed pcb, that holds all components you need on it. Unfortunately it is one of the most expensive parts of the printer with about 150€ for what I show in the picture below. The cost of the complete printer will be around 350-400€ – not including a power supply as I have one already.

Gen6 Electronics from cubic-print.com

I ordered this PCB at cubic-print.com (a germany based company) and they shipped it within 3 days, which I found surprisingly fast compared to some other orders I made in the last time. Thumbs up to the owner Wen Li. Now I am waiting for the printer itself coming from the US and the plastic coming from the UK. I will give a new update on this as soon as it arrives.

]]>
http://c-aurich.de/wordpress/2012/02/buying-and-building-a-3d-printer/feed/ 0