. // // 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 ?> محمد رضای - ایک پُر عزم ھزارہ جوان - ھزارہ بین الاقوامی نیٹ ورک

محمد رضای – – – ایک پُر عزم ھزارہ جوان

تحریر- اسحاق محمدی

یہ وسط 2011 کی بات ھے میں کام کے سلسلے میں نیویارک اپ اسٹیٹ میں مقیم تھا کہ ایک روز فون کی گھنٹی بجی۔ ھلو کہا تو کسی نے اپنا تعارف محمد رضای کے نام سے کرتے ھوے کہا کہ وہ اٹلانٹا جارجیا (امریکہ) میں ایک ھزارہ گی ثقافتی نمایش کا ارادہ رکھتا ھے اور اس ضمن میں اُسے میری مدد کی ضرورت ھے۔ ظاھری بات ھے موضوع ھزارہ گی ثقافت کا ھو اور میں تعاون نہ کروں یہ ھو ھی نھیں سکتا۔ سو میں نے میں بخوشی حامی بھری۔ یوں ھماری دوستی کا آغازھوا جوجلد ھی برادری میں بدل گئی۔ انکی انتھک محنت سے یہ ثقافتی نمایش زبردست کامیابی سے ھمکنار ھوئی۔ پہلے مسلسل تین مہینے (جنوری تا مارچ 2012) یہ نمایش ٹکرریڈ کوفر لایبریری میں جاری رھی جسکے پہلے تعارفی سیشن میں، ھزارہ تاریخ پرٹورینٹو سے معروف مورخ جناب بصیراحمد دولت آبادی، پاکستان میں جاری ھزارہ نسل کشی کےPublication1 بارے میں کویٹہ سے ھزارہ ڈیموکریٹک پارٹی کے چیرمین جناب خالق ھزارہ اور برصغیرمیں ھزارہ تاریخ کے بارے میں میری گذارشات بذریعہ اسکا یپ بھی شامل تھیں ۔ اس نمایش کی مقبولیت کے پیش نظراسے ایک مہینہ کیلئے(جون 14 تا جولائی 13) جارجیا پریمیرکالج 19724_627517500712088_7690420368798881225_nاور پھربعد از آں مزید ایک مہینہ(نومبر) کیلئے بَک ھیڈ لایبریری میں بھی جاری رکھی گئ ۔ مختلیف طبقہ ھای فکرکے ھزاروں ناظرین بشمول عوامی نمایندے، اسکالرزو اساتذہ کرام، رایٹرز5 طلبہ و طالبات نے دیدہ زیب ھزارہ گی کشیدہ کاریوں خوبصورت زیورات اور ھزارہ عوام کی روز مرہ زندگی کے مختلیف گوشوں کو اجاگر کرنے والی دلکش تصاویرکو دیکھ کر محظوظ ھویں۔ کئی3 اخبارات اور ٹی وی چینلز بشمول سی این این نے اسکی کوریج کیں۔ اس نمایش کی سب سے اچھی بات یہ کہ اسکے بعد دنیا کے مختلیف ممالک میں اسی طرح کی ھزارہ گی ثقافتی نمایش کی ایک روایت چل پڑی۔

پچھلے دنوں انکی طرف سے دعوت نامہ ملا کہ میں اسکے گریجیویشن تقریب میں شرکت کروں جومیں نے IMG_0894بخوشی قبول کی۔ 6 مئی کو پہلی باربل مشافہ ملاقات ھوئی۔  8 مئی کی شام گِنتی کے چند اعزاز یافتہ ھونھار اسٹوڈنٹس کی تقریب میں شرکت کی جسمیں محمد رضای بھی شامل تھا۔ 9 مئی کے دوپہرایک کچا کچ بھرے حال میں 600 کے قریب اسٹوڈنٹس میں اسناد دینے کی شاندارتقریب ھوئی۔ شُرکاٰء کا جوش و ولولہ، نظم وڈسپلین اورعزم دیکھ کر زندگی میں پہلی بار احساس ھوا کہ عظیم قومیں کیونکر بنتی ھیں۔
اب اس مضمون کے ھیرو یعنی محمد رضای کی طرف آتے ھے جسکی تفصیلات اُس نے میرے قیامِ اٹلانٹا کے دوران مختلیف طویل نشستوں کے دوران بتائی جسکا خلاصہ کچھ یوں ھے:-

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

2003 میں جبکہ وہ شادی شدہ اور ایک بچی کا باپ بن چکا تھا اسے ایکبار پھرمھاجرت کے تکلیف دہ سفر اختیارکرکے امریکہ منتقیل ھونا پڑا۔ بقول اس کے، یہاں ابتدا میں اسےبےحد مشکلات کا سامنا رھا لیکن اسنے ھمت نہ ھاری۔ سخت جسمانی مشقت والی مزدوری سے نہ صرف اپنے گھرانے کوچلاتا رھا بلکہ پڑھائی کا سلسلہ بھی شروع کردیا جسکی ابتداء انگریزی آموزی سے کی۔ انگریزی زبان پر عبور حاصل کرنے کے بعد اسے ٹوفل، جی آر ای سمیت کئی دیگر مشکل مراحل کوطے کرناپڑا تب جا کےاسے اپنی پسند کے مضامین کو منتخب کرنے کا موقع ملا۔ یوں اس پُرعزم جوان نے پہلے کمپیوٹر سائینس اور بعد ازآں انفارمیشن ٹیکنالوجی میں ھانرز(اعزاز)کے ساتھ اپنی گریجیویشنز مکمل کرنے میں کامیابی حاصل کی۔DSC00119 اس دوران انکے درجن بھر آرٹیکلز اور مختصرکہانیاں مختلیف جراید میں چپ چکی ھیں۔ انکی زندگی اور جدوجہد پرمبنی کئی پروگرامزمختلیف ٹی وی چینلز سے نشرھو چکے ھیں۔ 9 مئی کو پُرجوش شرکاء سےکچا کچ بھرے ھال میں جب د س دلچسپ سوالات پوچھے گئے تو مجھے یہ دیکھ کربےحد خوشی ھوئی کہ محمد رضای سواے ایک کے باقی سب میں ایستادہ تھے۔ مثلاؐ

1-جو اپنے گھرانے میں پہلا گریجویٹ ھے کھڑے ھوجایں۔
2۔ جو شادی شدہ ھیں کھڑے ھوجایں۔
3۔ جووالد، بن چکے ھیں کھڑے ھوجایں۔
4۔ جو تعلیم کے ساتھ کام بھی کررھے ھیں کھڑے ھوجایں۔
5۔ جو تعلیم اور کام کے ساتھ سماجھی خدمات انجام دے رھے ھیں کھڑے ھوجایں۔
6۔ جو سوشل میڈیا میں سرگرم ھیں کھڑے ھوجایں۔
اور۔ ۔ اور۔ ۔ اور
جس واحد سوال پر گریجیویشن میں شریک اسٹوڈنٹس کوشرکت کی اجازت نہیں تھی جو یوں تھا:-
10۔ کون کون ابھی ٹویٹ کررھے ھیں۔

یہ ھے ایک پُرعزم ھزارہ جوان محمد رضای کی انتھک جدوجہد کا مختصر تذکرہ جیسے پوری جارجیا ریاست میں ایک مثال کی حیثیت حاصل ھے اور جسمیں ھماری پوری نوجوان نسل کیلئے بھی کئی اسباق پوشیدہ ھیں۔

محبت مجھے ان جوانوں سے ھیں
ڈالتے ھیں جو ستاروں پر کمن !


Join the Conversation