on *:JOIN:#scrim:{ if ($regex($address($nick,2),/((\d+).(\d+).(\d+).(\d+))$/)) { checkip $nick $regml(1) } } alias checkip { sockclose apnic sockopen apnic www.apnic.net 80 %whois.nick = $1 %whois.ip = $2- set %ip.ticks. [ $+ [ $1 ] ] $ticks } on *:SOCKOPEN:apnic:{ if ($sockerr) echo -a $v1 var %a = sockwrite -n $sockname var %string = $urlencode_string(searchtext= $+ %whois.ip) %a GET /apnic-bin/whois.pl? $+ %string HTTP/1.0 %a Host: www.apnic.net %a Connection: close ; %a Content-Length: $len(%string) ; %a Content-Type: application/x-www-form-urlencoded %a Accept: */* %a Accept-Charset: * %a Accept-Encoding: * %a Accept-Language: * %a User-Agent: Mozilla/5.0 %a $crlf } alias cap { return $+($upper($left($1-,1)),$lower($right($1-,$calc($len($1-) - 1)))) } on *:SOCKREAD:apnic:{ var %temp sockread -f %temp ;aline @ipinfo %temp if ($regex(%temp,/country:(\s*)(\w+)/i)) { if ($readini(country.ini,abb,$regml(2))) { %whois.country = $cap($readini(country.ini,abb,$regml(2))) } if ($regml(2) != NZ) && ($regml(2) != AU) { .msg chanserv addtimedban #scrim %whois.nick 1w Bad IP: %whois.ip $+ , from %whois.country ( $+ $regml(2) $+ ). } sockclose $sockname } } alias urlencode_string { ; Encodes a whole string of data in the format name1=data1&name2=data2 ; Example: $urlencode_string(name1=test&name2=test2) ; Returns: name1=%74%65%73%74&name2=%74%65%73%74%32 var %a = 1, %string = $1, %output while ($gettok(%string,%a,38)) { tokenize 61 $v1 if (%a != 1) %output = %output $+ & %output = $+(%output,$1,=,$urlencode($2)) inc %a } return %output } alias urlencode { var %a = $regsubex($$1,/([^\w\s])/Sg,$+(%,$base($asc(\t),10,16,2))) return $replace(%a,$chr(32),$chr(43)) } Put the following in country.ini: [abb] AF=AFGHANISTAN AL=ALBANIA DZ=ALGERIA AS=AMERICAN SAMOA AD=ANDORRA AO=ANGOLA AI=ANGUILLA AQ=ANTARCTICA AG=ANTIGUA AND BARBUDA AR=ARGENTINA AM=ARMENIA AW=ARUBA AU=AUSTRALIA AT=AUSTRIA AZ=AZERBAIJAN BS=BAHAMAS BH=BAHRAIN BD=BANGLADESH BB=BARBADOS BY=BELARUS BE=BELGIUM BZ=BELIZE BJ=BENIN BM=BERMUDA BT=BHUTAN BO=BOLIVIA BA=BOSNIA AND HERZEGOWINA BW=BOTSWANA BV=BOUVET ISLAND BR=BRAZIL IO=BRITISH INDIAN OCEAN TERRITORY BN=BRUNEI DARUSSALAM BG=BULGARIA BF=BURKINA FASO BI=BURUNDI KH=CAMBODIA CM=CAMEROON CA=CANADA CV=CAPE VERDE KY=CAYMAN ISLANDS CF=CENTRAL AFRICAN REPUBLIC TD=CHAD CL=CHILE CN=CHINA CX=CHRISTMAS ISLAND CC=COCOS (KEELING) ISLANDS CO=COLOMBIA KM=COMOROS CG=CONGO CD=CONGO, THE DRC CK=COOK ISLANDS CR=COSTA RICA CI=COTE D'IVOIRE HR=CROATIA (local name: Hrvatska) CU=CUBA CY=CYPRUS CZ=CZECH REPUBLIC DK=DENMARK DJ=DJIBOUTI DM=DOMINICA DO=DOMINICAN REPUBLIC TP=EAST TIMOR EC=ECUADOR EG=EGYPT SV=EL SALVADOR GQ=EQUATORIAL GUINEA ER=ERITREA EE=ESTONIA ET=ETHIOPIA FK=FALKLAND ISLANDS (MALVINAS) FO=FAROE ISLANDS FJ=FIJI FI=FINLAND FR=FRANCE FX=FRANCE, METROPOLITAN GF=FRENCH GUIANA PF=FRENCH POLYNESIA TF=FRENCH SOUTHERN TERRITORIES GA=GABON GM=GAMBIA GE=GEORGIA DE=GERMANY GH=GHANA GI=GIBRALTAR GR=GREECE GL=GREENLAND GD=GRENADA GP=GUADELOUPE GU=GUAM GT=GUATEMALA GN=GUINEA GW=GUINEA-BISSAU GY=GUYANA HT=HAITI HM=HEARD AND MC DONALD ISLANDS VA=HOLY SEE (VATICAN CITY STATE) HN=HONDURAS HK=HONG KONG HU=HUNGARY IS=ICELAND IN=INDIA ID=INDONESIA IR=IRAN (ISLAMIC REPUBLIC OF) IQ=IRAQ IE=IRELAND IL=ISRAEL IT=ITALY JM=JAMAICA JP=JAPAN JO=JORDAN KZ=KAZAKHSTAN KE=KENYA KI=KIRIBATI KP=KOREA, D.P.R.O. KR=KOREA, REPUBLIC OF KW=KUWAIT KG=KYRGYZSTAN LA=LAOS LV=LATVIA LB=LEBANON LS=LESOTHO LR=LIBERIA LY=LIBYAN ARAB JAMAHIRIYA LI=LIECHTENSTEIN LT=LITHUANIA LU=LUXEMBOURG MO=MACAU MK=MACEDONIA MG=MADAGASCAR MW=MALAWI MY=MALAYSIA MV=MALDIVES ML=MALI MT=MALTA MH=MARSHALL ISLANDS MQ=MARTINIQUE MR=MAURITANIA MU=MAURITIUS YT=MAYOTTE MX=MEXICO FM=MICRONESIA, FEDERATED STATES OF MD=MOLDOVA, REPUBLIC OF MC=MONACO MN=MONGOLIA MS=MONTSERRAT MA=MOROCCO MZ=MOZAMBIQUE MM=MYANMAR (Burma) NA=NAMIBIA NR=NAURU NP=NEPAL NL=NETHERLANDS AN=NETHERLANDS ANTILLES NC=NEW CALEDONIA NZ=NEW ZEALAND NI=NICARAGUA NE=NIGER NG=NIGERIA NU=NIUE NF=NORFOLK ISLAND MP=NORTHERN MARIANA ISLANDS NO=NORWAY OM=OMAN PK=PAKISTAN PW=PALAU PA=PANAMA PG=PAPUA NEW GUINEA PY=PARAGUAY PE=PERU PH=PHILIPPINES PN=PITCAIRN PL=POLAND PT=PORTUGAL PR=PUERTO RICO QA=QATAR RE=REUNION RO=ROMANIA RU=RUSSIAN FEDERATION RW=RWANDA KN=SAINT KITTS AND NEVIS LC=SAINT LUCIA VC=SAINT VINCENT AND THE GRENADINES WS=SAMOA SM=SAN MARINO ST=SAO TOME AND PRINCIPE SA=SAUDI ARABIA SN=SENEGAL SC=SEYCHELLES SL=SIERRA LEONE SG=SINGAPORE SK=SLOVAKIA (Slovak Republic) SI=SLOVENIA SB=SOLOMON ISLANDS SO=SOMALIA ZA=SOUTH AFRICA GS=SOUTH GEORGIA AND SOUTH S.S. ES=SPAIN LK=SRI LANKA SH=ST. HELENA PM=ST. PIERRE AND MIQUELON SD=SUDAN SR=SURINAME SJ=SVALBARD AND JAN MAYEN ISLANDS SZ=SWAZILAND SE=SWEDEN CH=SWITZERLAND SY=SYRIAN ARAB REPUBLIC TW=TAIWAN, PROVINCE OF CHINA TJ=TAJIKISTAN TZ=TANZANIA, UNITED REPUBLIC OF TH=THAILAND TG=TOGO TK=TOKELAU TO=TONGA TT=TRINIDAD AND TOBAGO TN=TUNISIA TR=TURKEY TM=TURKMENISTAN TC=TURKS AND CAICOS ISLANDS TV=TUVALU UG=UGANDA UA=UKRAINE AE=UNITED ARAB EMIRATES GB=UNITED KINGDOM US=UNITED STATES UM=U.S. MINOR ISLANDS UY=URUGUAY UZ=UZBEKISTAN VU=VANUATU VE=VENEZUELA VN=VIET NAM VG=VIRGIN ISLANDS (BRITISH) VI=VIRGIN ISLANDS (U.S.) WF=WALLIS AND FUTUNA ISLANDS EH=WESTERN SAHARA YE=YEMEN YU=Yugoslavia (Serbia and Montenegro) ZM=ZAMBIA ZW=ZIMBABWE