-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathBlackIP.tcl
711 lines (667 loc) · 34.9 KB
/
BlackIP.tcl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
#######################################################################################################
## BlackIP.tcl 1.8 Copyright 2008 - 2018 @ WwW.TCLScripts.NET ##
## _ _ _ _ _ _ _ _ _ _ _ _ _ _ ##
## / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ / \ ##
## ( T | C | L | S | C | R | I | P | T | S | . | N | E | T ) ##
## \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ \_/ ##
## ##
## ® BLaCkShaDoW Production ® ##
## ##
## PRESENTS ##
## ® ##
########################################### BLACK IP TCL ##########################################
## ##
## DESCRIPTION: ##
## Returns IP address dns, location and organization informations for a nick/IP/hostname. ##
## ##
## Both IPv4 & IPv6 supported. ## ##
## ##
## Tested on Eggdrop v1.8.3 (Debian Linux 3.16.0-4-amd64) Tcl version: 8.6.6 ##
## ##
#######################################################################################################
## ##
## INSTALLATION: ##
## ++ http & tls packages are REQUIRED for this script to work. ##
## ++ Edit the BlackIP.tcl script and place it into your /scripts directory, ##
## ++ add "source scripts/BlackIP.tcl" to your eggdrop config and rehash the bot. ##
## ##
#######################################################################################################
## ##
## CHANGELOG: ##
## - 1.8 version ##
## + added a flood protection settings against those who abuse the use of command. ##
## + added extra stuff for suspicious details as: proxy, tor and spam. ##
## + added extra stuff fo latitude/longitude, mobile and timezone date details. ##
## + added utf-8 support. ##
## + minor bugs fixed. ##
## - 1.7 version ##
## + completely rebuilt in a new style and with another source for IP informations. ##
## + now supports IPv6. ##
## + supports eggdrop version less than 1.8.* ##
## + added multi-languages for every channel: RO, EN, FR, ES & IT. ##
## + minor bugs fixed. ##
## ##
#######################################################################################################
## ##
## OFFICIAL LINKS: ##
## E-mail : BLaCkShaDoW[at]tclscripts.net ##
## Bugs report : http://www.tclscripts.net ##
## GitHub page : https://github.com/tclscripts/ ##
## Online help : irc://irc.undernet.org/tcl-help ##
## #TCL-HELP / UnderNet ##
## You can ask in english or romanian ##
## ##
## Please consider a donation. Thanks! ##
## ##
#######################################################################################################
## ##
## You want a customised TCL Script for your eggdrop? ##
## Easy-peasy, just tell me what you need! ##
## I can create almost anything in TCL based on your ideas and donations. ##
## Email blackshadow@tclscripts.net or info@tclscripts.net with your ##
## request informations and I'll contact you as soon as possible. ##
## ##
#######################################################################################################
## ##
## To activate: .chanset +ip | from BlackTools: .set #channel +ip ##
## ##
## !ip [nick|IP|host] - shows details assigned to that IP address or nick. ##
## ##
## !set iplang [RO|EN|FR|ES|IT] - set a language for output messages. ##
## ##
## !ip version - returns the BlackIP script version. ##
## ##
## Supports: both IPv4 & IPv6. ##
## ##
#######################################################################################################
## ##
## EXAMPLES: ##
## ##
## [request for IP] ##
## <user> !ip 188.209.52.109 ##
## <bot> 188.209.52.109 is located in Netherlands (52.3824, 4.8995) ; Timezone: Europe/Amsterdam ##
## Host: hosted-by.blazingfast.io ; ISP: BlazingFast LLC ; Mobile: false ; Proxy: false ##
## Spam: false ; TOR: false ; Suspicious: false ##
## ##
## [request for hostname] ##
## <user> !ip hosted-by.blazingfast.io ##
## <bot> hosted-by.blazingfast.io is located in Amsterdam, Netherlands (52.3824, 4.8995) ##
## Timezone: Europe/Amsterdam ; IP: 188.209.52.109 ; ; ISP: BlazingFast LLC ; Mobile: false ##
## Proxy: false ; Spam: false ; TOR: false ; Suspicious: false ##
## ##
## [request for nick] ##
## <user> !ip TCLHelp ##
## <bot> Nickname: TCLHelp ; Host: tclscripts.net ##
## <bot> tclscripts.net is located in Munich (Ramersdorf - Perlach), Germany (48.1044, 11.601) ##
## Timezone: Europe/Berlin ; IP: 5.189.157.89 ; ISP: Contabo GmbH ; Mobile: false ##
## Proxy: false ; Spam: false ; TOR: false ; Suspicious: false ##
## ##
#######################################################################################################
## ##
## LICENSE: ##
## This code comes with ABSOLUTELY NO WARRANTY. ##
## ##
## This program is free software; you can redistribute it and/or modify it under the terms of ##
## the GNU General Public License version 3 as published by the Free Software Foundation. ##
## ##
## This program is distributed WITHOUT ANY WARRANTY; without even the implied warranty of ##
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ##
## USE AT YOUR OWN RISK. ##
## ##
## See the GNU General Public License for more details. ##
## (http://www.gnu.org/copyleft/library.txt) ##
## ##
## Copyright 2008 - 2018 @ WwW.TCLScripts.NET ##
## ##
#######################################################################################################
#######################################################################################################
### CONFIGURATION FOR BlackIP.TCL ###
#######################################################################################################
###
# Cmdchar trigger
# - set here the trigger you want to use.
###
set blackip(cmd_char) "!"
###
# set here who can execute the command (-|- for all)
###
set black(ip_flags) "-|-"
###
# Language setting
# - set here the default language of the script
# - supports different languages for every channel
# ( RO / EN / IT / FR / ES )
###
set black(default_lang) "en"
###
# FLOOD PROTECTION
#Set the number of minute(s) to ignore flooders, 0 to disable flood protection
###
set black(ignore_prot) "1"
###
# FLOOD PROTECTION
#Set the number of requests within specifide number of seconds to trigger flood protection.
# By default, 4:10, which allows for upto 3 queries in 10 seconds. 4 or more quries in 10 seconds would cuase
# the forth and later queries to be ignored for the amount of time specifide above.
###
set black(flood_prot) "2:10"
#Use secure connection (https) for host info ? (0-no; 1-yes)
#If you want https, you have to install tls package
# https version (using tls package) have extra informations as: is_spam, , is_tor or is_suspicious
###
set black(ip_secured) "0"
#######################################################################################################
### DO NOT MODIFY HERE UNLESS YOU KNOW WHAT YOU'RE DOING ###
#######################################################################################################
package require http
package require json
###
# Channel flags
###
setudef flag ip
setudef str iplang
###
# Bindings
# - using commands
###
bind pub $black(ip_flags) $blackip(cmd_char)ip black:ip:check
###
if {$black(ip_secured) == "1"} {
package require tls
}
proc black:ip:check {nick host hand chan arg} {
set ip [lindex [split $arg] 0]
if {![channel get $chan ip]} {
return
}
set flood_protect [blackip:flood:prot $chan $host]
if {$flood_protect == "1"} {
set get_seconds [blackip:get:flood_time $host $chan]
blackip:tell $nick $chan 19 [list $get_seconds $nick]
return
}
if {[string match -nocase $ip "version"]} {
blackip:tell $nick $chan 20 [list $nick]
return
}
if {$ip == ""} {
blackip:tell $nick $chan 1 none
return
}
if {![string match -nocase "*:*" $ip] && ![string match -nocase "*.*" $ip]} {
putserv "USERHOST :$ip"
set ::ipchan $chan
set ::ip_search $ip
bind RAW - 302 check:for:nick
return
}
set check_domain [blackip:domain $ip]
if {$check_domain != "0"} {
check:ip $ip $chan 2 [list $check_domain $nick 1]
return
}
set check_dns [blackip:getdns $ip]
if {$check_dns != "0"} {
check:ip $ip $chan 2 [list $check_dns $nick 2]
return
}
check:ip $ip $chan 2 [list 0 $nick 3]
}
###
proc check:for:nick { from keyword arguments } {
global black
set ip $::ip_search
set chan $::ipchan
set hosts [lindex [split $arguments] 1]
set hostname [lindex [split $hosts "="] 1]
regsub {^[-+]} $hostname "" mask
set nickname [lindex [split $hosts "="] 0]
regsub {^:} $nickname "" nick
if {$nick == ""} {
blackip:tell "" $chan 2 $ip
unbind RAW - 302 check:for:nick
return
}
set mask [lindex [split $mask @] 1]
set check_domain [blackip:domain $mask]
if {$check_domain != "0"} {
check:ip $mask $chan 3 [list $check_domain $nick 1]
unbind RAW - 302 check:for:nick
return
}
set check_dns [blackip:getdns $mask]
if {$check_dns != "0"} {
check:ip $mask $chan 3 [list $check_dns $nick 2]
unbind RAW - 302 check:for:nick
return
}
check:ip $mask $chan 3 [list 0 $nick 3]
unbind RAW - 302 check:for:nick
}
###
proc blackip:domain {ip} {
global black
set get_domain ""
set check_ipv4 [regexp {^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$} $ip]
set check_ipv6 [regexp {^([0-9A-Fa-f]{0,4}:){2,7}([0-9A-Fa-f]{1,4}$|((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)(\.|$)){4})$} $ip]
if {$check_ipv4 == "1" || $check_ipv6 == "1"} {
set gethost [catch {exec host $ip 2>/dev/null} results]
regexp {(pointer) (.*)} $results get_domain
if {$get_domain != ""} {
set domain [string trimright [lindex $get_domain 1] "."]
return $domain
} else { return 0 }
} else { return 0 }
}
###
proc blackip:getdns {ip} {
global black
set ipv4 ""
set ipv6 ""
set gethost [catch {exec host $ip 2>/dev/null} results]
set res [lrange [split $results] 0 end]
set inc 0
set llength [llength $res]
for {set i 0} { $i <= $llength} { incr i } {
set word [lindex $res $i]
if {[string match -nocase "*IPv6*" $word]} {
lappend ipv6 [join [lindex $res [expr $i + 2]]]
}
if {[string match -nocase "*address*" $word] && ![string match -nocase "*IPv6*" [lindex $res [expr $i - 1]]]} {
lappend ipv4 [join [lindex $res [expr $i + 1]]]
}
}
if {$ipv4 == "" && $ipv6 == ""} {
return 0
}
return [list $ipv4 $ipv6]
}
###
proc check:ip {ip chan status arg} {
global black
set type [lindex $arg 2]
set reverse_dns 0
set is_secured 0
set domain ""
set ipv4_list ""
set ipv6 ""
set proxy ""
set is_tor ""
set is_spam ""
set is_suspicious ""
set ipv4 ""
set ipv6_list ""
set other_ips ""
set ip_to_check ""
if {$type == "1"} {
set domain [lindex $arg 0]
set reverse_dns 1
set proxy [blackip:proxy_check $ip]
} elseif {$type == "2"} {
set reverse_dns 2
set ips [lindex $arg 0]
set ipv4_list [lindex $ips 0]
set ipv6_list [lindex $ips 1]
if {$ipv6_list != ""} {
if {[llength $ipv6_list] > 1} {
set ipv6 [lindex $ipv6_list 0]
set ipv6_list [lreplace $ipv6_list 0 0]
} else {
set ipv6 $ipv6_list
set ipv6_list ""
}
} else {
if {[llength $ipv4_list] > 1} {
set ipv4 [lindex $ipv4_list 0]
set ipv4_list [lreplace $ipv4_list 0 0]
} else {
set ipv4 $ipv4_list
set ipv4_list ""
}
}
}
set ipv4_list [join $ipv4_list ", "]
set ipv6_list [join $ipv6_list ", "]
if {$reverse_dns == "2"} {
if {$ipv6 != ""} {
set ip_to_check $ipv6
} elseif {$ipv4 != ""} {
set ip_to_check $ipv4
}
} else {
set ip_to_check $ip
}
if {$ipv4_list != ""} {
lappend other_ips $ipv4_list
}
if {$ipv6_list != ""} {
lappend other_ips $ipv6_list
}
set other_ips [join $other_ips ", "]
set data [blackip:data $ip_to_check]
set stat [blackip:json "status" $data]
if {$stat == "fail"} {
blackip:tell "" $chan 16 $ip_to_check
return
}
set region_name [blackip:json "regionName" $data]
set country [blackip:json "country" $data]
set city [blackip:json "city" $data]
set location [join [encoding convertfrom "utf-8" [list $city $region_name $country]] ", "]
set lat [blackip:json "lat" $data]
set lon [blackip:json "lon" $data]
set latlon [join "$lat $lon" ", "]
set timezone [blackip:json "timezone" $data]
set mobile [blackip:getstatus [blackip:json "mobile" $data] $chan]
set org [blackip:json "isp" [encoding convertfrom "utf-8" $data]]
if {$black(ip_secured) == "1"} {
set is_secured 1
set data_secured [blackip:data_secured $ip_to_check]
set suspicious [blackip:json "suspicious_factors" $data_secured]
set proxy [lindex $suspicious 1]
set is_tor [blackip:getstatus [lindex $suspicious 3] $chan]
set is_spam [blackip:getstatus [lindex $suspicious 5] $chan]
set is_suspicious [blackip:getstatus [lindex $suspicious 7] $chan]
}
if {$ip_to_check != "" && $is_secured == "0"} {
set proxy [blackip:proxy_check $ip_to_check]
if {$proxy != "0"} {
set proxy "true"
} else { set proxy "false" }
}
set proxy [blackip:getstatus $proxy $chan]
if {$status == "3"} {
set nickname [lindex $arg 1]
blackip:tell "" $chan 9 [list $ip $nickname]
}
if {$reverse_dns == "1"} {
if {$is_secured == "1"} {
blackip:tell "" $chan 13 [list $ip $location $latlon $timezone $domain $proxy $is_spam $is_tor $is_suspicious $org $mobile]
} else {
blackip:tell "" $chan 6 [list $ip $location $latlon $timezone $domain $org $proxy $mobile]
}
return
} elseif {$reverse_dns == "2"} {
if {$is_secured == "1"} {
blackip:tell "" $chan 12 [list $ip $location $latlon $timezone $ip_to_check $proxy $is_spam $is_tor $is_suspicious $org $mobile]
} else {
blackip:tell "" $chan 5 [list $ip $location $latlon $timezone $ip_to_check $org $proxy $mobile]
}
} else {
if {$is_secured == "1"} {
blackip:tell "" $chan 15 [list $ip $location $latlon $timezone $proxy $is_spam $is_tor $is_suspicious $org $mobile]
} else {
blackip:tell "" $chan 14 [list $ip $location $latlon $timezone $org $proxy $mobile]
}
}
if {$other_ips != ""} {
blackip:tell "" $chan 11 [list $other_ips]
}
}
###
# Credits
###
set blackip(projectName) "BlackIP"
set blackip(author) "BLaCkShaDoW"
set blackip(website) "wWw.TCLScriptS.NeT"
set blackip(email) "BLaCkShaDoW@TCLScriptS.NeT"
set blackip(version) "v1.8 (IPv6 support)"
###
proc blackip:data_secured {ip} {
global black
set link "https://ip-api.io/json/$ip"
http::register https 443 [list ::tls::socket -tls1 1]
set ipq [http::config -useragent "lynx"]
set ipq [::http::geturl $link]
set data [http::data $ipq]
::http::cleanup $ipq
return $data
}
###
proc blackip:data {ip} {
global black
set link "http://ip-api.com/json/$ip?fields=country,regionName,city,lat,lon,timezone,mobile,proxy,query,reverse,status,message,isp"
set ipq [http::config -useragent "lynx"]
set ipq [::http::geturl $link]
set data [http::data $ipq]
::http::cleanup $ipq
return $data
}
###
proc blackip:json {get data} {
global black
set parse [::json::json2dict $data]
set return ""
foreach {name info} $parse {
if {[string equal -nocase $name $get]} {
set return $info
break;
}
}
return $return
}
###
proc blackip:get_other {ip} {
global black
set link "http://ip-api.com/json/$ip?fields=country,regionName,city,lat,lon,timezone,mobile,proxy,query,reverse,status,message,isp"
set ipq [http::config -useragent "lynx"]
set ipq [::http::geturl $link]
set data [http::data $ipq]
::http::cleanup $ipq
set isp [blackip:json "isp" $data]
set mobile [blackip:json "mobile" $data]
if {$isp != ""} { return [list $isp $mobile]} else { return 0 }
}
###
proc blackip:proxy_check {ip} {
global black
set type ""
set link "http://proxycheck.io/v1/$ip"
set ipq [http::config -useragent "lynx"]
set ipq [::http::geturl $link]
set data [http::data $ipq]
::http::cleanup $ipq
set proxy [blackip:json "proxy" $data]
if {$proxy == "yes"} {
return [list $proxy]
} else {
return 0
}
return 0
}
###
proc blackip:tell {nick chan type arg} {
global black
set inc 0
foreach s $arg {
set inc [expr $inc + 1]
set replace(%msg.$inc%) $s
}
set getlang [blackip:getlang $chan]
if {[info exists black(blackip.$getlang.$type)]} {
set reply [string map [array get replace] $black(blackip.$getlang.$type)]
if {$nick != ""} {
putserv "NOTICE $nick :$reply"
} else {
putserv "PRIVMSG $chan :$reply"
}
}
}
###
proc blackip:getstatus {text chan} {
global black
set getlang [blackip:getlang $chan]
switch $text {
true {
return $black(blackip.$getlang.17)
}
false {
return $black(blackip.$getlang.18)
}
}
}
###
proc blackip:getlang {chan} {
global black
set getlang [string tolower [channel get $chan iplang]]
if {$getlang == ""} {
set lang [string tolower $black(default_lang)]
} else {
if {[info exists black(blackip.$getlang.1)]} {
set lang $getlang
} else {
set lang [string tolower $black(default_lang)]
}
}
return $lang
}
###
proc blackip:flood:prot {chan host} {
global black
set number [scan $black(flood_prot) %\[^:\]]
set timer [scan $black(flood_prot) %*\[^:\]:%s]
if {[info exists black(ipflood:$host:$chan:act)]} {
return 1
}
foreach tmr [utimers] {
if {[string match "*blackip:remove:flood $host $chan*" [join [lindex $tmr 1]]]} {
killutimer [lindex $tmr 2]
}
}
if {![info exists black(ipflood:$host:$chan)]} {
set black(ipflood:$host:$chan) 0
}
incr black(ipflood:$host:$chan)
utimer $timer [list blackip:remove:flood $host $chan]
if {$black(ipflood:$host:$chan) > $number} {
set black(ipflood:$host:$chan:act) 1
utimer [expr $black(ignore_prot) * 60] [list blackip:expire:flood $host $chan]
return 1
} else {
return 0
}
}
###
proc blackip:remove:flood {host chan} {
global black
if {[info exists black(ipflood:$host:$chan)]} {
unset black(ipflood:$host:$chan)
}
}
###
proc blackip:expire:flood {host chan} {
global black
if {[info exists black(ipflood:$host:$chan:act)]} {
unset black(ipflood:$host:$chan:act)
}
}
###
proc blackip:get:flood_time {host chan} {
global black
foreach tmr [utimers] {
if {[string match "*blackip:expire:flood $host $chan*" [join [lindex $tmr 1]]]} {
return [lindex $tmr 0]
}
}
}
#Languages
# Romanian
###
set black(blackip.ro.1) "\[BlackIP\] Foloseste: \002!ip\002 \[ip|\002host\002|nickname\]"
set black(blackip.ro.2) "\[\002%msg.1%\002\] nu este online."
set black(blackip.ro.3) "\[\002X\002\] nu am putut rezolva adresa \002%msg.1%\002."
set black(blackip.ro.4) "\[\002X\002\] nu am putut rezolva adresa \002%msg.1%\002 apartinand lui \002%msg.2%\002."
set black(blackip.ro.5) "\002%msg.1%\002 e localizat in \002%msg.2%\002 (%msg.3%) ; \002Fus orar\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Mobil\002: %msg.8% ; \002Proxy\002: %msg.7%"
set black(blackip.ro.6) "\002%msg.1%\002 e localizat in \002%msg.2%\002 (%msg.3%) ; \002Fus orar\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Mobil\002: %msg.8% ; \002Proxy\002: %msg.7%"
set black(blackip.ro.9) "\002Nick\002: %msg.2% ; \002Host\002: %msg.1%"
set black(blackip.ro.11) "\002Alte rDNS\002: %msg.1%"
set black(blackip.ro.12) "\002%msg.1%\002 e localizat in \002%msg.2%\002 (%msg.3%) ; \002Fus orar\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Mobil\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Suspect\002: %msg.9%"
set black(blackip.ro.13) "\002%msg.1%\002 e localizat in \002%msg.2%\002 (%msg.3%) ; \002Fus orar\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Mobil\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Suspect\002: %msg.9%"
set black(blackip.ro.14) "\002%msg.1%\002 e localizat in \002%msg.2%\002 (%msg.3%) ; \002Fus orar\002: %msg.4% ; \002ISP\002: %msg.5% ; \002Mobil\002: %msg.7% ; \002Proxy\002: %msg.6%"
set black(blackip.ro.15) "\002%msg.1%\002 e localizat in \002%msg.2%\002 (%msg.3%) ; \002Fus orar\002: %msg.4% ; \002ISP\002: %msg.9% ; \002Mobil\002: %msg.10% ; \002Proxy\002: %msg.5% ; \002Spam\002: %msg.6% ; \002TOR\002: %msg.7% ; \002Suspect\002: %msg.8%"
set black(blackip.ro.16) "\[X\] \002%msg.1%\002 adresa IP necunoscuta"
set black(blackip.ro.17) "da"
set black(blackip.ro.18) "nu"
set black(blackip.ro.19) "\002%msg.2%\002: Trimiti cereri prea repede. Calmeaza-te si incearca din nou dupa \002%msg.1% secunde\002. Multumesc!"
set black(blackip.ro.20) "\002$blackip(projectName) $blackip(version)\002 realizat de\002 $blackip(author)\002 ($blackip(website))"
# English
###
set black(blackip.en.1) "\[BlackIP\] Use: \002!ip\002 \[ip|\002host\002|nickname\]"
set black(blackip.en.2) "\[\002%msg.1%\002\] is not Online."
set black(blackip.en.3) "\[\002X\002\] unable to resolve address \002%msg.1%\002."
set black(blackip.en.4) "\[\002X\002\] unable to resolve address \002%msg.1%\002 from \002%msg.2%\002."
set black(blackip.en.5) "\002%msg.1%\002 is located in \002%msg.2%\002 (%msg.3%) ; \002TimeZone\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Mobile\002: %msg.8% ; \002Proxy\002: %msg.7%"
set black(blackip.en.6) "\002%msg.1%\002 is located in \002%msg.2%\002 (%msg.3%) ; \002TimeZone\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Mobile\002: %msg.8% ; \002Proxy\002: %msg.7%"
set black(blackip.en.9) "\002Nick\002: %msg.2% ; \002Host\002: %msg.1%"
set black(blackip.en.11) "\002Other rDNS\002: %msg.1%"
set black(blackip.en.12) "\002%msg.1%\002 is located in \002%msg.2%\002 (%msg.3%) ; \002TimeZone\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Mobile\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Suspicious\002: %msg.9%"
set black(blackip.en.13) "\002%msg.1%\002 is located in \002%msg.2%\002 (%msg.3%) ; \002TimeZone\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Mobile\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Suspicious\002: %msg.9%"
set black(blackip.en.14) "\002%msg.1%\002 is located in \002%msg.2%\002 (%msg.3%) ; \002TimeZone\002: %msg.4% ; \002ISP\002: %msg.5% ; \002Mobile\002: %msg.7% ; \002Proxy\002: %msg.6%"
set black(blackip.en.15) "\002%msg.1%\002 is located in \002%msg.2%\002 (%msg.3%) ; \002TimeZone\002: %msg.4% ; \002ISP\002: %msg.9% ; \002Mobile\002: %msg.10% ; \002Proxy\002: %msg.5% ; \002Spam\002: %msg.6% ; \002TOR\002: %msg.7% ; \002Suspicious\002: %msg.8%"
set black(blackip.en.16) "\[X\] \002%msg.1%\002 unknown ip address"
set black(blackip.en.17) "true"
set black(blackip.en.18) "false"
set black(blackip.en.19) "\002%msg.2%\002: You're sending requests too fast. Calm down and try again after \002%msg.1% seconds\002. Thanks!"
set black(blackip.en.20) "\002$blackip(projectName) $blackip(version)\002 made by\002 $blackip(author)\002 ($blackip(website))"
# French
###
set black(blackip.fr.1) "\[BlackIP\] Utilisation: \002!ip\002 \[ip|\002host\002|nickname\]"
set black(blackip.fr.2) "\[\002%msg.1%\002\] n'est pas en ligne."
set black(blackip.fr.3) "\[\002X\002\] incapable de resoudre l'adresse \002%msg.1%\002."
set black(blackip.fr.4) "\[\002X\002\] incapable de resoudre l'adresse \002%msg.1%\002 de \002%msg.2%\002."
set black(blackip.fr.5) "\002%msg.1%\002 se encuentra en \002%msg.2%\002 (%msg.3%) ; \002Fuseau horaire\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Portable\002: %msg.8% ; \002Proxy\002: %msg.7%"
set black(blackip.fr.6) "\002%msg.1%\002 se encuentra en \002%msg.2%\002 (%msg.3%) ; \002TimeZone\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Portable\002: %msg.8% ; \002Proxy\002: %msg.7%"
set black(blackip.fr.9) "\002Nick\002: %msg.2% ; \002Host\002: %msg.1%"
set black(blackip.fr.11) "\002Autre rDNS\002: %msg.1%"
set black(blackip.fr.12) "\002%msg.1%\002 est situe dans \002%msg.2%\002 (%msg.3%) ; \002Fuseau horaire\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Portable\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Soupconneux\002: %msg.9%"
set black(blackip.fr.13) "\002%msg.1%\002 est situe dans \002%msg.2%\002 (%msg.3%) ; \002Fuseau horaire\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Portable\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Soupconneux\002: %msg.9%"
set black(blackip.fr.14) "\002%msg.1%\002 est situe dans \002%msg.2%\002 (%msg.3%) ; \002Fuseau horaire\002: %msg.4% ; \002ISP\002: %msg.5% ; \002Portable\002: %msg.7% ; \002Proxy\002: %msg.6%"
set black(blackip.fr.15) "\002%msg.1%\002 est situe dans \002%msg.2%\002 (%msg.3%) ; \002Fuseau horaire\002: %msg.4% ; \002ISP\002: %msg.9% ; \002Portable\002: %msg.10% ; \002Proxy\002: %msg.5% ; \002Spam\002: %msg.6% ; \002TOR\002: %msg.7% ; \002Soupconneux\002: %msg.8%"
set black(blackip.fr.16) "\[X\] \002%msg.1%\002 adresse IP inconnue"
set black(blackip.fr.17) "vrai"
set black(blackip.fr.18) "faux"
set black(blackip.fr.19) "\002%msg.2%\002: Vous envoyez des demandes trop rapidement. Calmez-vous et reessayez apres \002%msg.1% secondes\002. Merci!"
set black(blackip.fr.20) "\002$blackip(projectName) $blackip(version)\002 fait par\002 $blackip(author)\002 ($blackip(website))"
# Spanish
###
set black(blackip.es.1) "\[BlackIP\] Uso: \002!ip\002 \[ip|\002host\002|nickname\]"
set black(blackip.es.2) "\[\002%msg.1%\002\] no esta en linea."
set black(blackip.es.3) "\[\002X\002\] incapaz de resolver la direccion \002%msg.1%\002."
set black(blackip.es.4) "\[\002X\002\] incapaz de resolver la direccion \002%msg.1%\002 desde \002%msg.2%\002."
set black(blackip.es.5) "\002%msg.1%\002 se encuentra en \002%msg.2%\002 (%msg.3%) ; \002Zona horaria\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Movil\002: %msg.8% ; \002Proxy\002: %msg.7%"
set black(blackip.es.6) "\002%msg.1%\002 se encuentra en \002%msg.2%\002 (%msg.3%) ; \002Zona horaria\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Movil\002: %msg.8% ; \002Proxy\002: %msg.7%"
set black(blackip.es.9) "\002Nick\002: %msg.2% ; \002Host\002: %msg.1%"
set black(blackip.es.11) "\002Otro rDNS\002: %msg.1%"
set black(blackip.es.12) "\002%msg.1%\002 se encuentra en \002%msg.2%\002 (%msg.3%) ; \002Zona horaria\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Movil\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Suspicaz\002: %msg.9%"
set black(blackip.es.13) "\002%msg.1%\002 se encuentra en \002%msg.2%\002 (%msg.3%) ; \002Zona horaria\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Movil\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Suspicaz\002: %msg.9%"
set black(blackip.es.14) "\002%msg.1%\002 se encuentra en \002%msg.2%\002 (%msg.3%) ; \002Zona horaria\002: %msg.4% ; \002ISP\002: %msg.5% ; \002Movil\002: %msg.7% ; \002Proxy\002: %msg.6%"
set black(blackip.es.15) "\002%msg.1%\002 se encuentra en \002%msg.2%\002 (%msg.3%) ; \002Zona horaria\002: %msg.4% ; \002ISP\002: %msg.9% ; \002Movil\002: %msg.10% ; \002Proxy\002: %msg.5% ; \002Spam\002: %msg.6% ; \002TOR\002: %msg.7% ; \002Suspicaz\002: %msg.8%"
set black(blackip.es.16) "\[X\] \002%msg.1%\002 direccion IP desconocida"
set black(blackip.es.17) "verdadero"
set black(blackip.es.18) "falso"
set black(blackip.es.19) "\002%msg.2%\002: Estas enviando solicitudes demasiado rapido. Calmate e intenta de nuevo despues de \002%msg.1% segundos\002. Gracias!"
set black(blackip.es.20) "\002$blackip(projectName) $blackip(version)\002 hecho por\002 $blackip(author)\002 ($blackip(website))"
# Italian
###
set black(blackip.it.1) "\[BlackIP\] Use: \002!ip\002 \[ip|\002host\002|nickname\]"
set black(blackip.it.2) "\[\002%msg.1%\002\] non e online."
set black(blackip.it.3) "\[\002X\002\] incapace di risolvere l'indirizzo \002%msg.1%\002."
set black(blackip.it.4) "\[\002X\002\] incapace di risolvere l'indirizzo \002%msg.1%\002 da \002%msg.2%\002."
set black(blackip.it.5) "\002%msg.1%\002 si trova in \002%msg.2%\002 (%msg.3%) ; \002Fuso orario\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Mobile\002: %msg.8% ; \002Proxy\002: %msg.7%"
set black(blackip.it.6) "\002%msg.1%\002 si trova in \002%msg.2%\002 (%msg.3%) ; \002Fuso orario\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.6% ; \002Mobile\002: %msg.8% ; \002Proxy\002: %msg.7%"
set black(blackip.it.9) "\002Nick\002: %msg.2% ; \002Host\002: %msg.1%"
set black(blackip.it.11) "\002Altro rDNS\002: %msg.1%"
set black(blackip.it.12) "\002%msg.1%\002 si trova in \002%msg.2%\002 (%msg.3%) ; \002Fuso orario\002: %msg.4% ; \002IP\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Mobile\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Sospetto\002: %msg.9%"
set black(blackip.it.13) "\002%msg.1%\002 si trova in \002%msg.2%\002 (%msg.3%) ; \002Fuso orario\002: %msg.4% ; \002Host\002: %msg.5% ; \002ISP\002: %msg.10% ; \002Mobile\002: %msg.11% ; \002Proxy\002: %msg.6% ; \002Spam\002: %msg.7% ; \002TOR\002: %msg.8% ; \002Sospetto\002: %msg.9%"
set black(blackip.it.14) "\002%msg.1%\002 si trova in \002%msg.2%\002 (%msg.3%) ; \002Fuso orario\002: %msg.4% ; \002ISP\002: %msg.5% ; \002Mobile\002: %msg.7% ; \002Proxy\002: %msg.6%"
set black(blackip.it.15) "\002%msg.1%\002 si trova in \002%msg.2%\002 (%msg.3%) ; \002Fuso orario\002: %msg.4% ; \002ISP\002: %msg.9% ; \002Mobile\002: %msg.10% ; \002Proxy\002: %msg.5% ; \002Spam\002: %msg.6% ; \002TOR\002: %msg.7% ; \002Sospetto\002: %msg.8%"
set black(blackip.it.16) "\[X\] \002%msg.1%\002 indirizzo IP sconosciuto"
set black(blackip.it.17) "vero"
set black(blackip.it.18) "falso"
set black(blackip.it.19) "\002%msg.2%\002: Stai inviando richieste troppo velocemente. Calmati e riprova dopo \002%msg.1% secondi\002. Grazie!"
set black(blackip.it.20) "\002$blackip(projectName) $blackip(version)\002 prodotto da\002 $blackip(author)\002 ($blackip(website))"
putlog "\002$blackip(projectName) $blackip(version)\002 coded by\002 $blackip(author)\002 ($blackip(website)): Loaded & initialized.."
#######################
#######################################################################################################
### *** END OF BlackIP TCL *** ###
#######################################################################################################