mirror of
git://git.acid.vegas/archive.git
synced 2024-11-22 08:06:40 +00:00
moved stuff around
This commit is contained in:
parent
4474730228
commit
997720c5d4
@ -84,8 +84,9 @@ if __name__ == '__main__':
|
|||||||
with open(path, 'rb') as art_file:
|
with open(path, 'rb') as art_file:
|
||||||
data = art_file.read()
|
data = art_file.read()
|
||||||
enc = chardet.detect(data)['encoding']
|
enc = chardet.detect(data)['encoding']
|
||||||
for line in IRC2ANSI(data.decode(enc)).split('\n'):
|
lines = IRC2ANSI(data.decode(enc)).split('\n')
|
||||||
print(line)
|
for line in lines:
|
||||||
|
print(line + ' ' + str(len(line)))
|
||||||
time.sleep(0.05)
|
time.sleep(0.05)
|
||||||
|
|
||||||
if os.path.isdir(option):
|
if os.path.isdir(option):
|
||||||
|
15
bots/blackhole/README.md
Normal file
15
bots/blackhole/README.md
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
# blackhole
|
||||||
|
A bot mitigation system for the Internet Relay Chat (IRC) protocol.
|
||||||
|
|
||||||
|
###### Information
|
||||||
|
The entire blackhole system works on IRSSI connections across different boxes.
|
||||||
|
|
||||||
|
The honeypot connections will message the blackhole connection the nick of anyone who does a CTCP, DCC, INVITE, or Private Message.
|
||||||
|
|
||||||
|
The blackhole bot will kill anyone who triggers the honeypots, it will also kick anyone who masshilights or hilights a honeypot.
|
||||||
|
|
||||||
|
Honeypot nicks and hosts need to be added to the 'triggers' file and reloaded on the blackhole connection.
|
||||||
|
|
||||||
|
Make sure you do `chmod -w triggers` on the honypot's `triggers` file to prevent accidental removal of triggers.
|
||||||
|
|
||||||
|
You can change the `/timer add limit 300 /alimit` line in the blackhole startup file to `/timer add limit 300 /acslimit` to use ChanServs mode lock feature.
|
4
bots/blackhole/blackhole/.irssi/certs/.gitignore
vendored
Normal file
4
bots/blackhole/blackhole/.irssi/certs/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# Ignore everything in this directory
|
||||||
|
*
|
||||||
|
# Except this file
|
||||||
|
!.gitignore
|
181
bots/blackhole/blackhole/.irssi/config
Normal file
181
bots/blackhole/blackhole/.irssi/config
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
servers = (
|
||||||
|
{ address = "localhost"; chatnet = "supernets"; port = "6697"; autoconnect = "no"; use_ssl = "yes"; ssl_cert = "~/.irssi/certs/blackhole.pem"; }
|
||||||
|
);
|
||||||
|
|
||||||
|
chatnets = {
|
||||||
|
supernets = { type = "IRC"; autosendcmd = "/^msg nickserv identify CHANGEME; wait 2000; /^oper blackhole *"; };
|
||||||
|
};
|
||||||
|
|
||||||
|
channels = (
|
||||||
|
{ name = "#christ"; chatnet = "supernets"; autojoin = "yes"; },
|
||||||
|
{ name = "#dev"; chatnet = "supernets"; autojoin = "yes"; },
|
||||||
|
{ name = "#help"; chatnet = "supernets"; autojoin = "yes"; },
|
||||||
|
{ name = "#pumpcoin"; chatnet = "supernets"; autojoin = "yes"; },
|
||||||
|
{ name = "#scroll"; chatnet = "supernets"; autojoin = "yes"; },
|
||||||
|
{ name = "#superbowl"; chatnet = "supernets"; autojoin = "yes"; },
|
||||||
|
{ name = "#tor"; chatnet = "supernets"; autojoin = "yes"; },
|
||||||
|
{ name = "#tunes"; chatnet = "supernets"; autojoin = "yes"; }
|
||||||
|
);
|
||||||
|
|
||||||
|
aliases = {
|
||||||
|
alimit = "foreach channel /limit";
|
||||||
|
acslimit = "foreach channel /cslimit";
|
||||||
|
blackhole_kick = "eval KICK $0 $1 \00308,04 E N T E R T H E V O I D \017";
|
||||||
|
blackhole_kill = "eval KILL $0 \00308,04 E N T E R T H E V O I D \017";
|
||||||
|
wc = "window close";
|
||||||
|
};
|
||||||
|
|
||||||
|
statusbar = {
|
||||||
|
items = {
|
||||||
|
barstart = "{sbstart}";
|
||||||
|
barend = "{sbend}";
|
||||||
|
topicbarstart = "{topicsbstart}";
|
||||||
|
topicbarend = "{topicsbend}";
|
||||||
|
time = "";
|
||||||
|
user = "";
|
||||||
|
window = "";
|
||||||
|
window_empty = "";
|
||||||
|
prompt = "{prompt $[.15]itemname@$tag}";
|
||||||
|
prompt_empty = "{prompt $winname}";
|
||||||
|
topic = " $topic";
|
||||||
|
topic_empty = "";
|
||||||
|
act = "";
|
||||||
|
lag = "";
|
||||||
|
more = "-- more --";
|
||||||
|
};
|
||||||
|
default = {
|
||||||
|
window = {
|
||||||
|
disabled = "yes";
|
||||||
|
type = "window";
|
||||||
|
placement = "bottom";
|
||||||
|
position = "1";
|
||||||
|
visible = "active";
|
||||||
|
items = {
|
||||||
|
barstart = { priority = "100"; };
|
||||||
|
time = { };
|
||||||
|
user = { };
|
||||||
|
window = { };
|
||||||
|
window_empty = { };
|
||||||
|
lag = { priority = "-1"; };
|
||||||
|
more = { priority = "-1"; alignment = "right"; };
|
||||||
|
barend = { priority = "100"; alignment = "right"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
window_inact = {
|
||||||
|
type = "window";
|
||||||
|
placement = "bottom";
|
||||||
|
position = "1";
|
||||||
|
visible = "inactive";
|
||||||
|
items = {
|
||||||
|
barstart = { priority = "100"; };
|
||||||
|
window = { };
|
||||||
|
window_empty = { };
|
||||||
|
more = { priority = "-1"; alignment = "right"; };
|
||||||
|
barend = { priority = "100"; alignment = "right"; };
|
||||||
|
};
|
||||||
|
disabled = "yes";
|
||||||
|
};
|
||||||
|
prompt = {
|
||||||
|
type = "root";
|
||||||
|
placement = "bottom";
|
||||||
|
position = "100";
|
||||||
|
visible = "always";
|
||||||
|
items = {
|
||||||
|
prompt = { priority = "-1"; };
|
||||||
|
prompt_empty = { priority = "-1"; };
|
||||||
|
colours = { alignment = "right"; };
|
||||||
|
input = { priority = "10"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
topic = {
|
||||||
|
type = "root";
|
||||||
|
placement = "top";
|
||||||
|
position = "1";
|
||||||
|
visible = "always";
|
||||||
|
items = {
|
||||||
|
topicbarstart = { priority = "100"; };
|
||||||
|
topic = { };
|
||||||
|
topic_empty = { };
|
||||||
|
topicbarend = { priority = "100"; alignment = "right"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
inact = { items = { }; disabled = "yes"; };
|
||||||
|
awl_0 = {
|
||||||
|
items = {
|
||||||
|
barstart = { priority = "100"; };
|
||||||
|
awl_0 = { };
|
||||||
|
barend = { priority = "100"; alignment = "right"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
core = {
|
||||||
|
nick = "blackhole";
|
||||||
|
quit_message = "G-line: User has been permanently banned from this network.";
|
||||||
|
real_name = "ENTER THE VOID";
|
||||||
|
settings_autosave = "yes";
|
||||||
|
timestamp_format = "%I:%M";
|
||||||
|
user_name = "BL";
|
||||||
|
server_reconnect_time = "5min";
|
||||||
|
recode_fallback = "UTF-8";
|
||||||
|
recode_out_default_charset = "UTF-8";
|
||||||
|
recode_transliterate = "yes";
|
||||||
|
recode = "yes";
|
||||||
|
recode_autodetect_utf8 = "yes";
|
||||||
|
awaylog_level = "hilight";
|
||||||
|
awaylog_file = "~/.irssi/logs/away.log";
|
||||||
|
};
|
||||||
|
"fe-text" = { actlist_sort = "refnum"; };
|
||||||
|
"irc/core" = {
|
||||||
|
alternate_nick = "blackhole_";
|
||||||
|
channel_sync = "yes";
|
||||||
|
cmds_max_at_once = "0";
|
||||||
|
cmd_queue_speed = "0";
|
||||||
|
ctcp_version_reply = "?";
|
||||||
|
ctcp_userinfo_reply = "?";
|
||||||
|
max_ctcp_queue = "0";
|
||||||
|
part_message = "G-line: User has been permanently banned from this network.";
|
||||||
|
usermode = "+ix";
|
||||||
|
skip_motd = "yes";
|
||||||
|
ban_type = "host";
|
||||||
|
kick_first_on_kickban = "yes";
|
||||||
|
};
|
||||||
|
"irc/flood" = { flood_timecheck = "0"; flood_max_msgs = "0"; };
|
||||||
|
"fe-common/core" = {
|
||||||
|
show_names_on_join = "no";
|
||||||
|
beep_msg_level = "MSGS HILIGHT";
|
||||||
|
term_charset = "UTF-8";
|
||||||
|
max_command_history = "25";
|
||||||
|
autolog_path = "~/.irssi/logs/$tag/$0.log";
|
||||||
|
autocreate_query_level = "MSGS";
|
||||||
|
activity_hilight_level = "MSGS";
|
||||||
|
beep_when_away = "no";
|
||||||
|
beep_when_window_active = "no";
|
||||||
|
hilight_level = "PUBLIC";
|
||||||
|
};
|
||||||
|
"perl/core/scripts" = {
|
||||||
|
nickcolor_colors = "3 5 6 7 10 11 12 13 14";
|
||||||
|
awl_shared_sbar = "OFF";
|
||||||
|
awl_block = "-14";
|
||||||
|
awl_viewer = "no";
|
||||||
|
awl_prefer_name = "yes";
|
||||||
|
awl_sbar_maxlength = "yes";
|
||||||
|
chansort_autosort = "yes";
|
||||||
|
awl_mouse = "yes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
windows = { 1 = { immortal = "yes"; name = "status"; level = "ALL"; }; };
|
||||||
|
mainwindows = { 1 = { first_line = "7"; lines = "13"; }; };
|
||||||
|
logs = { };
|
||||||
|
keyboard = (
|
||||||
|
{ key = "meta-[M"; id = "command"; data = "mouse_xterm"; }
|
||||||
|
);
|
||||||
|
ignores = (
|
||||||
|
{ mask = "*!*@services.supernets.org"; level = "CRAP MSGS PUBLICS NOTICES SNOTES CTCPS ACTIONS MODES TOPICS WALLOPS INVITES NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS"; servertag = "supernets"; },
|
||||||
|
{ mask = "*!*@super.nets"; level = "CRAP MSGS PUBLICS NOTICES SNOTES CTCPS ACTIONS MODES TOPICS WALLOPS INVITES NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS"; servertag = "supernets"; },
|
||||||
|
{ mask = "*!*@super.nets.bot"; level = "CRAP MSGS PUBLICS NOTICES SNOTES CTCPS ACTIONS MODES TOPICS WALLOPS INVITES NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS"; servertag = "supernets"; },
|
||||||
|
{ mask = "*!*@super.nets.link"; level = "CRAP MSGS PUBLICS NOTICES SNOTES CTCPS ACTIONS MODES TOPICS WALLOPS INVITES NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS"; servertag = "supernets"; }
|
||||||
|
);
|
533
bots/blackhole/blackhole/.irssi/default.theme
Normal file
533
bots/blackhole/blackhole/.irssi/default.theme
Normal file
@ -0,0 +1,533 @@
|
|||||||
|
default_color = "-1";
|
||||||
|
info_eol = "false";
|
||||||
|
replaces = { "[]=" = "%K$*%n"; "<>=" = "%K$*%n"; };
|
||||||
|
abstracts = {
|
||||||
|
line_start = "";
|
||||||
|
timestamp = "[$*]";
|
||||||
|
hilight = "%_$*%_";
|
||||||
|
error = "%R$*%n";
|
||||||
|
channel = "%_%b$*%_%w";
|
||||||
|
nick = "%_$*%_";
|
||||||
|
nickhost = "[$*]";
|
||||||
|
server = "%_$*%_";
|
||||||
|
comment = "[$*]";
|
||||||
|
reason = "{comment $*}";
|
||||||
|
mode = "{comment $*}";
|
||||||
|
channick_hilight = "%b$*%n";
|
||||||
|
chanhost_hilight = "{nickhost %b$*%n}";
|
||||||
|
channick = "%_$*%_";
|
||||||
|
chanhost = "{nickhost $*}";
|
||||||
|
channelhilight = "%b$*%n";
|
||||||
|
ban = "%c$*%n";
|
||||||
|
msgnick = "%K<%n$0$1-%K>%n %|";
|
||||||
|
ownmsgnick = "{msgnick $0 $1-}";
|
||||||
|
ownnick = "%_$*%n";
|
||||||
|
pubmsgnick = "{msgnick $0 $1-}";
|
||||||
|
pubnick = "%N$*%n";
|
||||||
|
pubmsgmenick = "{msgnick $0 $1-}";
|
||||||
|
menick = "%Y$*%n";
|
||||||
|
pubmsghinick = "{msgnick $0$1$2-%n}";
|
||||||
|
msgchannel = "%K:%c$*%n";
|
||||||
|
privmsg = "[%R$0%K(%r$1-%K)%n] ";
|
||||||
|
ownprivmsg = "[%r$0%K(%R$1-%K)%n] ";
|
||||||
|
ownprivmsgnick = "{msgnick $*}";
|
||||||
|
ownprivnick = "%_$*%n";
|
||||||
|
privmsgnick = "{msgnick %R$*%n}";
|
||||||
|
action_core = "%_ * $*%n";
|
||||||
|
action = "{action_core $*} ";
|
||||||
|
ownaction = "{action $*}";
|
||||||
|
ownaction_target = "{action_core $0}%K:%c$1%n ";
|
||||||
|
pvtaction = "%_ (*) $*%n ";
|
||||||
|
pvtaction_query = "{action $*}";
|
||||||
|
pubaction = "{action $*}";
|
||||||
|
whois = "%# $[8]0 : $1-";
|
||||||
|
ownnotice = "[%m$0%K]%n ";
|
||||||
|
notice = "[%m$*%K]%n ";
|
||||||
|
pubnotice_channel = "%K:%m$*";
|
||||||
|
pvtnotice_host = "%K(%m$*%K)";
|
||||||
|
servernotice = "%g!$*%n ";
|
||||||
|
ownctcp = "[%r$0%K(%R$1-%K)] ";
|
||||||
|
ctcp = "%g$*%n";
|
||||||
|
wallop = "%_$*%n: ";
|
||||||
|
wallop_nick = "%n$*";
|
||||||
|
wallop_action = "%_ * $*%n ";
|
||||||
|
netsplit = "%b$*%n";
|
||||||
|
netjoin = "%g$*%n";
|
||||||
|
names_prefix = "";
|
||||||
|
names_nick = "[%_$0%_$1-] ";
|
||||||
|
names_nick_op = "{names_nick $*}";
|
||||||
|
names_nick_halfop = "{names_nick $*}";
|
||||||
|
names_nick_voice = "{names_nick $*}";
|
||||||
|
names_users = "[%g$*%n]";
|
||||||
|
names_channel = "%G$*%n";
|
||||||
|
dcc = "%g$*%n";
|
||||||
|
dccfile = "%_$*%_";
|
||||||
|
dccownmsg = "[%r$0%K($1-%K)%n] ";
|
||||||
|
dccownnick = "%R$*%n";
|
||||||
|
dccownquerynick = "%_$*%n";
|
||||||
|
dccownaction = "{action $*}";
|
||||||
|
dccownaction_target = "{action_core $0}%K:%c$1%n ";
|
||||||
|
dccmsg = "[%G$1-%K(%g$0%K)%n] ";
|
||||||
|
dccquerynick = "%G$*%n";
|
||||||
|
dccaction = "%_ (*dcc*) $*%n %|";
|
||||||
|
sb_background = "%n%w";
|
||||||
|
sb_default_bg = "%n";
|
||||||
|
sb_prompt_bg = "%n";
|
||||||
|
sb_info_bg = "%n";
|
||||||
|
sb_topic_bg = "%n";
|
||||||
|
sbstart = "";
|
||||||
|
sbend = " ";
|
||||||
|
topicsbstart = "%_[IRSSI]%_{sbstart $*}";
|
||||||
|
topicsbend = "{sbend $*}";
|
||||||
|
prompt = "[%b$*%w] ";
|
||||||
|
sb = "%K[%n$*%K]%n";
|
||||||
|
sbmode = " %c+%n$*";
|
||||||
|
sbaway = " %GzZzZ%n";
|
||||||
|
sbservertag = ":$0";
|
||||||
|
sbnickmode = "$0";
|
||||||
|
sb_act_sep = "%c$*";
|
||||||
|
sb_act_text = "%W$*";
|
||||||
|
sb_act_msg = "%c$*";
|
||||||
|
sb_act_hilight = "%Y$*";
|
||||||
|
sb_act_hilight_color = "$0$1-%n";
|
||||||
|
};
|
||||||
|
formats = {
|
||||||
|
"fe-common/irc/dcc" = {
|
||||||
|
own_dcc = "{dccownmsg dcc {dccownnick $1}}$2";
|
||||||
|
own_dcc_action = "{dccownaction_target $0 $1}$2";
|
||||||
|
own_dcc_action_query = "{dccownaction $0}$2";
|
||||||
|
own_dcc_ctcp = "{ownctcp ctcp $0}$1 $2";
|
||||||
|
dcc_msg = "{dccmsg dcc $0}$1";
|
||||||
|
action_dcc = "{dccaction $0}$1";
|
||||||
|
action_dcc_query = "{dccaction $0}$1";
|
||||||
|
own_dcc_query = "{ownmsgnick {dccownquerynick $0}}$2";
|
||||||
|
dcc_msg_query = "{privmsgnick $0}$1";
|
||||||
|
dcc_ctcp = "{dcc >>> DCC CTCP {hilight $1} received from {hilight $0}: $2}";
|
||||||
|
dcc_chat = "{dcc DCC CHAT from {nick $0} [$1 port $2]}";
|
||||||
|
dcc_chat_channel = "{dcc DCC CHAT from {nick $0} [$1 port $2] requested in channel {channel $3}}";
|
||||||
|
dcc_chat_not_found = "{dcc No DCC CHAT connection open to {nick $0}}";
|
||||||
|
dcc_chat_connected = "{dcc DCC CHAT connection with {nick $0} [$1 port $2] established}";
|
||||||
|
dcc_chat_disconnected = "{dcc DCC lost chat to {nick $0}}";
|
||||||
|
dcc_send = "{dcc DCC SEND from {nick $0} [$1 port $2]: $3 [$4]}";
|
||||||
|
dcc_send_channel = "{dcc DCC SEND from {nick $0} [$1 port $2]: $3 [$4 bytes] requested in channel {channel $5}}";
|
||||||
|
dcc_send_exists = "{dcc DCC already sending file {dccfile $0} for {nick $1}}";
|
||||||
|
dcc_send_no_route = "{dcc DCC route lost to nick {nick $0} when trying to send file {dccfile $1}}";
|
||||||
|
dcc_send_not_found = "{dcc DCC not sending file {dccfile $1} to {nick $0}}";
|
||||||
|
dcc_send_file_open_error = "{dcc DCC can't open file {dccfile $0}: $1}";
|
||||||
|
dcc_send_connected = "{dcc DCC sending file {dccfile $0} for {nick $1} [$2 port $3]}";
|
||||||
|
dcc_send_complete = "{dcc DCC sent file {dccfile $0} [{hilight $1}] for {nick $2} in {hilight $3} [{hilight $4kB/s}]}";
|
||||||
|
dcc_send_aborted = "{dcc DCC aborted sending file {dccfile $0} for {nick $1}}";
|
||||||
|
dcc_get_not_found = "{dcc DCC no file offered by {nick $0}}";
|
||||||
|
dcc_get_connected = "{dcc DCC receiving file {dccfile $0} from {nick $1} [$2 port $3]}";
|
||||||
|
dcc_get_complete = "{dcc DCC received file {dccfile $0} [$1] from {nick $2} in {hilight $3} [$4kB/s]}";
|
||||||
|
dcc_get_aborted = "{dcc DCC aborted receiving file {dccfile $0} from {nick $1}}";
|
||||||
|
dcc_get_write_error = "{dcc DCC error writing to file {dccfile $0}: {comment $1}";
|
||||||
|
dcc_unknown_ctcp = "{dcc DCC unknown ctcp {hilight $0} from {nick $1} [$2]}";
|
||||||
|
dcc_unknown_reply = "{dcc DCC unknown reply {hilight $0} from {nick $1} [$2]}";
|
||||||
|
dcc_unknown_type = "{dcc DCC unknown type {hilight $0}}";
|
||||||
|
dcc_invalid_ctcp = "{dcc DCC received CTCP {hilight $0} with invalid parameters from {nick $1}}";
|
||||||
|
dcc_connect_error = "{dcc DCC can't connect to {hilight $0} port {hilight $1}}";
|
||||||
|
dcc_cant_create = "{dcc DCC can't create file {dccfile $0}: $1}";
|
||||||
|
dcc_rejected = "{dcc DCC $0 was rejected by {nick $1} [{hilight $2}]}";
|
||||||
|
dcc_request_send = "{dcc DCC $0 request sent to {nick $1}: $2";
|
||||||
|
dcc_close = "{dcc DCC $0 close for {nick $1} [{hilight $2}]}";
|
||||||
|
dcc_lowport = "{dcc Warning: Port sent with DCC request is a lowport ({hilight $0, $1}) - this isn't normal. It is possible the address/port is faked (or maybe someone is just trying to bypass firewall)}";
|
||||||
|
dcc_list_header = "{dcc DCC connections}";
|
||||||
|
dcc_list_line_chat = "{dcc $0 $1}";
|
||||||
|
dcc_list_line_file = "{dcc $0 $1: %|$2 of $3 ($4%%) - $5kB/s - ETA $7 - $6}";
|
||||||
|
dcc_list_line_queued_send = "{dcc - $0 $2 (queued)}";
|
||||||
|
dcc_list_footer = "";
|
||||||
|
dcc_list_line_server = "{dcc $0: Port($1) - Send($2) - Chat($3) - Fserve($4)}";
|
||||||
|
dcc_server_started = "{dcc DCC SERVER started on port {hilight $0}}";
|
||||||
|
dcc_server_closed = "{dcc DCC SERVER on port {hilight $0} closed}";
|
||||||
|
};
|
||||||
|
"fe-common/irc/notifylist" = {
|
||||||
|
notify_join = "{nick $0} [$1@$2] [{hilight $3}] has joined to $4";
|
||||||
|
notify_part = "{nick $0} has left $4";
|
||||||
|
notify_away = "{nick $0} [$5] [$1@$2] [{hilight $3}] is now away: $4";
|
||||||
|
notify_unaway = "{nick $0} [$4] [$1@$2] [{hilight $3}] is now unaway";
|
||||||
|
notify_online = "On $0: {hilight $1}";
|
||||||
|
notify_offline = "Offline: $0";
|
||||||
|
notify_list = "$0: $1 $2";
|
||||||
|
notify_list_empty = "The notify list is empty";
|
||||||
|
};
|
||||||
|
"fe-common/core" = {
|
||||||
|
line_start = "{line_start}";
|
||||||
|
#line_start_irssi = "{line_start}{hilight Irssi:} ";
|
||||||
|
line_start_irssi = "";
|
||||||
|
timestamp = "{timestamp $Z} ";
|
||||||
|
servertag = "[$0] ";
|
||||||
|
daychange = "Day changed to %%d %%b %%Y";
|
||||||
|
talking_with = "You are now talking with {nick $0}";
|
||||||
|
refnum_too_low = "Window number must be greater than 1";
|
||||||
|
error_server_sticky = "Window's server is sticky and it cannot be changed without -unsticky option";
|
||||||
|
set_server_sticky = "Window's server set sticky";
|
||||||
|
unset_server_sticky = "Window's server isn't sticky anymore";
|
||||||
|
window_name_not_unique = "Window names must be unique";
|
||||||
|
window_level = "Window level is now $0";
|
||||||
|
window_set_immortal = "Window is now immortal";
|
||||||
|
window_unset_immortal = "Window isn't immortal anymore";
|
||||||
|
window_immortal_error = "Window is immortal, if you really want to close it, say /WINDOW IMMORTAL OFF";
|
||||||
|
windowlist_header = "%#Ref Name Active item Server Level";
|
||||||
|
windowlist_line = "%#$[3]0 %|$[20]1 $[15]2 $[15]3 $4";
|
||||||
|
windowlist_footer = "";
|
||||||
|
windows_layout_saved = "Layout of windows is now remembered";
|
||||||
|
windows_layout_reset = "Layout of windows reset to defaults";
|
||||||
|
window_info_header = "";
|
||||||
|
window_info_footer = "";
|
||||||
|
window_info_refnum = "%#Window : {hilight #$0}";
|
||||||
|
window_info_refnum_sticky = "%#Window : {hilight #$0 (sticky)}";
|
||||||
|
window_info_name = "%#Name : $0";
|
||||||
|
window_info_history = "%#History : $0";
|
||||||
|
window_info_immortal = "%#Immortal: yes";
|
||||||
|
window_info_size = "%#Size : $0x$1";
|
||||||
|
window_info_level = "%#Level : $0";
|
||||||
|
window_info_server = "%#Server : $0";
|
||||||
|
window_info_server_sticky = "%#Server : $0 (sticky)";
|
||||||
|
window_info_theme = "%#Theme : $0$1";
|
||||||
|
window_info_bound_items_header = "%#Bounds : {hilight Name Server tag}";
|
||||||
|
window_info_bound_item = "%# : $[!30]0 $[!15]1 $2";
|
||||||
|
window_info_bound_items_footer = "";
|
||||||
|
window_info_items_header = "%#Items : {hilight Name Server tag}";
|
||||||
|
window_info_item = "%# $[7]0: $[!30]1 $2";
|
||||||
|
window_info_items_footer = "";
|
||||||
|
looking_up = "Looking up {server $0}";
|
||||||
|
connecting = "Connecting to {server $0} [$1] port {hilight $2}";
|
||||||
|
reconnecting = "Reconnecting to {server $0} [$1] port {hilight $2} - use /RMRECONNS to abort";
|
||||||
|
connection_established = "Connection to {server $0} established";
|
||||||
|
cant_connect = "Unable to connect server {server $0} port {hilight $1} {reason $2}";
|
||||||
|
connection_lost = "Connection lost to {server $0}";
|
||||||
|
lag_disconnected = "No PONG reply from server {server $0} in $1 seconds, disconnecting";
|
||||||
|
disconnected = "Disconnected from {server $0} {reason $1}";
|
||||||
|
server_quit = "Disconnecting from server {server $0}: {reason $1}";
|
||||||
|
server_changed = "Changed to {hilight $2} server {server $1}";
|
||||||
|
unknown_server_tag = "Unknown server tag {server $0}";
|
||||||
|
no_connected_servers = "Not connected to any servers";
|
||||||
|
server_list = "{server $0}: $1:$2 ($3)";
|
||||||
|
server_lookup_list = "{server $0}: $1:$2 ($3) (connecting...)";
|
||||||
|
server_reconnect_list = "{server $0}: $1:$2 ($3) ($5 left before reconnecting)";
|
||||||
|
server_reconnect_removed = "Removed reconnection to server {server $0} port {hilight $1}";
|
||||||
|
server_reconnect_not_found = "Reconnection tag {server $0} not found";
|
||||||
|
setupserver_added = "Server {server $0} saved";
|
||||||
|
setupserver_removed = "Server {server $0} removed";
|
||||||
|
setupserver_not_found = "Server {server $0} not found";
|
||||||
|
your_nick = "Your nickname is {nick $0}";
|
||||||
|
join = "<%gJoin> {channick $0} {chanhost $1}";
|
||||||
|
part = "<%rPart> {channick $0} {chanhost $1} {reason $3}";
|
||||||
|
kick = "<%rKick> {channick $0} was kicked by {nick $2} {reason $3}";
|
||||||
|
quit = "<%rQuit> {channick $0} {chanhost $1} {reason $2}";
|
||||||
|
quit_once = "<%rQuit> {channel $3} {channick $0} {chanhost $1} {reason $2}";
|
||||||
|
invite = "{nick $0} invites you to {channel $1}";
|
||||||
|
not_invited = "You have not been invited to a channel!";
|
||||||
|
new_topic = "<%btopic> %b\"$2\"%w set by {nick $0}";
|
||||||
|
topic_unset = "Topic unset by {nick $0} on {channel $1}";
|
||||||
|
your_nick_changed = "<%bNick> You are now {nick $1}";
|
||||||
|
nick_changed = "<%bNick> {channick $0} is now {channick $1}";
|
||||||
|
talking_in = "You are now talking in {channel $0}";
|
||||||
|
not_in_channels = "You are not on any channels";
|
||||||
|
current_channel = "Current channel {channel $0}";
|
||||||
|
#names = "{names_users Users {names_channel $0}}";
|
||||||
|
names = "";
|
||||||
|
names_prefix = "%#{names_prefix $0}";
|
||||||
|
names_nick_op = "{names_nick_op $0 $1}";
|
||||||
|
names_nick_halfop = "{names_nick_halfop $0 $1}";
|
||||||
|
names_nick_voice = "{names_nick_voice $0 $1}";
|
||||||
|
names_nick = "{names_nick $0 $1}";
|
||||||
|
endofnames = "{channel $0} - Total of {hilight $1} nicks {comment {hilight $2} ops, {hilight $3} halfops, {hilight $4} voices, {hilight $5} normal}";
|
||||||
|
chanlist_header = "%#You are on the following channels:";
|
||||||
|
chanlist_line = "%#{channel $[-10]0} %|+$1 ($2): $3";
|
||||||
|
chansetup_not_found = "Channel {channel $0} not found";
|
||||||
|
chansetup_added = "Channel {channel $0} saved";
|
||||||
|
chansetup_removed = "Channel {channel $0} removed";
|
||||||
|
chansetup_header = "%#Channel Network Password Settings";
|
||||||
|
chansetup_line = "%#{channel $[15]0} %|$[10]1 $[10]2 $3";
|
||||||
|
chansetup_footer = "";
|
||||||
|
own_msg = "{ownmsgnick $2 {ownnick $0}}$1";
|
||||||
|
own_msg_channel = "{ownmsgnick $3 {ownnick $0}{msgchannel $1}}$2";
|
||||||
|
own_msg_private = "{ownprivmsg msg $0}$1";
|
||||||
|
own_msg_private_query = "{ownprivmsgnick {ownprivnick $2}}$1";
|
||||||
|
pubmsg_me = "{pubmsgmenick $2 {menick $0}}$1";
|
||||||
|
pubmsg_me_channel = "{pubmsgmenick $3 {menick $0}{msgchannel $1}}$2";
|
||||||
|
pubmsg_hilight = "{pubmsghinick $0 $3 $1}$2";
|
||||||
|
pubmsg_hilight_channel = "{pubmsghinick $0 $4 $1{msgchannel $2}}$3";
|
||||||
|
pubmsg = "{pubmsgnick $2 {pubnick \00306$0}}$1";
|
||||||
|
pubmsg_channel = "{pubmsgnick $3 {pubnick $0}{msgchannel $1}}$2";
|
||||||
|
msg_private = "{privmsg $0 $1}$2";
|
||||||
|
msg_private_query = "{privmsgnick $0}$2";
|
||||||
|
no_msgs_got = "You have not received a message from anyone yet";
|
||||||
|
no_msgs_sent = "You have not sent a message to anyone yet";
|
||||||
|
query_start = "Starting query in {server $1} with {nick $0}";
|
||||||
|
query_stop = "Closing query with {nick $0}";
|
||||||
|
no_query = "No query with {nick $0}";
|
||||||
|
query_server_changed = "Query with {nick $0} changed to server {server $1}";
|
||||||
|
hilight_header = "%#Highlights:";
|
||||||
|
hilight_line = "%#$[-4]0 $1 $2 $3$4";
|
||||||
|
hilight_footer = "";
|
||||||
|
hilight_not_found = "Highlight not found: $0";
|
||||||
|
hilight_removed = "Highlight removed: $0";
|
||||||
|
alias_added = "Alias $0 added";
|
||||||
|
alias_removed = "Alias $0 removed";
|
||||||
|
alias_not_found = "No such alias: $0";
|
||||||
|
aliaslist_header = "%#Aliases:";
|
||||||
|
aliaslist_line = "%#$[10]0 $1";
|
||||||
|
aliaslist_footer = "";
|
||||||
|
log_opened = "Log file {hilight $0} opened";
|
||||||
|
log_closed = "Log file {hilight $0} closed";
|
||||||
|
log_create_failed = "Couldn't create log file {hilight $0}: $1";
|
||||||
|
log_locked = "Log file {hilight $0} is locked, probably by another running Irssi";
|
||||||
|
log_not_open = "Log file {hilight $0} not open";
|
||||||
|
log_started = "Started logging to file {hilight $0}";
|
||||||
|
log_stopped = "Stopped logging to file {hilight $0}";
|
||||||
|
log_list_header = "%#Logs:";
|
||||||
|
log_list = "%#$0 $1: $2 $3$4$5";
|
||||||
|
log_list_footer = "";
|
||||||
|
windowlog_file = "Window LOGFILE set to $0";
|
||||||
|
windowlog_file_logging = "Can't change window's logfile while log is on";
|
||||||
|
no_away_msgs = "No new messages in awaylog";
|
||||||
|
away_msgs = "{hilight $1} new messages in awaylog:";
|
||||||
|
module_header = "%#Module Type Submodules";
|
||||||
|
module_line = "%#$[!20]0 $[7]1 $2";
|
||||||
|
module_footer = "";
|
||||||
|
module_already_loaded = "Module {hilight $0/$1} already loaded";
|
||||||
|
module_not_loaded = "Module {hilight $0/$1} is not loaded";
|
||||||
|
module_load_error = "Error loading module {hilight $0/$1}: $2";
|
||||||
|
module_invalid = "{hilight $0/$1} isn't Irssi module";
|
||||||
|
module_loaded = "Loaded module {hilight $0/$1}";
|
||||||
|
module_unloaded = "Unloaded module {hilight $0/$1}";
|
||||||
|
command_unknown = "Unknown command: $0";
|
||||||
|
command_ambiguous = "Ambiguous command: $0";
|
||||||
|
option_unknown = "Unknown option: $0";
|
||||||
|
option_ambiguous = "Ambiguous option: $0";
|
||||||
|
option_missing_arg = "Missing required argument for: $0";
|
||||||
|
not_enough_params = "Not enough parameters given";
|
||||||
|
not_connected = "Not connected to server";
|
||||||
|
not_joined = "Not joined to any channel";
|
||||||
|
chan_not_found = "Not joined to such channel";
|
||||||
|
chan_not_synced = "Channel not fully synchronized yet, try again after a while";
|
||||||
|
illegal_proto = "Command isn't designed for the chat protocol of the active server";
|
||||||
|
not_good_idea = "Doing this is not a good idea. Add -YES option to command if you really mean it";
|
||||||
|
invalid_number = "Invalid number";
|
||||||
|
invalid_time = "Invalid timestamp";
|
||||||
|
invalid_level = "Invalid message level";
|
||||||
|
invalid_size = "Invalid size";
|
||||||
|
invalid_charset = "Invalid charset: $0";
|
||||||
|
eval_max_recurse = "/eval hit maximum recursion limit";
|
||||||
|
program_not_found = "Could not find file or file is not executable";
|
||||||
|
theme_saved = "Theme saved to $0";
|
||||||
|
theme_save_failed = "Error saving theme to $0: $1";
|
||||||
|
theme_not_found = "Theme {hilight $0} not found";
|
||||||
|
theme_changed = "Now using theme {hilight $0} ($1)";
|
||||||
|
window_theme = "Using theme {hilight $0} in this window";
|
||||||
|
window_theme_default = "No theme is set for this window";
|
||||||
|
window_theme_changed = "Now using theme {hilight $0} ($1) in this window";
|
||||||
|
window_theme_removed = "Removed theme from this window";
|
||||||
|
format_title = "%:[{hilight $0}] - [{hilight $1}]%:";
|
||||||
|
format_subtitle = "[{hilight $0}]";
|
||||||
|
format_item = "$0 = $1";
|
||||||
|
ignored = "Ignoring {hilight $1} from {nick $0}";
|
||||||
|
ignored_options = "Ignoring {hilight $1} from {nick $0} {comment $2}";
|
||||||
|
unignored = "Unignored {nick $0}";
|
||||||
|
ignore_not_found = "{nick $0} is not being ignored";
|
||||||
|
ignore_no_ignores = "There are no ignores";
|
||||||
|
ignore_header = "%#Ignore List:";
|
||||||
|
ignore_line = "%#$[-4]0 $1: $2 $3 $4";
|
||||||
|
ignore_footer = "";
|
||||||
|
not_channel_or_query = "The current window is not a channel or query window";
|
||||||
|
conversion_added = "Added {hilight $0}/{hilight $1} to conversion database";
|
||||||
|
conversion_removed = "Removed {hilight $0} from conversion database";
|
||||||
|
conversion_not_found = "{hilight $0} not found in conversion database";
|
||||||
|
conversion_no_translits = "Transliterations not supported in this system";
|
||||||
|
recode_header = "%#Target Character set";
|
||||||
|
recode_line = "%#%|$[!30]0 $1";
|
||||||
|
unknown_chat_protocol = "Unknown chat protocol: $0";
|
||||||
|
unknown_chatnet = "Unknown chat network: $0 (create it with /NETWORK ADD)";
|
||||||
|
not_toggle = "Value must be either ON, OFF or TOGGLE";
|
||||||
|
perl_error = "Perl error: $0";
|
||||||
|
bind_header = "%#Key Action";
|
||||||
|
bind_list = "%#$[!20]0 $1 $2";
|
||||||
|
bind_command_list = "$[!30]0 $1";
|
||||||
|
bind_footer = "";
|
||||||
|
bind_unknown_id = "Unknown bind action: $0";
|
||||||
|
config_saved = "Saved configuration to file $0";
|
||||||
|
config_reloaded = "Reloaded configuration";
|
||||||
|
config_modified = "Configuration file was modified since irssi was last started - do you want to overwrite the possible changes?";
|
||||||
|
glib_error = "{error $0} $1";
|
||||||
|
overwrite_config = "Overwrite config (y/N)?";
|
||||||
|
set_title = "[{hilight $0}]";
|
||||||
|
set_item = "$0 = $1";
|
||||||
|
set_unknown = "Unknown setting $0";
|
||||||
|
set_not_boolean = "Setting {hilight $0} isn't boolean, use /SET";
|
||||||
|
no_completions = "There's no completions";
|
||||||
|
completion_removed = "Removed completion $0";
|
||||||
|
completion_header = "%#Key Value Auto";
|
||||||
|
completion_line = "%#$[10]0 $[!40]1 $2";
|
||||||
|
completion_footer = "";
|
||||||
|
};
|
||||||
|
"fe-text" = {
|
||||||
|
lastlog_too_long = "/LASTLOG would print $0 lines. If you really want to print all these lines use -force option.";
|
||||||
|
lastlog_count = "{hilight Lastlog}: $0 lines";
|
||||||
|
lastlog_start = "{hilight Lastlog}:";
|
||||||
|
lastlog_end = "{hilight End of Lastlog}";
|
||||||
|
lastlog_separator = "--";
|
||||||
|
refnum_not_found = "Window number $0 not found";
|
||||||
|
window_too_small = "Not enough room to resize this window";
|
||||||
|
cant_hide_last = "You can't hide the last window";
|
||||||
|
cant_hide_sticky_windows = "You can't hide sticky windows (use /WINDOW STICK OFF)";
|
||||||
|
cant_show_sticky_windows = "You can't show sticky windows (use /WINDOW STICK OFF)";
|
||||||
|
window_not_sticky = "Window is not sticky";
|
||||||
|
window_set_sticky = "Window set sticky";
|
||||||
|
window_unset_sticky = "Window is not sticky anymore";
|
||||||
|
window_info_sticky = "%#Sticky : $0";
|
||||||
|
window_info_scroll = "%#Scroll : $0";
|
||||||
|
window_scroll = "Window scroll mode is now $0";
|
||||||
|
window_scroll_unknown = "Unknown scroll mode $0, must be ON, OFF or DEFAULT";
|
||||||
|
statusbar_list_header = "%#Name Type Placement Position Visible";
|
||||||
|
statusbar_list_footer = "";
|
||||||
|
statusbar_list = "%#$[30]0 $[6]1 $[9]2 $[8]3 $4";
|
||||||
|
statusbar_info_name = "%#Statusbar: {hilight $0}";
|
||||||
|
statusbar_info_type = "%#Type : $0";
|
||||||
|
statusbar_info_placement = "%#Placement: $0";
|
||||||
|
statusbar_info_position = "%#Position : $0";
|
||||||
|
statusbar_info_visible = "%#Visible : $0";
|
||||||
|
statusbar_info_item_header = "%#Items : Name Priority Alignment";
|
||||||
|
statusbar_info_item_footer = "";
|
||||||
|
statusbar_info_item_name = "%# : $[35]0 $[9]1 $2";
|
||||||
|
statusbar_not_found = "Statusbar doesn't exist: $0";
|
||||||
|
statusbar_item_not_found = "Statusbar item doesn't exist: $0";
|
||||||
|
statusbar_unknown_command = "Unknown statusbar command: $0";
|
||||||
|
statusbar_unknown_type = "Statusbar type must be 'window' or 'root'";
|
||||||
|
statusbar_unknown_placement = "Statusbar placement must be 'top' or 'bottom'";
|
||||||
|
statusbar_unknown_visibility = "Statusbar visibility must be 'always', 'active' or 'inactive'";
|
||||||
|
paste_warning = "Pasting $0 lines to $1. Press Ctrl-K if you wish to do this or Ctrl-C to cancel.";
|
||||||
|
paste_prompt = "Hit Ctrl-K to paste, Ctrl-C to abort?";
|
||||||
|
};
|
||||||
|
"fe-common/perl" = {
|
||||||
|
script_not_found = "Script {hilight $0} not found";
|
||||||
|
script_not_loaded = "Script {hilight $0} is not loaded";
|
||||||
|
script_loaded = "Loaded script {hilight $0}";
|
||||||
|
script_unloaded = "Unloaded script {hilight $0}";
|
||||||
|
no_scripts_loaded = "No scripts are loaded";
|
||||||
|
script_list_header = "%#Loaded scripts:";
|
||||||
|
script_list_line = "%#$[!15]0 $1";
|
||||||
|
script_list_footer = "";
|
||||||
|
script_error = "{error Error in script {hilight $0}:}";
|
||||||
|
};
|
||||||
|
"fe-common/irc" = {
|
||||||
|
netsplit = "{netsplit Netsplit} {server $0} <-> {server $1} quits: $2";
|
||||||
|
netsplit_more = "{netsplit Netsplit} {server $0} <-> {server $1} quits: $2 (+$3 more, use /NETSPLIT to show all of them)";
|
||||||
|
netsplit_join = "{netjoin Netsplit} over, joins: $0";
|
||||||
|
netsplit_join_more = "{netjoin Netsplit} over, joins: $0 (+$1 more)";
|
||||||
|
no_netsplits = "There are no net splits";
|
||||||
|
netsplits_header = "%#Nick Channel Server Split server";
|
||||||
|
netsplits_line = "%#$[9]0 $[10]1 $[20]2 $3";
|
||||||
|
netsplits_footer = "";
|
||||||
|
network_added = "Network $0 saved";
|
||||||
|
network_removed = "Network $0 removed";
|
||||||
|
network_not_found = "Network $0 not found";
|
||||||
|
network_header = "%#Networks:";
|
||||||
|
network_line = "%#$0: $1";
|
||||||
|
network_footer = "";
|
||||||
|
setupserver_header = "%#Server Port Network Settings";
|
||||||
|
setupserver_line = "%#%|$[!20]0 $[5]1 $[10]2 $3";
|
||||||
|
setupserver_footer = "";
|
||||||
|
joinerror_toomany = "Cannot join to channel {channel $0} (You have joined to too many channels)";
|
||||||
|
joinerror_full = "Cannot join to channel {channel $0} (Channel is full)";
|
||||||
|
joinerror_invite = "Cannot join to channel {channel $0} (You must be invited)";
|
||||||
|
joinerror_banned = "Cannot join to channel {channel $0} (You are banned)";
|
||||||
|
joinerror_bad_key = "Cannot join to channel {channel $0} (Bad channel key)";
|
||||||
|
joinerror_bad_mask = "Cannot join to channel {channel $0} (Bad channel mask)";
|
||||||
|
joinerror_unavail = "Cannot join to channel {channel $0} (Channel is temporarily unavailable)";
|
||||||
|
joinerror_duplicate = "Channel {channel $0} already exists - cannot create it";
|
||||||
|
channel_rejoin = "Channel {channel $0} is temporarily unavailable, this is normally because of netsplits. Irssi will now automatically try to rejoin back to this channel until the join is successful. Use /RMREJOINS command if you wish to abort this.";
|
||||||
|
inviting = "Inviting {nick $0} to {channel $1}";
|
||||||
|
channel_created = "Channel {channelhilight $0} created $1";
|
||||||
|
url = "Home page for {channelhilight $0}: $1";
|
||||||
|
topic = "";
|
||||||
|
no_topic = "";
|
||||||
|
topic_info = "";
|
||||||
|
chanmode_change = "<%bMode> {mode $1} by {nick $2}";
|
||||||
|
server_chanmode_change = "<{netsplit Mode}> {mode $1} by {nick $2}";
|
||||||
|
channel_mode = "mode/{channelhilight $0} {mode $1}";
|
||||||
|
bantype = "Ban type changed to {channel $0}";
|
||||||
|
no_bans = "No bans in channel {channel $0}";
|
||||||
|
banlist = "$0 - {channel $1}: ban {ban $2}";
|
||||||
|
banlist_long = "$0 - {channel $1}: ban {ban $2} {comment by {nick $3}, $4 secs ago}";
|
||||||
|
ebanlist = "{channel $0}: ban exception {ban $1}";
|
||||||
|
ebanlist_long = "{channel $0}: ban exception {ban $1} {comment by {nick $2}, $3 secs ago}";
|
||||||
|
no_invitelist = "Invite list is empty in channel {channel $0}";
|
||||||
|
invitelist = "{channel $0}: invite {ban $1}";
|
||||||
|
invitelist_long = "{channel $0}: invite {ban $1} {comment by {nick $2}, $3 secs ago}";
|
||||||
|
no_such_channel = "{channel $0}: No such channel";
|
||||||
|
channel_synced = "Join to {channel $0} was synced in {hilight $1} secs";
|
||||||
|
usermode_change = "Mode change {mode $0} for user {nick $1}";
|
||||||
|
user_mode = "Your user mode is {mode $0}";
|
||||||
|
away = "You have been marked as being away";
|
||||||
|
unaway = "You are no longer marked as being away";
|
||||||
|
nick_away = "{nick $0} is away: $1";
|
||||||
|
no_such_nick = "{nick $0}: No such nick/channel";
|
||||||
|
nick_in_use = "Nick {nick $0} is already in use";
|
||||||
|
nick_unavailable = "Nick {nick $0} is temporarily unavailable";
|
||||||
|
your_nick_owned = "Your nick is owned by {nick $3} {comment $1@$2}";
|
||||||
|
whois = "{nick $0} {nickhost $1@$2}%:{whois ircname $3}";
|
||||||
|
whowas = "{nick $0} {nickhost $1@$2}%:{whois was $3}";
|
||||||
|
whois_idle = "{whois idle %|$1 days $2 hours $3 mins $4 secs}";
|
||||||
|
whois_idle_signon = "{whois idle %|$1 days $2 hours $3 mins $4 secs {comment signon: $5}}";
|
||||||
|
whois_server = "{whois server %|$1 {comment $2}}";
|
||||||
|
whois_oper = "{whois {hilight $1}}";
|
||||||
|
whois_modes = "{whois modes $1}";
|
||||||
|
whois_realhost = "{whois hostname $1-}";
|
||||||
|
whois_usermode = "{whois usermode $1}";
|
||||||
|
whois_channels = "{whois channels %|$1}";
|
||||||
|
whois_away = "{whois away %|$1}";
|
||||||
|
whois_special = "{whois %|$1}";
|
||||||
|
whois_extra = "{whois account %|$1}";
|
||||||
|
end_of_whois = "End of WHOIS";
|
||||||
|
end_of_whowas = "End of WHOWAS";
|
||||||
|
whois_not_found = "There is no such nick $0";
|
||||||
|
who = "%#{channelhilight $[-10]0} %|{nick $[!9]1} $[!3]2 $[!2]3 $4@$5 {comment {hilight $6}}";
|
||||||
|
end_of_who = "End of /WHO list";
|
||||||
|
own_notice = "{ownnotice notice $0}$1";
|
||||||
|
own_action = "{ownaction $0}$1";
|
||||||
|
own_action_target = "{ownaction_target $0 $2}$1";
|
||||||
|
own_ctcp = "{ownctcp ctcp $0}$1 $2";
|
||||||
|
notice_server = "{servernotice $0}$1";
|
||||||
|
notice_public = "{notice $0{pubnotice_channel $1}}$2";
|
||||||
|
notice_private = "{notice $0{pvtnotice_host $1}}$2";
|
||||||
|
action_private = "{pvtaction $0}$2";
|
||||||
|
action_private_query = "{pvtaction_query $0}$2";
|
||||||
|
action_public = "{pubaction $0}$1";
|
||||||
|
action_public_channel = "{pubaction $0{msgchannel $1}}$2";
|
||||||
|
ctcp_reply = "CTCP {hilight $0} reply from {nick $1}: $2";
|
||||||
|
ctcp_reply_channel = "CTCP {hilight $0} reply from {nick $1} in channel {channel $3}: $2";
|
||||||
|
ctcp_ping_reply = "CTCP {hilight PING} reply from {nick $0}: $1.$[-3.0]2 seconds";
|
||||||
|
ctcp_requested = "{ctcp {hilight $0} {comment $1} requested CTCP {hilight $2} from {nick $4}}: $3";
|
||||||
|
ctcp_requested_unknown = "{ctcp {hilight $0} {comment $1} requested unknown CTCP {hilight $2} from {nick $4}}: $3";
|
||||||
|
online = "Users online: {hilight $0}";
|
||||||
|
pong = "PONG received from $0: $1";
|
||||||
|
wallops = "{wallop WALLOP {wallop_nick $0}} $1";
|
||||||
|
action_wallops = "{wallop WALLOP {wallop_action $0}} $1";
|
||||||
|
kill = "You were {error killed} by {nick $0} {nickhost $1} {reason $2} {comment Path: $3}";
|
||||||
|
kill_server = "You were {error killed} by {server $0} {reason $1} {comment Path: $2}";
|
||||||
|
error = "{error ERROR} $0";
|
||||||
|
unknown_mode = "Unknown mode character $0";
|
||||||
|
default_event = "$1";
|
||||||
|
default_event_server = "[$0] $1";
|
||||||
|
silenced = "Silenced {nick $0}";
|
||||||
|
unsilenced = "Unsilenced {nick $0}";
|
||||||
|
silence_line = "{nick $0}: silence {ban $1}";
|
||||||
|
ask_oper_pass = "Operator password:";
|
||||||
|
accept_list = "Accepted users: {hilight $0}";
|
||||||
|
};
|
||||||
|
"Irssi::Script::awl" = {
|
||||||
|
awl_display_nokey = "$N $H$C$S";
|
||||||
|
awl_display_key = "$Q $H$C$S";
|
||||||
|
awl_display_nokey_visible = "%2$N $H$C$";
|
||||||
|
awl_display_key_visible = "%2$Q $H$C$S";
|
||||||
|
awl_display_nokey_active = "%1$N $H$C$S";
|
||||||
|
awl_display_key_active = "%1$Q $H$C$S";
|
||||||
|
awl_display_header = "%8$C";
|
||||||
|
awl_separator = "|";
|
||||||
|
awl_separator2 = "|";
|
||||||
|
awl_viewer_item_bg = "%0%w";
|
||||||
|
};
|
||||||
|
};
|
4
bots/blackhole/blackhole/.irssi/logs/.gitignore
vendored
Normal file
4
bots/blackhole/blackhole/.irssi/logs/.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
# Ignore everything in this directory
|
||||||
|
*
|
||||||
|
# Except this file
|
||||||
|
!.gitignore
|
2552
bots/blackhole/blackhole/.irssi/scripts/autorun/awl.pl
Normal file
2552
bots/blackhole/blackhole/.irssi/scripts/autorun/awl.pl
Normal file
File diff suppressed because it is too large
Load Diff
43
bots/blackhole/blackhole/.irssi/scripts/autorun/chansort.pl
Normal file
43
bots/blackhole/blackhole/.irssi/scripts/autorun/chansort.pl
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
use strict;
|
||||||
|
use Irssi;
|
||||||
|
use Irssi::Irc;
|
||||||
|
|
||||||
|
sub sig_sort_trigger {
|
||||||
|
return unless Irssi::settings_get_bool('chansort_autosort');
|
||||||
|
cmd_chansort();
|
||||||
|
}
|
||||||
|
|
||||||
|
sub cmd_chansort {
|
||||||
|
my(@windows);
|
||||||
|
my($minwin);
|
||||||
|
for my $win (Irssi::windows()) {
|
||||||
|
my $act = $win->{active};
|
||||||
|
my $key;
|
||||||
|
if ($act->{type} eq 'CHANNEL') {
|
||||||
|
$key = "C".$act->{server}{tag}.' '.substr($act->{visible_name}, 1);
|
||||||
|
}
|
||||||
|
elsif ($act->{type} eq 'QUERY') {
|
||||||
|
$key = "Q".$act->{server}{tag}.' '.$act->{visible_name};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
if (!defined($minwin) || $minwin > $win->{refnum}) {
|
||||||
|
$minwin = $win->{refnum};
|
||||||
|
}
|
||||||
|
push @windows, [ lc $key, $win ];
|
||||||
|
|
||||||
|
}
|
||||||
|
for (sort {$a->[0] cmp $b->[0]} @windows) {
|
||||||
|
my($key,$win) = @$_;
|
||||||
|
my($act) = $win->{active};
|
||||||
|
$win->command("window move $minwin");
|
||||||
|
$minwin++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::command_bind('chansort', 'cmd_chansort');
|
||||||
|
Irssi::settings_add_bool('chansort', 'chansort_autosort', 0);
|
||||||
|
Irssi::signal_add_last('window item name changed', 'sig_sort_trigger');
|
||||||
|
Irssi::signal_add_last('channel created', 'sig_sort_trigger');
|
||||||
|
Irssi::signal_add_last('query created', 'sig_sort_trigger');
|
14
bots/blackhole/blackhole/.irssi/scripts/autorun/dispatch.pl
Normal file
14
bots/blackhole/blackhole/.irssi/scripts/autorun/dispatch.pl
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Irssi;
|
||||||
|
use Irssi::Irc;
|
||||||
|
|
||||||
|
sub event_default_command {
|
||||||
|
my ($command, $server) = @_;
|
||||||
|
return if (Irssi::settings_get_bool("dispatch_unknown_commands") == 0 || !$server);
|
||||||
|
$server->send_raw($command);
|
||||||
|
Irssi::signal_stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::settings_add_bool("misc", "dispatch_unknown_commands", 1);
|
||||||
|
Irssi::signal_add_first("default command", "event_default_command");
|
32
bots/blackhole/blackhole/.irssi/scripts/autorun/limit.pl
Normal file
32
bots/blackhole/blackhole/.irssi/scripts/autorun/limit.pl
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
use strict;
|
||||||
|
use Irssi;
|
||||||
|
use Irssi::Irc;
|
||||||
|
|
||||||
|
our $VERSION = '1.0';
|
||||||
|
our %IRSSI = (
|
||||||
|
authors => 'acidvegas',
|
||||||
|
contact => 'acidvegas@supernets.org',
|
||||||
|
name => 'Limit',
|
||||||
|
description => 'A script to limit channel users in a timed interval with timer.pl usage.',
|
||||||
|
license => 'ISC',
|
||||||
|
url => 'https://github.com/acidvegas/irssi',
|
||||||
|
);
|
||||||
|
|
||||||
|
sub limit {
|
||||||
|
my ($data, $server, $channel) = @_;
|
||||||
|
my @nicklist = $channel->nicks();
|
||||||
|
my $totalnicks = scalar @nicklist;
|
||||||
|
my $limit_num = $totalnicks + 10;
|
||||||
|
$channel->command("mode +l $limit_num");
|
||||||
|
}
|
||||||
|
|
||||||
|
sub cslimit {
|
||||||
|
my ($data, $server, $channel) = @_;
|
||||||
|
my @nicklist = $channel->nicks();
|
||||||
|
my $totalnicks = scalar @nicklist;
|
||||||
|
my $limit_num = $totalnicks + 10;
|
||||||
|
$channel->command("msg chanserv mode $channel->{name} lock add +l $limit_num");
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::command_bind('limit', 'limit');
|
||||||
|
Irssi::command_bind('cslimit', 'cslimit');
|
@ -0,0 +1,31 @@
|
|||||||
|
use strict;
|
||||||
|
use Irssi;
|
||||||
|
use Irssi::Irc;
|
||||||
|
|
||||||
|
our $VERSION = '1.0';
|
||||||
|
our %IRSSI = (
|
||||||
|
authors => 'acidvegas',
|
||||||
|
contact => 'acidvegas@supernets.org',
|
||||||
|
name => 'MassHLKick',
|
||||||
|
description => 'A script to kick people who mass hilight on a channel.',
|
||||||
|
license => 'ISC',
|
||||||
|
url => 'http://github.com/acidvegas/irssi',
|
||||||
|
);
|
||||||
|
|
||||||
|
sub sig_public {
|
||||||
|
my ($server, $msg, $nick, $address, $target) = @_;
|
||||||
|
my $count;
|
||||||
|
my $channel = $server->channel_find($target);
|
||||||
|
my $max_num_nicks=Irssi::settings_get_int('mass_hilight_threshold');
|
||||||
|
while ($msg =~ /([\]\[\\`_{|}\w^-][\]\[\\`_{|}\w\d^-]*)/g) {
|
||||||
|
if ($channel->nick_find($1)) {
|
||||||
|
$count++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($count > $max_num_nicks) {
|
||||||
|
$channel->command("kick $target $nick ENTER THE VOID");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::signal_add_first('message public', 'sig_public');
|
||||||
|
Irssi::settings_add_int('misc','mass_hilight_threshold', 5);
|
145
bots/blackhole/blackhole/.irssi/scripts/autorun/nickcolor.pl
Normal file
145
bots/blackhole/blackhole/.irssi/scripts/autorun/nickcolor.pl
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
use strict;
|
||||||
|
use Irssi 20020101.0250 ();
|
||||||
|
use vars qw($VERSION %IRSSI);
|
||||||
|
$VERSION = "2";
|
||||||
|
%IRSSI = (
|
||||||
|
authors => "Timo Sirainen, Ian Peters, David Leadbeater",
|
||||||
|
contact => "tss\@iki.fi",
|
||||||
|
name => "Nick Color",
|
||||||
|
description => "assign a different color for each nick",
|
||||||
|
license => "Public Domain",
|
||||||
|
url => "http://irssi.org/",
|
||||||
|
changed => "Sun 15 Jun 19:10:44 BST 2014",
|
||||||
|
);
|
||||||
|
|
||||||
|
# Settings:
|
||||||
|
# nickcolor_colors: List of color codes to use.
|
||||||
|
# e.g. /set nickcolor_colors 2 3 4 5 6 7 9 10 11 12 13
|
||||||
|
# (avoid 8, as used for hilights in the default theme).
|
||||||
|
|
||||||
|
my %saved_colors;
|
||||||
|
my %session_colors = {};
|
||||||
|
|
||||||
|
sub load_colors {
|
||||||
|
open my $color_fh, "<", "$ENV{HOME}/.irssi/saved_colors";
|
||||||
|
while (<$color_fh>) {
|
||||||
|
chomp;
|
||||||
|
my($nick, $color) = split ":";
|
||||||
|
$saved_colors{$nick} = $color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub save_colors {
|
||||||
|
open COLORS, ">", "$ENV{HOME}/.irssi/saved_colors";
|
||||||
|
|
||||||
|
foreach my $nick (keys %saved_colors) {
|
||||||
|
print COLORS "$nick:$saved_colors{$nick}\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
close COLORS;
|
||||||
|
}
|
||||||
|
|
||||||
|
# If someone we've colored (either through the saved colors, or the hash
|
||||||
|
# function) changes their nick, we'd like to keep the same color associated
|
||||||
|
# with them (but only in the session_colors, ie a temporary mapping).
|
||||||
|
|
||||||
|
sub sig_nick {
|
||||||
|
my ($server, $newnick, $nick, $address) = @_;
|
||||||
|
my $color;
|
||||||
|
|
||||||
|
$newnick = substr ($newnick, 1) if ($newnick =~ /^:/);
|
||||||
|
|
||||||
|
if ($color = $saved_colors{$nick}) {
|
||||||
|
$session_colors{$newnick} = $color;
|
||||||
|
} elsif ($color = $session_colors{$nick}) {
|
||||||
|
$session_colors{$newnick} = $color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# This gave reasonable distribution values when run across
|
||||||
|
# /usr/share/dict/words
|
||||||
|
|
||||||
|
sub simple_hash {
|
||||||
|
my ($string) = @_;
|
||||||
|
chomp $string;
|
||||||
|
my @chars = split //, $string;
|
||||||
|
my $counter;
|
||||||
|
|
||||||
|
foreach my $char (@chars) {
|
||||||
|
$counter += ord $char;
|
||||||
|
}
|
||||||
|
|
||||||
|
my @colors = split / /, Irssi::settings_get_str('nickcolor_colors');
|
||||||
|
$counter = $colors[$counter % @colors];
|
||||||
|
|
||||||
|
return $counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub sig_public {
|
||||||
|
my ($server, $msg, $nick, $address, $target) = @_;
|
||||||
|
|
||||||
|
# Has the user assigned this nick a color?
|
||||||
|
my $color = $saved_colors{$nick};
|
||||||
|
|
||||||
|
# Have -we- already assigned this nick a color?
|
||||||
|
if (!$color) {
|
||||||
|
$color = $session_colors{$nick};
|
||||||
|
}
|
||||||
|
|
||||||
|
# Let's assign this nick a color
|
||||||
|
if (!$color) {
|
||||||
|
$color = simple_hash $nick;
|
||||||
|
$session_colors{$nick} = $color;
|
||||||
|
}
|
||||||
|
|
||||||
|
$color = sprintf "\003%02d", $color;
|
||||||
|
$server->command('/^format pubmsg {pubmsgnick $2 {pubnick ' . $color . '$0}}$1');
|
||||||
|
}
|
||||||
|
|
||||||
|
sub cmd_color {
|
||||||
|
my ($data, $server, $witem) = @_;
|
||||||
|
my ($op, $nick, $color) = split " ", $data;
|
||||||
|
|
||||||
|
$op = lc $op;
|
||||||
|
|
||||||
|
if (!$op) {
|
||||||
|
Irssi::print ("No operation given (save/set/clear/list/preview)");
|
||||||
|
} elsif ($op eq "save") {
|
||||||
|
save_colors;
|
||||||
|
} elsif ($op eq "set") {
|
||||||
|
if (!$nick) {
|
||||||
|
Irssi::print ("Nick not given");
|
||||||
|
} elsif (!$color) {
|
||||||
|
Irssi::print ("Color not given");
|
||||||
|
} elsif ($color < 2 || $color > 14) {
|
||||||
|
Irssi::print ("Color must be between 2 and 14 inclusive");
|
||||||
|
} else {
|
||||||
|
$saved_colors{$nick} = $color;
|
||||||
|
}
|
||||||
|
} elsif ($op eq "clear") {
|
||||||
|
if (!$nick) {
|
||||||
|
Irssi::print ("Nick not given");
|
||||||
|
} else {
|
||||||
|
delete ($saved_colors{$nick});
|
||||||
|
}
|
||||||
|
} elsif ($op eq "list") {
|
||||||
|
Irssi::print ("\nSaved Colors:");
|
||||||
|
foreach my $nick (keys %saved_colors) {
|
||||||
|
Irssi::print (chr (3) . "$saved_colors{$nick}$nick" .
|
||||||
|
chr (3) . "1 ($saved_colors{$nick})");
|
||||||
|
}
|
||||||
|
} elsif ($op eq "preview") {
|
||||||
|
Irssi::print ("\nAvailable colors:");
|
||||||
|
foreach my $i (2..14) {
|
||||||
|
Irssi::print (chr (3) . "$i" . "Color #$i");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
load_colors;
|
||||||
|
|
||||||
|
Irssi::settings_add_str('misc', 'nickcolor_colors', '2 3 4 5 6 7 9 10 11 12 13');
|
||||||
|
Irssi::command_bind('color', 'cmd_color');
|
||||||
|
|
||||||
|
Irssi::signal_add('message public', 'sig_public');
|
||||||
|
Irssi::signal_add('event nick', 'sig_nick');
|
31
bots/blackhole/blackhole/.irssi/scripts/autorun/rejoin.pl
Normal file
31
bots/blackhole/blackhole/.irssi/scripts/autorun/rejoin.pl
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
use Irssi;
|
||||||
|
use Irssi::Irc;
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
my $delay = 1;
|
||||||
|
my $acttag = 0;
|
||||||
|
my @tags;
|
||||||
|
|
||||||
|
sub rejoin {
|
||||||
|
my ( $data ) = @_;
|
||||||
|
my ( $tag, $servtag, $channel, $pass ) = split( / +/, $data );
|
||||||
|
my $server = Irssi::server_find_tag( $servtag );
|
||||||
|
$server->send_raw( "JOIN $channel $pass" ) if ( $server );
|
||||||
|
Irssi::timeout_remove( $tags[$tag] );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub event_rejoin_kick {
|
||||||
|
my ( $server, $data ) = @_;
|
||||||
|
my ( $channel, $nick ) = split( / +/, $data );
|
||||||
|
return if ( $server->{ nick } ne $nick );
|
||||||
|
my $chanrec = $server->channel_find( $channel );
|
||||||
|
my $password = $chanrec->{ key } if ( $chanrec );
|
||||||
|
my $rejoinchan = $chanrec->{ name } if ( $chanrec );
|
||||||
|
my $servtag = $server->{ tag };
|
||||||
|
Irssi::print "Rejoining $rejoinchan in $delay seconds.";
|
||||||
|
$tags[$acttag] = Irssi::timeout_add( $delay * 1000, "rejoin", "$acttag $servtag $rejoinchan $password" );
|
||||||
|
$acttag++;
|
||||||
|
$acttag = 0 if ( $acttag > 60 );
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::signal_add('event kick', 'event_rejoin_kick');
|
175
bots/blackhole/blackhole/.irssi/scripts/autorun/timer.pl
Normal file
175
bots/blackhole/blackhole/.irssi/scripts/autorun/timer.pl
Normal file
@ -0,0 +1,175 @@
|
|||||||
|
# Fixes for multiple servers and window items by dg
|
||||||
|
#
|
||||||
|
# 2003-08-27 coekie:
|
||||||
|
# - use item names and server tags, fixes irssi crash if window item or server is destroyed
|
||||||
|
#
|
||||||
|
# 2003-08-19
|
||||||
|
# - changed timer stop code a bit.
|
||||||
|
# should fix the random timer o.O never happened to me before.
|
||||||
|
#
|
||||||
|
# 2002-12-21 darix:
|
||||||
|
# - nearly complete rewrite ;) the old version wasnt "use strict;" capable =)
|
||||||
|
# - still some warnings with "use warnings;"
|
||||||
|
# - use of command_runsub now :)
|
||||||
|
#
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use Data::Dumper;
|
||||||
|
use warnings;
|
||||||
|
use vars qw ($VERSION %IRSSI);
|
||||||
|
use Irssi 20020325 qw (command_bind command_runsub command timeout_add timeout_remove signal_add_first);
|
||||||
|
|
||||||
|
$VERSION = '0.6';
|
||||||
|
%IRSSI = (
|
||||||
|
authors => 'Kimmo Lehto, Marcus Rueckert',
|
||||||
|
contact => 'kimmo@a-men.org, darix@irssi.org' ,
|
||||||
|
name => 'Timer',
|
||||||
|
description => 'Provides /timer command for mIRC/BitchX type timer functionality.',
|
||||||
|
license => 'Public Domain',
|
||||||
|
changed => '2015-02-07'
|
||||||
|
);
|
||||||
|
|
||||||
|
our %timers;
|
||||||
|
# my %timer = { repeat => \d+, command => '' , windowitem => NULL , server=> NULL, timer = NULL};
|
||||||
|
|
||||||
|
sub timer_command {
|
||||||
|
my ( $name ) = @_;
|
||||||
|
if ( exists ( $timers{$name} ) ) {
|
||||||
|
if ( $timers{$name}->{'repeat'} != -1 ) {
|
||||||
|
if ( $timers{$name}->{'repeat'}-- == 0) {
|
||||||
|
cmd_timerstop( $name );
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
my ($server, $item);
|
||||||
|
if ($timers{$name}->{'server'}) {
|
||||||
|
$server = Irssi::server_find_tag( $timers{$name}->{'server'} );
|
||||||
|
}
|
||||||
|
if ( $server ) {
|
||||||
|
if ( $timers{$name}->{'windowitem'}) {
|
||||||
|
$item = $server->window_find_item( $timers{$name}->{'windowitem'} );
|
||||||
|
}
|
||||||
|
($item ? $item : $server)->command( $timers{$name}->{'command'} );
|
||||||
|
} else {
|
||||||
|
command( $timers{$name}->{'command'} );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub cmd_timerstop {
|
||||||
|
my ( $name ) = @_;
|
||||||
|
|
||||||
|
if ( exists ( $timers{$name} ) ) {
|
||||||
|
timeout_remove($timers{$name}->{'timer'});
|
||||||
|
$timers{$name} = ();
|
||||||
|
delete ( $timers{$name} );
|
||||||
|
print( CRAP "Timer \"$name\" stopped." );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print( CRAP "\cBTimer:\cB No such timer \"$name\"." );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub cmd_timer_help {
|
||||||
|
print ( <<EOF
|
||||||
|
|
||||||
|
TIMER LIST
|
||||||
|
TIMER ADD <name> <interval in seconds> [<repeat>] <command>
|
||||||
|
TIMER STOP <name>
|
||||||
|
|
||||||
|
repeat value of 0 means unlimited too
|
||||||
|
|
||||||
|
EOF
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
command_bind 'timer add' => sub {
|
||||||
|
my ( $data, $server, $item ) = @_;
|
||||||
|
my ( $name, $interval, $times, $command );
|
||||||
|
|
||||||
|
if ( $data =~ /^\s*(\w+)\s+(\d+(?:\.\d+)?)\s+(-?\d+)\s+(.*)$/ ) {
|
||||||
|
( $name, $interval, $times, $command ) = ( $1, $2, $3, $4 );
|
||||||
|
$times = -1 if ( $times == 0 );
|
||||||
|
}
|
||||||
|
elsif ( $data =~ /^\s*(\w+)\s+(\d+(?:\.\d+)?)\s+(.*)$/ )
|
||||||
|
{
|
||||||
|
( $name, $interval, $times, $command ) = ( $1, $2, -1, $3 );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print( CRAP "\cBTimer:\cB parameters not understood. commandline was: timer add $data");
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
if ( $times < -1 ) {
|
||||||
|
print( CRAP "\cBTimer:\cB repeat should be greater or equal to -1" );
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
if ( $command eq "" ) {
|
||||||
|
print( CRAP "\cBTimer:\cB command is empty commandline was: timer add $data" );
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
if ( exists ( $timers{$name} ) ) {
|
||||||
|
print( CRAP "\cBTimer:\cB Timer \"$name\" already active." );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
#$timers{$name} = {};
|
||||||
|
$timers{$name}->{'repeat'} = $times;
|
||||||
|
$timers{$name}->{'interval'} = $interval;
|
||||||
|
$timers{$name}->{'command'} = $command;
|
||||||
|
if ($item) {
|
||||||
|
$timers{$name}->{'windowitem'} = $item->{'name'};
|
||||||
|
}
|
||||||
|
if ($server) {
|
||||||
|
$timers{$name}->{'server'} = $server->{'tag'};
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( $times == -1 ) {
|
||||||
|
$times = 'until stopped.';
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$times .= " times.";
|
||||||
|
}
|
||||||
|
|
||||||
|
print( CRAP "Starting timer \"$name\" repeating \"$command\" every $interval seconds $times" );
|
||||||
|
|
||||||
|
$timers{$name}->{'timer'} = timeout_add( $interval * 1000, \&timer_command, $name );
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
command_bind 'timer list' => sub {
|
||||||
|
print( CRAP "Active timers:" );
|
||||||
|
foreach my $name ( keys %timers ) {
|
||||||
|
if ( $timers{$name}->{repeat} == -1 ) {
|
||||||
|
print( CRAP "$name = $timers{$name}->{'command'} (until stopped)");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
print( CRAP "$name = $timers{$name}->{'command'} ($timers{$name}->{'repeat'} repeats left)" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print( CRAP "End of /timer list" );
|
||||||
|
};
|
||||||
|
|
||||||
|
command_bind 'timer stop' => sub {
|
||||||
|
my ( $data, $server, $item ) = @_;
|
||||||
|
cmd_timerstop ($data);
|
||||||
|
};
|
||||||
|
|
||||||
|
command_bind 'timer help' => sub { cmd_timer_help() };
|
||||||
|
|
||||||
|
command_bind 'timer' => sub {
|
||||||
|
my ( $data, $server, $item ) = @_;
|
||||||
|
$data =~ s/\s+$//g;
|
||||||
|
command_runsub ( 'timer', $data, $server, $item ) ;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
signal_add_first 'default command timer' => sub {
|
||||||
|
#
|
||||||
|
# gets triggered if called with unknown subcommand
|
||||||
|
#
|
||||||
|
cmd_timer_help()
|
||||||
|
}
|
||||||
|
|
1248
bots/blackhole/blackhole/.irssi/scripts/autorun/trigger.pl
Normal file
1248
bots/blackhole/blackhole/.irssi/scripts/autorun/trigger.pl
Normal file
File diff suppressed because it is too large
Load Diff
14
bots/blackhole/blackhole/.irssi/scripts/autorun/unfuck.pl
Normal file
14
bots/blackhole/blackhole/.irssi/scripts/autorun/unfuck.pl
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Irssi;
|
||||||
|
use Irssi::Irc;
|
||||||
|
|
||||||
|
sub cmd_unfuck {
|
||||||
|
my @windows = Irssi::windows();
|
||||||
|
foreach my $window (@windows) {
|
||||||
|
next if $window->{immortal};
|
||||||
|
$window->{active}->{topic_by} ? next : $window->destroy;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::command_bind('unfuck', 'cmd_unfuck');
|
28
bots/blackhole/blackhole/.irssi/scripts/autorun/voicer.pl
Normal file
28
bots/blackhole/blackhole/.irssi/scripts/autorun/voicer.pl
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Irssi;
|
||||||
|
use Irssi::Irc;
|
||||||
|
|
||||||
|
our $VERSION = '1.0';
|
||||||
|
our %IRSSI = (
|
||||||
|
authors => 'acidvegas (help from www)',
|
||||||
|
contact => 'acidvegas@supernets.org',
|
||||||
|
name => 'Voicer',
|
||||||
|
description => 'A script to auto voice anyone who joins the channel after voicer_delay seconds..',
|
||||||
|
license => 'ISC',
|
||||||
|
url => 'http://github.coM/acidvegas/irssi',
|
||||||
|
);
|
||||||
|
|
||||||
|
sub send_voice {
|
||||||
|
my ($server, $channel, $nick) = @{$_[0]};
|
||||||
|
$server->command("/mode $channel +v $nick");
|
||||||
|
}
|
||||||
|
|
||||||
|
sub event_join {
|
||||||
|
my ($server, $channel, $nick) = @_;
|
||||||
|
my $delay = Irssi::settings_get_int('voicer_delay');
|
||||||
|
Irssi::timeout_add_once( $delay * 1000, \&send_voice, [$server, $channel, $nick]);
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::settings_add_int('misc', 'voicer_delay', 10);
|
||||||
|
Irssi::signal_add_last('message join', 'event_join');
|
1
bots/blackhole/blackhole/.irssi/startup
Normal file
1
bots/blackhole/blackhole/.irssi/startup
Normal file
@ -0,0 +1 @@
|
|||||||
|
/timer add limit 300 /alimit
|
8
bots/blackhole/blackhole/.irssi/triggers
Normal file
8
bots/blackhole/blackhole/.irssi/triggers
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#Triggers file version 1.0+
|
||||||
|
-privmsgs -masks 'CHANGEME1!CHAGEME1@CHANGEME1' -tags 'supernets' -command 'blackhole_kill $M'
|
||||||
|
-privmsgs -masks 'CHANGEME2!CHAGEME2@CHANGEME2' -tags 'supernets' -command 'blackhole_kill $M'
|
||||||
|
-privmsgs -masks 'CHANGEME3!CHAGEME3@CHANGEME3' -tags 'supernets' -command 'blackhole_kill $M'
|
||||||
|
-kicks -tags 'supernets' -other_masks 'CHANGEME1!CHAGEME1@CHANGEME1' -command 'blackhole_kick $C $N'
|
||||||
|
-kicks -tags 'supernets' -other_masks 'CHANGEME2!CHAGEME2@CHANGEME2' -command 'blackhole_kick $C $N'
|
||||||
|
-kicks -tags 'supernets' -other_masks 'CHANGEME3!CHAGEME3@CHANGEME3' -command 'blackhole_kick $C $N'
|
||||||
|
-publics -pubactions -pubnotices -pubctcps -nocase -tags 'supernets' -regexp '^.*(nick1|nick2|nick3).*$' -command 'blackhole_kick $C $N'
|
177
bots/blackhole/honeypot/.irssi/config
Normal file
177
bots/blackhole/honeypot/.irssi/config
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
servers = (
|
||||||
|
{ address = "irc.supernets.org"; chatnet = "supernets"; port = "6697"; autoconnect = "no"; use_ssl = "yes"; }
|
||||||
|
);
|
||||||
|
|
||||||
|
chatnets = {
|
||||||
|
supernets = { type = "IRC"; };
|
||||||
|
};
|
||||||
|
|
||||||
|
channels = (
|
||||||
|
{ name = "#christ"; chatnet = "supernets"; autojoin = "yes"; },
|
||||||
|
{ name = "#dev"; chatnet = "supernets"; autojoin = "yes"; },
|
||||||
|
{ name = "#help"; chatnet = "supernets"; autojoin = "yes"; },
|
||||||
|
{ name = "#pumpcoin"; chatnet = "supernets"; autojoin = "yes"; },
|
||||||
|
{ name = "#scroll"; chatnet = "supernets"; autojoin = "yes"; },
|
||||||
|
{ name = "#superbowl"; chatnet = "supernets"; autojoin = "yes"; },
|
||||||
|
{ name = "#tor"; chatnet = "supernets"; autojoin = "yes"; },
|
||||||
|
{ name = "#tunes"; chatnet = "supernets"; autojoin = "yes"; }
|
||||||
|
);
|
||||||
|
|
||||||
|
aliases = {
|
||||||
|
wc = "window close";
|
||||||
|
};
|
||||||
|
|
||||||
|
statusbar = {
|
||||||
|
items = {
|
||||||
|
barstart = "{sbstart}";
|
||||||
|
barend = "{sbend}";
|
||||||
|
topicbarstart = "{topicsbstart}";
|
||||||
|
topicbarend = "{topicsbend}";
|
||||||
|
time = "";
|
||||||
|
user = "";
|
||||||
|
window = "";
|
||||||
|
window_empty = "";
|
||||||
|
prompt = "{prompt $[.15]itemname@$tag}";
|
||||||
|
prompt_empty = "{prompt $winname}";
|
||||||
|
topic = " $topic";
|
||||||
|
topic_empty = "";
|
||||||
|
act = "";
|
||||||
|
lag = "";
|
||||||
|
more = "-- more --";
|
||||||
|
};
|
||||||
|
default = {
|
||||||
|
window = {
|
||||||
|
disabled = "yes";
|
||||||
|
type = "window";
|
||||||
|
placement = "bottom";
|
||||||
|
position = "1";
|
||||||
|
visible = "active";
|
||||||
|
items = {
|
||||||
|
barstart = { priority = "100"; };
|
||||||
|
time = { };
|
||||||
|
user = { };
|
||||||
|
window = { };
|
||||||
|
window_empty = { };
|
||||||
|
lag = { priority = "-1"; };
|
||||||
|
more = { priority = "-1"; alignment = "right"; };
|
||||||
|
barend = { priority = "100"; alignment = "right"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
window_inact = {
|
||||||
|
type = "window";
|
||||||
|
placement = "bottom";
|
||||||
|
position = "1";
|
||||||
|
visible = "inactive";
|
||||||
|
items = {
|
||||||
|
barstart = { priority = "100"; };
|
||||||
|
window = { };
|
||||||
|
window_empty = { };
|
||||||
|
more = { priority = "-1"; alignment = "right"; };
|
||||||
|
barend = { priority = "100"; alignment = "right"; };
|
||||||
|
};
|
||||||
|
disabled = "yes";
|
||||||
|
};
|
||||||
|
prompt = {
|
||||||
|
type = "root";
|
||||||
|
placement = "bottom";
|
||||||
|
position = "100";
|
||||||
|
visible = "always";
|
||||||
|
items = {
|
||||||
|
prompt = { priority = "-1"; };
|
||||||
|
prompt_empty = { priority = "-1"; };
|
||||||
|
colours = { alignment = "right"; };
|
||||||
|
input = { priority = "10"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
topic = {
|
||||||
|
type = "root";
|
||||||
|
placement = "top";
|
||||||
|
position = "1";
|
||||||
|
visible = "always";
|
||||||
|
items = {
|
||||||
|
topicbarstart = { priority = "100"; };
|
||||||
|
topic = { };
|
||||||
|
topic_empty = { };
|
||||||
|
topicbarend = { priority = "100"; alignment = "right"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
inact = { items = { }; disabled = "yes"; };
|
||||||
|
awl_0 = {
|
||||||
|
items = {
|
||||||
|
barstart = { priority = "100"; };
|
||||||
|
awl_0 = { };
|
||||||
|
barend = { priority = "100"; alignment = "right"; };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
settings = {
|
||||||
|
core = {
|
||||||
|
nick = "CHANGEME";
|
||||||
|
quit_message = "G-line: User has been permanently banned from this network.";
|
||||||
|
real_name = "CHANGEME";
|
||||||
|
settings_autosave = "yes";
|
||||||
|
timestamp_format = "%I:%M";
|
||||||
|
user_name = "CHANGEME";
|
||||||
|
server_reconnect_time = "5min";
|
||||||
|
recode_fallback = "UTF-8";
|
||||||
|
recode_out_default_charset = "UTF-8";
|
||||||
|
recode_transliterate = "yes";
|
||||||
|
recode = "yes";
|
||||||
|
recode_autodetect_utf8 = "yes";
|
||||||
|
awaylog_level = "hilight";
|
||||||
|
awaylog_file = "~/.irssi/logs/away.log";
|
||||||
|
};
|
||||||
|
"fe-text" = { actlist_sort = "refnum"; };
|
||||||
|
"irc/core" = {
|
||||||
|
alternate_nick = "CHANGEME";
|
||||||
|
channel_sync = "yes";
|
||||||
|
cmds_max_at_once = "0";
|
||||||
|
cmd_queue_speed = "0";
|
||||||
|
ctcp_version_reply = "?";
|
||||||
|
ctcp_userinfo_reply = "?";
|
||||||
|
max_ctcp_queue = "0";
|
||||||
|
part_message = "G-line: User has been permanently banned from this network.";
|
||||||
|
usermode = "+ix";
|
||||||
|
skip_motd = "yes";
|
||||||
|
ban_type = "host";
|
||||||
|
kick_first_on_kickban = "yes";
|
||||||
|
};
|
||||||
|
"irc/flood" = { flood_timecheck = "0"; flood_max_msgs = "0"; };
|
||||||
|
"fe-common/core" = {
|
||||||
|
show_names_on_join = "no";
|
||||||
|
beep_msg_level = "MSGS HILIGHT";
|
||||||
|
term_charset = "UTF-8";
|
||||||
|
max_command_history = "25";
|
||||||
|
autolog_path = "~/.irssi/logs/$tag/$0.log";
|
||||||
|
autocreate_query_level = "MSGS";
|
||||||
|
activity_hilight_level = "MSGS";
|
||||||
|
beep_when_away = "no";
|
||||||
|
beep_when_window_active = "no";
|
||||||
|
hilight_level = "PUBLIC";
|
||||||
|
};
|
||||||
|
"perl/core/scripts" = {
|
||||||
|
nickcolor_colors = "3 5 6 7 10 11 12 13 14";
|
||||||
|
awl_shared_sbar = "OFF";
|
||||||
|
awl_block = "-14";
|
||||||
|
awl_viewer = "no";
|
||||||
|
awl_prefer_name = "yes";
|
||||||
|
awl_sbar_maxlength = "yes";
|
||||||
|
chansort_autosort = "yes";
|
||||||
|
awl_mouse = "yes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
windows = { 1 = { immortal = "yes"; name = "status"; level = "ALL"; }; };
|
||||||
|
mainwindows = { 1 = { first_line = "7"; lines = "13"; }; };
|
||||||
|
logs = { };
|
||||||
|
keyboard = (
|
||||||
|
{ key = "meta-[M"; id = "command"; data = "mouse_xterm"; }
|
||||||
|
);
|
||||||
|
ignores = (
|
||||||
|
{ mask = "*!*@services.supernets.org"; level = "CRAP MSGS PUBLICS NOTICES SNOTES CTCPS ACTIONS MODES TOPICS WALLOPS INVITES NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS"; servertag = "supernets"; },
|
||||||
|
{ mask = "*!*@super.nets"; level = "CRAP MSGS PUBLICS NOTICES SNOTES CTCPS ACTIONS MODES TOPICS WALLOPS INVITES NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS"; servertag = "supernets"; },
|
||||||
|
{ mask = "*!*@super.nets.bot"; level = "CRAP MSGS PUBLICS NOTICES SNOTES CTCPS ACTIONS MODES TOPICS WALLOPS INVITES NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS"; servertag = "supernets"; },
|
||||||
|
{ mask = "*!*@super.nets.link"; level = "CRAP MSGS PUBLICS NOTICES SNOTES CTCPS ACTIONS MODES TOPICS WALLOPS INVITES NICKS DCC DCCMSGS CLIENTNOTICES CLIENTCRAP CLIENTERRORS HILIGHTS"; servertag = "supernets"; }
|
||||||
|
);
|
533
bots/blackhole/honeypot/.irssi/default.theme
Normal file
533
bots/blackhole/honeypot/.irssi/default.theme
Normal file
@ -0,0 +1,533 @@
|
|||||||
|
default_color = "-1";
|
||||||
|
info_eol = "false";
|
||||||
|
replaces = { "[]=" = "%K$*%n"; "<>=" = "%K$*%n"; };
|
||||||
|
abstracts = {
|
||||||
|
line_start = "";
|
||||||
|
timestamp = "[$*]";
|
||||||
|
hilight = "%_$*%_";
|
||||||
|
error = "%R$*%n";
|
||||||
|
channel = "%_%b$*%_%w";
|
||||||
|
nick = "%_$*%_";
|
||||||
|
nickhost = "[$*]";
|
||||||
|
server = "%_$*%_";
|
||||||
|
comment = "[$*]";
|
||||||
|
reason = "{comment $*}";
|
||||||
|
mode = "{comment $*}";
|
||||||
|
channick_hilight = "%b$*%n";
|
||||||
|
chanhost_hilight = "{nickhost %b$*%n}";
|
||||||
|
channick = "%_$*%_";
|
||||||
|
chanhost = "{nickhost $*}";
|
||||||
|
channelhilight = "%b$*%n";
|
||||||
|
ban = "%c$*%n";
|
||||||
|
msgnick = "%K<%n$0$1-%K>%n %|";
|
||||||
|
ownmsgnick = "{msgnick $0 $1-}";
|
||||||
|
ownnick = "%_$*%n";
|
||||||
|
pubmsgnick = "{msgnick $0 $1-}";
|
||||||
|
pubnick = "%N$*%n";
|
||||||
|
pubmsgmenick = "{msgnick $0 $1-}";
|
||||||
|
menick = "%Y$*%n";
|
||||||
|
pubmsghinick = "{msgnick $0$1$2-%n}";
|
||||||
|
msgchannel = "%K:%c$*%n";
|
||||||
|
privmsg = "[%R$0%K(%r$1-%K)%n] ";
|
||||||
|
ownprivmsg = "[%r$0%K(%R$1-%K)%n] ";
|
||||||
|
ownprivmsgnick = "{msgnick $*}";
|
||||||
|
ownprivnick = "%_$*%n";
|
||||||
|
privmsgnick = "{msgnick %R$*%n}";
|
||||||
|
action_core = "%_ * $*%n";
|
||||||
|
action = "{action_core $*} ";
|
||||||
|
ownaction = "{action $*}";
|
||||||
|
ownaction_target = "{action_core $0}%K:%c$1%n ";
|
||||||
|
pvtaction = "%_ (*) $*%n ";
|
||||||
|
pvtaction_query = "{action $*}";
|
||||||
|
pubaction = "{action $*}";
|
||||||
|
whois = "%# $[8]0 : $1-";
|
||||||
|
ownnotice = "[%m$0%K]%n ";
|
||||||
|
notice = "[%m$*%K]%n ";
|
||||||
|
pubnotice_channel = "%K:%m$*";
|
||||||
|
pvtnotice_host = "%K(%m$*%K)";
|
||||||
|
servernotice = "%g!$*%n ";
|
||||||
|
ownctcp = "[%r$0%K(%R$1-%K)] ";
|
||||||
|
ctcp = "%g$*%n";
|
||||||
|
wallop = "%_$*%n: ";
|
||||||
|
wallop_nick = "%n$*";
|
||||||
|
wallop_action = "%_ * $*%n ";
|
||||||
|
netsplit = "%b$*%n";
|
||||||
|
netjoin = "%g$*%n";
|
||||||
|
names_prefix = "";
|
||||||
|
names_nick = "[%_$0%_$1-] ";
|
||||||
|
names_nick_op = "{names_nick $*}";
|
||||||
|
names_nick_halfop = "{names_nick $*}";
|
||||||
|
names_nick_voice = "{names_nick $*}";
|
||||||
|
names_users = "[%g$*%n]";
|
||||||
|
names_channel = "%G$*%n";
|
||||||
|
dcc = "%g$*%n";
|
||||||
|
dccfile = "%_$*%_";
|
||||||
|
dccownmsg = "[%r$0%K($1-%K)%n] ";
|
||||||
|
dccownnick = "%R$*%n";
|
||||||
|
dccownquerynick = "%_$*%n";
|
||||||
|
dccownaction = "{action $*}";
|
||||||
|
dccownaction_target = "{action_core $0}%K:%c$1%n ";
|
||||||
|
dccmsg = "[%G$1-%K(%g$0%K)%n] ";
|
||||||
|
dccquerynick = "%G$*%n";
|
||||||
|
dccaction = "%_ (*dcc*) $*%n %|";
|
||||||
|
sb_background = "%n%w";
|
||||||
|
sb_default_bg = "%n";
|
||||||
|
sb_prompt_bg = "%n";
|
||||||
|
sb_info_bg = "%n";
|
||||||
|
sb_topic_bg = "%n";
|
||||||
|
sbstart = "";
|
||||||
|
sbend = " ";
|
||||||
|
topicsbstart = "%_[IRSSI]%_{sbstart $*}";
|
||||||
|
topicsbend = "{sbend $*}";
|
||||||
|
prompt = "[%b$*%w] ";
|
||||||
|
sb = "%K[%n$*%K]%n";
|
||||||
|
sbmode = " %c+%n$*";
|
||||||
|
sbaway = " %GzZzZ%n";
|
||||||
|
sbservertag = ":$0";
|
||||||
|
sbnickmode = "$0";
|
||||||
|
sb_act_sep = "%c$*";
|
||||||
|
sb_act_text = "%W$*";
|
||||||
|
sb_act_msg = "%c$*";
|
||||||
|
sb_act_hilight = "%Y$*";
|
||||||
|
sb_act_hilight_color = "$0$1-%n";
|
||||||
|
};
|
||||||
|
formats = {
|
||||||
|
"fe-common/irc/dcc" = {
|
||||||
|
own_dcc = "{dccownmsg dcc {dccownnick $1}}$2";
|
||||||
|
own_dcc_action = "{dccownaction_target $0 $1}$2";
|
||||||
|
own_dcc_action_query = "{dccownaction $0}$2";
|
||||||
|
own_dcc_ctcp = "{ownctcp ctcp $0}$1 $2";
|
||||||
|
dcc_msg = "{dccmsg dcc $0}$1";
|
||||||
|
action_dcc = "{dccaction $0}$1";
|
||||||
|
action_dcc_query = "{dccaction $0}$1";
|
||||||
|
own_dcc_query = "{ownmsgnick {dccownquerynick $0}}$2";
|
||||||
|
dcc_msg_query = "{privmsgnick $0}$1";
|
||||||
|
dcc_ctcp = "{dcc >>> DCC CTCP {hilight $1} received from {hilight $0}: $2}";
|
||||||
|
dcc_chat = "{dcc DCC CHAT from {nick $0} [$1 port $2]}";
|
||||||
|
dcc_chat_channel = "{dcc DCC CHAT from {nick $0} [$1 port $2] requested in channel {channel $3}}";
|
||||||
|
dcc_chat_not_found = "{dcc No DCC CHAT connection open to {nick $0}}";
|
||||||
|
dcc_chat_connected = "{dcc DCC CHAT connection with {nick $0} [$1 port $2] established}";
|
||||||
|
dcc_chat_disconnected = "{dcc DCC lost chat to {nick $0}}";
|
||||||
|
dcc_send = "{dcc DCC SEND from {nick $0} [$1 port $2]: $3 [$4]}";
|
||||||
|
dcc_send_channel = "{dcc DCC SEND from {nick $0} [$1 port $2]: $3 [$4 bytes] requested in channel {channel $5}}";
|
||||||
|
dcc_send_exists = "{dcc DCC already sending file {dccfile $0} for {nick $1}}";
|
||||||
|
dcc_send_no_route = "{dcc DCC route lost to nick {nick $0} when trying to send file {dccfile $1}}";
|
||||||
|
dcc_send_not_found = "{dcc DCC not sending file {dccfile $1} to {nick $0}}";
|
||||||
|
dcc_send_file_open_error = "{dcc DCC can't open file {dccfile $0}: $1}";
|
||||||
|
dcc_send_connected = "{dcc DCC sending file {dccfile $0} for {nick $1} [$2 port $3]}";
|
||||||
|
dcc_send_complete = "{dcc DCC sent file {dccfile $0} [{hilight $1}] for {nick $2} in {hilight $3} [{hilight $4kB/s}]}";
|
||||||
|
dcc_send_aborted = "{dcc DCC aborted sending file {dccfile $0} for {nick $1}}";
|
||||||
|
dcc_get_not_found = "{dcc DCC no file offered by {nick $0}}";
|
||||||
|
dcc_get_connected = "{dcc DCC receiving file {dccfile $0} from {nick $1} [$2 port $3]}";
|
||||||
|
dcc_get_complete = "{dcc DCC received file {dccfile $0} [$1] from {nick $2} in {hilight $3} [$4kB/s]}";
|
||||||
|
dcc_get_aborted = "{dcc DCC aborted receiving file {dccfile $0} from {nick $1}}";
|
||||||
|
dcc_get_write_error = "{dcc DCC error writing to file {dccfile $0}: {comment $1}";
|
||||||
|
dcc_unknown_ctcp = "{dcc DCC unknown ctcp {hilight $0} from {nick $1} [$2]}";
|
||||||
|
dcc_unknown_reply = "{dcc DCC unknown reply {hilight $0} from {nick $1} [$2]}";
|
||||||
|
dcc_unknown_type = "{dcc DCC unknown type {hilight $0}}";
|
||||||
|
dcc_invalid_ctcp = "{dcc DCC received CTCP {hilight $0} with invalid parameters from {nick $1}}";
|
||||||
|
dcc_connect_error = "{dcc DCC can't connect to {hilight $0} port {hilight $1}}";
|
||||||
|
dcc_cant_create = "{dcc DCC can't create file {dccfile $0}: $1}";
|
||||||
|
dcc_rejected = "{dcc DCC $0 was rejected by {nick $1} [{hilight $2}]}";
|
||||||
|
dcc_request_send = "{dcc DCC $0 request sent to {nick $1}: $2";
|
||||||
|
dcc_close = "{dcc DCC $0 close for {nick $1} [{hilight $2}]}";
|
||||||
|
dcc_lowport = "{dcc Warning: Port sent with DCC request is a lowport ({hilight $0, $1}) - this isn't normal. It is possible the address/port is faked (or maybe someone is just trying to bypass firewall)}";
|
||||||
|
dcc_list_header = "{dcc DCC connections}";
|
||||||
|
dcc_list_line_chat = "{dcc $0 $1}";
|
||||||
|
dcc_list_line_file = "{dcc $0 $1: %|$2 of $3 ($4%%) - $5kB/s - ETA $7 - $6}";
|
||||||
|
dcc_list_line_queued_send = "{dcc - $0 $2 (queued)}";
|
||||||
|
dcc_list_footer = "";
|
||||||
|
dcc_list_line_server = "{dcc $0: Port($1) - Send($2) - Chat($3) - Fserve($4)}";
|
||||||
|
dcc_server_started = "{dcc DCC SERVER started on port {hilight $0}}";
|
||||||
|
dcc_server_closed = "{dcc DCC SERVER on port {hilight $0} closed}";
|
||||||
|
};
|
||||||
|
"fe-common/irc/notifylist" = {
|
||||||
|
notify_join = "{nick $0} [$1@$2] [{hilight $3}] has joined to $4";
|
||||||
|
notify_part = "{nick $0} has left $4";
|
||||||
|
notify_away = "{nick $0} [$5] [$1@$2] [{hilight $3}] is now away: $4";
|
||||||
|
notify_unaway = "{nick $0} [$4] [$1@$2] [{hilight $3}] is now unaway";
|
||||||
|
notify_online = "On $0: {hilight $1}";
|
||||||
|
notify_offline = "Offline: $0";
|
||||||
|
notify_list = "$0: $1 $2";
|
||||||
|
notify_list_empty = "The notify list is empty";
|
||||||
|
};
|
||||||
|
"fe-common/core" = {
|
||||||
|
line_start = "{line_start}";
|
||||||
|
#line_start_irssi = "{line_start}{hilight Irssi:} ";
|
||||||
|
line_start_irssi = "";
|
||||||
|
timestamp = "{timestamp $Z} ";
|
||||||
|
servertag = "[$0] ";
|
||||||
|
daychange = "Day changed to %%d %%b %%Y";
|
||||||
|
talking_with = "You are now talking with {nick $0}";
|
||||||
|
refnum_too_low = "Window number must be greater than 1";
|
||||||
|
error_server_sticky = "Window's server is sticky and it cannot be changed without -unsticky option";
|
||||||
|
set_server_sticky = "Window's server set sticky";
|
||||||
|
unset_server_sticky = "Window's server isn't sticky anymore";
|
||||||
|
window_name_not_unique = "Window names must be unique";
|
||||||
|
window_level = "Window level is now $0";
|
||||||
|
window_set_immortal = "Window is now immortal";
|
||||||
|
window_unset_immortal = "Window isn't immortal anymore";
|
||||||
|
window_immortal_error = "Window is immortal, if you really want to close it, say /WINDOW IMMORTAL OFF";
|
||||||
|
windowlist_header = "%#Ref Name Active item Server Level";
|
||||||
|
windowlist_line = "%#$[3]0 %|$[20]1 $[15]2 $[15]3 $4";
|
||||||
|
windowlist_footer = "";
|
||||||
|
windows_layout_saved = "Layout of windows is now remembered";
|
||||||
|
windows_layout_reset = "Layout of windows reset to defaults";
|
||||||
|
window_info_header = "";
|
||||||
|
window_info_footer = "";
|
||||||
|
window_info_refnum = "%#Window : {hilight #$0}";
|
||||||
|
window_info_refnum_sticky = "%#Window : {hilight #$0 (sticky)}";
|
||||||
|
window_info_name = "%#Name : $0";
|
||||||
|
window_info_history = "%#History : $0";
|
||||||
|
window_info_immortal = "%#Immortal: yes";
|
||||||
|
window_info_size = "%#Size : $0x$1";
|
||||||
|
window_info_level = "%#Level : $0";
|
||||||
|
window_info_server = "%#Server : $0";
|
||||||
|
window_info_server_sticky = "%#Server : $0 (sticky)";
|
||||||
|
window_info_theme = "%#Theme : $0$1";
|
||||||
|
window_info_bound_items_header = "%#Bounds : {hilight Name Server tag}";
|
||||||
|
window_info_bound_item = "%# : $[!30]0 $[!15]1 $2";
|
||||||
|
window_info_bound_items_footer = "";
|
||||||
|
window_info_items_header = "%#Items : {hilight Name Server tag}";
|
||||||
|
window_info_item = "%# $[7]0: $[!30]1 $2";
|
||||||
|
window_info_items_footer = "";
|
||||||
|
looking_up = "Looking up {server $0}";
|
||||||
|
connecting = "Connecting to {server $0} [$1] port {hilight $2}";
|
||||||
|
reconnecting = "Reconnecting to {server $0} [$1] port {hilight $2} - use /RMRECONNS to abort";
|
||||||
|
connection_established = "Connection to {server $0} established";
|
||||||
|
cant_connect = "Unable to connect server {server $0} port {hilight $1} {reason $2}";
|
||||||
|
connection_lost = "Connection lost to {server $0}";
|
||||||
|
lag_disconnected = "No PONG reply from server {server $0} in $1 seconds, disconnecting";
|
||||||
|
disconnected = "Disconnected from {server $0} {reason $1}";
|
||||||
|
server_quit = "Disconnecting from server {server $0}: {reason $1}";
|
||||||
|
server_changed = "Changed to {hilight $2} server {server $1}";
|
||||||
|
unknown_server_tag = "Unknown server tag {server $0}";
|
||||||
|
no_connected_servers = "Not connected to any servers";
|
||||||
|
server_list = "{server $0}: $1:$2 ($3)";
|
||||||
|
server_lookup_list = "{server $0}: $1:$2 ($3) (connecting...)";
|
||||||
|
server_reconnect_list = "{server $0}: $1:$2 ($3) ($5 left before reconnecting)";
|
||||||
|
server_reconnect_removed = "Removed reconnection to server {server $0} port {hilight $1}";
|
||||||
|
server_reconnect_not_found = "Reconnection tag {server $0} not found";
|
||||||
|
setupserver_added = "Server {server $0} saved";
|
||||||
|
setupserver_removed = "Server {server $0} removed";
|
||||||
|
setupserver_not_found = "Server {server $0} not found";
|
||||||
|
your_nick = "Your nickname is {nick $0}";
|
||||||
|
join = "<%gJoin> {channick $0} {chanhost $1}";
|
||||||
|
part = "<%rPart> {channick $0} {chanhost $1} {reason $3}";
|
||||||
|
kick = "<%rKick> {channick $0} was kicked by {nick $2} {reason $3}";
|
||||||
|
quit = "<%rQuit> {channick $0} {chanhost $1} {reason $2}";
|
||||||
|
quit_once = "<%rQuit> {channel $3} {channick $0} {chanhost $1} {reason $2}";
|
||||||
|
invite = "{nick $0} invites you to {channel $1}";
|
||||||
|
not_invited = "You have not been invited to a channel!";
|
||||||
|
new_topic = "<%btopic> %b\"$2\"%w set by {nick $0}";
|
||||||
|
topic_unset = "Topic unset by {nick $0} on {channel $1}";
|
||||||
|
your_nick_changed = "<%bNick> You are now {nick $1}";
|
||||||
|
nick_changed = "<%bNick> {channick $0} is now {channick $1}";
|
||||||
|
talking_in = "You are now talking in {channel $0}";
|
||||||
|
not_in_channels = "You are not on any channels";
|
||||||
|
current_channel = "Current channel {channel $0}";
|
||||||
|
#names = "{names_users Users {names_channel $0}}";
|
||||||
|
names = "";
|
||||||
|
names_prefix = "%#{names_prefix $0}";
|
||||||
|
names_nick_op = "{names_nick_op $0 $1}";
|
||||||
|
names_nick_halfop = "{names_nick_halfop $0 $1}";
|
||||||
|
names_nick_voice = "{names_nick_voice $0 $1}";
|
||||||
|
names_nick = "{names_nick $0 $1}";
|
||||||
|
endofnames = "{channel $0} - Total of {hilight $1} nicks {comment {hilight $2} ops, {hilight $3} halfops, {hilight $4} voices, {hilight $5} normal}";
|
||||||
|
chanlist_header = "%#You are on the following channels:";
|
||||||
|
chanlist_line = "%#{channel $[-10]0} %|+$1 ($2): $3";
|
||||||
|
chansetup_not_found = "Channel {channel $0} not found";
|
||||||
|
chansetup_added = "Channel {channel $0} saved";
|
||||||
|
chansetup_removed = "Channel {channel $0} removed";
|
||||||
|
chansetup_header = "%#Channel Network Password Settings";
|
||||||
|
chansetup_line = "%#{channel $[15]0} %|$[10]1 $[10]2 $3";
|
||||||
|
chansetup_footer = "";
|
||||||
|
own_msg = "{ownmsgnick $2 {ownnick $0}}$1";
|
||||||
|
own_msg_channel = "{ownmsgnick $3 {ownnick $0}{msgchannel $1}}$2";
|
||||||
|
own_msg_private = "{ownprivmsg msg $0}$1";
|
||||||
|
own_msg_private_query = "{ownprivmsgnick {ownprivnick $2}}$1";
|
||||||
|
pubmsg_me = "{pubmsgmenick $2 {menick $0}}$1";
|
||||||
|
pubmsg_me_channel = "{pubmsgmenick $3 {menick $0}{msgchannel $1}}$2";
|
||||||
|
pubmsg_hilight = "{pubmsghinick $0 $3 $1}$2";
|
||||||
|
pubmsg_hilight_channel = "{pubmsghinick $0 $4 $1{msgchannel $2}}$3";
|
||||||
|
pubmsg = "{pubmsgnick $2 {pubnick \00306$0}}$1";
|
||||||
|
pubmsg_channel = "{pubmsgnick $3 {pubnick $0}{msgchannel $1}}$2";
|
||||||
|
msg_private = "{privmsg $0 $1}$2";
|
||||||
|
msg_private_query = "{privmsgnick $0}$2";
|
||||||
|
no_msgs_got = "You have not received a message from anyone yet";
|
||||||
|
no_msgs_sent = "You have not sent a message to anyone yet";
|
||||||
|
query_start = "Starting query in {server $1} with {nick $0}";
|
||||||
|
query_stop = "Closing query with {nick $0}";
|
||||||
|
no_query = "No query with {nick $0}";
|
||||||
|
query_server_changed = "Query with {nick $0} changed to server {server $1}";
|
||||||
|
hilight_header = "%#Highlights:";
|
||||||
|
hilight_line = "%#$[-4]0 $1 $2 $3$4";
|
||||||
|
hilight_footer = "";
|
||||||
|
hilight_not_found = "Highlight not found: $0";
|
||||||
|
hilight_removed = "Highlight removed: $0";
|
||||||
|
alias_added = "Alias $0 added";
|
||||||
|
alias_removed = "Alias $0 removed";
|
||||||
|
alias_not_found = "No such alias: $0";
|
||||||
|
aliaslist_header = "%#Aliases:";
|
||||||
|
aliaslist_line = "%#$[10]0 $1";
|
||||||
|
aliaslist_footer = "";
|
||||||
|
log_opened = "Log file {hilight $0} opened";
|
||||||
|
log_closed = "Log file {hilight $0} closed";
|
||||||
|
log_create_failed = "Couldn't create log file {hilight $0}: $1";
|
||||||
|
log_locked = "Log file {hilight $0} is locked, probably by another running Irssi";
|
||||||
|
log_not_open = "Log file {hilight $0} not open";
|
||||||
|
log_started = "Started logging to file {hilight $0}";
|
||||||
|
log_stopped = "Stopped logging to file {hilight $0}";
|
||||||
|
log_list_header = "%#Logs:";
|
||||||
|
log_list = "%#$0 $1: $2 $3$4$5";
|
||||||
|
log_list_footer = "";
|
||||||
|
windowlog_file = "Window LOGFILE set to $0";
|
||||||
|
windowlog_file_logging = "Can't change window's logfile while log is on";
|
||||||
|
no_away_msgs = "No new messages in awaylog";
|
||||||
|
away_msgs = "{hilight $1} new messages in awaylog:";
|
||||||
|
module_header = "%#Module Type Submodules";
|
||||||
|
module_line = "%#$[!20]0 $[7]1 $2";
|
||||||
|
module_footer = "";
|
||||||
|
module_already_loaded = "Module {hilight $0/$1} already loaded";
|
||||||
|
module_not_loaded = "Module {hilight $0/$1} is not loaded";
|
||||||
|
module_load_error = "Error loading module {hilight $0/$1}: $2";
|
||||||
|
module_invalid = "{hilight $0/$1} isn't Irssi module";
|
||||||
|
module_loaded = "Loaded module {hilight $0/$1}";
|
||||||
|
module_unloaded = "Unloaded module {hilight $0/$1}";
|
||||||
|
command_unknown = "Unknown command: $0";
|
||||||
|
command_ambiguous = "Ambiguous command: $0";
|
||||||
|
option_unknown = "Unknown option: $0";
|
||||||
|
option_ambiguous = "Ambiguous option: $0";
|
||||||
|
option_missing_arg = "Missing required argument for: $0";
|
||||||
|
not_enough_params = "Not enough parameters given";
|
||||||
|
not_connected = "Not connected to server";
|
||||||
|
not_joined = "Not joined to any channel";
|
||||||
|
chan_not_found = "Not joined to such channel";
|
||||||
|
chan_not_synced = "Channel not fully synchronized yet, try again after a while";
|
||||||
|
illegal_proto = "Command isn't designed for the chat protocol of the active server";
|
||||||
|
not_good_idea = "Doing this is not a good idea. Add -YES option to command if you really mean it";
|
||||||
|
invalid_number = "Invalid number";
|
||||||
|
invalid_time = "Invalid timestamp";
|
||||||
|
invalid_level = "Invalid message level";
|
||||||
|
invalid_size = "Invalid size";
|
||||||
|
invalid_charset = "Invalid charset: $0";
|
||||||
|
eval_max_recurse = "/eval hit maximum recursion limit";
|
||||||
|
program_not_found = "Could not find file or file is not executable";
|
||||||
|
theme_saved = "Theme saved to $0";
|
||||||
|
theme_save_failed = "Error saving theme to $0: $1";
|
||||||
|
theme_not_found = "Theme {hilight $0} not found";
|
||||||
|
theme_changed = "Now using theme {hilight $0} ($1)";
|
||||||
|
window_theme = "Using theme {hilight $0} in this window";
|
||||||
|
window_theme_default = "No theme is set for this window";
|
||||||
|
window_theme_changed = "Now using theme {hilight $0} ($1) in this window";
|
||||||
|
window_theme_removed = "Removed theme from this window";
|
||||||
|
format_title = "%:[{hilight $0}] - [{hilight $1}]%:";
|
||||||
|
format_subtitle = "[{hilight $0}]";
|
||||||
|
format_item = "$0 = $1";
|
||||||
|
ignored = "Ignoring {hilight $1} from {nick $0}";
|
||||||
|
ignored_options = "Ignoring {hilight $1} from {nick $0} {comment $2}";
|
||||||
|
unignored = "Unignored {nick $0}";
|
||||||
|
ignore_not_found = "{nick $0} is not being ignored";
|
||||||
|
ignore_no_ignores = "There are no ignores";
|
||||||
|
ignore_header = "%#Ignore List:";
|
||||||
|
ignore_line = "%#$[-4]0 $1: $2 $3 $4";
|
||||||
|
ignore_footer = "";
|
||||||
|
not_channel_or_query = "The current window is not a channel or query window";
|
||||||
|
conversion_added = "Added {hilight $0}/{hilight $1} to conversion database";
|
||||||
|
conversion_removed = "Removed {hilight $0} from conversion database";
|
||||||
|
conversion_not_found = "{hilight $0} not found in conversion database";
|
||||||
|
conversion_no_translits = "Transliterations not supported in this system";
|
||||||
|
recode_header = "%#Target Character set";
|
||||||
|
recode_line = "%#%|$[!30]0 $1";
|
||||||
|
unknown_chat_protocol = "Unknown chat protocol: $0";
|
||||||
|
unknown_chatnet = "Unknown chat network: $0 (create it with /NETWORK ADD)";
|
||||||
|
not_toggle = "Value must be either ON, OFF or TOGGLE";
|
||||||
|
perl_error = "Perl error: $0";
|
||||||
|
bind_header = "%#Key Action";
|
||||||
|
bind_list = "%#$[!20]0 $1 $2";
|
||||||
|
bind_command_list = "$[!30]0 $1";
|
||||||
|
bind_footer = "";
|
||||||
|
bind_unknown_id = "Unknown bind action: $0";
|
||||||
|
config_saved = "Saved configuration to file $0";
|
||||||
|
config_reloaded = "Reloaded configuration";
|
||||||
|
config_modified = "Configuration file was modified since irssi was last started - do you want to overwrite the possible changes?";
|
||||||
|
glib_error = "{error $0} $1";
|
||||||
|
overwrite_config = "Overwrite config (y/N)?";
|
||||||
|
set_title = "[{hilight $0}]";
|
||||||
|
set_item = "$0 = $1";
|
||||||
|
set_unknown = "Unknown setting $0";
|
||||||
|
set_not_boolean = "Setting {hilight $0} isn't boolean, use /SET";
|
||||||
|
no_completions = "There's no completions";
|
||||||
|
completion_removed = "Removed completion $0";
|
||||||
|
completion_header = "%#Key Value Auto";
|
||||||
|
completion_line = "%#$[10]0 $[!40]1 $2";
|
||||||
|
completion_footer = "";
|
||||||
|
};
|
||||||
|
"fe-text" = {
|
||||||
|
lastlog_too_long = "/LASTLOG would print $0 lines. If you really want to print all these lines use -force option.";
|
||||||
|
lastlog_count = "{hilight Lastlog}: $0 lines";
|
||||||
|
lastlog_start = "{hilight Lastlog}:";
|
||||||
|
lastlog_end = "{hilight End of Lastlog}";
|
||||||
|
lastlog_separator = "--";
|
||||||
|
refnum_not_found = "Window number $0 not found";
|
||||||
|
window_too_small = "Not enough room to resize this window";
|
||||||
|
cant_hide_last = "You can't hide the last window";
|
||||||
|
cant_hide_sticky_windows = "You can't hide sticky windows (use /WINDOW STICK OFF)";
|
||||||
|
cant_show_sticky_windows = "You can't show sticky windows (use /WINDOW STICK OFF)";
|
||||||
|
window_not_sticky = "Window is not sticky";
|
||||||
|
window_set_sticky = "Window set sticky";
|
||||||
|
window_unset_sticky = "Window is not sticky anymore";
|
||||||
|
window_info_sticky = "%#Sticky : $0";
|
||||||
|
window_info_scroll = "%#Scroll : $0";
|
||||||
|
window_scroll = "Window scroll mode is now $0";
|
||||||
|
window_scroll_unknown = "Unknown scroll mode $0, must be ON, OFF or DEFAULT";
|
||||||
|
statusbar_list_header = "%#Name Type Placement Position Visible";
|
||||||
|
statusbar_list_footer = "";
|
||||||
|
statusbar_list = "%#$[30]0 $[6]1 $[9]2 $[8]3 $4";
|
||||||
|
statusbar_info_name = "%#Statusbar: {hilight $0}";
|
||||||
|
statusbar_info_type = "%#Type : $0";
|
||||||
|
statusbar_info_placement = "%#Placement: $0";
|
||||||
|
statusbar_info_position = "%#Position : $0";
|
||||||
|
statusbar_info_visible = "%#Visible : $0";
|
||||||
|
statusbar_info_item_header = "%#Items : Name Priority Alignment";
|
||||||
|
statusbar_info_item_footer = "";
|
||||||
|
statusbar_info_item_name = "%# : $[35]0 $[9]1 $2";
|
||||||
|
statusbar_not_found = "Statusbar doesn't exist: $0";
|
||||||
|
statusbar_item_not_found = "Statusbar item doesn't exist: $0";
|
||||||
|
statusbar_unknown_command = "Unknown statusbar command: $0";
|
||||||
|
statusbar_unknown_type = "Statusbar type must be 'window' or 'root'";
|
||||||
|
statusbar_unknown_placement = "Statusbar placement must be 'top' or 'bottom'";
|
||||||
|
statusbar_unknown_visibility = "Statusbar visibility must be 'always', 'active' or 'inactive'";
|
||||||
|
paste_warning = "Pasting $0 lines to $1. Press Ctrl-K if you wish to do this or Ctrl-C to cancel.";
|
||||||
|
paste_prompt = "Hit Ctrl-K to paste, Ctrl-C to abort?";
|
||||||
|
};
|
||||||
|
"fe-common/perl" = {
|
||||||
|
script_not_found = "Script {hilight $0} not found";
|
||||||
|
script_not_loaded = "Script {hilight $0} is not loaded";
|
||||||
|
script_loaded = "Loaded script {hilight $0}";
|
||||||
|
script_unloaded = "Unloaded script {hilight $0}";
|
||||||
|
no_scripts_loaded = "No scripts are loaded";
|
||||||
|
script_list_header = "%#Loaded scripts:";
|
||||||
|
script_list_line = "%#$[!15]0 $1";
|
||||||
|
script_list_footer = "";
|
||||||
|
script_error = "{error Error in script {hilight $0}:}";
|
||||||
|
};
|
||||||
|
"fe-common/irc" = {
|
||||||
|
netsplit = "{netsplit Netsplit} {server $0} <-> {server $1} quits: $2";
|
||||||
|
netsplit_more = "{netsplit Netsplit} {server $0} <-> {server $1} quits: $2 (+$3 more, use /NETSPLIT to show all of them)";
|
||||||
|
netsplit_join = "{netjoin Netsplit} over, joins: $0";
|
||||||
|
netsplit_join_more = "{netjoin Netsplit} over, joins: $0 (+$1 more)";
|
||||||
|
no_netsplits = "There are no net splits";
|
||||||
|
netsplits_header = "%#Nick Channel Server Split server";
|
||||||
|
netsplits_line = "%#$[9]0 $[10]1 $[20]2 $3";
|
||||||
|
netsplits_footer = "";
|
||||||
|
network_added = "Network $0 saved";
|
||||||
|
network_removed = "Network $0 removed";
|
||||||
|
network_not_found = "Network $0 not found";
|
||||||
|
network_header = "%#Networks:";
|
||||||
|
network_line = "%#$0: $1";
|
||||||
|
network_footer = "";
|
||||||
|
setupserver_header = "%#Server Port Network Settings";
|
||||||
|
setupserver_line = "%#%|$[!20]0 $[5]1 $[10]2 $3";
|
||||||
|
setupserver_footer = "";
|
||||||
|
joinerror_toomany = "Cannot join to channel {channel $0} (You have joined to too many channels)";
|
||||||
|
joinerror_full = "Cannot join to channel {channel $0} (Channel is full)";
|
||||||
|
joinerror_invite = "Cannot join to channel {channel $0} (You must be invited)";
|
||||||
|
joinerror_banned = "Cannot join to channel {channel $0} (You are banned)";
|
||||||
|
joinerror_bad_key = "Cannot join to channel {channel $0} (Bad channel key)";
|
||||||
|
joinerror_bad_mask = "Cannot join to channel {channel $0} (Bad channel mask)";
|
||||||
|
joinerror_unavail = "Cannot join to channel {channel $0} (Channel is temporarily unavailable)";
|
||||||
|
joinerror_duplicate = "Channel {channel $0} already exists - cannot create it";
|
||||||
|
channel_rejoin = "Channel {channel $0} is temporarily unavailable, this is normally because of netsplits. Irssi will now automatically try to rejoin back to this channel until the join is successful. Use /RMREJOINS command if you wish to abort this.";
|
||||||
|
inviting = "Inviting {nick $0} to {channel $1}";
|
||||||
|
channel_created = "Channel {channelhilight $0} created $1";
|
||||||
|
url = "Home page for {channelhilight $0}: $1";
|
||||||
|
topic = "";
|
||||||
|
no_topic = "";
|
||||||
|
topic_info = "";
|
||||||
|
chanmode_change = "<%bMode> {mode $1} by {nick $2}";
|
||||||
|
server_chanmode_change = "<{netsplit Mode}> {mode $1} by {nick $2}";
|
||||||
|
channel_mode = "mode/{channelhilight $0} {mode $1}";
|
||||||
|
bantype = "Ban type changed to {channel $0}";
|
||||||
|
no_bans = "No bans in channel {channel $0}";
|
||||||
|
banlist = "$0 - {channel $1}: ban {ban $2}";
|
||||||
|
banlist_long = "$0 - {channel $1}: ban {ban $2} {comment by {nick $3}, $4 secs ago}";
|
||||||
|
ebanlist = "{channel $0}: ban exception {ban $1}";
|
||||||
|
ebanlist_long = "{channel $0}: ban exception {ban $1} {comment by {nick $2}, $3 secs ago}";
|
||||||
|
no_invitelist = "Invite list is empty in channel {channel $0}";
|
||||||
|
invitelist = "{channel $0}: invite {ban $1}";
|
||||||
|
invitelist_long = "{channel $0}: invite {ban $1} {comment by {nick $2}, $3 secs ago}";
|
||||||
|
no_such_channel = "{channel $0}: No such channel";
|
||||||
|
channel_synced = "Join to {channel $0} was synced in {hilight $1} secs";
|
||||||
|
usermode_change = "Mode change {mode $0} for user {nick $1}";
|
||||||
|
user_mode = "Your user mode is {mode $0}";
|
||||||
|
away = "You have been marked as being away";
|
||||||
|
unaway = "You are no longer marked as being away";
|
||||||
|
nick_away = "{nick $0} is away: $1";
|
||||||
|
no_such_nick = "{nick $0}: No such nick/channel";
|
||||||
|
nick_in_use = "Nick {nick $0} is already in use";
|
||||||
|
nick_unavailable = "Nick {nick $0} is temporarily unavailable";
|
||||||
|
your_nick_owned = "Your nick is owned by {nick $3} {comment $1@$2}";
|
||||||
|
whois = "{nick $0} {nickhost $1@$2}%:{whois ircname $3}";
|
||||||
|
whowas = "{nick $0} {nickhost $1@$2}%:{whois was $3}";
|
||||||
|
whois_idle = "{whois idle %|$1 days $2 hours $3 mins $4 secs}";
|
||||||
|
whois_idle_signon = "{whois idle %|$1 days $2 hours $3 mins $4 secs {comment signon: $5}}";
|
||||||
|
whois_server = "{whois server %|$1 {comment $2}}";
|
||||||
|
whois_oper = "{whois {hilight $1}}";
|
||||||
|
whois_modes = "{whois modes $1}";
|
||||||
|
whois_realhost = "{whois hostname $1-}";
|
||||||
|
whois_usermode = "{whois usermode $1}";
|
||||||
|
whois_channels = "{whois channels %|$1}";
|
||||||
|
whois_away = "{whois away %|$1}";
|
||||||
|
whois_special = "{whois %|$1}";
|
||||||
|
whois_extra = "{whois account %|$1}";
|
||||||
|
end_of_whois = "End of WHOIS";
|
||||||
|
end_of_whowas = "End of WHOWAS";
|
||||||
|
whois_not_found = "There is no such nick $0";
|
||||||
|
who = "%#{channelhilight $[-10]0} %|{nick $[!9]1} $[!3]2 $[!2]3 $4@$5 {comment {hilight $6}}";
|
||||||
|
end_of_who = "End of /WHO list";
|
||||||
|
own_notice = "{ownnotice notice $0}$1";
|
||||||
|
own_action = "{ownaction $0}$1";
|
||||||
|
own_action_target = "{ownaction_target $0 $2}$1";
|
||||||
|
own_ctcp = "{ownctcp ctcp $0}$1 $2";
|
||||||
|
notice_server = "{servernotice $0}$1";
|
||||||
|
notice_public = "{notice $0{pubnotice_channel $1}}$2";
|
||||||
|
notice_private = "{notice $0{pvtnotice_host $1}}$2";
|
||||||
|
action_private = "{pvtaction $0}$2";
|
||||||
|
action_private_query = "{pvtaction_query $0}$2";
|
||||||
|
action_public = "{pubaction $0}$1";
|
||||||
|
action_public_channel = "{pubaction $0{msgchannel $1}}$2";
|
||||||
|
ctcp_reply = "CTCP {hilight $0} reply from {nick $1}: $2";
|
||||||
|
ctcp_reply_channel = "CTCP {hilight $0} reply from {nick $1} in channel {channel $3}: $2";
|
||||||
|
ctcp_ping_reply = "CTCP {hilight PING} reply from {nick $0}: $1.$[-3.0]2 seconds";
|
||||||
|
ctcp_requested = "{ctcp {hilight $0} {comment $1} requested CTCP {hilight $2} from {nick $4}}: $3";
|
||||||
|
ctcp_requested_unknown = "{ctcp {hilight $0} {comment $1} requested unknown CTCP {hilight $2} from {nick $4}}: $3";
|
||||||
|
online = "Users online: {hilight $0}";
|
||||||
|
pong = "PONG received from $0: $1";
|
||||||
|
wallops = "{wallop WALLOP {wallop_nick $0}} $1";
|
||||||
|
action_wallops = "{wallop WALLOP {wallop_action $0}} $1";
|
||||||
|
kill = "You were {error killed} by {nick $0} {nickhost $1} {reason $2} {comment Path: $3}";
|
||||||
|
kill_server = "You were {error killed} by {server $0} {reason $1} {comment Path: $2}";
|
||||||
|
error = "{error ERROR} $0";
|
||||||
|
unknown_mode = "Unknown mode character $0";
|
||||||
|
default_event = "$1";
|
||||||
|
default_event_server = "[$0] $1";
|
||||||
|
silenced = "Silenced {nick $0}";
|
||||||
|
unsilenced = "Unsilenced {nick $0}";
|
||||||
|
silence_line = "{nick $0}: silence {ban $1}";
|
||||||
|
ask_oper_pass = "Operator password:";
|
||||||
|
accept_list = "Accepted users: {hilight $0}";
|
||||||
|
};
|
||||||
|
"Irssi::Script::awl" = {
|
||||||
|
awl_display_nokey = "$N $H$C$S";
|
||||||
|
awl_display_key = "$Q $H$C$S";
|
||||||
|
awl_display_nokey_visible = "%2$N $H$C$";
|
||||||
|
awl_display_key_visible = "%2$Q $H$C$S";
|
||||||
|
awl_display_nokey_active = "%1$N $H$C$S";
|
||||||
|
awl_display_key_active = "%1$Q $H$C$S";
|
||||||
|
awl_display_header = "%8$C";
|
||||||
|
awl_separator = "|";
|
||||||
|
awl_separator2 = "|";
|
||||||
|
awl_viewer_item_bg = "%0%w";
|
||||||
|
};
|
||||||
|
};
|
2552
bots/blackhole/honeypot/.irssi/scripts/autorun/awl.pl
Normal file
2552
bots/blackhole/honeypot/.irssi/scripts/autorun/awl.pl
Normal file
File diff suppressed because it is too large
Load Diff
43
bots/blackhole/honeypot/.irssi/scripts/autorun/chansort.pl
Normal file
43
bots/blackhole/honeypot/.irssi/scripts/autorun/chansort.pl
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
use strict;
|
||||||
|
use Irssi;
|
||||||
|
use Irssi::Irc;
|
||||||
|
|
||||||
|
sub sig_sort_trigger {
|
||||||
|
return unless Irssi::settings_get_bool('chansort_autosort');
|
||||||
|
cmd_chansort();
|
||||||
|
}
|
||||||
|
|
||||||
|
sub cmd_chansort {
|
||||||
|
my(@windows);
|
||||||
|
my($minwin);
|
||||||
|
for my $win (Irssi::windows()) {
|
||||||
|
my $act = $win->{active};
|
||||||
|
my $key;
|
||||||
|
if ($act->{type} eq 'CHANNEL') {
|
||||||
|
$key = "C".$act->{server}{tag}.' '.substr($act->{visible_name}, 1);
|
||||||
|
}
|
||||||
|
elsif ($act->{type} eq 'QUERY') {
|
||||||
|
$key = "Q".$act->{server}{tag}.' '.$act->{visible_name};
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
if (!defined($minwin) || $minwin > $win->{refnum}) {
|
||||||
|
$minwin = $win->{refnum};
|
||||||
|
}
|
||||||
|
push @windows, [ lc $key, $win ];
|
||||||
|
|
||||||
|
}
|
||||||
|
for (sort {$a->[0] cmp $b->[0]} @windows) {
|
||||||
|
my($key,$win) = @$_;
|
||||||
|
my($act) = $win->{active};
|
||||||
|
$win->command("window move $minwin");
|
||||||
|
$minwin++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::command_bind('chansort', 'cmd_chansort');
|
||||||
|
Irssi::settings_add_bool('chansort', 'chansort_autosort', 0);
|
||||||
|
Irssi::signal_add_last('window item name changed', 'sig_sort_trigger');
|
||||||
|
Irssi::signal_add_last('channel created', 'sig_sort_trigger');
|
||||||
|
Irssi::signal_add_last('query created', 'sig_sort_trigger');
|
14
bots/blackhole/honeypot/.irssi/scripts/autorun/dispatch.pl
Normal file
14
bots/blackhole/honeypot/.irssi/scripts/autorun/dispatch.pl
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Irssi;
|
||||||
|
use Irssi::Irc;
|
||||||
|
|
||||||
|
sub event_default_command {
|
||||||
|
my ($command, $server) = @_;
|
||||||
|
return if (Irssi::settings_get_bool("dispatch_unknown_commands") == 0 || !$server);
|
||||||
|
$server->send_raw($command);
|
||||||
|
Irssi::signal_stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::settings_add_bool("misc", "dispatch_unknown_commands", 1);
|
||||||
|
Irssi::signal_add_first("default command", "event_default_command");
|
@ -0,0 +1,12 @@
|
|||||||
|
use strict;
|
||||||
|
use Irssi;
|
||||||
|
|
||||||
|
Irssi::signal_add('event error', sub { Irssi::signal_stop(); });
|
||||||
|
|
||||||
|
Irssi::signal_add('event kill', sub {
|
||||||
|
my ($server, $args, $nick, $address) = @_;
|
||||||
|
my $reason = $args;
|
||||||
|
$reason =~ s/^.*://g;
|
||||||
|
Irssi::print("You were killed by $nick ($reason).");
|
||||||
|
Irssi::signal_stop();
|
||||||
|
});
|
145
bots/blackhole/honeypot/.irssi/scripts/autorun/nickcolor.pl
Normal file
145
bots/blackhole/honeypot/.irssi/scripts/autorun/nickcolor.pl
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
use strict;
|
||||||
|
use Irssi 20020101.0250 ();
|
||||||
|
use vars qw($VERSION %IRSSI);
|
||||||
|
$VERSION = "2";
|
||||||
|
%IRSSI = (
|
||||||
|
authors => "Timo Sirainen, Ian Peters, David Leadbeater",
|
||||||
|
contact => "tss\@iki.fi",
|
||||||
|
name => "Nick Color",
|
||||||
|
description => "assign a different color for each nick",
|
||||||
|
license => "Public Domain",
|
||||||
|
url => "http://irssi.org/",
|
||||||
|
changed => "Sun 15 Jun 19:10:44 BST 2014",
|
||||||
|
);
|
||||||
|
|
||||||
|
# Settings:
|
||||||
|
# nickcolor_colors: List of color codes to use.
|
||||||
|
# e.g. /set nickcolor_colors 2 3 4 5 6 7 9 10 11 12 13
|
||||||
|
# (avoid 8, as used for hilights in the default theme).
|
||||||
|
|
||||||
|
my %saved_colors;
|
||||||
|
my %session_colors = {};
|
||||||
|
|
||||||
|
sub load_colors {
|
||||||
|
open my $color_fh, "<", "$ENV{HOME}/.irssi/saved_colors";
|
||||||
|
while (<$color_fh>) {
|
||||||
|
chomp;
|
||||||
|
my($nick, $color) = split ":";
|
||||||
|
$saved_colors{$nick} = $color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub save_colors {
|
||||||
|
open COLORS, ">", "$ENV{HOME}/.irssi/saved_colors";
|
||||||
|
|
||||||
|
foreach my $nick (keys %saved_colors) {
|
||||||
|
print COLORS "$nick:$saved_colors{$nick}\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
close COLORS;
|
||||||
|
}
|
||||||
|
|
||||||
|
# If someone we've colored (either through the saved colors, or the hash
|
||||||
|
# function) changes their nick, we'd like to keep the same color associated
|
||||||
|
# with them (but only in the session_colors, ie a temporary mapping).
|
||||||
|
|
||||||
|
sub sig_nick {
|
||||||
|
my ($server, $newnick, $nick, $address) = @_;
|
||||||
|
my $color;
|
||||||
|
|
||||||
|
$newnick = substr ($newnick, 1) if ($newnick =~ /^:/);
|
||||||
|
|
||||||
|
if ($color = $saved_colors{$nick}) {
|
||||||
|
$session_colors{$newnick} = $color;
|
||||||
|
} elsif ($color = $session_colors{$nick}) {
|
||||||
|
$session_colors{$newnick} = $color;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# This gave reasonable distribution values when run across
|
||||||
|
# /usr/share/dict/words
|
||||||
|
|
||||||
|
sub simple_hash {
|
||||||
|
my ($string) = @_;
|
||||||
|
chomp $string;
|
||||||
|
my @chars = split //, $string;
|
||||||
|
my $counter;
|
||||||
|
|
||||||
|
foreach my $char (@chars) {
|
||||||
|
$counter += ord $char;
|
||||||
|
}
|
||||||
|
|
||||||
|
my @colors = split / /, Irssi::settings_get_str('nickcolor_colors');
|
||||||
|
$counter = $colors[$counter % @colors];
|
||||||
|
|
||||||
|
return $counter;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub sig_public {
|
||||||
|
my ($server, $msg, $nick, $address, $target) = @_;
|
||||||
|
|
||||||
|
# Has the user assigned this nick a color?
|
||||||
|
my $color = $saved_colors{$nick};
|
||||||
|
|
||||||
|
# Have -we- already assigned this nick a color?
|
||||||
|
if (!$color) {
|
||||||
|
$color = $session_colors{$nick};
|
||||||
|
}
|
||||||
|
|
||||||
|
# Let's assign this nick a color
|
||||||
|
if (!$color) {
|
||||||
|
$color = simple_hash $nick;
|
||||||
|
$session_colors{$nick} = $color;
|
||||||
|
}
|
||||||
|
|
||||||
|
$color = sprintf "\003%02d", $color;
|
||||||
|
$server->command('/^format pubmsg {pubmsgnick $2 {pubnick ' . $color . '$0}}$1');
|
||||||
|
}
|
||||||
|
|
||||||
|
sub cmd_color {
|
||||||
|
my ($data, $server, $witem) = @_;
|
||||||
|
my ($op, $nick, $color) = split " ", $data;
|
||||||
|
|
||||||
|
$op = lc $op;
|
||||||
|
|
||||||
|
if (!$op) {
|
||||||
|
Irssi::print ("No operation given (save/set/clear/list/preview)");
|
||||||
|
} elsif ($op eq "save") {
|
||||||
|
save_colors;
|
||||||
|
} elsif ($op eq "set") {
|
||||||
|
if (!$nick) {
|
||||||
|
Irssi::print ("Nick not given");
|
||||||
|
} elsif (!$color) {
|
||||||
|
Irssi::print ("Color not given");
|
||||||
|
} elsif ($color < 2 || $color > 14) {
|
||||||
|
Irssi::print ("Color must be between 2 and 14 inclusive");
|
||||||
|
} else {
|
||||||
|
$saved_colors{$nick} = $color;
|
||||||
|
}
|
||||||
|
} elsif ($op eq "clear") {
|
||||||
|
if (!$nick) {
|
||||||
|
Irssi::print ("Nick not given");
|
||||||
|
} else {
|
||||||
|
delete ($saved_colors{$nick});
|
||||||
|
}
|
||||||
|
} elsif ($op eq "list") {
|
||||||
|
Irssi::print ("\nSaved Colors:");
|
||||||
|
foreach my $nick (keys %saved_colors) {
|
||||||
|
Irssi::print (chr (3) . "$saved_colors{$nick}$nick" .
|
||||||
|
chr (3) . "1 ($saved_colors{$nick})");
|
||||||
|
}
|
||||||
|
} elsif ($op eq "preview") {
|
||||||
|
Irssi::print ("\nAvailable colors:");
|
||||||
|
foreach my $i (2..14) {
|
||||||
|
Irssi::print (chr (3) . "$i" . "Color #$i");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
load_colors;
|
||||||
|
|
||||||
|
Irssi::settings_add_str('misc', 'nickcolor_colors', '2 3 4 5 6 7 9 10 11 12 13');
|
||||||
|
Irssi::command_bind('color', 'cmd_color');
|
||||||
|
|
||||||
|
Irssi::signal_add('message public', 'sig_public');
|
||||||
|
Irssi::signal_add('event nick', 'sig_nick');
|
31
bots/blackhole/honeypot/.irssi/scripts/autorun/rejoin.pl
Normal file
31
bots/blackhole/honeypot/.irssi/scripts/autorun/rejoin.pl
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
use Irssi;
|
||||||
|
use Irssi::Irc;
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
my $delay = 1;
|
||||||
|
my $acttag = 0;
|
||||||
|
my @tags;
|
||||||
|
|
||||||
|
sub rejoin {
|
||||||
|
my ( $data ) = @_;
|
||||||
|
my ( $tag, $servtag, $channel, $pass ) = split( / +/, $data );
|
||||||
|
my $server = Irssi::server_find_tag( $servtag );
|
||||||
|
$server->send_raw( "JOIN $channel $pass" ) if ( $server );
|
||||||
|
Irssi::timeout_remove( $tags[$tag] );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub event_rejoin_kick {
|
||||||
|
my ( $server, $data ) = @_;
|
||||||
|
my ( $channel, $nick ) = split( / +/, $data );
|
||||||
|
return if ( $server->{ nick } ne $nick );
|
||||||
|
my $chanrec = $server->channel_find( $channel );
|
||||||
|
my $password = $chanrec->{ key } if ( $chanrec );
|
||||||
|
my $rejoinchan = $chanrec->{ name } if ( $chanrec );
|
||||||
|
my $servtag = $server->{ tag };
|
||||||
|
Irssi::print "Rejoining $rejoinchan in $delay seconds.";
|
||||||
|
$tags[$acttag] = Irssi::timeout_add( $delay * 1000, "rejoin", "$acttag $servtag $rejoinchan $password" );
|
||||||
|
$acttag++;
|
||||||
|
$acttag = 0 if ( $acttag > 60 );
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::signal_add('event kick', 'event_rejoin_kick');
|
1248
bots/blackhole/honeypot/.irssi/scripts/autorun/trigger.pl
Normal file
1248
bots/blackhole/honeypot/.irssi/scripts/autorun/trigger.pl
Normal file
File diff suppressed because it is too large
Load Diff
14
bots/blackhole/honeypot/.irssi/scripts/autorun/unfuck.pl
Normal file
14
bots/blackhole/honeypot/.irssi/scripts/autorun/unfuck.pl
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Irssi;
|
||||||
|
use Irssi::Irc;
|
||||||
|
|
||||||
|
sub cmd_unfuck {
|
||||||
|
my @windows = Irssi::windows();
|
||||||
|
foreach my $window (@windows) {
|
||||||
|
next if $window->{immortal};
|
||||||
|
$window->{active}->{topic_by} ? next : $window->destroy;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::command_bind('unfuck', 'cmd_unfuck');
|
2
bots/blackhole/honeypot/.irssi/triggers
Normal file
2
bots/blackhole/honeypot/.irssi/triggers
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
#Triggers file version 1.0+
|
||||||
|
-privmsgs -privactions -privnotices -privctcps -dcc_msgs -dcc_actions -dcc_ctcps -invites -tags 'supernets' -command 'MSG blackhole $N'
|
277
bots/hugecock.py
Normal file
277
bots/hugecock.py
Normal file
@ -0,0 +1,277 @@
|
|||||||
|
#!/usr/bin/env python
|
||||||
|
# HUGECOCK (as seen in #efnetnews)
|
||||||
|
# Developed by acidvegas/vap0r in Python 3
|
||||||
|
# https://github.com/acidvegas/random
|
||||||
|
# hugecock.py
|
||||||
|
|
||||||
|
'''
|
||||||
|
Patreon : https://www.patreon.com/efnetnews
|
||||||
|
Twitter : https://twitter.com/pp4l
|
||||||
|
YouTube : https://www.youtube.com/channel/UCrB3e00DBKTyVhGLrrGuhOw
|
||||||
|
'''
|
||||||
|
|
||||||
|
import os
|
||||||
|
import random
|
||||||
|
import socket
|
||||||
|
import ssl
|
||||||
|
import time
|
||||||
|
import threading
|
||||||
|
|
||||||
|
# Connection
|
||||||
|
server = 'irc.efnet.org'
|
||||||
|
port = 6667
|
||||||
|
use_ipv6 = False
|
||||||
|
use_ssl = False
|
||||||
|
vhost = None
|
||||||
|
password = None
|
||||||
|
channel = '#efnetnews'
|
||||||
|
key = None
|
||||||
|
|
||||||
|
# Identity
|
||||||
|
nickname = 'HUGECOCK'
|
||||||
|
username = 'HUGECOCK'
|
||||||
|
realname = 'HUGECOCK'
|
||||||
|
|
||||||
|
# Globals (DO NOT EDIT)
|
||||||
|
random_file = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'random.txt')
|
||||||
|
|
||||||
|
# Formatting Control Characters / Color Codes
|
||||||
|
bold = '\x02'
|
||||||
|
italic = '\x1D'
|
||||||
|
underline = '\x1F'
|
||||||
|
reverse = '\x16'
|
||||||
|
reset = '\x0f'
|
||||||
|
white = '00'
|
||||||
|
black = '01'
|
||||||
|
blue = '02'
|
||||||
|
green = '03'
|
||||||
|
red = '04'
|
||||||
|
brown = '05'
|
||||||
|
purple = '06'
|
||||||
|
orange = '07'
|
||||||
|
yellow = '08'
|
||||||
|
light_green = '09'
|
||||||
|
cyan = '10'
|
||||||
|
light_cyan = '11'
|
||||||
|
light_blue = '12'
|
||||||
|
pink = '13'
|
||||||
|
grey = '14'
|
||||||
|
light_grey = '15'
|
||||||
|
|
||||||
|
def debug(msg):
|
||||||
|
print(f'{get_time()} | [~] - {msg}')
|
||||||
|
|
||||||
|
def error(msg, reason=None):
|
||||||
|
if reason:
|
||||||
|
print(f'{get_time()} | [!] - {msg} ({reason})')
|
||||||
|
else:
|
||||||
|
print(f'{get_time()} | [!] - {msg}')
|
||||||
|
|
||||||
|
def get_time():
|
||||||
|
return time.strftime('%I:%M:%S')
|
||||||
|
|
||||||
|
class IRC(object):
|
||||||
|
server = server
|
||||||
|
port = port
|
||||||
|
use_ipv6 = use_ipv6
|
||||||
|
use_ssl = use_ssl
|
||||||
|
vhost = vhost
|
||||||
|
password = password
|
||||||
|
channel = channel
|
||||||
|
key = key
|
||||||
|
username = username
|
||||||
|
realname = realname
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
self.nickname = nickname
|
||||||
|
self.connected = False
|
||||||
|
self.last_time = 0
|
||||||
|
self.sock = None
|
||||||
|
|
||||||
|
def action(self, chan, msg):
|
||||||
|
self.sendmsg(chan, f'\x01ACTION {msg}\x01')
|
||||||
|
|
||||||
|
def color(self, msg, foreground, background=None):
|
||||||
|
if background:
|
||||||
|
return f'\x03{foreground},{background}{msg}{reset}'
|
||||||
|
else:
|
||||||
|
return f'\x03{foreground}{msg}{reset}'
|
||||||
|
|
||||||
|
def connect(self):
|
||||||
|
try:
|
||||||
|
self.create_socket()
|
||||||
|
self.sock.connect((self.server, self.port))
|
||||||
|
if self.password:
|
||||||
|
self.raw('PASS ' + self.password)
|
||||||
|
self.raw(f'USER {self.username} 0 * :{self.realname}')
|
||||||
|
self.nick(self.nickname)
|
||||||
|
except socket.error as ex:
|
||||||
|
error('Failed to connect to IRC server.', ex)
|
||||||
|
self.event_disconnect()
|
||||||
|
else:
|
||||||
|
self.listen()
|
||||||
|
|
||||||
|
def create_socket(self):
|
||||||
|
if self.use_ipv6:
|
||||||
|
self.sock = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
|
||||||
|
else:
|
||||||
|
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
if self.vhost:
|
||||||
|
self.sock.bind((self.vhost, 0))
|
||||||
|
if self.use_ssl:
|
||||||
|
self.sock = ssl.wrap_socket(self.sock)
|
||||||
|
|
||||||
|
def event_connect(self):
|
||||||
|
self.connected = True
|
||||||
|
self.join(self.channel, self.key)
|
||||||
|
threading.Thread(target=self.loop).start()
|
||||||
|
|
||||||
|
def event_disconnect(self):
|
||||||
|
self.connected = False
|
||||||
|
self.sock.close()
|
||||||
|
time.sleep(10)
|
||||||
|
self.connect()
|
||||||
|
|
||||||
|
def event_join(self, nick, chan):
|
||||||
|
if nick.lower() == 'zardoz':
|
||||||
|
self.sendmsg(chan, nick)
|
||||||
|
self.notice(nick, f'Thank you for joining #EFNetNews, you have {0} memos waiting. Please type /server MemoServ read to check your messages.'.format(color('3', red)))
|
||||||
|
|
||||||
|
def event_kick(self, nick, chan, kicked):
|
||||||
|
if kicked == self.nickname and chan == self.channel:
|
||||||
|
time.sleep(3)
|
||||||
|
self.join(self.channel, self.key)
|
||||||
|
|
||||||
|
def event_message(self, nick, chan, msg):
|
||||||
|
if random.choice((True,False,False,False)):
|
||||||
|
if 'http://' in msg or 'https://' in msg or 'www.' in msg:
|
||||||
|
self.sendmsg(chan, underline + 'not clicking')
|
||||||
|
elif msg == 'h':
|
||||||
|
self.sendmsg(chan, 'h')
|
||||||
|
elif msg == 'pump':
|
||||||
|
self.sendmsg(chan, 'penis')
|
||||||
|
elif msg == 'penis':
|
||||||
|
self.sendmsg(chan, 'pump')
|
||||||
|
elif 'ddos' in msg:
|
||||||
|
self.sendmsg(chan, 'Dudes Drink Owl Sperm')
|
||||||
|
elif 'fag' in msg:
|
||||||
|
self.sendmsg(chan, 'i hate faggots more than i hate war in this world')
|
||||||
|
elif self.nickname in msg:
|
||||||
|
self.action(chan, '8=================================================================D')
|
||||||
|
elif msg.lower() == 'lol':
|
||||||
|
self.sendmsg(chan, 'lol')
|
||||||
|
elif msg == '%%':
|
||||||
|
self.sendmsg(chan, '%%')
|
||||||
|
elif 'supernets' in msg.lower():
|
||||||
|
self.sendmsg(chan, self.color('HAVE YOU HEARD ABOUT IRC.SUPERNETS.ORG ???', light_blue))
|
||||||
|
elif 'readerr' in msg.lower():
|
||||||
|
if random.choice((True,False)):
|
||||||
|
self.sendmsg(chan, 'can we kill ReadErr')
|
||||||
|
else:
|
||||||
|
self.sendmsg(chan, 'can we ban ReadErr')
|
||||||
|
|
||||||
|
def event_nick_in_use(self):
|
||||||
|
self.nickname = self.nickname + '_'
|
||||||
|
self.nick(self.nickname)
|
||||||
|
|
||||||
|
def event_part(self, nick, chan):
|
||||||
|
self.sendmsg(nick, 'bet u wont come back pussy')
|
||||||
|
self.sendmsg(chan, self.color('EMOPART DETECTED', red, yellow))
|
||||||
|
|
||||||
|
def event_quit(self, nick):
|
||||||
|
if time.time() - self.last_time > 15:
|
||||||
|
self.nick(nick)
|
||||||
|
self.nickname = nick
|
||||||
|
self.sendmsg(self.channel, 'GOT EEEEEm')
|
||||||
|
self.last_time = time.time()
|
||||||
|
|
||||||
|
def handle_events(self, data):
|
||||||
|
args = data.split()
|
||||||
|
if args[0] == 'PING':
|
||||||
|
self.raw('PONG ' + args[1][1:])
|
||||||
|
elif args[1] == '001':
|
||||||
|
self.event_connect()
|
||||||
|
elif args[1] == '433':
|
||||||
|
self.event_nick_in_use()
|
||||||
|
elif args[1] in ('JOIN','KICK','PART','PRIVMSG','QUIT'):
|
||||||
|
nick = args[0].split('!')[0][1:]
|
||||||
|
if nick != self.nickname:
|
||||||
|
if args[1] == 'JOIN':
|
||||||
|
chan = args[2][1:]
|
||||||
|
self.event_join(nick, chan)
|
||||||
|
elif args[1] == 'KICK':
|
||||||
|
chan = args[2]
|
||||||
|
kicked = args[3]
|
||||||
|
self.event_kick(nick, chan, kicked)
|
||||||
|
elif args[1] == 'PART':
|
||||||
|
chan = args[2]
|
||||||
|
self.event_part(nick, chan)
|
||||||
|
elif args[1] == 'PRIVMSG':
|
||||||
|
chan = args[2]
|
||||||
|
msg = data.split(f'{args[0]} PRIVMSG {chan} :')[1]
|
||||||
|
if chan != self.nickname:
|
||||||
|
self.event_message(nick, chan, msg)
|
||||||
|
elif args[1] == 'QUIT':
|
||||||
|
self.event_quit(nick)
|
||||||
|
|
||||||
|
def join(self, chan, key=None):
|
||||||
|
if key:
|
||||||
|
self.raw(f'JOIN {chan} {key}')
|
||||||
|
else:
|
||||||
|
self.raw('JOIN ' + chan)
|
||||||
|
|
||||||
|
def listen(self):
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
data = self.sock.recv(1024).decode('utf-8')
|
||||||
|
if data:
|
||||||
|
for line in (line for line in data.split('\r\n') if line):
|
||||||
|
debug(line)
|
||||||
|
if len(line.split()) >= 2:
|
||||||
|
if line.startswith('ERROR :Closing Link:'):
|
||||||
|
raise Exception('Connection has closed.')
|
||||||
|
else:
|
||||||
|
self.handle_events(line)
|
||||||
|
else:
|
||||||
|
error('No data recieved from server.')
|
||||||
|
break
|
||||||
|
except (UnicodeDecodeError,UnicodeEncodeError):
|
||||||
|
pass
|
||||||
|
except Exception as ex:
|
||||||
|
error('Unexpected error occured.', ex)
|
||||||
|
break
|
||||||
|
self.event_disconnect()
|
||||||
|
|
||||||
|
def loop(self):
|
||||||
|
while self.connected:
|
||||||
|
try:
|
||||||
|
time.sleep(60 * random_int(20,60))
|
||||||
|
self.sendmsg(self.channel, random.choice(random_lines))
|
||||||
|
except Exception as ex:
|
||||||
|
error('Error occured in the loop!', ex)
|
||||||
|
break
|
||||||
|
|
||||||
|
def nick(self, nick):
|
||||||
|
self.raw('NICK ' + nick)
|
||||||
|
|
||||||
|
def notice(self, target, msg):
|
||||||
|
self.raw(f'NOTICE {target} :{msg}')
|
||||||
|
|
||||||
|
def part(self, chan, msg=None):
|
||||||
|
if msg:
|
||||||
|
self.raw(f'PART {chan} {msg}')
|
||||||
|
else:
|
||||||
|
self.raw('PART ' + chan)
|
||||||
|
|
||||||
|
def raw(self, msg):
|
||||||
|
self.sock.send(bytes(msg + '\r\n', 'utf-8'))
|
||||||
|
|
||||||
|
def sendmsg(self, target, msg):
|
||||||
|
self.raw(f'PRIVMSG {target} :{msg}')
|
||||||
|
|
||||||
|
# Main
|
||||||
|
if os.path.isfile(random_file):
|
||||||
|
random_lines = [line.rstrip() for line in open(random_file, mode='r', encoding='utf8', errors='replace').readlines() if line]
|
||||||
|
else:
|
||||||
|
error_exit('Missing random file!')
|
||||||
|
IRC().connect()
|
68
efkh.py
68
efkh.py
@ -1,68 +0,0 @@
|
|||||||
#!/usr/bin/env python
|
|
||||||
# EFKnockr Helper - Developed by acidvegas in Python (https://acid.vegas/random)
|
|
||||||
|
|
||||||
import json
|
|
||||||
|
|
||||||
_bnc = list()
|
|
||||||
_irc = list()
|
|
||||||
_unknown = list()
|
|
||||||
|
|
||||||
def _parse_data():
|
|
||||||
with open('netking.json','r') as _data_file:
|
|
||||||
for _line in _data_file:
|
|
||||||
_data = json.loads(_line)
|
|
||||||
if 'product' in _data:
|
|
||||||
if _data['product'] in ('BitlBee IRCd','psyBNC','Minbif','ShroudBNC irc-proxy'):
|
|
||||||
_bnc.append(_line)
|
|
||||||
else:
|
|
||||||
_irc.append(_line)
|
|
||||||
else:
|
|
||||||
if 'data' in _data:
|
|
||||||
if 'bitlbee' in _data['data'].lower() or 'psybnc' in _data['data'].lower() or 'shroudbnc' in _data['data'].lower():
|
|
||||||
_bnc.append(_line)
|
|
||||||
else:
|
|
||||||
if ':***' in _data['data'] or 'Looking up your hostname' in _data['data']:
|
|
||||||
_irc.append(_line)
|
|
||||||
else:
|
|
||||||
if 'PHP Notice' not in _data['data']:
|
|
||||||
if 'NOTICE' in _data['data']:
|
|
||||||
_irc.append(_line)
|
|
||||||
else:
|
|
||||||
_unknown.append(_line)
|
|
||||||
else:
|
|
||||||
_unknown.append(_line)
|
|
||||||
|
|
||||||
def _write_data():
|
|
||||||
with open('bnc.json','w') as _bnc_file:
|
|
||||||
for _line in _bnc:
|
|
||||||
_bnc_file.write(_line)
|
|
||||||
with open('irc.json','w') as _irc_file:
|
|
||||||
for _line in _irc:
|
|
||||||
_irc_file.write(_line)
|
|
||||||
with open('unknown.json','w') as _unknown_file:
|
|
||||||
for _line in _unknown:
|
|
||||||
_unknown_file.write(_line)
|
|
||||||
|
|
||||||
_parse_data()
|
|
||||||
_write_data()
|
|
||||||
|
|
||||||
print('BNC: ' + str(len(_bnc )))
|
|
||||||
print('IRC: ' + str(len(_irc )))
|
|
||||||
print('???: ' + str(len(_unknown)))
|
|
||||||
|
|
||||||
_ips = list()
|
|
||||||
|
|
||||||
def _parse_ips():
|
|
||||||
with open('irc.json','r') as _data_file:
|
|
||||||
for _line in _data_file:
|
|
||||||
_data = json.loads(_line)
|
|
||||||
_ips.append(_data['ip_str'])
|
|
||||||
|
|
||||||
def _write_ips():
|
|
||||||
with open('clean.txt','w') as _clean_file:
|
|
||||||
for _line in _ips:
|
|
||||||
_clean_file.write(_line + '\n')
|
|
||||||
|
|
||||||
_parse_ips()
|
|
||||||
_ips = sorted(set(_ips))
|
|
||||||
_write_ips()
|
|
21
scripts/irssi/antifuckyou.pl
Normal file
21
scripts/irssi/antifuckyou.pl
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# AntiFuckYou (SAJOIN Auto-Part Script)
|
||||||
|
# Developed by acidvegas in Perl
|
||||||
|
# http://github.com/acidvegas/irssi
|
||||||
|
# antifuckyou.pl
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use Irssi;
|
||||||
|
|
||||||
|
sub anti_fuckyou {
|
||||||
|
my ($server, $msg, $nick, $address, $target) = @_;
|
||||||
|
if ($msg =~ /You were forced to join.*/) {
|
||||||
|
my $rand = &getRandom();
|
||||||
|
my $server_addr = $server->{real_address};
|
||||||
|
if ($nick eq $server_addr) {
|
||||||
|
$msg =~ s/.*\W(\w)/$1/;
|
||||||
|
$server->command("PART #$msg");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::signal_add('message irc notice', 'anti_fuckyou');
|
38
scripts/irssi/fuckyou.pl
Normal file
38
scripts/irssi/fuckyou.pl
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
use Irssi;
|
||||||
|
use Irssi::Irc;
|
||||||
|
|
||||||
|
sub getRandom {
|
||||||
|
my $length=5 + int(rand(21 - 5));
|
||||||
|
my @chars=('a'..'z','A'..'Z','0'..'9');
|
||||||
|
my $random_string;
|
||||||
|
foreach (1..$length) {
|
||||||
|
$random_string.=$chars[rand @chars];
|
||||||
|
}
|
||||||
|
return $random_string;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub cmd_fuckyou {
|
||||||
|
my ($data, $server, $dest) = @_;
|
||||||
|
my ($nick, $amount) = split(/ +/, $data);
|
||||||
|
unless($nick && $amount) {
|
||||||
|
Irssi::print("/fuckyou <nick> <number>");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for(1 .. $amount) {
|
||||||
|
my $rand = &getRandom();
|
||||||
|
$server->command("sajoin $nick #$rand");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub cmd_unfuck {
|
||||||
|
my @windows = Irssi::windows();
|
||||||
|
foreach my $window (@windows) {
|
||||||
|
next if $window->{immortal};
|
||||||
|
$window->{active}->{topic_by} ? next : $window->destroy;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::command_bind('fuckyou', 'cmd_fuckyou');
|
||||||
|
Irssi::command_bind('unfuck', 'cmd_unfuck');
|
63
scripts/irssi/takeover.pl
Normal file
63
scripts/irssi/takeover.pl
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
# Takeover (IRSSI Channel Takeover Script)
|
||||||
|
# Developed by acidvegas in Perl
|
||||||
|
# http://github.com/acidvegas/irssi
|
||||||
|
# takeover.pl
|
||||||
|
|
||||||
|
# Todo:
|
||||||
|
# Detect max network modes.
|
||||||
|
# Kickban comma separated nicks.
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use Irssi;
|
||||||
|
use Irssi::Irc;
|
||||||
|
|
||||||
|
sub takeover {
|
||||||
|
my ($data, $server, $channel) = @_;
|
||||||
|
Irssi::printformat(MSGLEVEL_CLIENTCRAP, "takeover_crap", "Not connected to server."), return if (!$server or !$server->{connected});
|
||||||
|
Irssi::printformat(MSGLEVEL_CLIENTCRAP, "takeover_crap", "No active channel in window."), return if (!$channel or ($channel->{type} ne "CHANNEL"));
|
||||||
|
my $own_prefixes = $channel->{ownnick}{prefixes};
|
||||||
|
Irssi::printformat(MSGLEVEL_CLIENTCRAP, "takeover_crap", "You are not a channel operator."), return if ($own_prefixes =~ /~|&|@|%/);
|
||||||
|
my ($qops, $aops, $hops, $qcount, $acount, $hcount, $modes);
|
||||||
|
my $hostname = $channel->{ownnick}{host};
|
||||||
|
my $nicklist = $channel->nicks();
|
||||||
|
foreach my $nick ($channel->nicks()) {
|
||||||
|
next if ($nick eq $server->{nick});
|
||||||
|
if ($nick->{prefixes} =~ /~/) {
|
||||||
|
$qops .= "$nick->{nick} ";
|
||||||
|
$qcount++;
|
||||||
|
}
|
||||||
|
if ($nick->{prefixes} =~ /&/) {
|
||||||
|
$aops .= "$nick->{nick} ";
|
||||||
|
$acount++;
|
||||||
|
}
|
||||||
|
if ($nick->{halfop}) {
|
||||||
|
$hops .= "$nick->{nick} ";
|
||||||
|
$hcount++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($qops) {
|
||||||
|
$modes = "q" x $qcount;
|
||||||
|
$channel->command("mode -$modes $qops");
|
||||||
|
}
|
||||||
|
if ($aops) {
|
||||||
|
$modes = "a" x $qcount;
|
||||||
|
$channel->command("mode -$modes $aops");
|
||||||
|
}
|
||||||
|
if ($hops) {
|
||||||
|
$modes = "h" x $qcount;
|
||||||
|
$channel->command("mode -$modes $hops");
|
||||||
|
}
|
||||||
|
$channel->command("deop -YES *");
|
||||||
|
$channel->command("devoice -YES *");
|
||||||
|
foreach ($channel->nicks()) {
|
||||||
|
next if ($_->{'nick'} eq $server->{nick});
|
||||||
|
$channel->command("kickban $_->{'nick'}");
|
||||||
|
}
|
||||||
|
$channel->command("ban *!*@*");
|
||||||
|
$channel->command("mode +im");
|
||||||
|
$channel->command("mode +e *!$hostname");
|
||||||
|
$channel->command("mode +I *!$hostname");
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::theme_register(['takeover_crap', '{line_start}{hilight takeover:} $0',]);
|
||||||
|
Irssi::command_bind('takeover', 'takeover');
|
17
scripts/irssi/v.pl
Normal file
17
scripts/irssi/v.pl
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
use strict;
|
||||||
|
use Irssi;
|
||||||
|
|
||||||
|
# The /v command will voice everyone in the channel that doesnt have voice or higher (halfop, op, etc).
|
||||||
|
|
||||||
|
sub cmd_massvoice {
|
||||||
|
my ($data, $server, $channel) = @_;
|
||||||
|
Irssi::printformat(MSGLEVEL_CRAP, "v: Not connected to server."), return if (!$server or !$server->{connected});
|
||||||
|
Irssi::printformat(MSGLEVEL_CRAP, "v: No active channel in window."), return if (!$channel or ($channel->{type} ne "CHANNEL"));
|
||||||
|
my @nicks = $channel->nicks();
|
||||||
|
my @normal_nicks = grep { $_->{prefixes} !~ /[\~\&\@\%\+]/ } @nicks;
|
||||||
|
my @normal_nick_names = map { $_->{nick} } @normal_nicks;
|
||||||
|
my $spaced_nicks = join(" ", @normal_nick_names);
|
||||||
|
$channel->command("VOICE $spaced_nicks");
|
||||||
|
}
|
||||||
|
|
||||||
|
Irssi::command_bind('v', 'cmd_massvoice');
|
Loading…
Reference in New Issue
Block a user