. // // 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 ?> ہزارہ نسل کشی: نمک نہ چھڑکیں ،مرہم رکھیں - ھزارہ بین الاقوامی نیٹ ورک

ہزارہ نسل کشی: نمک نہ چھڑکیں ،مرہم رکھیں

تحریر: حسن رضا چنگیزی

پچھلے دنوں کوئٹہ میں دہشت گردوں کے ہاتھوں قتل ہونے والے نوجوان بہن بھائی کی سڑک پر پڑی خون آلود لاشوں کی تصویر دیکھی تو دل پر لگے گھاؤ پھر سے ہرے ہوگئے اور نظروں کے سامنے تین سال قبل رونما ہونے والا وہ واقعہ گھومنے لگا جب عید کے دن دو ہزارہ نوجوانوں کو اسی طرح ایک بارونق سڑک پر قتل کر دیا گیا تھا، جن کی لاشیں اسی طرح کئی گھنٹے سڑک کنارے پڑی رہیں اور بے حس لوگ نظریں پھیر کر آس پاس سے گزرتے رہے۔ ساتھ ہی پچھلے سال اکتوبر میں ہونے والا وہ واقعہ بھی یاد آیا جب لوکل بس میں سوار چار ہزارہ خواتین کو درجنوں افراد کے سامنے شناخت کر کے قتل کر دیا گیا، لیکن اس منظر کو دیکھنے والے بھی سب گونگے اور بہرے بنے رہے۔ سنا تھا کہ بدن پر لگنے والے گھاؤ کبھی نہ کبھی بھر ہی جاتے ہیں۔ لیکن دل اور روح پر لگنے والے زخموں کا کیا علاج ! وہ بھی ایک ایسے معاشرے میں جہاں ہر طرف نمک کے بیوپاری کاندھوں پر نمک کی بوریاں اٹھائے پھرتے ہوں لیکن مرحم کی دکانوں پر بڑے بڑے زنگ آلود تالے لگے ہوں!
بھرا ٹرک بھیج دوں گا تاکہ وہ اپنے آنسو پونچھ سکیں”۔ ساراوان کے چیف، پیپلز پارٹی کے رہنما اور صوبے کے وزیر اعلیٰ کے منہ سے نکلنے والا یہ جملہ زہر میں بجھا ایک ایسا خنجر تھا جس نے نسل کشی اور قتل و غارت سے متاثر ہزارہ قوم کی روحوں تک کو چھلنی کر دیا اور ان کے دلوں پر ایک ایسا گہرا گھاؤ لگایا جس سے آج بھی پہلے دن کی طرح ٹیسیں اٹھ رہی ہیں۔

ایسا ہی ایک زہریلا گھاؤ پیپلز پارٹی کے ایک اور راہنماء آیت اللہ درانی نے بھی لگایا تھا جب انہوں نے کہا تھا کہ” ہزارہ خود ایک دوسرے کو قتل کر رہے ہیں تاکہ مغربی ملکوں میں پناہ حاصل کرسکیں”، اور جون 2014 میں نام ظاہر نہ کرنے کی شرط پر، ایسا ہی ایک زہریلا گھاؤ فرنٹیئر کور کے کسی ریٹائرڈ عہدیدار نے بھی لگایا تھا جب انہوں نے ہیومن رائٹس واچ سے کہا تھا کہ” ہزارہ برادری اپنی حالتِ زار کو ’مبالغے‘ کے ساتھ بیان کرتے ہیں تاکہ ان کو کسی دوسرے ملک میں پناہ مل جائے اور وہ ایران سے بھی مالی اور سیاسی امداد حاصل کر سکیں”۔ اگر پیپلز پارٹی کے ان دونوں راہنماؤں اور عوام کی جانوں کی "حفاظت” پر مامور اس "نامعلوم” عہدیدار کے دلوں میں ہزارہ نسل کشی کا ذرا سا بھی ملال ہوتا یا ان میں ذرہ برابر بھی انسانیت ہوتی تو وہ تسلی کے دو میٹھے بول بول کر ان روتے ہوؤں کے آنسو پونچھ سکتے تھے۔ لیکن انہوں نے ایسا نہیں کیا اور ان کے زخموں پر مرحم رکھنے کے بجائے نمک چھڑکنے کو ترجیح دی!

