All pastes #271298 Raw Edit

Mine

public text v1 · immutable
·published 2006-12-08 03:53 UTC
rendered paste body
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