rendered paste bodyon *: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