ہزارہ قوم کا قتل عام ہوتا رہا، ان کے خون سے سڑکیں اور گلیاں لال ہوتی رہیں لیکن ان کے ہمسائے دم سادھے بیٹھے رہے۔ بہت ہوا تو کسی نے ایک چھوٹا سا اخباری بیان داغ دیا اور بس۔ کسی نے ان کے قتل عام کے خلاف سڑکوں پر نکلنے کی زحمت نہیں کی! روز ان کے سامنے بے گناہ لوگوں کی لاشیں گرتی رہیں اور بم دھماکوں میں معصوم لوگوں کے چیتھڑے اڑتے رہے لیکن وہ اس بات کا فیصلہ تک نہ کر سکے کہ کیا قتل ہونے والے اس قابل ہیں کہ ان کے سوگ میں کچھ گھنٹوں کے لیے ہی سہی، کاروبار بند رکھا جائے؟۔ اسلام کے زریں اصولوں اور قبائلی روایات کا ڈھنڈورا پیٹنے والے عوامی نمائندے تو اتنے کٹھور اور سنگدل نکلے کہ انہوں نے کبھی اس بات کی ضرورت ہی محسوس نہیں کی کہ اس منظم ہزارہ نسل کشی کے خلاف اسمبلیوں میں آواز بلند کریں۔ ہاں ان کی یہ مہربانیاں ہمیشہ یاد رکھی جائیں گی کہ انہوں نے اسمبلی کے اجلاسوں میں مقتولین کے ایصال ثواب کے لیے ایک یا دو بار فاتحہ ضرور پڑھی جبکہ ایک آدھ بار اجلاس کا بائیکاٹ بھی کیا۔ ایسے میں پاکستان کے چند گنتی کے صحافیوں اور سوشل میڈیا بلاگرز کے علاوہ سندھ اور پنجاب کی سول سوسائٹی سے تعلق رکھنے والی ان تنظیموں کا دم غنیمت تھا جنہوں نے محض انسانی بنیادوں پراس قتل عام کے خلاف آواز اٹھائی۔

اس لیے جب پچھلے دنوں کوئٹہ میں دہشت گردوں کے ہاتھوں قتل ہونے والے نوجوان بہن بھائی کی سڑک پر پڑی خون آلود لاشوں کا منظر دیکھا تو دل پر لگے زخم پھر سے تازہ ہوگئے۔ لیکن اس بار یہ دیکھ کر خوشگوار حیرت بھی ہوئی کہ بلوچستان سمیت پاکستان بھر میں عوام کی ایک بڑی اکثریت نے اس غیر انسانی واقعے کے خلاف اپنی نفرت کا بھر پور اظہار کیا اور طاقتور سوشل میڈیا پر نہ صرف اس واقعے کی بھرپور مذمت کی بلکہ اس کے خلاف مہم بھی چلائی۔ اور یہی وہ جذبہ تھا جس نے مجروح دلوں کے زخموں پر مرحم رکھنے کا کام کیا۔ یہ الگ بات ہے کہ پہلے کی طرح اس بار بھی دہشت گردوں کے بعض ہمدرد اس واقعے کو غلط رنگ دیتے اور اس کے لیے مختلف تاویلیں گھڑتے نظر آئے۔ کسی نے فرقہ وارانہ لٹریچر کو اس قتل عام کا شاخسانہ قرار دے کر بالواسطہ دہشت گردوں کے عمل پر پردہ ڈالنے کی کوشش کی تو کسی نے شام میں ہونے والی خانہ جنگی کو اس واقعہ کی وجہ قرار دیا۔

ایسے لوگوں سے ایک سیدھا سادہ سوال ہے کہ کیا وہ ایک بھی ایسی مثال پیش کر سکتے ہیں جس سے ثابت ہو کہ کسی بھی قسم کے فرقہ وارانہ لٹریچر کی چھپائی میں کسی ہزارہ کا ہاتھ ہے؟ یا شام میں جاری خانہ جنگی میں آج تک پاکستان بالخصوص بلوچستان سے ایک بھی ہزارہ نے شرکت کی ہو؟ یا پاکستان میں ہونے والا دہشت گردی کا کوئی ایسا واقعہ جس میں کوئی ہزارہ ملوث پایا گیا ہو؟ لہٰذا جھوٹی تاویلیں گھڑ کر معصوم لوگوں کی نسل کشی پر پردہ ڈالنے والے افراد سے دست بستہ عرض ہے کہ اگر وہ بے گناہ اور نہتے مرد، عورتوں اور بچوں کے قتل کے خلاف آواز نہیں اٹھا سکتے تو بے شک نہ اٹھائیں، اگر وہ حکومت اور قانون نافذ کرنے والے اداروں کی نالائقی اور مجرمانہ غفلت پر بات نہیں کر سکتے تو بے شک نہ کریں، اگر وہ اپنی فرقہ وارانہ اور گروہی وابستگی کی وجہ سے ایران اور سعودی عرب کی پراکسی جنگ کے خلاف لب کشائی نہیں کر سکتے تو بھلے نہ کریں، لیکن کم از کم معصوم اور بے گناہ لوگوں کے قتل کے لیے جھوٹے اور بے بنیاد جواز فراہم کر کے ان کے زخموں پر نمک پاشی بھی نہ کریں۔ ہمیں یہ بات جان لینی چاہیے کہ اب دہشت گردی کسی خاص قوم، قبیلے یا مسلک کا مسئلہ نہیں رہا بلکہ یہ ایک ایسی آگ بن چکی ہے جس پر اگر مل جل کر قابو نہیں پایا گیا تو اس کے شعلوں سے کوئی بھی گھر محفوظ نہیں رہے گا۔ اس لیے آئیں مل کر اس آگ کو بجھانے کی کوشش کریں، ایک دوسرے کے دکھ درد کو سمجھیں اور ایک دوسرے کے زخموں پر نمک چھڑکنے کے بجائے مرحم رکھیں۔


Join the Conversation