- linux/macos are different enough that you can't sync 1-1. - creating two separate syncing directories for now. - its a garbage practice but at least its backedup for now.s2svpn
parent
cce022586b
commit
c3f7492575
@ -0,0 +1,48 @@
|
||||
#
|
||||
# weechat -- alias.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[cmd]
|
||||
AAWAY = "allserv /away"
|
||||
AME = "allchan /me"
|
||||
AMSG = "allchan /msg *"
|
||||
ANICK = "allserv /nick"
|
||||
BEEP = "print -beep"
|
||||
BYE = "quit"
|
||||
C = "buffer clear"
|
||||
CHAT = "dcc chat"
|
||||
CL = "buffer clear"
|
||||
CLOSE = "buffer close"
|
||||
EXIT = "quit"
|
||||
IG = "ignore"
|
||||
J = "join"
|
||||
K = "kick"
|
||||
KB = "kickban"
|
||||
LEAVE = "part"
|
||||
M = "msg"
|
||||
MSGBUF = "command -buffer $1 * /input send $2-"
|
||||
MUB = "unban *"
|
||||
N = "names"
|
||||
Q = "query"
|
||||
REDRAW = "window refresh"
|
||||
SAY = "msg *"
|
||||
SIGNOFF = "quit"
|
||||
T = "topic"
|
||||
UB = "unban"
|
||||
UMODE = "mode $nick"
|
||||
V = "command core version"
|
||||
W = "who"
|
||||
WC = "window merge"
|
||||
WI = "whois"
|
||||
WII = "whois $1 $1"
|
||||
WW = "whowas"
|
||||
|
||||
[completion]
|
||||
MSGBUF = "%(buffers_plugins_names)"
|
@ -0,0 +1,39 @@
|
||||
#
|
||||
# weechat -- buflist.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[look]
|
||||
add_newline = on
|
||||
auto_scroll = 50
|
||||
display_conditions = "${buffer.hidden}==0"
|
||||
enabled = on
|
||||
mouse_jump_visited_buffer = off
|
||||
mouse_move_buffer = on
|
||||
mouse_wheel = on
|
||||
nick_prefix = off
|
||||
nick_prefix_empty = on
|
||||
signals_refresh = ""
|
||||
sort = "number,-active"
|
||||
|
||||
[format]
|
||||
buffer = "${format_number}${indent}${format_nick_prefix}${color_hotlist}${format_name}"
|
||||
buffer_current = "${color:,magenta}${format_buffer}"
|
||||
hotlist = " ${color:green}(${hotlist}${color:green})"
|
||||
hotlist_highlight = "${color:magenta}"
|
||||
hotlist_low = "${color:white}"
|
||||
hotlist_message = "${color:brown}"
|
||||
hotlist_none = "${color:default}"
|
||||
hotlist_private = "${color:green}"
|
||||
hotlist_separator = "${color:default},"
|
||||
indent = " "
|
||||
lag = " ${color:green}[${color:brown}${lag}${color:green}]"
|
||||
name = "${name}"
|
||||
nick_prefix = "${color_nick_prefix}${nick_prefix}"
|
||||
number = "${color:green}${number}${if:${number_displayed}?.: }"
|
@ -0,0 +1,18 @@
|
||||
#
|
||||
# weechat -- charset.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[default]
|
||||
decode = "iso-8859-1"
|
||||
encode = ""
|
||||
|
||||
[decode]
|
||||
|
||||
[encode]
|
@ -0,0 +1,19 @@
|
||||
#
|
||||
# weechat -- exec.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[command]
|
||||
default_options = ""
|
||||
purge_delay = 0
|
||||
shell = "sh"
|
||||
|
||||
[color]
|
||||
flag_finished = lightred
|
||||
flag_running = lightgreen
|
@ -0,0 +1,14 @@
|
||||
#
|
||||
# weechat -- fifo.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[file]
|
||||
enabled = on
|
||||
path = "%h/weechat_fifo"
|
@ -0,0 +1,95 @@
|
||||
#
|
||||
# weechat -- fset.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[look]
|
||||
auto_unmark = off
|
||||
condition_catch_set = "${count} >= 1"
|
||||
export_help_default = on
|
||||
format_number = 1
|
||||
marked_string = "*"
|
||||
scroll_horizontal = 10
|
||||
show_plugins_desc = off
|
||||
sort = "~name"
|
||||
unmarked_string = " "
|
||||
use_color_value = off
|
||||
use_keys = on
|
||||
use_mute = off
|
||||
|
||||
[format]
|
||||
export_help = "# ${description2}"
|
||||
export_option = "/set ${name} ${quoted_value}"
|
||||
export_option_null = "/unset ${name}"
|
||||
option1 = ""
|
||||
option2 = "${marked} ${name} ${type} ${value2}${newline} ${empty_name} ${_default_value}${color:darkgray} -- ${min}..${max}${newline} ${empty_name} ${description}"
|
||||
|
||||
[color]
|
||||
default_value = default
|
||||
default_value_selected = white
|
||||
description = default
|
||||
description_selected = white
|
||||
file = default
|
||||
file_changed = brown
|
||||
file_changed_selected = yellow
|
||||
file_selected = white
|
||||
help_default_value = white
|
||||
help_description = default
|
||||
help_name = white
|
||||
help_quotes = darkgray
|
||||
help_values = default
|
||||
index = cyan
|
||||
index_selected = lightcyan
|
||||
line_marked_bg1 = default
|
||||
line_marked_bg2 = default
|
||||
line_selected_bg1 = blue
|
||||
line_selected_bg2 = red
|
||||
marked = brown
|
||||
marked_selected = yellow
|
||||
max = default
|
||||
max_selected = white
|
||||
min = default
|
||||
min_selected = white
|
||||
name = default
|
||||
name_changed = brown
|
||||
name_changed_selected = yellow
|
||||
name_selected = white
|
||||
option = default
|
||||
option_changed = brown
|
||||
option_changed_selected = yellow
|
||||
option_selected = white
|
||||
parent_name = default
|
||||
parent_name_selected = white
|
||||
parent_value = cyan
|
||||
parent_value_selected = lightcyan
|
||||
quotes = darkgray
|
||||
quotes_changed = default
|
||||
quotes_changed_selected = white
|
||||
quotes_selected = default
|
||||
section = default
|
||||
section_changed = brown
|
||||
section_changed_selected = yellow
|
||||
section_selected = white
|
||||
string_values = default
|
||||
string_values_selected = white
|
||||
title_count_options = cyan
|
||||
title_current_option = lightcyan
|
||||
title_filter = yellow
|
||||
title_marked_options = lightgreen
|
||||
title_sort = white
|
||||
type = green
|
||||
type_selected = lightgreen
|
||||
unmarked = default
|
||||
unmarked_selected = white
|
||||
value = cyan
|
||||
value_changed = brown
|
||||
value_changed_selected = yellow
|
||||
value_selected = lightcyan
|
||||
value_undef = magenta
|
||||
value_undef_selected = lightmagenta
|
@ -0,0 +1,236 @@
|
||||
#
|
||||
# weechat -- irc.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[look]
|
||||
buffer_open_before_autojoin = on
|
||||
buffer_open_before_join = off
|
||||
buffer_switch_autojoin = on
|
||||
buffer_switch_join = on
|
||||
color_nicks_in_names = off
|
||||
color_nicks_in_nicklist = off
|
||||
color_nicks_in_server_messages = on
|
||||
color_pv_nick_like_channel = on
|
||||
ctcp_time_format = "%a, %d %b %Y %T %z"
|
||||
display_away = local
|
||||
display_ctcp_blocked = on
|
||||
display_ctcp_reply = on
|
||||
display_ctcp_unknown = on
|
||||
display_host_join = on
|
||||
display_host_join_local = on
|
||||
display_host_quit = on
|
||||
display_join_message = "329,332,333,366"
|
||||
display_old_topic = on
|
||||
display_pv_away_once = on
|
||||
display_pv_back = on
|
||||
highlight_channel = "$nick"
|
||||
highlight_pv = "$nick"
|
||||
highlight_server = "$nick"
|
||||
highlight_tags_restrict = "irc_privmsg,irc_notice"
|
||||
item_channel_modes_hide_args = "k"
|
||||
item_display_server = buffer_plugin
|
||||
item_nick_modes = on
|
||||
item_nick_prefix = on
|
||||
join_auto_add_chantype = off
|
||||
msgbuffer_fallback = current
|
||||
new_channel_position = none
|
||||
new_pv_position = none
|
||||
nick_completion_smart = speakers
|
||||
nick_mode = prefix
|
||||
nick_mode_empty = off
|
||||
nicks_hide_password = "nickserv"
|
||||
notice_as_pv = auto
|
||||
notice_welcome_redirect = on
|
||||
notice_welcome_tags = ""
|
||||
notify_tags_ison = "notify_message"
|
||||
notify_tags_whois = "notify_message"
|
||||
part_closes_buffer = off
|
||||
pv_buffer = independent
|
||||
pv_tags = "notify_private"
|
||||
raw_messages = 256
|
||||
server_buffer = merge_with_core
|
||||
smart_filter = on
|
||||
smart_filter_chghost = on
|
||||
smart_filter_delay = 5
|
||||
smart_filter_join = on
|
||||
smart_filter_join_unmask = 30
|
||||
smart_filter_mode = "+"
|
||||
smart_filter_nick = on
|
||||
smart_filter_quit = on
|
||||
temporary_servers = off
|
||||
topic_strip_colors = off
|
||||
|
||||
[color]
|
||||
input_nick = lightcyan
|
||||
item_channel_modes = default
|
||||
item_lag_counting = default
|
||||
item_lag_finished = yellow
|
||||
item_nick_modes = default
|
||||
message_chghost = brown
|
||||
message_join = green
|
||||
message_quit = red
|
||||
mirc_remap = "1,-1:darkgray"
|
||||
nick_prefixes = "y:lightred;q:lightred;a:lightcyan;o:lightgreen;h:lightmagenta;v:yellow;*:lightblue"
|
||||
notice = green
|
||||
reason_quit = default
|
||||
topic_current = default
|
||||
topic_new = white
|
||||
topic_old = default
|
||||
|
||||
[network]
|
||||
autoreconnect_delay_growing = 2
|
||||
autoreconnect_delay_max = 600
|
||||
ban_mask_default = "*!$ident@$host"
|
||||
channel_encode = off
|
||||
colors_receive = on
|
||||
colors_send = on
|
||||
lag_check = 60
|
||||
lag_max = 1800
|
||||
lag_min_show = 500
|
||||
lag_reconnect = 300
|
||||
lag_refresh_interval = 1
|
||||
notify_check_ison = 1
|
||||
notify_check_whois = 5
|
||||
sasl_fail_unavailable = on
|
||||
send_unknown_commands = off
|
||||
whois_double_nick = off
|
||||
|
||||
[msgbuffer]
|
||||
|
||||
[ctcp]
|
||||
|
||||
[ignore]
|
||||
|
||||
[server_default]
|
||||
addresses = ""
|
||||
anti_flood_prio_high = 2
|
||||
anti_flood_prio_low = 2
|
||||
autoconnect = off
|
||||
autojoin = ""
|
||||
autoreconnect = on
|
||||
autoreconnect_delay = 10
|
||||
autorejoin = off
|
||||
autorejoin_delay = 30
|
||||
away_check = 0
|
||||
away_check_max_nicks = 25
|
||||
capabilities = ""
|
||||
command = ""
|
||||
command_delay = 0
|
||||
connection_timeout = 60
|
||||
ipv6 = on
|
||||
local_hostname = ""
|
||||
msg_kick = ""
|
||||
msg_part = "WeeChat ${info:version}"
|
||||
msg_quit = "WeeChat ${info:version}"
|
||||
nicks = "jledbetter,jledbetter1,jledbetter2,jledbetter3,jledbetter4"
|
||||
nicks_alternate = on
|
||||
notify = ""
|
||||
password = ""
|
||||
proxy = ""
|
||||
realname = ""
|
||||
sasl_fail = continue
|
||||
sasl_key = ""
|
||||
sasl_mechanism = plain
|
||||
sasl_password = ""
|
||||
sasl_timeout = 15
|
||||
sasl_username = ""
|
||||
split_msg_max_length = 512
|
||||
ssl = off
|
||||
ssl_cert = ""
|
||||
ssl_dhkey_size = 2048
|
||||
ssl_fingerprint = ""
|
||||
ssl_priorities = "NORMAL:-VERS-SSL3.0"
|
||||
ssl_verify = on
|
||||
usermode = ""
|
||||
username = "fake"
|
||||
|
||||
[server]
|
||||
bouncer-OFTC.addresses = "bouncer.awful.club/5000"
|
||||
bouncer-OFTC.proxy
|
||||
bouncer-OFTC.ipv6
|
||||
bouncer-OFTC.ssl = on
|
||||
bouncer-OFTC.ssl_cert
|
||||
bouncer-OFTC.ssl_priorities
|
||||
bouncer-OFTC.ssl_dhkey_size
|
||||
bouncer-OFTC.ssl_fingerprint
|
||||
bouncer-OFTC.ssl_verify
|
||||
bouncer-OFTC.password = "${sec.data.bouncer-OFTC}"
|
||||
bouncer-OFTC.capabilities
|
||||
bouncer-OFTC.sasl_mechanism
|
||||
bouncer-OFTC.sasl_username
|
||||
bouncer-OFTC.sasl_password
|
||||
bouncer-OFTC.sasl_key
|
||||
bouncer-OFTC.sasl_timeout
|
||||
bouncer-OFTC.sasl_fail
|
||||
bouncer-OFTC.autoconnect = on
|
||||
bouncer-OFTC.autoreconnect
|
||||
bouncer-OFTC.autoreconnect_delay
|
||||
bouncer-OFTC.nicks
|
||||
bouncer-OFTC.nicks_alternate
|
||||
bouncer-OFTC.username = "blindidiotgod/OFTC"
|
||||
bouncer-OFTC.realname
|
||||
bouncer-OFTC.local_hostname
|
||||
bouncer-OFTC.usermode
|
||||
bouncer-OFTC.command
|
||||
bouncer-OFTC.command_delay
|
||||
bouncer-OFTC.autojoin
|
||||
bouncer-OFTC.autorejoin
|
||||
bouncer-OFTC.autorejoin_delay
|
||||
bouncer-OFTC.connection_timeout
|
||||
bouncer-OFTC.anti_flood_prio_high
|
||||
bouncer-OFTC.anti_flood_prio_low
|
||||
bouncer-OFTC.away_check
|
||||
bouncer-OFTC.away_check_max_nicks
|
||||
bouncer-OFTC.msg_kick
|
||||
bouncer-OFTC.msg_part
|
||||
bouncer-OFTC.msg_quit
|
||||
bouncer-OFTC.notify
|
||||
bouncer-OFTC.split_msg_max_length
|
||||
bouncer-freenode.addresses = "bouncer.awful.club/5000"
|
||||
bouncer-freenode.proxy
|
||||
bouncer-freenode.ipv6
|
||||
bouncer-freenode.ssl = on
|
||||
bouncer-freenode.ssl_cert
|
||||
bouncer-freenode.ssl_priorities
|
||||
bouncer-freenode.ssl_dhkey_size
|
||||
bouncer-freenode.ssl_fingerprint
|
||||
bouncer-freenode.ssl_verify
|
||||
bouncer-freenode.password = "${sec.data.bouncer-freenode}"
|
||||
bouncer-freenode.capabilities
|
||||
bouncer-freenode.sasl_mechanism
|
||||
bouncer-freenode.sasl_username
|
||||
bouncer-freenode.sasl_password
|
||||
bouncer-freenode.sasl_key
|
||||
bouncer-freenode.sasl_timeout
|
||||
bouncer-freenode.sasl_fail
|
||||
bouncer-freenode.autoconnect = on
|
||||
bouncer-freenode.autoreconnect
|
||||
bouncer-freenode.autoreconnect_delay
|
||||
bouncer-freenode.nicks
|
||||
bouncer-freenode.nicks_alternate
|
||||
bouncer-freenode.username = "blindidiotgod/freenode"
|
||||
bouncer-freenode.realname
|
||||
bouncer-freenode.local_hostname
|
||||
bouncer-freenode.usermode
|
||||
bouncer-freenode.command
|
||||
bouncer-freenode.command_delay
|
||||
bouncer-freenode.autojoin
|
||||
bouncer-freenode.autorejoin
|
||||
bouncer-freenode.autorejoin_delay
|
||||
bouncer-freenode.connection_timeout
|
||||
bouncer-freenode.anti_flood_prio_high
|
||||
bouncer-freenode.anti_flood_prio_low
|
||||
bouncer-freenode.away_check
|
||||
bouncer-freenode.away_check_max_nicks
|
||||
bouncer-freenode.msg_kick
|
||||
bouncer-freenode.msg_part
|
||||
bouncer-freenode.msg_quit
|
||||
bouncer-freenode.notify
|
||||
bouncer-freenode.split_msg_max_length
|
@ -0,0 +1,35 @@
|
||||
#
|
||||
# weechat -- logger.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[look]
|
||||
backlog = 20
|
||||
backlog_conditions = ""
|
||||
|
||||
[color]
|
||||
backlog_end = default
|
||||
backlog_line = default
|
||||
|
||||
[file]
|
||||
auto_log = on
|
||||
flush_delay = 120
|
||||
fsync = off
|
||||
info_lines = off
|
||||
mask = "$plugin.$name.weechatlog"
|
||||
name_lower_case = on
|
||||
nick_prefix = ""
|
||||
nick_suffix = ""
|
||||
path = "%h/logs/"
|
||||
replacement_char = "_"
|
||||
time_format = "%Y-%m-%d %H:%M:%S"
|
||||
|
||||
[level]
|
||||
|
||||
[mask]
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,64 @@
|
||||
2019-07-08 11:05:44 --> zws (~blindidio@134.209.53.112) has joined #python-unregistered
|
||||
2019-07-08 11:05:44 -- Topic for #python-unregistered is "Welcome to #python-unregistered! You've been put here because #python requires you to register your nickname with Freenode. For more information about registering on Freenode, ask #freenode. For more information about #python,#python-* moderation, #python-ops."
|
||||
2019-07-08 11:05:44 -- Topic set by lvh (~lvh@python/psf/lvh) on Fri, 01 Jul 2011 03:44:19
|
||||
2019-07-08 11:05:44 -- Channel #python-unregistered: 881 nicks (1 op, 0 voices, 880 normals)
|
||||
2019-07-08 11:05:57 -- Channel created on Sat, 05 Feb 2011 18:12:29
|
||||
2019-07-08 11:06:30 <-- defaultnick_____ (~7JTAAORXG@104.251.94.18) has quit (Remote host closed the connection)
|
||||
2019-07-08 11:06:39 --> defaultnick_____ (~7JTAAORXG@104.251.94.18) has joined #python-unregistered
|
||||
2019-07-08 11:08:40 <-- sleepyblooshy (uid134100@gateway/web/irccloud.com/x-nefdgrkckrjuyebf) has quit (Quit: Connection closed for inactivity)
|
||||
2019-07-08 11:08:44 --> hamishtmb (~hamishtmb@host86-139-151-82.range86-139.btcentralplus.com) has joined #python-unregistered
|
||||
2019-07-08 11:10:01 <-- Theroxat (~quassel@222.229.1.85.dynamic.wline.res.cust.swisscom.ch) has quit (Remote host closed the connection)
|
||||
2019-07-08 11:10:12 <-- hamishtmb (~hamishtmb@host86-139-151-82.range86-139.btcentralplus.com) has quit (Read error: Connection reset by peer)
|
||||
2019-07-08 11:10:32 --> hamishtmb (~hamishtmb@host86-139-151-82.range86-139.btcentralplus.com) has joined #python-unregistered
|
||||
2019-07-08 11:10:44 <-- pbandark_ (~pbandark@94.236.3.83) has quit (Quit: Leaving)
|
||||
2019-07-08 11:10:49 <-- toxync04 (~toxync04@223.72.93.195) has quit (Ping timeout: 246 seconds)
|
||||
2019-07-08 11:10:50 --> Theroxat (~quassel@222.229.1.85.dynamic.wline.res.cust.swisscom.ch) has joined #python-unregistered
|
||||
2019-07-08 11:11:29 --> toxync04 (~toxync04@120.244.111.187) has joined #python-unregistered
|
||||
2019-07-08 11:11:39 <-- gamado__ (gamado@nat/redhat/x-pqmgsheaqhskfiio) has quit (Ping timeout: 244 seconds)
|
||||
2019-07-08 11:12:32 -- irc: disconnected from server
|
||||
2019-07-08 11:13:11 --> zws (~blindidio@134.209.53.112) has joined #python-unregistered
|
||||
2019-07-08 11:13:11 -- Topic for #python-unregistered is "Welcome to #python-unregistered! You've been put here because #python requires you to register your nickname with Freenode. For more information about registering on Freenode, ask #freenode. For more information about #python,#python-* moderation, #python-ops."
|
||||
2019-07-08 11:13:11 -- Topic set by lvh (~lvh@python/psf/lvh) on Fri, 01 Jul 2011 03:44:19
|
||||
2019-07-08 11:13:11 -- Channel #python-unregistered: 879 nicks (1 op, 0 voices, 878 normals)
|
||||
2019-07-08 11:13:27 -- Channel created on Sat, 05 Feb 2011 18:12:29
|
||||
2019-07-08 11:13:29 -- Mode #python-unregistered [+cmnpst]
|
||||
2019-07-08 11:13:29 -- Channel created on Sat, 05 Feb 2011 18:12:29
|
||||
2019-07-08 11:15:01 -- irc: disconnected from server
|
||||
2019-07-08 11:15:41 --> zws (~blindidio@134.209.53.112) has joined #python-unregistered
|
||||
2019-07-08 11:15:41 -- Topic for #python-unregistered is "Welcome to #python-unregistered! You've been put here because #python requires you to register your nickname with Freenode. For more information about registering on Freenode, ask #freenode. For more information about #python,#python-* moderation, #python-ops."
|
||||
2019-07-08 11:15:41 -- Topic set by lvh (~lvh@python/psf/lvh) on Fri, 01 Jul 2011 03:44:19
|
||||
2019-07-08 11:15:41 -- Channel #python-unregistered: 879 nicks (1 op, 0 voices, 878 normals)
|
||||
2019-07-08 11:15:54 -- Channel created on Sat, 05 Feb 2011 18:12:29
|
||||
2019-07-08 11:15:56 -- Mode #python-unregistered [+cmnpst]
|
||||
2019-07-08 11:15:56 -- Channel created on Sat, 05 Feb 2011 18:12:29
|
||||
2019-07-08 11:16:19 --> Guest38175 (ad49b257@pool-173-73-178-87.washdc.fios.verizon.net) has joined #python-unregistered
|
||||
2019-07-08 11:16:28 <-- sergiomiguelrp (~quassel@190.219.94.209) has quit (Ping timeout: 268 seconds)
|
||||
2019-07-08 11:16:39 -- irc: disconnected from server
|
||||
2019-07-08 11:17:16 --> zws (~blindidio@134.209.53.112) has joined #python-unregistered
|
||||
2019-07-08 11:17:16 -- Topic for #python-unregistered is "Welcome to #python-unregistered! You've been put here because #python requires you to register your nickname with Freenode. For more information about registering on Freenode, ask #freenode. For more information about #python,#python-* moderation, #python-ops."
|
||||
2019-07-08 11:17:16 -- Topic set by lvh (~lvh@python/psf/lvh) on Fri, 01 Jul 2011 03:44:19
|
||||
2019-07-08 11:17:16 -- Channel #python-unregistered: 879 nicks (1 op, 0 voices, 878 normals)
|
||||
2019-07-08 11:17:21 --> sergiomiguelrp (~quassel@190.219.94.209) has joined #python-unregistered
|
||||
2019-07-08 11:17:38 -- Channel created on Sat, 05 Feb 2011 18:12:29
|
||||
2019-07-08 11:17:40 -- Mode #python-unregistered [+cmnpst]
|
||||
2019-07-08 11:17:40 -- Channel created on Sat, 05 Feb 2011 18:12:29
|
||||
2019-07-08 11:18:08 -- Guest38175 is now known as guesttttt
|
||||
2019-07-08 11:18:40 <-- m_tadeu (~quassel@bl9-205-97.dsl.telepac.pt) has quit (Quit: No Ping reply in 180 seconds.)
|
||||
2019-07-08 11:18:49 <-- zws (~blindidio@134.209.53.112) has left #python-unregistered
|
||||
2019-07-10 09:55:37 --> blindidi- (~blindidio@134.209.53.112) has joined #python-unregistered
|
||||
2019-07-10 09:55:37 -- Topic for #python-unregistered is "Welcome to #python-unregistered! You've been put here because #python requires you to register your nickname with Freenode. For more information about registering on Freenode, ask #freenode. For more information about #python,#python-* moderation, #python-ops."
|
||||
2019-07-10 09:55:37 -- Topic set by lvh (~lvh@python/psf/lvh) on Fri, 01 Jul 2011 03:44:19
|
||||
2019-07-10 09:55:37 -- Channel #python-unregistered: 890 nicks (1 op, 0 voices, 889 normals)
|
||||
2019-07-10 09:55:41 -- Channel created on Sat, 05 Feb 2011 18:12:29
|
||||
2019-07-10 09:55:44 --> blindidi- (~blindidio@134.209.53.112) has joined #python-unregistered
|
||||
2019-07-10 09:55:44 -- Topic for #python-unregistered is "Welcome to #python-unregistered! You've been put here because #python requires you to register your nickname with Freenode. For more information about registering on Freenode, ask #freenode. For more information about #python,#python-* moderation, #python-ops."
|
||||
2019-07-10 09:55:44 -- Topic set by lvh (~lvh@python/psf/lvh) on Fri, 01 Jul 2011 03:44:19
|
||||
2019-07-10 09:55:44 -- Channel #python-unregistered: 890 nicks (1 op, 0 voices, 889 normals)
|
||||
2019-07-10 09:55:46 <-- blindidi- (~blindidio@134.209.53.112) has left #python-unregistered
|
||||
2019-07-10 09:55:51 -- Channel created on Sat, 05 Feb 2011 18:12:29
|
||||
2019-07-10 16:41:49 -- irc: disconnected from server
|
||||
2019-07-10 17:33:15 -- irc: disconnected from server
|
||||
2019-07-10 22:43:57 -- irc: disconnected from server
|
||||
2019-07-10 22:44:14 -- irc: disconnected from server
|
||||
2019-07-11 02:44:36 -- irc: disconnected from server
|
||||
2019-07-11 09:12:09 -- irc: disconnected from server
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
||||
2019-07-08 11:08:37 *status The channel #emacs could not be joined, disabling it.
|
||||
2019-07-08 11:12:32 -- irc: disconnected from server
|
||||
2019-07-08 11:13:05 *status Connected!
|
||||
2019-07-08 11:15:01 -- irc: disconnected from server
|
||||
2019-07-08 11:15:35 *status Connected!
|
||||
2019-07-08 11:16:39 -- irc: disconnected from server
|
||||
2019-07-08 11:17:10 *status Connected!
|
@ -0,0 +1,49 @@
|
||||
2019-07-08 11:17:22 zws help
|
||||
2019-07-08 11:17:42 -- NickServ: ***** NickServ Help *****
|
||||
2019-07-08 11:17:42 -- NickServ: NickServ allows users to 'register' a nickname, and stop
|
||||
2019-07-08 11:17:42 -- NickServ: others from using that nick. NickServ allows the owner of a
|
||||
2019-07-08 11:17:42 -- NickServ: nickname to disconnect a user from the network that is using
|
||||
2019-07-08 11:17:42 -- NickServ: their nickname.
|
||||
2019-07-08 11:17:42 -- NickServ:
|
||||
2019-07-08 11:17:42 -- NickServ: For more information on a command, type:
|
||||
2019-07-08 11:17:42 -- NickServ: /msg NickServ help <command>
|
||||
2019-07-08 11:17:42 -- NickServ: For a verbose listing of all commands, type:
|
||||
2019-07-08 11:17:42 -- NickServ: /msg NickServ help commands
|
||||
2019-07-08 11:17:42 -- NickServ:
|
||||
2019-07-08 11:17:42 -- NickServ: The following commands are available:
|
||||
2019-07-08 11:17:42 -- NickServ: GHOST Reclaims use of a nickname.
|
||||
2019-07-08 11:17:42 -- NickServ: IDENTIFY Identifies to services for a nickname.
|
||||
2019-07-08 11:17:42 -- NickServ: INFO Displays information on registrations.
|
||||
2019-07-08 11:17:42 -- NickServ: LISTCHANS Lists channels that you have access to.
|
||||
2019-07-08 11:17:42 -- NickServ: REGISTER Registers a nickname.
|
||||
2019-07-08 11:17:42 -- NickServ: RELEASE Releases a services enforcer.
|
||||
2019-07-08 11:17:42 -- NickServ: SENDPASS Email registration passwords.
|
||||
2019-07-08 11:17:42 -- NickServ:
|
||||
2019-07-08 11:17:42 -- NickServ: Other commands: ACC, ACCESS, CERT, DROP, HELP, LOGOUT,
|
||||
2019-07-08 11:17:42 -- NickServ: REGAIN, SETPASS, STATUS, TAXONOMY, VERIFY
|
||||
2019-07-08 11:17:42 -- NickServ: ***** End of Help *****
|
||||
2019-07-08 11:18:04 zws identify help
|
||||
2019-07-08 11:18:04 -- NickServ: zws is not a registered nickname.
|
||||
2019-07-08 11:18:07 zws help identify
|
||||
2019-07-08 11:18:07 -- NickServ: ***** NickServ Help *****
|
||||
2019-07-08 11:18:07 -- NickServ: Help for IDENTIFY:
|
||||
2019-07-08 11:18:07 -- NickServ:
|
||||
2019-07-08 11:18:07 -- NickServ: IDENTIFY identifies you with services so that you
|
||||
2019-07-08 11:18:07 -- NickServ: can perform general maintenance and commands that
|
||||
2019-07-08 11:18:07 -- NickServ: require you to be logged in.
|
||||
2019-07-08 11:18:07 -- NickServ:
|
||||
2019-07-08 11:18:07 -- NickServ: Syntax: IDENTIFY <password>
|
||||
2019-07-08 11:18:07 -- NickServ:
|
||||
2019-07-08 11:18:07 -- NickServ: You can also identify for another nick than you
|
||||
2019-07-08 11:18:07 -- NickServ: are currently using.
|
||||
2019-07-08 11:18:07 -- NickServ:
|
||||
2019-07-08 11:18:07 -- NickServ: Syntax: IDENTIFY <nick> <password>
|
||||
2019-07-08 11:18:07 -- NickServ:
|
||||
2019-07-08 11:18:07 -- NickServ: Example:
|
||||
2019-07-08 11:18:07 -- NickServ: /msg NickServ IDENTIFY foo
|
||||
2019-07-08 11:18:07 -- NickServ: /msg NickServ IDENTIFY jilles foo
|
||||
2019-07-08 11:18:07 -- NickServ: ***** End of Help *****
|
||||
2019-07-08 11:18:21 zws identify zws convene-scab-irritate-jerk
|
||||
2019-07-08 11:18:21 -- NickServ: zws is not a registered nickname.
|
||||
2019-07-08 11:18:29 zws identify blindidiotgod convene-scab-irritate-jerk
|
||||
2019-07-08 11:18:29 -- NickServ: You are now identified for blindidiotgod.
|
@ -0,0 +1,2 @@
|
||||
2019-07-08 11:17:31 zws help
|
||||
2019-07-08 11:17:44 -- nickserve: No such nick/channel
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,7 @@
|
||||
2019-07-08 11:08:37 *status The channel #crimehole could not be joined, disabling it.
|
||||
2019-07-08 11:12:32 -- irc: disconnected from server
|
||||
2019-07-08 11:12:48 *status Connected!
|
||||
2019-07-08 11:15:01 -- irc: disconnected from server
|
||||
2019-07-08 11:15:19 *status Connected!
|
||||
2019-07-08 11:16:39 -- irc: disconnected from server
|
||||
2019-07-08 11:16:55 *status Connected!
|
@ -0,0 +1,72 @@
|
||||
2019-07-08 11:20:22 zws help
|
||||
2019-07-08 11:20:22 -- ChanServ: *** ChanServ Help ***
|
||||
2019-07-08 11:20:22 -- ChanServ: ACCESS: Maintains the channel access list.
|
||||
2019-07-08 11:20:22 -- ChanServ: AKICK: Channel Auto Kick list.
|
||||
2019-07-08 11:20:22 -- ChanServ: CLEAR: Clear groups of settings on the channel.
|
||||
2019-07-08 11:20:22 -- ChanServ: DEOP: Remove channel operator status.
|
||||
2019-07-08 11:20:22 -- ChanServ: DEVOICE: Remove channel voice status.
|
||||
2019-07-08 11:20:22 -- ChanServ: DROP: Unregister the channel.
|
||||
2019-07-08 11:20:22 -- ChanServ: EXCEPT: Manage permanent ban exceptions for a channel
|
||||
2019-07-08 11:20:22 -- ChanServ: HELP: Shows this help.
|
||||
2019-07-08 11:20:22 -- ChanServ: INFO: Show channel information.
|
||||
2019-07-08 11:20:22 -- ChanServ: INVEX: Manage permanent INVITE exceptions for a channel
|
||||
2019-07-08 11:20:22 -- ChanServ: INVITE: Invite to a channel.
|
||||
2019-07-08 11:20:22 -- ChanServ: LIST: Shows a list of channels matching a specified pattern.
|
||||
2019-07-08 11:20:22 -- ChanServ: OP: Grant channel operator status.
|
||||
2019-07-08 11:20:22 -- ChanServ: QUIET: Manage permanent QUIET for a channel
|
||||
2019-07-08 11:20:22 -- ChanServ: REGISTER: Registers a channel for your usage.
|
||||
2019-07-08 11:20:22 -- ChanServ: SET: Change channel settings.
|
||||
2019-07-08 11:20:22 -- ChanServ: UNBAN: Unban yourself on a channel.
|
||||
2019-07-08 11:20:22 -- ChanServ: UNQUIET: Unquiet yourself on a channel.
|
||||
2019-07-08 11:20:22 -- ChanServ: VOICE: Grant channel voice operator status.
|
||||
2019-07-08 11:20:22 -- ChanServ: *** End of ChanServ Help ***
|
||||
2019-07-08 11:20:26 zws help invite
|
||||
2019-07-08 11:20:27 -- ChanServ: *** INVITE Help ***
|
||||
2019-07-08 11:20:27 -- ChanServ: Usage: INVITE channel [nickname]
|
||||
2019-07-08 11:20:27 -- ChanServ:
|
||||
2019-07-08 11:20:27 -- ChanServ: Invites you or, if specified, another user to the channel.
|
||||
2019-07-08 11:20:27 -- ChanServ: *** End of INVITE Help ***
|
||||
2019-07-08 11:20:32 zws invite #crimehole zws
|
||||
2019-07-08 11:20:32 -- ChanServ: User zws has been invited to #crimehole.
|
||||
2019-07-10 09:56:19 zws- help
|
||||
2019-07-10 09:56:19 -- ChanServ: *** ChanServ Help ***
|
||||
2019-07-10 09:56:19 -- ChanServ: ACCESS: Maintains the channel access list.
|
||||
2019-07-10 09:56:19 -- ChanServ: AKICK: Channel Auto Kick list.
|
||||
2019-07-10 09:56:19 -- ChanServ: CLEAR: Clear groups of settings on the channel.
|
||||
2019-07-10 09:56:19 -- ChanServ: DEOP: Remove channel operator status.
|
||||
2019-07-10 09:56:19 -- ChanServ: DEVOICE: Remove channel voice status.
|
||||
2019-07-10 09:56:19 -- ChanServ: DROP: Unregister the channel.
|
||||
2019-07-10 09:56:19 -- ChanServ: EXCEPT: Manage permanent ban exceptions for a channel
|
||||
2019-07-10 09:56:19 -- ChanServ: HELP: Shows this help.
|
||||
2019-07-10 09:56:19 -- ChanServ: INFO: Show channel information.
|
||||
2019-07-10 09:56:19 -- ChanServ: INVEX: Manage permanent INVITE exceptions for a channel
|
||||
2019-07-10 09:56:19 -- ChanServ: INVITE: Invite to a channel.
|
||||
2019-07-10 09:56:19 -- ChanServ: LIST: Shows a list of channels matching a specified pattern.
|
||||
2019-07-10 09:56:19 -- ChanServ: OP: Grant channel operator status.
|
||||
2019-07-10 09:56:19 -- ChanServ: QUIET: Manage permanent QUIET for a channel
|
||||
2019-07-10 09:56:19 -- ChanServ: SET: Change channel settings.
|
||||
2019-07-10 09:56:19 -- ChanServ: UNBAN: Unban yourself on a channel.
|
||||
2019-07-10 09:56:19 -- ChanServ: UNQUIET: Unquiet yourself on a channel.
|
||||
2019-07-10 09:56:19 -- ChanServ: VOICE: Grant channel voice operator status.
|
||||
2019-07-10 09:56:19 -- ChanServ: *** End of ChanServ Help ***
|
||||
2019-07-10 09:56:22 zws- help invite
|
||||
2019-07-10 09:56:23 -- ChanServ: *** INVITE Help ***
|
||||
2019-07-10 09:56:23 -- ChanServ: Usage: INVITE channel [nickname]
|
||||
2019-07-10 09:56:23 -- ChanServ:
|
||||
2019-07-10 09:56:23 -- ChanServ: Invites you or, if specified, another user to the channel.
|
||||
2019-07-10 09:56:23 -- ChanServ: *** End of INVITE Help ***
|
||||
2019-07-10 09:56:29 zws- invite #crimehole blindidiotgod
|
||||
2019-07-10 09:56:29 -- ChanServ: You do not have access to the INVITE command on channel #crimehole. Identifying
|
||||
2019-07-10 09:56:29 -- ChanServ: to your nickname may give you this access. See nickname services' HELP
|
||||
2019-07-10 09:56:29 -- ChanServ: IDENTIFY command for more information.
|
||||
2019-07-10 09:56:36 zws- help identify
|
||||
2019-07-10 09:56:36 -- ChanServ: HELP for identify is not available.
|
||||
2019-07-10 09:57:18 zws invite #crimehole zws
|
||||
2019-07-10 09:57:19 -- ChanServ: User zws has been invited to #crimehole.
|
||||
2019-07-10 16:41:49 -- irc: disconnected from server
|
||||
2019-07-10 18:41:52 -- irc: disconnected from server
|
||||
2019-07-10 20:43:39 -- irc: disconnected from server
|
||||
2019-07-10 20:43:54 -- irc: disconnected from server
|
||||
2019-07-11 00:44:17 -- irc: disconnected from server
|
||||
2019-07-11 00:44:33 -- irc: disconnected from server
|
||||
2019-07-11 09:15:34 -- irc: disconnected from server
|
@ -0,0 +1,44 @@
|
||||
2019-07-08 11:19:47 zws help
|
||||
2019-07-08 11:19:47 -- NickServ: *** NickServ Help ***
|
||||
2019-07-08 11:19:47 -- NickServ: CHECKVERIFY: Sets +R if you recently verified your nickname.
|
||||
2019-07-08 11:19:47 -- NickServ: HELP: Shows this help.
|
||||
2019-07-08 11:19:47 -- NickServ: IDENTIFY: Identify your nickname.
|
||||
2019-07-08 11:19:47 -- NickServ: INFO: Get information on a nickname.
|
||||
2019-07-08 11:19:47 -- NickServ: LIST: Shows a list of nicknames matching a specified pattern.
|
||||
2019-07-08 11:19:47 -- NickServ: RECLAIM: Release your nickname for you to use.
|
||||
2019-07-08 11:19:47 -- NickServ: REGAIN: Release your nickname for you to use.
|
||||
2019-07-08 11:19:47 -- NickServ: REGISTER: Registers a nickname for your usage.
|
||||
2019-07-08 11:19:47 -- NickServ: SENDPASS: Send a password reset request.
|
||||
2019-07-08 11:19:47 -- NickServ: STATUS: Shows the identified status of a nickname
|
||||
2019-07-08 11:19:47 -- NickServ: *** End of NickServ Help ***
|
||||
2019-07-08 11:19:50 zws help identify
|
||||
2019-07-08 11:19:50 -- NickServ: *** IDENTIFY Help ***
|
||||
2019-07-08 11:19:50 -- NickServ: Usage: IDENTIFY password [nick]
|
||||
2019-07-08 11:19:50 -- NickServ:
|
||||
2019-07-08 11:19:50 -- NickServ: Identify that you are the owner of the nick you are currently using.
|
||||
2019-07-08 11:19:50 -- NickServ: If you specify a nickname to identify against, your IRC nick will
|
||||
2019-07-08 11:19:50 -- NickServ: automatically be changed to the one you identify for.
|
||||
2019-07-08 11:19:50 -- NickServ:
|
||||
2019-07-08 11:19:50 -- NickServ: See also: REGISTER
|
||||
2019-07-08 11:19:50 -- NickServ: *** End of IDENTIFY Help ***
|
||||
2019-07-08 11:20:04 zws identify gus-offing-vodka-culprit blindidiotgod
|
||||
2019-07-08 11:20:04 -- NickServ: You are successfully identified as blindidiotgod.
|
||||
2019-07-10 09:56:45 zws- help identify
|
||||
2019-07-10 09:56:46 -- NickServ: *** IDENTIFY Help ***
|
||||
2019-07-10 09:56:46 -- NickServ: Usage: IDENTIFY password [nick]
|
||||
2019-07-10 09:56:46 -- NickServ:
|
||||
2019-07-10 09:56:46 -- NickServ: Identify that you are the owner of the nick you are currently using.
|
||||
2019-07-10 09:56:46 -- NickServ: If you specify a nickname to identify against, your IRC nick will
|
||||
2019-07-10 09:56:46 -- NickServ: automatically be changed to the one you identify for.
|
||||
2019-07-10 09:56:46 -- NickServ:
|
||||
2019-07-10 09:56:46 -- NickServ: See also: REGISTER
|
||||
2019-07-10 09:56:46 -- NickServ: *** End of IDENTIFY Help ***
|
||||
2019-07-10 09:57:05 zws- identify gus-offing-vodka-culprit blindidiotgod
|
||||
2019-07-10 09:57:06 -- NickServ: You are successfully identified as blindidiotgod.
|
||||
2019-07-10 16:41:49 -- irc: disconnected from server
|
||||
2019-07-10 18:41:52 -- irc: disconnected from server
|
||||
2019-07-10 20:43:39 -- irc: disconnected from server
|
||||
2019-07-10 20:43:54 -- irc: disconnected from server
|
||||
2019-07-11 00:44:17 -- irc: disconnected from server
|
||||
2019-07-11 00:44:33 -- irc: disconnected from server
|
||||
2019-07-11 09:15:34 -- irc: disconnected from server
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,38 @@
|
||||
2019-01-22 17:11:16 --> appservice-irc (@appservice-irc:matrix.org) has joined awful-club.!bQQxlvZRPnQRIIOSxK:matrix.org
|
||||
2019-01-22 17:11:17 -- appservice-irc has changed the topic for #Freenode IRC Bridge status to "This room shows any errors or status messages from chat.freenode.net, as well as letting you control the connection. "
|
||||
2019-01-22 17:11:17 --> @jowj:awful.club (None) has been invited to #Freenode IRC Bridge status
|
||||
2019-01-22 17:11:18 -- Notice(&appservice-irc): You've joined a Matrix room which is bridged to the IRC network 'chat.freenode.net', where you are now connected as jowj[m]. This room shows any errors or status messages from IRC, as well as letting you control the connection. Type !help for more information
|
||||
2019-01-22 17:11:18 -- Notice(&appservice-irc): Could not join #ruma on 'chat.freenode.net': err_needreggednick
|
||||
2019-01-22 17:12:10 --> jowj (@jowj:awful.club) has joined #Freenode IRC Bridge status
|
||||
2019-01-22 17:12:44 &jowj !help
|
||||
2019-01-22 17:12:44 -- Notice(&appservice-irc): This is an IRC admin room for controlling your IRC connection and sending commands directly to IRC. The following commands are available:
|
||||
2019-01-22 17:12:44 !join [irc.example.net] #channel [key] : Join a channel (with optional channel key)
|
||||
2019-01-22 17:12:44 !nick [irc.example.net] DesiredNick : Change your nick. If no arguments are supplied, your current nick is shown.
|
||||
2019-01-22 17:12:44 !whois [irc.example.net] NickName|@alice:matrix.org : Do a /whois lookup. If a Matrix User ID is supplied, return information about that user's IRC connection.
|
||||
2019-01-22 17:12:44 !storepass [irc.example.net] passw0rd : Store a NickServ password (server password)
|
||||
2019-01-22 17:12:44 !removepass [irc.example.net] : Remove a previously stored NickServ password
|
||||
2019-01-22 17:12:44 !quit : Leave all bridged channels, on all networks, and remove your connections to all networks.
|
||||
2019-01-22 17:12:44 !cmd [irc.example.net] COMMAND [arg0 [arg1 [...]]] : Issue a raw IRC command. These will not produce a reply.(Note that the command must be all uppercase.)
|
||||
2019-01-22 17:13:13 &jowj !join chat.freenode.net #ruma
|
||||
2019-01-22 17:13:13 -- Notice(&appservice-irc): Could not join #ruma on 'chat.freenode.net': err_needreggednick
|
||||
2019-02-15 23:26:29 &jowj !join irc.freenode #nextcloud
|
||||
2019-03-31 19:29:31 &jowj !join irc.freenode.net #emacs
|
||||
2019-01-22 17:11:16 ▬▬▶ appservice-irc (@appservice-irc:matrix.org) has joined awful-club.!bQQxlvZRPnQRIIOSxK:matrix.org
|
||||
2019-01-22 17:11:17 -- appservice-irc has changed the topic for #Freenode IRC Bridge status to "This room shows any errors or status messages from chat.freenode.net, as well as letting you control the connection. "
|
||||
2019-01-22 17:11:17 ▬▬▶ @jowj:awful.club (None) has been invited to #Freenode IRC Bridge status
|
||||
2019-01-22 17:11:18 -- Notice(&appservice-irc): You've joined a Matrix room which is bridged to the IRC network 'chat.freenode.net', where you are now connected as jowj[m]. This room shows any errors or status messages from IRC, as well as letting you control the connection. Type !help for more information
|
||||
2019-01-22 17:11:18 -- Notice(&appservice-irc): Could not join #ruma on 'chat.freenode.net': err_needreggednick
|
||||
2019-01-22 17:12:10 ▬▬▶ jowj (@jowj:awful.club) has joined #Freenode IRC Bridge status
|
||||
2019-01-22 17:12:44 &jowj !help
|
||||
2019-01-22 17:12:44 -- Notice(&appservice-irc): This is an IRC admin room for controlling your IRC connection and sending commands directly to IRC. The following commands are available:
|
||||
2019-01-22 17:12:44 !join [irc.example.net] #channel [key] : Join a channel (with optional channel key)
|
||||
2019-01-22 17:12:44 !nick [irc.example.net] DesiredNick : Change your nick. If no arguments are supplied, your current nick is shown.
|
||||
2019-01-22 17:12:44 !whois [irc.example.net] NickName|@alice:matrix.org : Do a /whois lookup. If a Matrix User ID is supplied, return information about that user's IRC connection.
|
||||
2019-01-22 17:12:44 !storepass [irc.example.net] passw0rd : Store a NickServ password (server password)
|
||||
2019-01-22 17:12:44 !removepass [irc.example.net] : Remove a previously stored NickServ password
|
||||
2019-01-22 17:12:44 !quit : Leave all bridged channels, on all networks, and remove your connections to all networks.
|
||||
2019-01-22 17:12:44 !cmd [irc.example.net] COMMAND [arg0 [arg1 [...]]] : Issue a raw IRC command. These will not produce a reply.(Note that the command must be all uppercase.)
|
||||
2019-01-22 17:13:13 &jowj !join chat.freenode.net #ruma
|
||||
2019-01-22 17:13:13 -- Notice(&appservice-irc): Could not join #ruma on 'chat.freenode.net': err_needreggednick
|
||||
2019-02-15 23:26:29 &jowj !join irc.freenode #nextcloud
|
||||
2019-03-31 19:29:31 &jowj !join irc.freenode.net #emacs
|
@ -0,0 +1,16 @@
|
||||
2019-07-23 02:04:46 &ndled Riot I think shows micriophone levels in chat rooom
|
||||
2019-07-23 02:04:50 &ndled And its a blank level
|
||||
2019-07-23 02:05:29 &ndled Its actually not letting me quit
|
||||
2019-07-23 02:05:35 &ndled wtf
|
||||
2019-07-23 02:06:12 &ndled It doesn't let you quit active calls I guess
|
||||
2019-07-23 02:27:48 &ndled I can hear you
|
||||
2019-07-23 02:27:50 &ndled Can you hear me
|
||||
2019-07-23 02:27:53 &ndled You sound far away
|
||||
2019-07-23 02:04:46 &ndled Riot I think shows micriophone levels in chat rooom
|
||||
2019-07-23 02:04:50 &ndled And its a blank level
|
||||
2019-07-23 02:05:29 &ndled Its actually not letting me quit
|
||||
2019-07-23 02:05:35 &ndled wtf
|
||||
2019-07-23 02:06:12 &ndled It doesn't let you quit active calls I guess
|
||||
2019-07-23 02:27:48 &ndled I can hear you
|
||||
2019-07-23 02:27:50 &ndled Can you hear me
|
||||
2019-07-23 02:27:53 &ndled You sound far away
|
@ -0,0 +1,58 @@
|
||||
2019-05-08 01:29:10 &jowj I JUST LOGGED IN AND I'M READING IT NOW
|
||||
2019-05-08 01:29:10 &wblj Hmm
|
||||
2019-05-08 01:29:19 &wblj And?
|
||||
2019-05-08 01:29:37 &jowj there are discrepencies
|
||||
2019-05-08 01:29:43 &jowj they don't like that i don't have w2s from volusion
|
||||
2019-05-08 01:30:09 &wblj What is aw2 again?
|
||||
2019-05-08 01:33:52 &jowj tax form
|
||||
2019-05-08 01:33:58 &jowj 'this is what you made' etc
|
||||
2019-05-08 01:35:44 &jowj ugh
|
||||
2019-05-08 01:35:55 &jowj https://matrix.awful.club:443/_matrix/media/r0/download/awful.club/pnCEBOEvzRAJYVgbPWEaTOEY/image.png
|
||||
2019-05-08 01:36:12 &jowj planview hasn't got back to me
|
||||
2019-05-08 01:37:04 &jowj but the did not find my history lol
|
||||
2019-05-08 01:37:27 &jowj aaah i'm sure its fine i'm just stressssssed about it
|
||||
2019-05-08 01:37:57 &wblj Gack. We hates stress
|
||||
2019-05-08 01:38:02 &jowj yes i do
|
||||
2019-05-08 01:38:04 &jowj what are you working on
|
||||
2019-05-08 01:46:04 &wblj Nothing really. Bland day
|
||||
2019-05-08 19:10:47 &jowj aaah i got the job and passed the background check!!
|
||||
2019-05-10 00:02:34 &wblj Whaaaat???!?!?! That's excellent!
|
||||
2019-05-10 00:02:54 &wblj I guess I missed that notification.
|
||||
2019-05-10 00:02:57 &wblj Congratulations!
|
||||
2019-05-10 00:03:07 &wblj When do you start?
|
||||
2019-05-10 00:13:37 &jowj the 20th
|
||||
2019-05-10 00:13:55 &wblj So, will you have a little time off between?
|
||||
2019-05-10 00:14:16 &jowj yeah a few days
|
||||
2019-05-10 00:14:33 &wblj Good. We should do lunch!
|
||||
2019-05-10 12:19:18 &wblj Happy birthday!
|
||||
2019-05-10 13:13:28 &jowj happy birthday to me!!
|
||||
2019-05-10 13:13:33 &jowj thank you :)
|
||||
2019-05-08 01:29:10 &jowj I JUST LOGGED IN AND I'M READING IT NOW
|
||||
2019-05-08 01:29:10 &wblj Hmm
|
||||
2019-05-08 01:29:19 &wblj And?
|
||||
2019-05-08 01:29:37 &jowj there are discrepencies
|
||||
2019-05-08 01:29:43 &jowj they don't like that i don't have w2s from volusion
|
||||
2019-05-08 01:30:09 &wblj What is aw2 again?
|
||||
2019-05-08 01:33:52 &jowj tax form
|
||||
2019-05-08 01:33:58 &jowj 'this is what you made' etc
|
||||
2019-05-08 01:35:44 &jowj ugh
|
||||
2019-05-08 01:35:55 &jowj https://matrix.awful.club:443/_matrix/media/r0/download/awful.club/pnCEBOEvzRAJYVgbPWEaTOEY/image.png
|
||||
2019-05-08 01:36:12 &jowj planview hasn't got back to me
|
||||
2019-05-08 01:37:04 &jowj but the did not find my history lol
|
||||
2019-05-08 01:37:27 &jowj aaah i'm sure its fine i'm just stressssssed about it
|
||||
2019-05-08 01:37:57 &wblj Gack. We hates stress
|
||||
2019-05-08 01:38:02 &jowj yes i do
|
||||
2019-05-08 01:38:04 &jowj what are you working on
|
||||
2019-05-08 01:46:04 &wblj Nothing really. Bland day
|
||||
2019-05-08 19:10:47 &jowj aaah i got the job and passed the background check!!
|
||||
2019-05-10 00:02:34 &wblj Whaaaat???!?!?! That's excellent!
|
||||
2019-05-10 00:02:54 &wblj I guess I missed that notification.
|
||||
2019-05-10 00:02:57 &wblj Congratulations!
|
||||
2019-05-10 00:03:07 &wblj When do you start?
|
||||
2019-05-10 00:13:37 &jowj the 20th
|
||||
2019-05-10 00:13:55 &wblj So, will you have a little time off between?
|
||||
2019-05-10 00:14:16 &jowj yeah a few days
|
||||
2019-05-10 00:14:33 &wblj Good. We should do lunch!
|
||||
2019-05-10 12:19:18 &wblj Happy birthday!
|
||||
2019-05-10 13:13:28 &jowj happy birthday to me!!
|
||||
2019-05-10 13:13:33 &jowj thank you :)
|
@ -0,0 +1,54 @@
|
||||
2019-07-18 03:28:48 jowj mojojojo-bot speak
|
||||
2019-07-18 03:28:48 mojojojo-app tell j- to actually fucking write somthing.
|
||||
2019-07-18 03:28:48 mojojojo-app tell j- to actually fucking write somthing.
|
||||
2019-07-24 00:54:28 mojojojo-app https://my.awful.club returned with status 200
|
||||
2019-07-24 00:54:29 mojojojo-app https://bouncer.awful.club:5000 returned with status 200
|
||||
2019-07-24 00:54:30 mojojojo-app https://my.awful.club returned with status 200
|
||||
2019-07-24 00:54:30 mojojojo-app https://my.awful.club returned with status Failed to connect.
|
||||
2019-07-24 00:54:31 mojojojo-app https://my.awful.club returned with status 200
|
||||
2019-07-24 00:54:31 mojojojo-app https://bouncer.awful.club:5000 returned with status 200
|
||||
2019-07-24 00:54:31 mojojojo-app https://bouncer.awful.club:5000 returned with status Failed to connect.
|
||||
2019-07-24 00:54:31 mojojojo-app https://bouncer.awful.club:5000 returned with status 200
|
||||
2019-07-24 00:54:32 mojojojo-app https://my.awful.club returned with status Failed to connect.
|
||||
2019-07-24 00:54:32 mojojojo-app https://bouncer.awful.club:5000 returned with status 200
|
||||
2019-07-24 00:54:33 mojojojo-app https://my.awful.club returned with status Failed to connect.
|
||||
2019-07-24 00:54:38 mojojojo-app https://my.awful.club returned with status Failed to connect.
|
||||
2019-07-24 00:54:43 mojojojo-app https://bouncer.awful.club:5000 returned with status 200
|
||||
2019-07-24 00:54:49 mojojojo-app https://bouncer.awful.club:5000 returned with status Failed to connect.
|
||||
2019-07-24 00:54:53 mojojojo-app https://bouncer.awful.club:5000 returned with status 200
|
||||
2019-07-24 00:54:58 mojojojo-app https://my.awful.club returned with status Failed to connect.
|
||||
2019-07-24 00:55:03 mojojojo-app https://bouncer.awful.club:5000 returned with status 200
|
||||
2019-07-24 00:55:08 mojojojo-app https://my.awful.club returned with status 200
|
||||
2019-07-24 00:55:13 mojojojo-app https://bouncer.awful.club:5000 returned with status 200
|
||||
2019-07-24 00:55:18 mojojojo-app https://my.awful.club returned with status 200
|
||||
2019-07-24 00:55:23 mojojojo-app https://my.awful.club returned with status 200
|
||||
2019-07-24 00:55:28 mojojojo-app https://bouncer.awful.club:5000 returned with status Failed to connect.
|
||||
2019-07-24 00:55:33 mojojojo-app https://bouncer.awful.club:5000 returned with status Failed to connect.
|
||||
2019-07-24 00:55:38 mojojojo-app https://my.awful.club returned with status Failed to connect.
|
||||
2019-07-18 03:28:48 jowj mojojojo-bot speak
|
||||
2019-07-18 03:28:48 mojojojo-app tell j- to actually fucking write somthing.
|
||||
2019-07-18 03:28:48 mojojojo-app tell j- to actually fucking write somthing.
|
||||
2019-07-24 00:54:28 mojojojo-app https://my.awful.club returned with status 200
|
||||
2019-07-24 00:54:29 mojojojo-app https://bouncer.awful.club:5000 returned with status 200
|
||||
2019-07-24 00:54:30 mojojojo-app https://my.awful.club returned with status 200
|
||||
2019-07-24 00:54:30 mojojojo-app https://my.awful.club returned with status Failed to connect.
|
||||
2019-07-24 00:54:31 mojojojo-app https://my.awful.club returned with status 200
|
||||
2019-07-24 00:54:31 mojojojo-app https://bouncer.awful.club:5000 returned with status 200
|
||||
2019-07-24 00:54:31 mojojojo-app https://bouncer.awful.club:5000 returned with status Failed to connect.
|
||||
2019-07-24 00:54:31 mojojojo-app https://bouncer.awful.club:5000 returned with status 200
|
||||
2019-07-24 00:54:32 mojojojo-app https://my.awful.club returned with status Failed to connect.
|
||||
2019-07-24 00:54:32 mojojojo-app https://bouncer.awful.club:5000 returned with status 200
|
||||
2019-07-24 00:54:33 mojojojo-app https://my.awful.club returned with status Failed to connect.
|
||||
2019-07-24 00:54:38 mojojojo-app https://my.awful.club returned with status Failed to connect.
|
||||
2019-07-24 00:54:43 mojojojo-app https://bouncer.awful.club:5000 returned with status 200
|
||||
2019-07-24 00:54:49 mojojojo-app https://bouncer.awful.club:5000 returned with status Failed to connect.
|
||||
2019-07-24 00:54:53 mojojojo-app https://bouncer.awful.club:5000 returned with status 200
|
||||
2019-07-24 00:54:58 mojojojo-app https://my.awful.club returned with status Failed to connect.
|
||||
2019-07-24 00:55:03 mojojojo-app https://bouncer.awful.club:5000 returned with status 200
|
||||
2019-07-24 00:55:08 mojojojo-app https://my.awful.club returned with status 200
|
||||
2019-07-24 00:55:13 mojojojo-app https://bouncer.awful.club:5000 returned with status 200
|
||||
2019-07-24 00:55:18 mojojojo-app https://my.awful.club returned with status 200
|
||||
2019-07-24 00:55:23 mojojojo-app https://my.awful.club returned with status 200
|
||||
2019-07-24 00:55:28 mojojojo-app https://bouncer.awful.club:5000 returned with status Failed to connect.
|
||||
2019-07-24 00:55:33 mojojojo-app https://bouncer.awful.club:5000 returned with status Failed to connect.
|
||||
2019-07-24 00:55:38 mojojojo-app https://my.awful.club returned with status Failed to connect.
|
@ -0,0 +1,30 @@
|
||||
2019-07-28 01:53:52 <-- @freenode_lexvegas:matrix.org (None) has left #prometheus
|
||||
2019-07-28 01:54:16 --> lexvegas (@freenode_lexvegas:matrix.org) has joined #prometheus
|
||||
2019-07-28 02:10:22 --> indistylo (@freenode_indistylo:matrix.org) has joined #prometheus
|
||||
2019-07-28 02:13:24 <-- Eagleman (@freenode_Eagleman:matrix.org) has left #prometheus
|
||||
2019-07-28 02:13:40 --> Eagleman (@freenode_Eagleman:matrix.org) has joined #prometheus
|
||||
2019-07-28 02:41:24 <-- @freenode_rda-mac:matrix.org (None) has left #prometheus
|
||||
2019-07-28 02:42:10 <-- @freenode_rda-mac:matrix.org (None) has left #prometheus
|
||||
2019-07-28 02:42:57 <-- @freenode_rda-mac:matrix.org (None) has left #prometheus
|
||||
2019-07-28 02:43:43 <-- @freenode_rda-mac:matrix.org (None) has left #prometheus
|
||||
2019-07-28 02:44:29 <-- @freenode_rda-mac:matrix.org (None) has left #prometheus
|
||||
2019-07-28 02:45:15 <-- @freenode_rda-mac:matrix.org (None) has left #prometheus
|
||||
2019-07-28 02:46:01 <-- @freenode_rda-mac:matrix.org (None) has left #prometheus
|
||||
2019-07-28 02:46:47 <-- @freenode_rda-mac:matrix.org (None) has left #prometheus
|
||||
2019-07-28 02:47:33 <-- @freenode_rda-mac:matrix.org (None) has left #prometheus
|
||||
2019-07-28 02:48:19 <-- @freenode_rda-mac:matrix.org (None) has left #prometheus
|
||||
2019-07-28 02:53:23 <-- @freenode_rda-mac:matrix.org (None) has left #prometheus
|
||||
2019-07-28 03:03:20 --> jacknemrod (@freenode_jacknemrod:matrix.org) has joined #prometheus
|
||||
2019-07-28 06:15:34 <-- absolutejam4 (@freenode_absolutejam4:matrix.org) has left #prometheus
|
||||
2019-07-28 11:19:57 <-- vieira:matrix.org (@vieira:matrix.org) has left #prometheus
|
||||
2019-07-28 11:26:01 <-- j6s (@freenode_j6s:matrix.org) has left #prometheus
|
||||
2019-07-28 06:15:34 ◀▬▬ absolutejam4 (@freenode_absolutejam4:matrix.org) has left #prometheus
|
||||
2019-07-28 07:24:52 ▬▬▶ absolutejam4 (@freenode_absolutejam4:matrix.org) has joined #prometheus
|
||||
2019-07-28 08:46:20 ◀▬▬ @freenode_rda-mac:matrix.org (None) has left #prometheus
|
||||
2019-07-28 09:37:19 ▬▬▶ JamesAU (@freenode_JamesAU:matrix.org) has joined #prometheus
|
||||
2019-07-28 10:31:04 ◀▬▬ @freenode_rda-mac:matrix.org (None) has left #prometheus
|
||||
2019-07-28 11:19:57 ◀▬▬ @vieira:matrix.org (None) has left #prometheus
|
||||
2019-07-28 11:26:01 ◀▬▬ j6s (@freenode_j6s:matrix.org) has left #prometheus
|
||||
2019-07-28 11:26:51 ▬▬▶ j6s (@freenode_j6s:matrix.org) has joined #prometheus
|
||||
2019-07-28 13:42:02 ◀▬▬ @freenode_vieira:matrix.org (None) has left #prometheus
|
||||
2019-07-28 13:58:18 ▬▬▶ jacknemrod (@freenode_jacknemrod:matrix.org) has joined #prometheus
|
@ -0,0 +1,44 @@
|
||||
2019-07-24 13:08:01 <-- @deepc0re:matrix.org (None) has left #Synapse Admins
|
||||
2019-07-25 13:27:27 -- Notice(_neb_rssbot_=40_coffee=3amatrix.org): Release notes from synapse: v1.2.0 ( https://github.com/matrix-org/synapse/releases/tag/v1.2.0 )
|
||||
2019-07-25 13:42:09 <-- @bobfett:flobob.ovh (None) has left #Synapse Admins
|
||||
2019-07-25 14:33:42 <-- @king:encom.eu.org (None) has left #Synapse Admins
|
||||
2019-07-25 15:52:27 -- Notice(_neb_rssbot_=40_coffee=3amatrix.org): Release notes from synapse: shhs-v1.2 ( https://github.com/matrix-org/synapse/releases/tag/shhs-v1.2 )
|
||||
2019-07-25 16:22:28 -- Notice(_neb_rssbot_=40_coffee=3amatrix.org): Release notes from synapse: shhs-v1.2.0.1 ( https://github.com/matrix-org/synapse/releases/tag/shhs-v1.2.0.1 )
|
||||
2019-07-25 16:27:27 -- Notice(_neb_rssbot_=40_coffee=3amatrix.org): Release notes from synapse: shhs-v1.2.0.2 ( https://github.com/matrix-org/synapse/releases/tag/shhs-v1.2.0.2 )
|
||||
2019-07-25 16:31:56 beepdog What is shhs?
|
||||
2019-07-25 16:33:09 beepdog And do we already have two patches for 1.2.0?
|
||||
2019-07-26 05:22:24 <-- vladimir (@vladimir:ghostwheel.ru) has left #Synapse Admins
|
||||
2019-07-26 05:34:05 --> vladimir (@vladimir:ghostwheel.ru) has joined #Synapse Admins
|
||||
2019-07-26 09:44:47 --> aperezdc (@aperezdc:matrix.org) has joined #Synapse Admins
|
||||
2019-07-26 11:02:29 -- Notice(_neb_rssbot_=40_coffee=3amatrix.org): Release notes from synapse: shhs-v1.2.1 ( https://github.com/matrix-org/synapse/releases/tag/shhs-v1.2.1 )
|
||||
2019-07-26 11:02:35 -- Notice(_neb_rssbot_=40_coffee=3amatrix.org): Release notes from synapse: Synapse 1.2.1 (2019-07-26) ( https://github.com/matrix-org/synapse/releases/tag/v1.2.1 )
|
||||
2019-07-26 11:37:29 -- Notice(_neb_rssbot_=40_coffee=3amatrix.org): Release notes from synapse: shhs-v1.2.1.1 ( https://github.com/matrix-org/synapse/releases/tag/shhs-v1.2.1.1 )
|
||||
2019-07-26 12:52:29 -- Notice(_neb_rssbot_=40_coffee=3amatrix.org): Release notes from synapse: shhs-v1.2.1.2 ( https://github.com/matrix-org/synapse/releases/tag/shhs-v1.2.1.2 )
|
||||
2019-07-26 16:57:26 --> dylanger (@dylanger:matrix.org) has joined #Synapse Admins
|
||||
2019-07-26 17:38:47 <-- @markus:gerstner.it (None) has left #Synapse Admins
|
||||
2019-07-26 18:24:35 --> sectorhacker (@sectorhacker:matrix.org) has joined #Synapse Admins
|
||||
2019-07-26 20:59:17 <-- @eibhear:matrix.org (None) has left #Synapse Admins
|
||||
2019-07-27 07:40:14 --> jayhsq (@jayhsq:matrix.org) has joined #Synapse Admins
|
||||
2019-07-28 03:12:36 <-- @crunklord420:matrix.kiwifarms.net (None) has left #Synapse Admins
|
||||
2019-07-24 13:08:01 ◀▬▬ @deepc0re:matrix.org (None) has left #Synapse Admins
|
||||
2019-07-25 13:27:27 -- Notice(_neb_rssbot_=40_coffee=3amatrix.org): Release notes from synapse: v1.2.0 ( https://github.com/matrix-org/synapse/releases/tag/v1.2.0 )
|
||||
2019-07-25 13:42:09 ◀▬▬ @bobfett:flobob.ovh (None) has left #Synapse Admins
|
||||
2019-07-25 14:33:42 ◀▬▬ @king:encom.eu.org (None) has left #Synapse Admins
|
||||
2019-07-25 15:52:27 -- Notice(_neb_rssbot_=40_coffee=3amatrix.org): Release notes from synapse: shhs-v1.2 ( https://github.com/matrix-org/synapse/releases/tag/shhs-v1.2 )
|
||||
2019-07-25 16:22:28 -- Notice(_neb_rssbot_=40_coffee=3amatrix.org): Release notes from synapse: shhs-v1.2.0.1 ( https://github.com/matrix-org/synapse/releases/tag/shhs-v1.2.0.1 )
|
||||
2019-07-25 16:27:27 -- Notice(_neb_rssbot_=40_coffee=3amatrix.org): Release notes from synapse: shhs-v1.2.0.2 ( https://github.com/matrix-org/synapse/releases/tag/shhs-v1.2.0.2 )
|
||||
2019-07-25 16:31:56 beepdog What is shhs?
|
||||
2019-07-25 16:33:09 beepdog And do we already have two patches for 1.2.0?
|
||||
2019-07-26 05:22:24 ◀▬▬ vladimir (@vladimir:ghostwheel.ru) has left #Synapse Admins
|
||||
2019-07-26 05:34:05 ▬▬▶ vladimir (@vladimir:ghostwheel.ru) has joined #Synapse Admins
|
||||
2019-07-26 09:44:47 ▬▬▶ aperezdc (@aperezdc:matrix.org) has joined #Synapse Admins
|
||||
2019-07-26 11:02:29 -- Notice(_neb_rssbot_=40_coffee=3amatrix.org): Release notes from synapse: shhs-v1.2.1 ( https://github.com/matrix-org/synapse/releases/tag/shhs-v1.2.1 )
|
||||
2019-07-26 11:02:35 -- Notice(_neb_rssbot_=40_coffee=3amatrix.org): Release notes from synapse: Synapse 1.2.1 (2019-07-26) ( https://github.com/matrix-org/synapse/releases/tag/v1.2.1 )
|
||||
2019-07-26 11:37:29 -- Notice(_neb_rssbot_=40_coffee=3amatrix.org): Release notes from synapse: shhs-v1.2.1.1 ( https://github.com/matrix-org/synapse/releases/tag/shhs-v1.2.1.1 )
|
||||
2019-07-26 12:52:29 -- Notice(_neb_rssbot_=40_coffee=3amatrix.org): Release notes from synapse: shhs-v1.2.1.2 ( https://github.com/matrix-org/synapse/releases/tag/shhs-v1.2.1.2 )
|
||||
2019-07-26 16:57:26 ▬▬▶ dylanger (@dylanger:matrix.org) has joined #Synapse Admins
|
||||
2019-07-26 17:38:47 ◀▬▬ @markus:gerstner.it (None) has left #Synapse Admins
|
||||
2019-07-26 18:24:35 ▬▬▶ sectorhacker (@sectorhacker:matrix.org) has joined #Synapse Admins
|
||||
2019-07-26 20:59:17 ◀▬▬ @eibhear:matrix.org (None) has left #Synapse Admins
|
||||
2019-07-27 07:40:14 ▬▬▶ jayhsq (@jayhsq:matrix.org) has joined #Synapse Admins
|
||||
2019-07-28 03:12:36 ◀▬▬ @crunklord420:matrix.kiwifarms.net (None) has left #Synapse Admins
|
@ -0,0 +1,52 @@
|
||||
2019-02-16 00:08:16 --> jowj (@jowj:awful.club) has joined awful-club.!mCuHuBWRyPRVaRVdfy:awful.club
|
||||
2019-02-16 00:08:16 --> @oftc-irc:matrix.org (None) has been invited to @oftc-irc:matrix.org
|
||||
2019-02-16 00:08:23 --> oftc-irc (@oftc-irc:matrix.org) has joined @oftc-irc:matrix.org
|
||||
2019-02-16 00:08:33 &jowj !nick blindidiotgod
|
||||
2019-02-16 00:08:34 -- Notice(&oftc-irc): Nick changed from 'jowj[m]' to 'blindidiotgod'.
|
||||
2019-02-16 00:10:38 &jowj !join #crimehole
|
||||
2019-02-16 00:10:39 -- Notice(&oftc-irc): Received an error on irc.oftc.net: err_inviteonlychan
|
||||
2019-02-16 00:10:39 ["blindidiotgod","#crimehole","Cannot join channel (+i)"]
|
||||
2019-02-16 00:10:39 -- Notice(&oftc-irc): Could not join #crimehole on 'irc.oftc.net': err_inviteonlychan
|
||||
2019-02-16 14:52:21 &jowj !quit
|
||||
2019-02-16 14:52:24 -- Notice(&oftc-irc): Your connection to the IRC network 'irc.oftc.net' has been lost.
|
||||
2019-03-10 01:41:07 -- Notice(&oftc-irc): Connecting to the IRC network 'irc.oftc.net' as blindidiotgod...
|
||||
2019-03-10 01:41:11 -- Notice(&oftc-irc): You've been connected to the IRC network 'irc.oftc.net' as blindidiotgod. User modes +G have been set.
|
||||
2019-03-31 19:33:02 &jowj !help
|
||||
2019-03-31 19:33:06 -- Notice(&oftc-irc): This is an IRC admin room for controlling your IRC connection and sending commands directly to IRC. The following commands are available:
|
||||
2019-03-31 19:33:06 !join [irc.example.net] #channel [key] : Join a channel (with optional channel key)
|
||||
2019-03-31 19:33:06 !nick [irc.example.net] DesiredNick : Change your nick. If no arguments are supplied, your current nick is shown.
|
||||
2019-03-31 19:33:06 !whois [irc.example.net] NickName|@alice:matrix.org : Do a /whois lookup. If a Matrix User ID is supplied, return information about that user's IRC connection.
|
||||
2019-03-31 19:33:06 !storepass [irc.example.net] passw0rd : Store a NickServ password (server password)
|
||||
2019-03-31 19:33:06 !removepass [irc.example.net] : Remove a previously stored NickServ password
|
||||
2019-03-31 19:33:06 !quit : Leave all bridged channels, on all networks, and remove your connections to all networks.
|
||||
2019-03-31 19:33:06 !cmd [irc.example.net] COMMAND [arg0 [arg1 [...]]] : Issue a raw IRC command. These will not produce a reply.(Note that the command must be all uppercase.)
|
||||
2019-03-31 19:33:27 &jowj !quit
|
||||
2019-03-31 19:33:28 -- Notice(&oftc-irc): Your connection to the IRC network 'irc.oftc.net' has been lost.
|
||||
2019-04-27 21:46:22 -- Notice(&oftc-irc): Connecting to the IRC network 'irc.oftc.net' as blindidiotgod...
|
||||
2019-04-27 21:46:35 -- Notice(&oftc-irc): You've been connected to the IRC network 'irc.oftc.net' as blindidiotgod. User modes +G have been set.
|
||||
2019-02-16 00:08:16 ▬▬▶ jowj (@jowj:awful.club) has joined awful-club.!mCuHuBWRyPRVaRVdfy:awful.club
|
||||
2019-02-16 00:08:16 ▬▬▶ @oftc-irc:matrix.org (None) has been invited to @oftc-irc:matrix.org
|
||||
2019-02-16 00:08:23 ▬▬▶ oftc-irc (@oftc-irc:matrix.org) has joined @oftc-irc:matrix.org
|
||||
2019-02-16 00:08:33 &jowj !nick blindidiotgod
|
||||
2019-02-16 00:08:34 -- Notice(&oftc-irc): Nick changed from 'jowj[m]' to 'blindidiotgod'.
|
||||
2019-02-16 00:10:38 &jowj !join #crimehole
|
||||
2019-02-16 00:10:39 -- Notice(&oftc-irc): Received an error on irc.oftc.net: err_inviteonlychan
|
||||
2019-02-16 00:10:39 ["blindidiotgod","#crimehole","Cannot join channel (+i)"]
|
||||
2019-02-16 00:10:39 -- Notice(&oftc-irc): Could not join #crimehole on 'irc.oftc.net': err_inviteonlychan
|
||||
2019-02-16 14:52:21 &jowj !quit
|
||||
2019-02-16 14:52:24 -- Notice(&oftc-irc): Your connection to the IRC network 'irc.oftc.net' has been lost.
|
||||
2019-03-10 01:41:07 -- Notice(&oftc-irc): Connecting to the IRC network 'irc.oftc.net' as blindidiotgod...
|
||||
2019-03-10 01:41:11 -- Notice(&oftc-irc): You've been connected to the IRC network 'irc.oftc.net' as blindidiotgod. User modes +G have been set.
|
||||
2019-03-31 19:33:02 &jowj !help
|
||||
2019-03-31 19:33:06 -- Notice(&oftc-irc): This is an IRC admin room for controlling your IRC connection and sending commands directly to IRC. The following commands are available:
|
||||
2019-03-31 19:33:06 !join [irc.example.net] #channel [key] : Join a channel (with optional channel key)
|
||||
2019-03-31 19:33:06 !nick [irc.example.net] DesiredNick : Change your nick. If no arguments are supplied, your current nick is shown.
|
||||
2019-03-31 19:33:06 !whois [irc.example.net] NickName|@alice:matrix.org : Do a /whois lookup. If a Matrix User ID is supplied, return information about that user's IRC connection.
|
||||
2019-03-31 19:33:06 !storepass [irc.example.net] passw0rd : Store a NickServ password (server password)
|
||||
2019-03-31 19:33:06 !removepass [irc.example.net] : Remove a previously stored NickServ password
|
||||
2019-03-31 19:33:06 !quit : Leave all bridged channels, on all networks, and remove your connections to all networks.
|
||||
2019-03-31 19:33:06 !cmd [irc.example.net] COMMAND [arg0 [arg1 [...]]] : Issue a raw IRC command. These will not produce a reply.(Note that the command must be all uppercase.)
|
||||
2019-03-31 19:33:27 &jowj !quit
|
||||
2019-03-31 19:33:28 -- Notice(&oftc-irc): Your connection to the IRC network 'irc.oftc.net' has been lost.
|
||||
2019-04-27 21:46:22 -- Notice(&oftc-irc): Connecting to the IRC network 'irc.oftc.net' as blindidiotgod...
|
||||
2019-04-27 21:46:35 -- Notice(&oftc-irc): You've been connected to the IRC network 'irc.oftc.net' as blindidiotgod. User modes +G have been set.
|
@ -0,0 +1,21 @@
|
||||
2019-07-13 15:50:17 <-- @dayonemobil:eritonito.com (None) has left #General
|
||||
2019-07-14 17:42:02 --> robertoszek (@robertoszek:matrix.org) has joined #General
|
||||
2019-07-19 00:07:09 <-- @tuxitagnu:matrix.org (None) has left #General
|
||||
2019-07-19 00:23:50 <-- @jan200101:kde.org (None) has left #General
|
||||
2019-07-20 10:21:31 <-- @chronosx88:matrix.org (None) has left #General
|
||||
2019-07-20 21:13:54 <-- @riffautae:matrix.org (None) has left #General
|
||||
2019-07-21 05:08:39 <-- @lintuxer:matrix.org (None) has left #General
|
||||
2019-07-21 09:59:15 <-- @flounders:matrix.org (None) has left #General
|
||||
2019-07-21 20:52:25 <-- @mhx:matrix.org (None) has left #General
|
||||
2019-07-24 12:37:00 <-- @ticodk:matrix.org (None) has left #General
|
||||
2019-07-27 00:52:28 <-- @pyroclasticmayhem:matrix.org (None) has left #General
|
||||
2019-07-19 00:07:09 ◀▬▬ @tuxitagnu:matrix.org (None) has left #General
|
||||
2019-07-19 00:23:50 ◀▬▬ @jan200101:kde.org (None) has left #General
|
||||
2019-07-20 10:21:31 ◀▬▬ @chronosx88:matrix.org (None) has left #General
|
||||
2019-07-20 21:13:54 ◀▬▬ @riffautae:matrix.org (None) has left #General
|
||||
2019-07-21 05:08:39 ◀▬▬ @lintuxer:matrix.org (None) has left #General
|
||||
2019-07-21 09:59:15 ◀▬▬ @flounders:matrix.org (None) has left #General
|
||||
2019-07-21 20:52:25 ◀▬▬ @mhx:matrix.org (None) has left #General
|
||||
2019-07-24 12:37:00 ◀▬▬ @ticodk:matrix.org (None) has left #General
|
||||
2019-07-27 00:52:28 ◀▬▬ @pyroclasticmayhem:matrix.org (None) has left #General
|
||||
2019-07-28 11:06:44 ◀▬▬ @kevinsarpei:matrix.org (None) has left #General
|
@ -0,0 +1,82 @@
|
||||
2019-07-25 18:34:50 cadair I assume that must be a deployment issue, I haven't seen that at all on the instance I run
|
||||
2019-07-25 18:35:29 vin Yeah I was wondering if it would be better to set up my own appservice but the hosted one is very convenient
|
||||
2019-07-25 18:36:17 cadair I run my own because I automate bridging of new rooms
|
||||
2019-07-25 18:36:21 cadair and stuff
|
||||
2019-07-25 18:44:53 --> fredcy (@fredcy:tzchat.org) has joined #Matrix Bridging
|
||||
2019-07-26 20:01:15 --> alexgleason (@alexgleason:matrix.org) has joined #Matrix Bridging
|
||||
2019-07-26 20:02:37 alexgleason I'm having some trouble setting up the Slack bridge on riot.im. I clicked "Event bridging", the popup came up, I clicked "Accept" and closed the tab, then the widget modal just reset and didn't list my rooms.
|
||||
2019-07-26 20:04:41 alexgleason It says:
|
||||
2019-07-26 20:04:41 > Integration Successful!
|
||||
2019-07-26 20:04:41 > Your Matrix-Slack account is now correctly authorized.
|
||||
2019-07-26 20:04:41 But then I close the tab and the modal in the Riot window resets
|
||||
2019-07-27 01:01:32 kingoftheconnors I had that problem too. It was a huge bother and I had to take the long way around (setting up the actual appservice) because I couldn't find a solution. Does anyone here know why it doesn't work?
|
||||
2019-07-27 08:55:30 --> venivici (@venivici:matrix.org) has joined #Matrix Bridging
|
||||
2019-07-27 11:27:03 Valodim Half-Shot: still consistently getting double messages in #hagrid :(
|
||||
2019-07-27 17:05:34 swedneck:privacytools.io what's up with the gitter bridge seemingly randomly switching to being a bridgebot instead of using puppets on matrix?
|
||||
2019-07-27 19:26:07 --> max_sievers (@max_sievers:matrix.org) has joined #Matrix Bridging
|
||||
2019-07-27 19:46:33 @Half-Shot > In reply to @swedneck:privacytools.io
|
||||
2019-07-27 19:46:33 > what's up with the gitter bridge seemingly randomly
|
||||
2019-07-27 19:46:33 > switching to being a bridgebot instead of using puppets on
|
||||
2019-07-27 19:46:33 > matrix?
|
||||
2019-07-27 19:46:33 That's a thing?
|
||||
2019-07-27 19:46:50 @Half-Shot > In reply to @Valodim:stratum0.org
|
||||
2019-07-27 19:46:50 > Half-Shot: still consistently getting double messages in
|
||||
2019-07-27 19:46:50 > #hagrid :(
|
||||
2019-07-27 19:46:50 Yeah, I saw :(. Regrettably I think we need to restart the bridge to fix it
|
||||
2019-07-27 19:47:01 swedneck:privacytools.io see #yacy:chat.weho.st
|
||||
2019-07-27 19:47:35 swedneck:privacytools.io https://siderus.io/ipfs/Qmde1JNUR7WTPBNEjWDkijjgKStFWeLTrRoRcLpe9K1V2U/2019-07-27_21-47-16.png
|
||||
2019-07-27 19:47:35 puppets followed by bridgebot
|
||||
2019-07-27 19:57:52 tulir swedneck:privacytools.io: looks like normal double bridging
|
||||
2019-07-27 19:58:53 swedneck:privacytools.io how so?
|
||||
2019-07-27 19:59:09 tulir https://gitter.im/yacy/yacy_search_server
|
||||
2019-07-27 20:00:15 swedneck:privacytools.io well that is very strange behaviour for the gitter bridge
|
||||
2019-07-27 20:00:50 swedneck:privacytools.io it seems to recognize that there's double bridging going on, but not really do anything about it
|
||||
2019-07-27 20:06:10 tulir what should it do about it?
|
||||
2019-07-27 20:07:20 swedneck either refuse to bridge and scream at you, do bridge but scream at you periodically or at least once when initiating the bridge, or make matrix ghosts for the matrix users in the other room
|
||||
2019-07-27 20:09:55 tulir well the second option isn't very nice and the third option would be hacky
|
||||
2019-07-27 20:10:29 tulir the first option is probably the correct one, but the matrix.org bridges are silly
|
||||
2019-07-28 01:12:56 kingoftheconnors I've got another problem with my Slack Bridge (Sorry! At this point I'm just posting question around the clock). It's about sending images from Slack to Matrix.
|
||||
2019-07-28 01:13:13 kingoftheconnors It doesn't work. It works from Matrix to Slack, but not the other way.
|
||||
2019-07-28 01:14:24 kingoftheconnors The logs say 'Internal Service Error' with httpStatus: 500
|
||||
2019-07-25 18:34:50 cadair I assume that must be a deployment issue, I haven't seen that at all on the instance I run
|
||||
2019-07-25 18:35:29 vin Yeah I was wondering if it would be better to set up my own appservice but the hosted one is very convenient
|
||||
2019-07-25 18:36:17 cadair I run my own because I automate bridging of new rooms
|
||||
2019-07-25 18:36:21 cadair and stuff
|
||||
2019-07-25 18:44:53 ▬▬▶ fredcy (@fredcy:tzchat.org) has joined #Matrix Bridging
|
||||
2019-07-26 20:01:15 ▬▬▶ alexgleason (@alexgleason:matrix.org) has joined #Matrix Bridging
|
||||
2019-07-26 20:02:37 alexgleason I'm having some trouble setting up the Slack bridge on riot.im. I clicked "Event bridging", the popup came up, I clicked "Accept" and closed the tab, then the widget modal just reset and didn't list my rooms.
|
||||
2019-07-26 20:04:41 alexgleason It says:
|
||||
2019-07-26 20:04:41 > Integration Successful!
|
||||
2019-07-26 20:04:41 > Your Matrix-Slack account is now correctly authorized.
|
||||
2019-07-26 20:04:41 But then I close the tab and the modal in the Riot window resets
|
||||
2019-07-27 01:01:32 kingoftheconnors I had that problem too. It was a huge bother and I had to take the long way around (setting up the actual appservice) because I couldn't find a solution. Does anyone here know why it doesn't work?
|
||||
2019-07-27 08:55:30 ▬▬▶ venivici (@venivici:matrix.org) has joined #Matrix Bridging
|
||||
2019-07-27 11:27:03 Valodim Half-Shot: still consistently getting double messages in #hagrid :(
|
||||
2019-07-27 17:05:34 swedneck:privacytools.io what's up with the gitter bridge seemingly randomly switching to being a bridgebot instead of using puppets on matrix?
|
||||
2019-07-27 19:26:07 ▬▬▶ max_sievers (@max_sievers:matrix.org) has joined #Matrix Bridging
|
||||
2019-07-27 19:46:33 @Half-Shot > In reply to @swedneck:privacytools.io
|
||||
2019-07-27 19:46:33 > what's up with the gitter bridge seemingly randomly
|
||||
2019-07-27 19:46:33 > switching to being a bridgebot instead of using puppets on
|
||||
2019-07-27 19:46:33 > matrix?
|
||||
2019-07-27 19:46:33 That's a thing?
|
||||
2019-07-27 19:46:50 @Half-Shot > In reply to @Valodim:stratum0.org
|
||||
2019-07-27 19:46:50 > Half-Shot: still consistently getting double messages in
|
||||
2019-07-27 19:46:50 > #hagrid :(
|
||||
2019-07-27 19:46:50 Yeah, I saw :(. Regrettably I think we need to restart the bridge to fix it
|
||||
2019-07-27 19:47:01 swedneck:privacytools.io see #yacy:chat.weho.st
|
||||
2019-07-27 19:47:35 swedneck:privacytools.io https://siderus.io/ipfs/Qmde1JNUR7WTPBNEjWDkijjgKStFWeLTrRoRcLpe9K1V2U/2019-07-27_21-47-16.png
|
||||
2019-07-27 19:47:35 puppets followed by bridgebot
|
||||
2019-07-27 19:57:52 tulir swedneck:privacytools.io: looks like normal double bridging
|
||||
2019-07-27 19:58:53 swedneck:privacytools.io how so?
|
||||
2019-07-27 19:59:09 tulir https://gitter.im/yacy/yacy_search_server
|
||||
2019-07-27 20:00:15 swedneck:privacytools.io well that is very strange behaviour for the gitter bridge
|
||||
2019-07-27 20:00:50 swedneck:privacytools.io it seems to recognize that there's double bridging going on, but not really do anything about it
|
||||
2019-07-27 20:06:10 tulir what should it do about it?
|
||||
2019-07-27 20:07:20 swedneck either refuse to bridge and scream at you, do bridge but scream at you periodically or at least once when initiating the bridge, or make matrix ghosts for the matrix users in the other room
|
||||
2019-07-27 20:09:55 tulir well the second option isn't very nice and the third option would be hacky
|
||||
2019-07-27 20:10:29 tulir the first option is probably the correct one, but the matrix.org bridges are silly
|
||||
2019-07-28 01:12:56 kingoftheconnors I've got another problem with my Slack Bridge (Sorry! At this point I'm just posting question around the clock). It's about sending images from Slack to Matrix.
|
||||
2019-07-28 01:13:13 kingoftheconnors It doesn't work. It works from Matrix to Slack, but not the other way.
|
||||
2019-07-28 01:14:24 kingoftheconnors The logs say 'Internal Service Error' with httpStatus: 500
|
||||
2019-07-28 14:19:30 ◀▬▬ @max_sievers:matrix.org (None) has left #Matrix Bridging
|
||||
2019-07-28 14:39:49 cadair kingoftheconnors: could either be size limitations or not having the correct oauth scopes to make the slack image public
|
@ -0,0 +1,204 @@
|
||||
2019-07-25 23:17:19 -- Notice(travis-ci): Change view : https://github.com/ruma/ruma-api-macros/compare/abc081963bd0...6fd590a4eb5c
|
||||
2019-07-25 23:17:19 -- Notice(travis-ci): Build details : https://travis-ci.org/ruma/ruma-api-macros/builds/563786667
|
||||
2019-07-25 23:18:02 <-- travis-ci (@freenode_travis-ci:matrix.org) has left #Ruma
|
||||
2019-07-25 23:18:02 --> travis-ci (@freenode_travis-ci:matrix.org) has joined #Ruma
|
||||
2019-07-25 23:18:03 -- Notice(travis-ci): Change view : https://github.com/ruma/ruma-client-api/compare/41ca8cbe7fd2...1b69ef5aac5b
|
||||
2019-07-25 23:18:03 -- Notice(travis-ci): Build details : https://travis-ci.org/ruma/ruma-client-api/builds/563786873
|
||||
2019-07-25 23:28:07 <-- travis-ci (@freenode_travis-ci:matrix.org) has left #Ruma
|
||||
2019-07-25 23:28:07 --> travis-ci (@freenode_travis-ci:matrix.org) has joined #Ruma
|
||||
2019-07-25 23:28:08 -- Notice(travis-ci): Change view : https://github.com/ruma/ruma-client-api/compare/e8ba1e2b4cd3...3df41b778553
|
||||
2019-07-25 23:28:08 -- Notice(travis-ci): Build details : https://travis-ci.org/ruma/ruma-client-api/builds/563788881
|
||||
2019-07-25 23:44:20 <-- travis-ci (@freenode_travis-ci:matrix.org) has left #Ruma
|
||||
2019-07-25 23:44:21 --> travis-ci (@freenode_travis-ci:matrix.org) has joined #Ruma
|
||||
2019-07-25 23:44:21 -- Notice(travis-ci): Change view : https://github.com/ruma/ruma-client/compare/da12802f6ac8...bdb945d3f7b7
|
||||
2019-07-25 23:44:21 -- Notice(travis-ci): Build details : https://travis-ci.org/ruma/ruma-client/builds/563794104
|
||||
2019-07-26 16:42:03 &jimmycuadra > In reply to @chronosx88:netwhood.online
|
||||
2019-07-26 16:42:03 > Hello everyone. Where I can read about how works /sync
|
||||
2019-07-26 16:42:03 > method more detaily (in Matrix specs its described very
|
||||
2019-07-26 16:42:03 > poor)?
|
||||
2019-07-26 16:42:03 What do you want to know, specifically? #matrix-dev:matrix.org might be the best place to ask questions about the spec, or to provide feedback on the way the spec is written if you find it difficult to understand.
|
||||
2019-07-26 16:54:13 <-- travis-ci (@freenode_travis-ci:matrix.org) has left #Ruma
|
||||
2019-07-26 16:54:21 --> travis-ci (@freenode_travis-ci:matrix.org) has joined #Ruma
|
||||
2019-07-26 16:54:21 -- Notice(travis-ci): Change view : https://github.com/ruma/ruma-api-macros/compare/fd8367be4c96...02bcb5f03843
|
||||
2019-07-26 16:54:23 -- Notice(travis-ci): Build details : https://travis-ci.org/ruma/ruma-api-macros/builds/564101384
|
||||
2019-07-27 12:25:25 @jplatte So.. I had a look at implementing what I think Ralith suggested to skip syncing previous events: filtering with limit 0. We... might want to make this a bit easier :D
|
||||
2019-07-27 12:25:25
|
||||
2019-07-27 12:25:25 SyncFilter::FilterDefinition(FilterDefinition {
|
||||
2019-07-27 12:25:25 event_fields: Vec::new(),
|
||||
2019-07-27 12:25:25 event_format: None,
|
||||
2019-07-27 12:25:25 account_data: Some(Filter {
|
||||
2019-07-27 12:25:25 limit: Some(UInt::from(0u32)),
|
||||
2019-07-27 12:25:25 //..Filter::default()
|
||||
2019-07-27 12:25:25 senders: Vec::new(),
|
||||
2019-07-27 12:25:25 not_senders: Vec::new(),
|
||||
2019-07-27 12:25:25 types: Vec::new(),
|
||||
2019-07-27 12:25:25 not_types: Vec::new(),
|
||||
2019-07-27 12:25:25 }),
|
||||
2019-07-27 12:25:25 room: Some(RoomFilter {
|
||||
2019-07-27 12:25:25 account_data: Some(RoomEventFilter {
|
||||
2019-07-27 12:25:25 limit: Some(UInt::from(0u32)),
|
||||
2019-07-27 12:25:25 //..RoomEventFilter::default()
|
||||
2019-07-27 12:25:25 rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 not_rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 senders: Vec::new(),
|
||||
2019-07-27 12:25:25 not_senders: Vec::new(),
|
||||
2019-07-27 12:25:25 types: Vec::new(),
|
||||
2019-07-27 12:25:25 not_types: Vec::new(),
|
||||
2019-07-27 12:25:25 }),
|
||||
2019-07-27 12:25:25 timeline: Some(RoomEventFilter {
|
||||
2019-07-27 12:25:25 limit: Some(UInt::from(0u32)),
|
||||
2019-07-27 12:25:25 //..RoomEventFilter::default()
|
||||
2019-07-27 12:25:25 rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 not_rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 senders: Vec::new(),
|
||||
2019-07-27 12:25:25 not_senders: Vec::new(),
|
||||
2019-07-27 12:25:25 types: Vec::new(),
|
||||
2019-07-27 12:25:25 not_types: Vec::new(),
|
||||
2019-07-27 12:25:25 }),
|
||||
2019-07-27 12:25:25 ephemeral: Some(RoomEventFilter {
|
||||
2019-07-27 12:25:25 limit: Some(UInt::from(0u32)),
|
||||
2019-07-27 12:25:25 //..RoomEventFilter::default()
|
||||
2019-07-27 12:25:25 rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 not_rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 senders: Vec::new(),
|
||||
2019-07-27 12:25:25 not_senders: Vec::new(),
|
||||
2019-07-27 12:25:25 types: Vec::new(),
|
||||
2019-07-27 12:25:25 not_types: Vec::new(),
|
||||
2019-07-27 12:25:25 }),
|
||||
2019-07-27 12:25:25 state: Some(RoomEventFilter {
|
||||
2019-07-27 12:25:25 limit: Some(UInt::from(0u32)),
|
||||
2019-07-27 12:25:25 //..RoomEventFilter::default()
|
||||
2019-07-27 12:25:25 rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 not_rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 senders: Vec::new(),
|
||||
2019-07-27 12:25:25 not_senders: Vec::new(),
|
||||
2019-07-27 12:25:25 types: Vec::new(),
|
||||
2019-07-27 12:25:25 not_types: Vec::new(),
|
||||
2019-07-27 12:25:25 }),
|
||||
2019-07-27 12:25:25 //..RoomFilter::default()
|
||||
2019-07-27 12:25:25 include_leave: None,
|
||||
2019-07-27 12:25:25 rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 not_rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 }),
|
||||
2019-07-27 12:25:25 presence: Some(Filter {
|
||||
2019-07-27 12:25:25 limit: Some(UInt::from(0u32)),
|
||||
2019-07-27 12:25:25 //..Filter::default()
|
||||
2019-07-27 12:25:25 senders: Vec::new(),
|
||||
2019-07-27 12:25:25 not_senders: Vec::new(),
|
||||
2019-07-27 12:25:25 types: Vec::new(),
|
||||
2019-07-27 12:25:25 not_types: Vec::new(),
|
||||
2019-07-27 12:25:25 }),
|
||||
2019-07-27 12:25:25 })
|
||||
2019-07-27 12:25:25
|
||||
2019-07-27 12:25:25
|
||||
2019-07-27 12:25:25
|
||||
2019-07-27 14:43:25 <-- Bonstra (@freenode_Bonstra:matrix.org) has left #Ruma
|
||||
2019-07-27 14:57:22 ralith no Default impls yet?
|
||||
2019-07-27 14:59:28 @jplatte No
|
||||
2019-07-27 15:00:21 @jplatte I'll create a PR soon-ish though
|
||||
2019-07-27 15:02:18 --> nardis (@nardis:matrix.org) has joined #Ruma
|
||||
2019-07-27 15:05:07 --> Bonstra (@freenode_Bonstra:matrix.org) has joined #Ruma
|
||||
2019-07-27 19:26:16 &jimmycuadra just finished recording my interview for the rustacean station podcast about matrix/ruma. it went really well :}
|
||||
2019-07-27 23:31:03 --> bnjbvr (@bnjbvr:delire.party) has joined #Ruma
|
||||
2019-07-28 09:21:48 paulvt Oh great! Looking forward to it... but got quite the podcast queue growing 😅️
|
||||
2019-07-25 23:18:02 ◀▬▬ @freenode_travis-ci:matrix.org (None) has left #Ruma
|
||||
2019-07-25 23:18:02 ▬▬▶ travis-ci (@freenode_travis-ci:matrix.org) has joined #Ruma
|
||||
2019-07-25 23:18:03 -- Notice(travis-ci): Change view : https://github.com/ruma/ruma-client-api/compare/41ca8cbe7fd2...1b69ef5aac5b
|
||||
2019-07-25 23:18:03 -- Notice(travis-ci): Build details : https://travis-ci.org/ruma/ruma-client-api/builds/563786873
|
||||
2019-07-25 23:28:07 ◀▬▬ travis-ci (@freenode_travis-ci:matrix.org) has left #Ruma
|
||||
2019-07-25 23:28:07 ▬▬▶ travis-ci (@freenode_travis-ci:matrix.org) has joined #Ruma
|
||||
2019-07-25 23:28:08 -- Notice(travis-ci): Change view : https://github.com/ruma/ruma-client-api/compare/e8ba1e2b4cd3...3df41b778553
|
||||
2019-07-25 23:28:08 -- Notice(travis-ci): Build details : https://travis-ci.org/ruma/ruma-client-api/builds/563788881
|
||||
2019-07-25 23:44:20 ◀▬▬ travis-ci (@freenode_travis-ci:matrix.org) has left #Ruma
|
||||
2019-07-25 23:44:21 ▬▬▶ travis-ci (@freenode_travis-ci:matrix.org) has joined #Ruma
|
||||
2019-07-25 23:44:21 -- Notice(travis-ci): Change view : https://github.com/ruma/ruma-client/compare/da12802f6ac8...bdb945d3f7b7
|
||||
2019-07-25 23:44:21 -- Notice(travis-ci): Build details : https://travis-ci.org/ruma/ruma-client/builds/563794104
|
||||
2019-07-26 16:42:03 &jimmycuadra > In reply to @chronosx88:netwhood.online
|
||||
2019-07-26 16:42:03 > Hello everyone. Where I can read about how works /sync
|
||||
2019-07-26 16:42:03 > method more detaily (in Matrix specs its described very
|
||||
2019-07-26 16:42:03 > poor)?
|
||||
2019-07-26 16:42:03 What do you want to know, specifically? #matrix-dev:matrix.org might be the best place to ask questions about the spec, or to provide feedback on the way the spec is written if you find it difficult to understand.
|
||||
2019-07-26 16:54:13 ◀▬▬ travis-ci (@freenode_travis-ci:matrix.org) has left #Ruma
|
||||
2019-07-26 16:54:21 ▬▬▶ travis-ci (@freenode_travis-ci:matrix.org) has joined #Ruma
|
||||
2019-07-26 16:54:21 -- Notice(travis-ci): Change view : https://github.com/ruma/ruma-api-macros/compare/fd8367be4c96...02bcb5f03843
|
||||
2019-07-26 16:54:23 -- Notice(travis-ci): Build details : https://travis-ci.org/ruma/ruma-api-macros/builds/564101384
|
||||
2019-07-27 12:25:25 @jplatte So.. I had a look at implementing what I think Ralith suggested to skip syncing previous events: filtering with limit 0. We... might want to make this a bit easier :D
|
||||
2019-07-27 12:25:25
|
||||
2019-07-27 12:25:25 SyncFilter::FilterDefinition(FilterDefinition {
|
||||
2019-07-27 12:25:25 event_fields: Vec::new(),
|
||||
2019-07-27 12:25:25 event_format: None,
|
||||
2019-07-27 12:25:25 account_data: Some(Filter {
|
||||
2019-07-27 12:25:25 limit: Some(UInt::from(0u32)),
|
||||
2019-07-27 12:25:25 //..Filter::default()
|
||||
2019-07-27 12:25:25 senders: Vec::new(),
|
||||
2019-07-27 12:25:25 not_senders: Vec::new(),
|
||||
2019-07-27 12:25:25 types: Vec::new(),
|
||||
2019-07-27 12:25:25 not_types: Vec::new(),
|
||||
2019-07-27 12:25:25 }),
|
||||
2019-07-27 12:25:25 room: Some(RoomFilter {
|
||||
2019-07-27 12:25:25 account_data: Some(RoomEventFilter {
|
||||
2019-07-27 12:25:25 limit: Some(UInt::from(0u32)),
|
||||
2019-07-27 12:25:25 //..RoomEventFilter::default()
|
||||
2019-07-27 12:25:25 rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 not_rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 senders: Vec::new(),
|
||||
2019-07-27 12:25:25 not_senders: Vec::new(),
|
||||
2019-07-27 12:25:25 types: Vec::new(),
|
||||
2019-07-27 12:25:25 not_types: Vec::new(),
|
||||
2019-07-27 12:25:25 }),
|
||||
2019-07-27 12:25:25 timeline: Some(RoomEventFilter {
|
||||
2019-07-27 12:25:25 limit: Some(UInt::from(0u32)),
|
||||
2019-07-27 12:25:25 //..RoomEventFilter::default()
|
||||
2019-07-27 12:25:25 rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 not_rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 senders: Vec::new(),
|
||||
2019-07-27 12:25:25 not_senders: Vec::new(),
|
||||
2019-07-27 12:25:25 types: Vec::new(),
|
||||
2019-07-27 12:25:25 not_types: Vec::new(),
|
||||
2019-07-27 12:25:25 }),
|
||||
2019-07-27 12:25:25 ephemeral: Some(RoomEventFilter {
|
||||
2019-07-27 12:25:25 limit: Some(UInt::from(0u32)),
|
||||
2019-07-27 12:25:25 //..RoomEventFilter::default()
|
||||
2019-07-27 12:25:25 rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 not_rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 senders: Vec::new(),
|
||||
2019-07-27 12:25:25 not_senders: Vec::new(),
|
||||
2019-07-27 12:25:25 types: Vec::new(),
|
||||
2019-07-27 12:25:25 not_types: Vec::new(),
|
||||
2019-07-27 12:25:25 }),
|
||||
2019-07-27 12:25:25 state: Some(RoomEventFilter {
|
||||
2019-07-27 12:25:25 limit: Some(UInt::from(0u32)),
|
||||
2019-07-27 12:25:25 //..RoomEventFilter::default()
|
||||
2019-07-27 12:25:25 rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 not_rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 senders: Vec::new(),
|
||||
2019-07-27 12:25:25 not_senders: Vec::new(),
|
||||
2019-07-27 12:25:25 types: Vec::new(),
|
||||
2019-07-27 12:25:25 not_types: Vec::new(),
|
||||
2019-07-27 12:25:25 }),
|
||||
2019-07-27 12:25:25 //..RoomFilter::default()
|
||||
2019-07-27 12:25:25 include_leave: None,
|
||||
2019-07-27 12:25:25 rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 not_rooms: Vec::new(),
|
||||
2019-07-27 12:25:25 }),
|
||||
2019-07-27 12:25:25 presence: Some(Filter {
|
||||
2019-07-27 12:25:25 limit: Some(UInt::from(0u32)),
|
||||
2019-07-27 12:25:25 //..Filter::default()
|
||||
2019-07-27 12:25:25 senders: Vec::new(),
|
||||
2019-07-27 12:25:25 not_senders: Vec::new(),
|
||||
2019-07-27 12:25:25 types: Vec::new(),
|
||||
2019-07-27 12:25:25 not_types: Vec::new(),
|
||||
2019-07-27 12:25:25 }),
|
||||
2019-07-27 12:25:25 })
|
||||
2019-07-27 12:25:25
|
||||
2019-07-27 12:25:25
|
||||
2019-07-27 12:25:25
|
||||
2019-07-27 14:43:25 ◀▬▬ Bonstra (@freenode_Bonstra:matrix.org) has left #Ruma
|
||||
2019-07-27 14:57:22 ralith no Default impls yet?
|
||||
2019-07-27 14:59:28 @jplatte No
|
||||
2019-07-27 15:00:21 @jplatte I'll create a PR soon-ish though
|
||||
2019-07-27 15:02:18 ▬▬▶ nardis (@nardis:matrix.org) has joined #Ruma
|
||||
2019-07-27 15:05:07 ▬▬▶ Bonstra (@freenode_Bonstra:matrix.org) has joined #Ruma
|
||||
2019-07-27 19:26:16 &jimmycuadra just finished recording my interview for the rustacean station podcast about matrix/ruma. it went really well :}
|
||||
2019-07-27 23:31:03 ▬▬▶ bnjbvr (@bnjbvr:delire.party) has joined #Ruma
|
||||
2019-07-28 09:21:48 paulvt Oh great! Looking forward to it... but got quite the podcast queue growing 😅️
|
@ -0,0 +1,442 @@
|
||||
2019-07-27 21:59:41 &tauoverpi just going round and round
|
||||
2019-07-27 22:00:27 gnutist the only way f1 would be interesting is by giving the big brands the boot tbh
|
||||
2019-07-27 22:00:35 gnutist let private teams compete
|
||||
2019-07-27 22:09:36 &tauoverpi Godot ARkit
|
||||
2019-07-27 22:09:39 &tauoverpi hmmmmmmmmmmmmm
|
||||
2019-07-27 22:25:25 &tauoverpi but can't use it
|
||||
2019-07-27 22:25:31 &tauoverpi VR support is nice though
|
||||
2019-07-28 00:22:22 pi3 The Boys
|
||||
2019-07-28 00:22:26 pi3 Is awesome
|
||||
2019-07-28 00:22:30 pi3 I'm at ep3
|
||||
2019-07-28 00:27:29 justin <Message redacted by: justin>
|
||||
2019-07-28 00:29:52 justin i dont like transgendered people
|
||||
2019-07-28 00:41:02 &tauoverpi hm
|
||||
2019-07-28 00:41:10 &tauoverpi good for you I guess
|
||||
2019-07-28 00:59:12 &tauoverpi packaging solvespace is taking a bit longer than expected
|
||||
2019-07-28 01:18:44 pi3 > In reply to @justin:matrix.allmende.io
|
||||
2019-07-28 01:18:44 > i dont like transgendered people
|
||||
2019-07-28 01:18:44 Gae
|
||||
2019-07-28 01:26:17 pi3 https://matrix.awful.club:443/_matrix/media/r0/download/matrix.org/NwZADsUgIHgmkTPbjCcvMkis/Screenshot_20190728-042548_Chrome.jpg
|
||||
2019-07-28 01:26:20 pi3 uwu
|
||||
2019-07-28 01:34:01 justin Vi: i hate that i'm attracted to some
|
||||
2019-07-28 01:35:04 &tauoverpi well, if you're into that I guess
|
||||
2019-07-28 01:35:29 justin i dont wannna be
|
||||
2019-07-28 01:39:58 &tauoverpi ¯\_(ツ)_/¯ not much you can do
|
||||
2019-07-28 01:40:28 &tauoverpi you can recondition yourself to not find them attractive
|
||||
2019-07-28 01:40:34 &tauoverpi but it takes time
|
||||
2019-07-28 01:44:15 pi3 Stop being homo-in-denial
|
||||
2019-07-28 01:44:49 pi3 https://youtu.be/g2KsZHRrFpU
|
||||
2019-07-28 01:44:54 pi3 justin
|
||||
2019-07-28 01:45:57 &tauoverpi just like you can get sourceforge to stop being unusable
|
||||
2019-07-28 03:10:28 yorick > In reply to @justin:matrix.allmende.io
|
||||
2019-07-28 03:10:28 > i dont like transgendered people
|
||||
2019-07-28 03:10:28 Why
|
||||
2019-07-28 04:33:11 justin im unsure
|
||||
2019-07-28 04:41:44 justin why do people decide to be another gender
|
||||
2019-07-28 04:43:28 yorick It's not supposed to be a decision
|
||||
2019-07-28 04:43:29 yorick It's
|
||||
2019-07-28 04:44:04 yorick The person feels they better fit the gender opposite their sex
|
||||
2019-07-28 04:45:51 hook54321 justin: why do you keep on sending me invites to here?
|
||||
2019-07-28 04:46:17 yorick Because he is a turd
|
||||
2019-07-28 04:46:35 justin im bored heeeheeeheeheheee
|
||||
2019-07-28 04:46:50 <-- justin (@justin:matrix.allmende.io) has left #General
|
||||
2019-07-28 04:47:07 yorick He has a crush on you hook
|
||||
2019-07-28 04:47:26 hook54321 hmm
|
||||
2019-07-28 04:49:15 hook54321 I think he's the same guy that came into another channel I'm in last night and randomly started talking about gender changing ice cream.
|
||||
2019-07-28 04:56:46 yorick Sounds like quite the intellectual
|
||||
2019-07-28 05:14:13 justin yorick: do you want ice cream
|
||||
2019-07-28 05:22:26 yorick I prefer horchata
|
||||
2019-07-28 06:35:44 @rszibele > In reply to @yorick:feneas.org
|
||||
2019-07-28 06:35:44 > The person feels they better fit the gender opposite their
|
||||
2019-07-28 06:35:44 > sex
|
||||
2019-07-28 06:35:44 my guess is that a lot of it is caused by plastics. we wear it, we drink from it, we eat from it, we touch plastics daily. there were studies that showed that most plastics release estrogenic compounds.
|
||||
2019-07-28 06:44:37 @rszibele there is of course a lot more that could be causing testosterone levels to drop. e.g. diet, pesticides, pollutants, other chemical exposure.
|
||||
2019-07-28 06:45:50 yorick I don't think it's just hormones causing the feeling though don't they get treated with more hormones and hormone blockers to match the expected levels in the sex identified with?
|
||||
2019-07-28 06:45:51 @rszibele * there is of course a lot more that could be causing testosterone levels to drop. e.g. diet, pesticides, pollutants, exposure to other chemicals.
|
||||
2019-07-28 06:46:17 yorick And yeah I don't think it's just plastic there have been transgendered people far longer than there has been plastic
|
||||
2019-07-28 06:47:31 yorick Or at least third gender roles in I think Asian countries mostly
|
||||
2019-07-28 06:48:57 @rszibele > In reply to @yorick:feneas.org
|
||||
2019-07-28 06:48:57 > I don't think it's just hormones causing the feeling
|
||||
2019-07-28 06:48:57 > though don't they get treated with more hormones and
|
||||
2019-07-28 06:48:57 > hormone blockers to match the expected levels in the sex
|
||||
2019-07-28 06:48:57 > identified with?
|
||||
2019-07-28 06:48:57 yes, that's after the fact they know they are of the other gender. this doesn't however take into consideration testosterone levels while growing up for example. give a man with low testosterone some testosterone via. injections and he'll be a completely different person.
|
||||
2019-07-28 06:49:54 @rszibele > In reply to @yorick:feneas.org
|
||||
2019-07-28 06:49:54 > And yeah I don't think it's just plastic there have been
|
||||
2019-07-28 06:49:54 > transgendered people far longer than there has been
|
||||
2019-07-28 06:49:54 > plastic
|
||||
2019-07-28 06:49:54 not saying there never were, but the occurances today seem a lot higher, which also correlates with lower testosterone and sperm viability in first world countries.
|
||||
2019-07-28 06:52:15 @rszibele I would be interested in a study on testosterone levels of men who identify as women (pre hormone treatment).
|
||||
2019-07-28 06:54:51 @rszibele I suppose such a study would be politically incorrect though and therefore wouldn't get funding, but I haven't searched much.
|
||||
2019-07-28 06:56:01 yorick I don't know I hear a lot of "but nowadays there's a lot more of x" and I'm not sure how much of that is believable
|
||||
2019-07-28 06:57:03 yorick With closeted feelings and societies biased against certain groups et cetera et cetera it just seems it's too difficult to tell how much frequency has changed and I never know what statistic to trust
|
||||
2019-07-28 06:57:10 pi3 Hi gaes
|
||||
2019-07-28 06:57:15 yorick Hey fag
|
||||
2019-07-28 06:57:29 pi3 How sucking eachothers popsicle goes
|
||||
2019-07-28 06:57:59 pi3 I heard you guys in to
|
||||
2019-07-28 06:58:11 pi3 Girl popsicle eh mates
|
||||
2019-07-28 06:58:27 yorick I do like the female popsicle
|
||||
2019-07-28 06:59:13 @rszibele yorick: yeah, it's hard to figure that out, but a study on men's testosterone levels who identify as women would shine some light on the issue.
|
||||
2019-07-28 06:59:27 weedloser big epic
|
||||
2019-07-28 06:59:41 pi3 > In reply to @yorick:feneas.org
|
||||
2019-07-28 06:59:41 > I do like the female popsicle
|
||||
2019-07-28 06:59:41 Man of a+++ grade taste
|
||||
2019-07-28 07:00:09 pi3 Oi hey epok
|
||||
2019-07-28 07:00:57 pi3 I just finished watching the boys
|
||||
2019-07-28 07:01:14 weedloser how can you have the audacity to speak about top gear and the blokes without me
|
||||
2019-07-28 07:01:17 weedloser by the way
|
||||
2019-07-28 07:01:25 weedloser none of this bs in general, #off-topic:feneas.org
|
||||
2019-07-28 07:01:41 @rszibele I don't care what other people identify as, for all I care they could identify as apache attack helicopters, though I'm interested in knowing if it may be caused by pollutants/chemicals so I know what to stay away from.
|
||||
2019-07-28 07:01:55 pi3 Chill mate we and the boys are talking very general business
|
||||
2019-07-28 07:02:10 weedloser > In reply to @gnutist:feneas.org
|
||||
2019-07-28 07:02:10 > this single video
|
||||
2019-07-28 07:02:10 > https://www.youtube.com/watch?v=yfly9i-dvxU > grand tour
|
||||
2019-07-28 07:02:10 :)))))))
|
||||
2019-07-28 07:02:41 weedloser > In reply to @gnutist:feneas.org
|
||||
2019-07-28 07:02:41 > top gear > grand tour
|
||||
2019-07-28 07:02:41 no mate, the first season of grand tour might have been a little 'stale' but now it's all good
|
||||
2019-07-28 07:02:42 @rszibele > In reply to @weedloser:feneas.org
|
||||
2019-07-28 07:02:42 > none of this bs in general, #off-topic:feneas.org
|
||||
2019-07-28 07:02:42 big true
|
||||
2019-07-28 07:03:01 weedloser altough honestly, the old BBC top gear was unbeatable
|
||||
2019-07-28 07:03:03 pi3 Nah man
|
||||
2019-07-28 07:03:21 pi3 Don't fall in this lads gaemes
|
||||
2019-07-28 07:03:33 pi3 He's tricking you
|
||||
2019-07-28 07:05:21 @rszibele nah, this type of discussion is better suited for off-topic
|
||||
2019-07-28 07:05:48 weedloser precision engineering = jeremy with a hammer
|
||||
2019-07-28 07:08:15 pi3 Very diabolical
|
||||
2019-07-28 07:11:05 weedloser https://www.youtube.com/watch?v=6xsVX6029rU
|
||||
2019-07-28 08:04:38 * &tauoverpi missed a topic
|
||||
2019-07-28 08:40:07 weedloser levy
|
||||
2019-07-28 08:40:07 weedloser i think this room needs a rebrand
|
||||
2019-07-28 08:40:08 weedloser "linuxgaming"
|
||||
2019-07-28 08:40:18 weedloser we all hate linux and we rarely talk about games
|
||||
2019-07-28 08:40:27 weedloser and we need to change the picture
|
||||
2019-07-28 08:41:04 ojoon Yeah, swap the Tux with a tie to a Tux with Nazi officer clothes.
|
||||
2019-07-28 08:41:09 weedloser changing the picture is important actually
|
||||
2019-07-28 08:41:24 weedloser hellcp owns it, a moderator before the coup
|
||||
2019-07-28 08:41:51 weedloser * hellcp made it, a moderator before the coup
|
||||
2019-07-28 08:42:09 weedloser > In reply to @ojoon:feneas.org
|
||||
2019-07-28 08:42:09 > Yeah, swap the Tux with a tie to a Tux with Nazi officer
|
||||
2019-07-28 08:42:09 > clothes.
|
||||
2019-07-28 08:42:09 no
|
||||
2019-07-28 08:42:55 yorick Well it does say General that's just fine
|
||||
2019-07-28 08:43:13 weedloser that's fine i supoise
|
||||
2019-07-28 08:43:15 weedloser i e
|
||||
2019-07-28 08:43:21 weedloser * i mean the url
|
||||
2019-07-28 08:43:30 weedloser * that's fine i suppose
|
||||
2019-07-28 08:43:35 &tauoverpi > In reply to @weedloser:feneas.org
|
||||
2019-07-28 08:43:35 > we all hate linux and we rarely talk about games
|
||||
2019-07-28 08:43:35 But I'm making a game
|
||||
2019-07-28 08:43:43 yorick Would you like to make bulk food with me?
|
||||
2019-07-28 08:44:10 &tauoverpi > In reply to @weedloser:feneas.org
|
||||
2019-07-28 08:44:10 > changing the picture is important actually
|
||||
2019-07-28 08:44:10 I can make a new one
|
||||
2019-07-28 08:44:19 weedloser alright the URL is acceptable for legacy and recognition reasons
|
||||
2019-07-28 08:44:23 weedloser but not the pic
|
||||
2019-07-28 08:44:25 weedloser do it
|
||||
2019-07-28 08:44:30 weedloser make it slightly edgy
|
||||
2019-07-28 08:44:36 yorick Wait are you actually working on your game now
|
||||
2019-07-28 08:44:48 &tauoverpi Yes
|
||||
2019-07-28 08:45:02 ojoon Levy, what about your fighter pilot career?
|
||||
2019-07-28 08:45:03 weedloser > In reply to @yorick:feneas.org
|
||||
2019-07-28 08:45:03 > Wait are you actually working on your game now
|
||||
2019-07-28 08:45:03 but is he ever going to finish it?
|
||||
2019-07-28 08:45:05 weedloser true question
|
||||
2019-07-28 08:45:14 yorick Also I've been finding that intel assembly is stupid
|
||||
2019-07-28 08:47:13 yorick All this bullshit I need to do to move up from 16 bit mode to 64 bit mode is crazy
|
||||
2019-07-28 08:47:13 All I want is a bootloader and a Forth interpreter but I'm getting stuck on the bootloader
|
||||
2019-07-28 08:47:50 yorick I cam copy paste to get a thing that works but it's still pretty much bs
|
||||
2019-07-28 08:48:12 weedloser lol gamer
|
||||
2019-07-28 08:49:14 &tauoverpi > In reply to @ojoon:feneas.org
|
||||
2019-07-28 08:49:14 > Levy, what about your fighter pilot career?
|
||||
2019-07-28 08:49:14 Need to wait
|
||||
2019-07-28 08:49:24 &tauoverpi > In reply to @weedloser:feneas.org
|
||||
2019-07-28 08:49:24 > but is he ever going to finish it?
|
||||
2019-07-28 08:49:24 I am
|
||||
2019-07-28 08:50:06 yorick Do they require 20/20 vision over there
|
||||
2019-07-28 08:51:03 &tauoverpi > In reply to @yorick:feneas.org
|
||||
2019-07-28 08:51:03 > Do they require 20/20 vision over there
|
||||
2019-07-28 08:51:03 yes
|
||||
2019-07-28 08:51:15 &tauoverpi > In reply to @tauoverpi:feneas.org
|
||||
2019-07-28 08:51:15 > I am
|
||||
2019-07-28 08:51:15 already have a voice actor
|
||||
2019-07-28 08:51:33 yorick Is it your lady creature
|
||||
2019-07-28 08:52:36 &tauoverpi hm?
|
||||
2019-07-28 08:52:48 yorick Cass
|
||||
2019-07-28 08:52:55 &tauoverpi of course
|
||||
2019-07-28 08:53:17 &tauoverpi fits the role perfectly which is quite funny
|
||||
2019-07-28 08:53:48 &tauoverpi since this is something from 6 years ago that's being reworked
|
||||
2019-07-28 08:54:28 yorick ASiAns
|
||||
2019-07-28 08:55:14 &tauoverpi doesn't have an accent
|
||||
2019-07-28 08:55:18 &tauoverpi thus it works
|
||||
2019-07-28 08:55:38 &tauoverpi plus of similar height
|
||||
2019-07-28 08:57:58 weedloser > In reply to @tauoverpi:feneas.org
|
||||
2019-07-28 08:57:58 > already have a voice actor
|
||||
2019-07-28 08:57:58 i can help
|
||||
2019-07-28 08:58:16 yorick > In reply to @weedloser:feneas.org
|
||||
2019-07-28 08:58:16 > i can help
|
||||
2019-07-28 08:58:16 You aren't female enough
|
||||
2019-07-28 08:58:29 yorick What are you doing for game music
|
||||
2019-07-28 08:58:45 &tauoverpi mostly piano for now
|
||||
2019-07-28 08:58:49 &tauoverpi since I have one
|
||||
2019-07-28 08:59:07 &tauoverpi need to get a new electric guitar
|
||||
2019-07-28 08:59:12 weedloser beethoven
|
||||
2019-07-28 08:59:20 weedloser levy
|
||||
2019-07-28 08:59:27 &tauoverpi so I can add different effects
|
||||
2019-07-28 08:59:27 weedloser screw the electric guitar
|
||||
2019-07-28 08:59:29 yorick I always wanted a game with generated music
|
||||
2019-07-28 08:59:30 weedloser get a violin
|
||||
2019-07-28 08:59:53 &tauoverpi generated is rather difficult
|
||||
2019-07-28 09:00:00 yorick > In reply to @tauoverpi:feneas.org
|
||||
2019-07-28 09:00:00 > so I can add different effects
|
||||
2019-07-28 09:00:00 SUPERCOLLIDER MY BOY
|
||||
2019-07-28 09:00:10 yorick > In reply to @tauoverpi:feneas.org
|
||||
2019-07-28 09:00:10 > generated is rather difficult
|
||||
2019-07-28 09:00:10 Yes sir it is
|
||||
2019-07-28 09:00:16 &tauoverpi you still need samples
|
||||
2019-07-28 09:00:46 weedloser have violin
|
||||
2019-07-28 09:00:48 yorick There's stuff like that afrp thing with the hexagonal tiles that always makes a somewhat pleasing song
|
||||
2019-07-28 09:00:50 &tauoverpi > In reply to @weedloser:feneas.org
|
||||
2019-07-28 09:00:50 > screw the electric guitar
|
||||
2019-07-28 09:00:50 no, it's easier to record
|
||||
2019-07-28 09:01:04 &tauoverpi and I don't have a studio
|
||||
2019-07-28 09:01:07 yorick > In reply to @tauoverpi:feneas.org
|
||||
2019-07-28 09:01:07 > no, it's easier to record
|
||||
2019-07-28 09:01:07 Sample from old records
|
||||
2019-07-28 09:01:15 weedloser > In reply to @yorick:feneas.org
|
||||
2019-07-28 09:01:15 > Sample from old records
|
||||
2019-07-28 09:01:15 yes
|
||||
2019-07-28 09:01:42 weedloser doubt levy will tolerate nonfree music though
|
||||
2019-07-28 09:01:52 yorick Wym nonfree
|
||||
2019-07-28 09:02:16 weedloser the source being copyrighted
|
||||
2019-07-28 09:02:22 &tauoverpi > In reply to @yorick:feneas.org
|
||||
2019-07-28 09:02:22 > Sample from old records
|
||||
2019-07-28 09:02:22 can't legally do that
|
||||
2019-07-28 09:03:20 yorick > In reply to @tauoverpi:feneas.org
|
||||
2019-07-28 09:03:20 > can't legally do that
|
||||
2019-07-28 09:03:20 There have to be ways producers do it all the time
|
||||
2019-07-28 09:04:25 &tauoverpi it depends and things are messy
|
||||
2019-07-28 09:04:40 &tauoverpi I'm not a lawyer
|
||||
2019-07-28 09:04:48 weedloser anornymorse
|
||||
2019-07-28 09:04:59 weedloser what about the free software song
|
||||
2019-07-28 09:05:12 &tauoverpi no
|
||||
2019-07-28 09:05:17 weedloser x)
|
||||
2019-07-28 09:05:24 &tauoverpi need wind instruments...
|
||||
2019-07-28 09:05:38 weedloser trumpet
|
||||
2019-07-28 09:05:42 &tauoverpi no
|
||||
2019-07-28 09:05:51 weedloser yes
|
||||
2019-07-28 09:06:23 &tauoverpi since it doesn't fit
|
||||
2019-07-28 09:06:28 weedloser i shall be welcomed into the game of levin with a gentle sound orchestra that sooths my mind
|
||||
2019-07-28 09:06:45 &tauoverpi nope
|
||||
2019-07-28 09:06:53 &tauoverpi not at all
|
||||
2019-07-28 09:07:09 weedloser punk rock?
|
||||
2019-07-28 09:07:15 &tauoverpi no
|
||||
2019-07-28 09:07:52 &tauoverpi only music you'll hear is that by characters themselves
|
||||
2019-07-28 09:08:11 &tauoverpi note the guitar is for creating sound effects
|
||||
2019-07-28 09:08:30 weedloser you're too brilliant for the game industry
|
||||
2019-07-28 09:08:57 yorick Ocarina, pan flute are cheap and easy to learn
|
||||
2019-07-28 09:09:04 yorick Normal flute not so much
|
||||
2019-07-28 09:09:38 yorick Ooh how about percussion
|
||||
2019-07-28 09:10:14 yorick Bongo boy
|
||||
2019-07-28 09:11:52 &tauoverpi harder to carry
|
||||
2019-07-28 09:14:16 &tauoverpi it needs to be practical
|
||||
2019-07-28 09:20:00 weedloser slap your gf's ass
|
||||
2019-07-28 09:20:00 perfect percussion
|
||||
2019-07-28 09:21:23 &tauoverpi requires bringing an extra mouth to feed just for an instrument
|
||||
2019-07-28 09:21:27 &tauoverpi not practical
|
||||
2019-07-28 09:21:33 yorick Whistling
|
||||
2019-07-28 09:21:38 &tauoverpi that I have
|
||||
2019-07-28 09:22:30 yorick Singing?
|
||||
2019-07-28 09:22:39 &tauoverpi yes
|
||||
2019-07-28 09:22:58 ojoon Can you hear some screamo metal in the distance if you're insane enough?
|
||||
2019-07-28 09:23:04 &tauoverpi no
|
||||
2019-07-28 09:23:10 ojoon Booooring.
|
||||
2019-07-28 09:23:22 &tauoverpi but you can hear the voices of those you killed asking you why
|
||||
2019-07-28 09:23:43 &tauoverpi or some of their screams of pain, etc
|
||||
2019-07-28 09:24:00 &tauoverpi no background music
|
||||
2019-07-28 09:24:05 &tauoverpi it ruins things
|
||||
2019-07-28 09:24:34 &tauoverpi (might change my mind but it is how it is for now)
|
||||
2019-07-28 09:25:08 &tauoverpi background music didn't work so well before which is why (waiting for cat pic)
|
||||
2019-07-28 09:25:11 yorick Ambient sounds though right
|
||||
2019-07-28 09:25:16 yorick Rain snow bird etc
|
||||
2019-07-28 09:25:17 &tauoverpi of course
|
||||
2019-07-28 09:25:43 yorick The clap of your asscheeks when you're dummy thicc?
|
||||
2019-07-28 09:25:52 weedloser stop being so cheap
|
||||
2019-07-28 09:26:04 &tauoverpi > In reply to @yorick:feneas.org
|
||||
2019-07-28 09:26:04 > The clap of your asscheeks when you're dummy thicc?
|
||||
2019-07-28 09:26:04 wat
|
||||
2019-07-28 09:26:31 &tauoverpi > In reply to @weedloser:feneas.org
|
||||
2019-07-28 09:26:31 > stop being so cheap
|
||||
2019-07-28 09:26:31 then sound becomes part of gameplay
|
||||
2019-07-28 09:26:32 weedloser if you hadn't been in stallman communist cult you would have no problem feeding your percussion
|
||||
2019-07-28 09:26:40 &tauoverpi in that you'll rely on hearing more
|
||||
2019-07-28 09:26:56 &tauoverpi I'm not in a cult
|
||||
2019-07-28 09:27:00 &tauoverpi I am the cult
|
||||
2019-07-28 09:27:31 yorick https://youtu.be/uJ3c4IIEazM
|
||||
2019-07-28 09:27:37 weedloser >:)))
|
||||
2019-07-28 09:30:04 &tauoverpi anyway
|
||||
2019-07-28 09:32:49 yorick Also no killing that's bad
|
||||
2019-07-28 09:34:52 &tauoverpi day 2 of packaging solvespace
|
||||
2019-07-28 09:35:17 &tauoverpi > In reply to @yorick:feneas.org
|
||||
2019-07-28 09:35:17 > Also no killing that's bad
|
||||
2019-07-28 09:35:17 feel bad for killing a fox
|
||||
2019-07-28 09:35:52 &tauoverpi also red squirrel > gray squirrel
|
||||
2019-07-28 09:36:42 &tauoverpi https://upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Squirrel_posing.jpg/800px-Squirrel_posing.jpg
|
||||
2019-07-28 09:43:35 yorick I'm better than a red squirrel
|
||||
2019-07-28 10:11:50 whirlpool.spectrum > In reply to @hook54321:privacytools.io
|
||||
2019-07-28 10:11:50 > I think he's the same guy that came into another channel
|
||||
2019-07-28 10:11:50 > I'm in last night and randomly started talking about
|
||||
2019-07-28 10:11:50 > gender changing ice cream.
|
||||
2019-07-28 10:11:50 Yep and consequently got banned for harassment there too, welcome to the party!
|
||||
2019-07-28 10:17:58 &tauoverpi hm
|
||||
2019-07-28 10:18:20 whirlpool.spectrum for hating trans people
|
||||
2019-07-28 10:18:52 whirlpool.spectrum and seems like hes still going on about it in here too
|
||||
2019-07-28 10:19:30 &tauoverpi he didn't get very far with it
|
||||
2019-07-28 10:19:58 &tauoverpi not that he will
|
||||
2019-07-28 10:21:10 whirlpool.spectrum I pmed him yesterday and he thinks a radical feminist = trans
|
||||
2019-07-28 10:21:17 &tauoverpi in this channel at least
|
||||
2019-07-28 10:21:47 &tauoverpi he's trolling
|
||||
2019-07-28 10:21:54 whirlpool.spectrum https://matrix.awful.club:443/_matrix/media/r0/download/matrix.org/zxMUBNYDOAsPAigaLxVtClxq/Screen Shot 2019-07-28 at 7.51.19 pm.png
|
||||
2019-07-28 10:22:01 &tauoverpi just let him be
|
||||
2019-07-28 10:22:24 whirlpool.spectrum was just curious about his motives idc about him
|
||||
2019-07-28 10:23:37 &tauoverpi cmake is a pain
|
||||
2019-07-28 10:23:47 &tauoverpi when it doesn't want to play
|
||||
2019-07-28 10:24:15 whirlpool.spectrum you making a game Levy?
|
||||
2019-07-28 10:25:28 &tauoverpi FINALLY
|
||||
2019-07-28 10:25:37 &tauoverpi > In reply to @whirlpool.spectrum:matrix.org
|
||||
2019-07-28 10:25:37 > you making a game Levy?
|
||||
2019-07-28 10:25:37 packaging solvespace
|
||||
2019-07-28 10:25:55 whirlpool.spectrum go on
|
||||
2019-07-28 10:26:31 &tauoverpi guix isn't as nice when dealing with linked repos that use in-tree building instead of something sane
|
||||
2019-07-28 10:26:42 &tauoverpi well, it's still better than debian packaging
|
||||
2019-07-28 10:27:26 &tauoverpi I might have missed a part which would make all of this much easier
|
||||
2019-07-28 10:28:01 &tauoverpi it's building now so I don't care anymore, just want a 3D CAD program that's not blender
|
||||
2019-07-28 10:28:48 <-- hook54321 (@hook54321:privacytools.io) has left #General
|
||||
2019-07-28 10:29:28 &tauoverpi I spoke too soon
|
||||
2019-07-28 10:29:36 whirlpool.spectrum whats wrong with blender?
|
||||
2019-07-28 10:30:09 &tauoverpi I'd have to learn it properly
|
||||
2019-07-28 10:30:26 &tauoverpi solvespace might be fun to use since it uses constraint solving to model
|
||||
2019-07-28 10:30:33 &tauoverpi https://0x0.st/zfbQ.scm
|
||||
2019-07-28 10:30:44 &tauoverpi the package (it's a mess and still needs fixes)
|
||||
2019-07-28 10:32:31 whirlpool.spectrum what electric guitar are you gonna get?
|
||||
2019-07-28 10:32:51 justin my motives are not wanting to be attracted to trans people
|
||||
2019-07-28 10:33:19 &tauoverpi not really sure, would have to ask a guy I know about it
|
||||
2019-07-28 10:33:42 &tauoverpi justin #off-topic:feneas.org <-
|
||||
2019-07-28 10:33:43 whirlpool.spectrum well I can help you
|
||||
2019-07-28 10:35:34 * &tauoverpi doesn't know much about electric guitars
|
||||
2019-07-28 10:36:10 whirlpool.spectrum we all have to start somewhere so whats your budget?
|
||||
2019-07-28 10:38:40 &tauoverpi Currently 200 euro for it but can go higher. It's mainly for generating sound effects rather than playing.
|
||||
2019-07-28 10:39:46 whirlpool.spectrum curious what kind of sound effects you exactly need for the electric guitar
|
||||
2019-07-28 10:42:18 &tauoverpi everything involving reverb and ambient noise
|
||||
2019-07-28 10:42:31 &tauoverpi plus I'd like to learn the guitar
|
||||
2019-07-28 10:42:38 &tauoverpi properly for once
|
||||
2019-07-28 10:43:27 whirlpool.spectrum do you enjoy playing it though?
|
||||
2019-07-28 10:43:56 &tauoverpi did last time I had one
|
||||
2019-07-28 10:43:54 whirlpool.spectrum thats what determines whether or not you fully will be commited to it
|
||||
2019-07-28 10:45:09 &tauoverpi plus picking it up at least once a day with the intention to play will eventually feed back into motivation
|
||||
2019-07-28 10:46:14 whirlpool.spectrum sounds good, but when you stopped playing did that fire inside to go further with it burn out?
|
||||
2019-07-28 10:47:54 &tauoverpi not really, I gave it away at the time as I couldn't bring it with me. Only real reason why I stopped
|
||||
2019-07-28 10:48:21 whirlpool.spectrum sounds like you still have the motivation for it
|
||||
2019-07-28 10:48:58 whirlpool.spectrum I'd recommend acoustic for newcomers, but since you sounds like you've got experience, you might want to pick up electric
|
||||
2019-07-28 10:49:31 whirlpool.spectrum used guitars are good but be careful and make educated purchases and bring along a friend who knows guitars
|
||||
2019-07-28 10:50:28 &tauoverpi Will when I visit london again, friend works within the music industry so should be a reliable source
|
||||
2019-07-28 10:50:52 whirlpool.spectrum though make sure you truly love the guitar
|
||||
2019-07-28 10:50:58 whirlpool.spectrum the wood grain
|
||||
2019-07-28 10:50:59 whirlpool.spectrum everything
|
||||
2019-07-28 10:51:02 whirlpool.spectrum the feel
|
||||
2019-07-28 10:51:07 whirlpool.spectrum the sound
|
||||
2019-07-28 10:51:19 whirlpool.spectrum you don't want to end up selling the guitar because you don't like the sound or feel of it
|
||||
2019-07-28 10:54:56 &tauoverpi haven't played enough guitars to complain about the feel of it yet
|
||||
2019-07-28 10:55:15 &tauoverpi so I should be good on that one
|
||||
2019-07-28 10:55:33 whirlpool.spectrum would recommend you just go into a store and pick one you like the look of and try it out
|
||||
2019-07-28 10:56:52 &tauoverpi https://0x0.st/zfbL.txt
|
||||
2019-07-28 10:56:56 &tauoverpi ffffffffffffff
|
||||
2019-07-28 10:57:59 joeri_poeri Learning the guitar is def worth it, do you have an electric one or an acoustic one?
|
||||
2019-07-28 10:58:25 &tauoverpi I'll be getting another electric
|
||||
2019-07-28 11:01:01 &tauoverpi > In reply to @tauoverpi:feneas.org
|
||||
2019-07-28 11:01:01 > https://0x0.st/zfbL.txt
|
||||
2019-07-28 11:01:01 BUT IT'S THERE
|
||||
2019-07-28 11:01:03 &tauoverpi wat
|
||||
2019-07-28 11:01:18 whirlpool.spectrum I got a new strat recently have been playing that damn thing everyday since I bought it
|
||||
2019-07-28 11:01:28 whirlpool.spectrum its only a player series but I still love that thing
|
||||
2019-07-28 11:01:40 &tauoverpi https://0x0.st/zfbO.txt
|
||||
2019-07-28 11:06:33 &tauoverpi inline include in the middle of a .cpp... smart
|
||||
2019-07-28 11:06:42 &tauoverpi > In reply to @whirlpool.spectrum:matrix.org
|
||||
2019-07-28 11:06:42 > its only a player series but I still love that thing
|
||||
2019-07-28 11:06:42 sounds nice
|
||||
2019-07-28 11:07:55 whirlpool.spectrum as soon as I saw it was discounted at a guitar store I knew I had to pick it up
|
||||
2019-07-28 11:08:38 whirlpool.spectrum it was either an epiphone les paul or a fender stratocaster
|
||||
2019-07-28 11:08:56 whirlpool.spectrum I tried both but honestly was still having trouble deciding
|
||||
2019-07-28 11:20:58 * &tauoverpi gives up and uses blender
|
||||
2019-07-28 11:21:05 &tauoverpi will fix this later
|
||||
2019-07-28 11:42:32 yorick I had an epiphone
|
||||
2019-07-28 11:44:21 whirlpool.spectrum > In reply to @yorick:feneas.org
|
||||
2019-07-28 11:44:21 > I had an epiphone
|
||||
2019-07-28 11:44:21 keyword being "had" what happend?
|
||||
2019-07-28 11:45:49 yorick It's at my dad's house I couldn't take it with me
|
||||
2019-07-28 11:46:08 yorick Was cool though it was a prototype, I have an uncle involved in the industry
|
||||
2019-07-28 11:46:41 yorick Has a really nice case with it and had some repairs and stuff done, plus the prototypes are handmade
|
||||
2019-07-28 11:46:47 yorick And I got it for free
|
||||
2019-07-28 11:47:06 whirlpool.spectrum thats pretty neat
|
||||
2019-07-28 11:47:31 yorick Still needed some work though and the local music shop in Minnesota couldn't fix it up
|
||||
2019-07-28 11:48:08 yorick Low string rattles because it's not perfectly straight at the joint of the body and neck
|
||||
2019-07-28 11:48:29 yorick (It's acoustic I never specified)
|
||||
2019-07-28 11:48:58 yorick I have another a cheap one but that one's at my mom's so I have neither instrument
|
||||
2019-07-28 11:48:58 Also accordion is stuck over at my dad's
|
||||
2019-07-28 11:49:08 yorick Hey levy add accordion to your game
|
||||
2019-07-28 11:49:47 whirlpool.spectrum while you're at it you might as well start going exotic with bongo drums
|
||||
2019-07-28 11:51:11 yorick I want to learn drums
|
||||
2019-07-28 11:51:14 yorick Drums are cool
|
||||
2019-07-28 12:01:24 &tauoverpi aye, dumb solution worked
|
||||
2019-07-28 12:03:35 &tauoverpi just (copy-recursively .. ..)
|
||||
2019-07-28 12:20:48 &tauoverpi finally
|
||||
2019-07-28 12:20:59 &tauoverpi can avoid blender for a bit longer
|
||||
2019-07-28 12:25:29 &tauoverpi solvespace is really nice
|
||||
2019-07-28 13:09:00 marlin1113 Why would you want to avoid blender?
|
||||
2019-07-28 13:09:03 marlin1113 Blender the best
|
||||
2019-07-28 13:19:05 &tauoverpi because it's a pain to learn
|
||||
2019-07-28 13:19:12 &tauoverpi and I prefer constraints
|
||||
2019-07-28 13:19:29 &tauoverpi I will need to use it eventually
|
||||
2019-07-28 13:19:43 &tauoverpi however for now I can deal with constraint solving which is much easier
|
||||
2019-07-28 13:20:37 &tauoverpi It's also much faster
|
||||
2019-07-28 13:23:10 &tauoverpi Marlin: if you use my channel you can test it and see (just packaged solvespace)
|
||||
2019-07-28 13:23:40 &tauoverpi I'll get around to guix main eventually (need to fix license, etc)
|
||||
2019-07-28 11:46:41 yorick Has a really nice case with it and had some repairs and stuff done, plus the prototypes are handmade
|
||||
2019-07-28 11:46:47 yorick And I got it for free
|
||||
2019-07-28 11:47:06 whirlpool.spectrum thats pretty neat
|
||||
2019-07-28 11:47:31 yorick Still needed some work though and the local music shop in Minnesota couldn't fix it up
|
||||
2019-07-28 11:48:08 yorick Low string rattles because it's not perfectly straight at the joint of the body and neck
|
||||
2019-07-28 11:48:29 yorick (It's acoustic I never specified)
|
||||
2019-07-28 11:48:58 yorick I have another a cheap one but that one's at my mom's so I have neither instrument
|
||||
2019-07-28 11:48:58 Also accordion is stuck over at my dad's
|
||||
2019-07-28 11:49:08 yorick Hey levy add accordion to your game
|
||||
2019-07-28 11:49:47 whirlpool.spectrum while you're at it you might as well start going exotic with bongo drums
|
||||
2019-07-28 11:51:11 yorick I want to learn drums
|
||||
2019-07-28 11:51:14 yorick Drums are cool
|
||||
2019-07-28 12:01:24 &tauoverpi aye, dumb solution worked
|
||||
2019-07-28 12:03:35 &tauoverpi just (copy-recursively .. ..)
|
||||
2019-07-28 12:20:48 &tauoverpi finally
|
||||
2019-07-28 12:20:59 &tauoverpi can avoid blender for a bit longer
|
||||
2019-07-28 12:25:29 &tauoverpi solvespace is really nice
|
||||
2019-07-28 13:09:00 marlin1113 Why would you want to avoid blender?
|
||||
2019-07-28 13:09:03 marlin1113 Blender the best
|
||||
2019-07-28 13:19:05 &tauoverpi because it's a pain to learn
|
||||
2019-07-28 13:19:12 &tauoverpi and I prefer constraints
|
||||
2019-07-28 13:19:29 &tauoverpi I will need to use it eventually
|
||||
2019-07-28 13:19:43 &tauoverpi however for now I can deal with constraint solving which is much easier
|
||||
2019-07-28 13:20:37 &tauoverpi It's also much faster
|
||||
2019-07-28 13:23:10 &tauoverpi Marlin: if you use my channel you can test it and see (just packaged solvespace)
|
||||
2019-07-28 13:23:40 &tauoverpi I'll get around to guix main eventually (need to fix license, etc)
|
||||
2019-07-28 14:02:04 marlin1113 levy blender is easy
|
||||
2019-07-28 14:02:20 marlin1113 U really just need to get the interface and the naming for shortcutd
|
||||
2019-07-28 14:02:27 marlin1113 which isn't that hard
|
||||
2019-07-28 14:02:37 marlin1113 u just need to spend some time playing around
|
||||
2019-07-28 14:04:20 marlin1113 > In reply to @tauoverpi:feneas.org
|
||||
2019-07-28 14:04:20 > and I prefer constraints
|
||||
2019-07-28 14:04:20 Blender has it
|
||||
2019-07-28 14:09:59 &tauoverpi it's a pain
|
||||
2019-07-28 14:10:43 &tauoverpi I've already tried
|
||||
2019-07-28 14:14:43 &tauoverpi this -> blender -> godot
|
||||
2019-07-28 14:23:43 &tauoverpi it's also not as resource intensive which helps
|
||||
2019-07-28 14:23:52 &tauoverpi my x220 doesn't like blender much
|
@ -0,0 +1,58 @@
|
||||
2019-06-09 22:10:20 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:36:41 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:36:50 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:37:03 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:37:04 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:37:40 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:37:52 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:40:15 mrled <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:40:30 mrled <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:40:39 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:40:49 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:41:11 mrled <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:41:59 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:42:24 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:43:02 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:43:17 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:45:24 mrled <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:45:46 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:45:57 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:46:00 mrled <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:46:07 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:46:29 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:46:39 mrled <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:46:42 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:46:43 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:47:17 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-10 00:01:32 @wblj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-10 00:01:40 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-10 00:01:41 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 22:10:20 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:36:41 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:36:50 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:37:03 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:37:04 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:37:40 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:37:52 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:40:15 mrled <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:40:30 mrled <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:40:39 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:40:49 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:41:11 mrled <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:41:59 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:42:24 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:43:02 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:43:17 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:45:24 mrled <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:45:46 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:45:57 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:46:00 mrled <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:46:07 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:46:29 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:46:39 mrled <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:46:42 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:46:43 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-09 23:47:17 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-10 00:01:32 @wblj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-10 00:01:40 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
||||
2019-06-10 00:01:41 &jowj <Unable to decrypt: The sender's device has not sent us the keys for this message>
|
@ -0,0 +1,453 @@
|
||||
2019-07-28 03:42:17 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 03:42:17 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 03:42:17 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 03:42:17 -- matrix: received certificate
|
||||
2019-07-28 03:42:17 - certificate info:
|
||||
2019-07-28 03:42:17 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 03:42:17 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 03:42:17 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 03:42:17 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 03:42:17 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 03:42:17 sha256WithRSAEncryption
|
||||
2019-07-28 03:42:17 - period of validity:
|
||||
2019-07-28 03:42:17 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 03:42:17 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 03:42:17 - fingerprints:
|
||||
2019-07-28 03:42:17 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 03:42:17 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 03:42:17 -- matrix: Logging in...
|
||||
2019-07-28 03:42:18 =!= matrix: Error: LoginError: 403 Invalid password
|
||||
2019-07-28 03:42:18 -- matrix: disconnected from server
|
||||
2019-07-28 03:42:18 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 03:42:28 -- matrix: reconnecting to server...
|
||||
2019-07-28 03:42:28 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 03:42:28 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 03:42:28 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 03:42:28 -- matrix: received certificate
|
||||
2019-07-28 03:42:28 - certificate info:
|
||||
2019-07-28 03:42:28 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 03:42:28 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 03:42:28 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 03:42:28 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 03:42:28 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 03:42:28 sha256WithRSAEncryption
|
||||
2019-07-28 03:42:28 - period of validity:
|
||||
2019-07-28 03:42:28 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 03:42:28 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 03:42:28 - fingerprints:
|
||||
2019-07-28 03:42:28 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 03:42:28 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 03:42:28 -- matrix: Logging in...
|
||||
2019-07-28 03:42:29 =!= matrix: Error: LoginError: 403 Invalid password
|
||||
2019-07-28 03:42:29 -- matrix: disconnected from server
|
||||
2019-07-28 03:42:29 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 03:42:39 -- matrix: reconnecting to server...
|
||||
2019-07-28 03:42:39 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 03:42:39 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 03:42:39 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 03:42:39 -- matrix: received certificate
|
||||
2019-07-28 03:42:39 - certificate info:
|
||||
2019-07-28 03:42:39 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 03:42:39 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 03:42:39 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 03:42:39 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 03:42:39 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 03:42:39 sha256WithRSAEncryption
|
||||
2019-07-28 03:42:39 - period of validity:
|
||||
2019-07-28 03:42:39 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 03:42:39 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 03:42:39 - fingerprints:
|
||||
2019-07-28 03:42:39 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 03:42:39 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 03:42:39 -- matrix: Logging in...
|
||||
2019-07-28 03:42:40 =!= matrix: Error: LoginError: 403 Invalid password
|
||||
2019-07-28 03:42:40 -- matrix: disconnected from server
|
||||
2019-07-28 03:42:40 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 03:42:50 -- matrix: reconnecting to server...
|
||||
2019-07-28 03:42:50 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 03:42:50 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 03:42:50 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 03:42:50 -- matrix: received certificate
|
||||
2019-07-28 03:42:50 - certificate info:
|
||||
2019-07-28 03:42:50 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 03:42:50 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 03:42:50 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 03:42:50 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 03:42:50 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 03:42:50 sha256WithRSAEncryption
|
||||
2019-07-28 03:42:50 - period of validity:
|
||||
2019-07-28 03:42:50 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 03:42:50 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 03:42:50 - fingerprints:
|
||||
2019-07-28 03:42:50 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 03:42:50 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 03:42:50 -- matrix: Logging in...
|
||||
2019-07-28 03:42:51 =!= matrix: Error: LoginError: 403 Invalid password
|
||||
2019-07-28 03:42:51 -- matrix: disconnected from server
|
||||
2019-07-28 03:42:51 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 03:43:01 -- matrix: reconnecting to server...
|
||||
2019-07-28 03:43:01 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 03:43:01 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 03:43:01 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 03:43:01 -- matrix: received certificate
|
||||
2019-07-28 03:43:01 - certificate info:
|
||||
2019-07-28 03:43:01 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 03:43:01 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 03:43:01 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 03:43:01 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 03:43:01 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 03:43:01 sha256WithRSAEncryption
|
||||
2019-07-28 03:43:01 - period of validity:
|
||||
2019-07-28 03:43:01 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 03:43:01 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 03:43:01 - fingerprints:
|
||||
2019-07-28 03:43:01 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 03:43:01 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 03:43:01 -- matrix: Logging in...
|
||||
2019-07-28 03:43:02 =!= matrix: Error: LoginError: 403 Invalid password
|
||||
2019-07-28 03:43:02 -- matrix: disconnected from server
|
||||
2019-07-28 03:43:02 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 03:43:12 -- matrix: reconnecting to server...
|
||||
2019-07-28 03:43:12 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 03:43:12 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 03:43:12 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 03:43:12 -- matrix: received certificate
|
||||
2019-07-28 03:43:12 - certificate info:
|
||||
2019-07-28 03:43:12 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 03:43:12 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 03:43:12 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 03:43:12 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 03:43:12 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 03:43:12 sha256WithRSAEncryption
|
||||
2019-07-28 03:43:12 - period of validity:
|
||||
2019-07-28 03:43:12 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 03:43:12 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 03:43:12 - fingerprints:
|
||||
2019-07-28 03:43:12 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 03:43:12 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 03:43:12 -- matrix: Logging in...
|
||||
2019-07-28 03:43:13 =!= matrix: Error: LoginError: 403 Invalid password
|
||||
2019-07-28 03:43:13 -- matrix: disconnected from server
|
||||
2019-07-28 03:43:13 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 03:43:23 -- matrix: reconnecting to server...
|
||||
2019-07-28 03:43:23 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 03:43:23 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 03:43:23 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 03:43:23 -- matrix: received certificate
|
||||
2019-07-28 03:43:23 - certificate info:
|
||||
2019-07-28 03:43:23 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 03:43:23 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 03:43:23 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 03:43:23 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 03:43:23 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 03:43:23 sha256WithRSAEncryption
|
||||
2019-07-28 03:43:23 - period of validity:
|
||||
2019-07-28 03:43:23 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 03:43:23 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 03:43:23 - fingerprints:
|
||||
2019-07-28 03:43:23 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 03:43:23 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 03:43:23 -- matrix: Logging in...
|
||||
2019-07-28 03:43:24 =!= matrix: Error: LoginError: 403 Invalid password
|
||||
2019-07-28 03:43:24 -- matrix: disconnected from server
|
||||
2019-07-28 03:43:24 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 03:43:34 -- matrix: reconnecting to server...
|
||||
2019-07-28 03:43:34 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 03:43:34 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 03:43:34 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 03:43:34 -- matrix: received certificate
|
||||
2019-07-28 03:43:34 - certificate info:
|
||||
2019-07-28 03:43:34 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 03:43:34 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 03:43:34 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 03:43:34 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 03:43:34 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 03:43:34 sha256WithRSAEncryption
|
||||
2019-07-28 03:43:34 - period of validity:
|
||||
2019-07-28 03:43:34 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 03:43:34 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 03:43:34 - fingerprints:
|
||||
2019-07-28 03:43:34 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 03:43:34 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 03:43:34 -- matrix: Logging in...
|
||||
2019-07-28 03:43:35 =!= matrix: Error: LoginError: 403 Invalid password
|
||||
2019-07-28 03:43:35 -- matrix: disconnected from server
|
||||
2019-07-28 03:43:35 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 03:43:45 -- matrix: reconnecting to server...
|
||||
2019-07-28 03:43:45 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 03:43:45 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 03:43:45 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 03:43:45 -- matrix: received certificate
|
||||
2019-07-28 03:43:45 - certificate info:
|
||||
2019-07-28 03:43:45 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 03:43:45 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 03:43:45 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 03:43:45 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 03:43:45 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 03:43:45 sha256WithRSAEncryption
|
||||
2019-07-28 03:43:45 - period of validity:
|
||||
2019-07-28 03:43:45 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 03:43:45 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 03:43:45 - fingerprints:
|
||||
2019-07-28 03:43:45 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 03:43:45 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 03:43:45 -- matrix: Logging in...
|
||||
2019-07-28 03:43:46 =!= matrix: Error: LoginError: 403 Invalid password
|
||||
2019-07-28 03:43:46 -- matrix: disconnected from server
|
||||
2019-07-28 03:43:46 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 03:43:56 -- matrix: reconnecting to server...
|
||||
2019-07-28 03:43:56 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 03:43:56 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 03:43:56 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 03:43:56 -- matrix: received certificate
|
||||
2019-07-28 03:43:56 - certificate info:
|
||||
2019-07-28 03:43:56 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 03:43:56 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 03:43:56 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 03:43:56 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 03:43:56 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 03:43:56 sha256WithRSAEncryption
|
||||
2019-07-28 03:43:56 - period of validity:
|
||||
2019-07-28 03:43:56 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 03:43:56 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 03:43:56 - fingerprints:
|
||||
2019-07-28 03:43:56 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 03:43:56 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 03:43:56 -- matrix: Logging in...
|
||||
2019-07-28 03:43:57 =!= matrix: Error: LoginError: 403 Invalid password
|
||||
2019-07-28 03:43:57 -- matrix: disconnected from server
|
||||
2019-07-28 03:43:57 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 03:44:07 -- matrix: reconnecting to server...
|
||||
2019-07-28 03:44:07 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 03:44:07 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 03:44:07 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 03:44:07 -- matrix: received certificate
|
||||
2019-07-28 03:44:07 - certificate info:
|
||||
2019-07-28 03:44:07 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 03:44:07 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 03:44:07 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 03:44:07 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 03:44:07 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 03:44:07 sha256WithRSAEncryption
|
||||
2019-07-28 03:44:07 - period of validity:
|
||||
2019-07-28 03:44:07 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 03:44:07 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 03:44:07 - fingerprints:
|
||||
2019-07-28 03:44:07 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 03:44:07 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 03:44:07 -- matrix: Logging in...
|
||||
2019-07-28 03:44:08 =!= matrix: Error: LoginError: 403 Invalid password
|
||||
2019-07-28 03:44:08 -- matrix: disconnected from server
|
||||
2019-07-28 03:44:08 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 03:44:14 -- matrix: disconnected from server
|
||||
2019-07-28 03:46:57 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 03:46:57 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 03:46:57 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 03:46:57 -- matrix: received certificate
|
||||
2019-07-28 03:46:57 - certificate info:
|
||||
2019-07-28 03:46:57 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 03:46:57 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 03:46:57 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 03:46:57 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 03:46:57 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 03:46:57 sha256WithRSAEncryption
|
||||
2019-07-28 03:46:57 - period of validity:
|
||||
2019-07-28 03:46:57 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 03:46:57 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 03:46:57 - fingerprints:
|
||||
2019-07-28 03:46:57 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 03:46:57 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 03:46:57 -- matrix: Logging in...
|
||||
2019-07-28 03:46:58 =!= matrix: Error: LoginError: 403 Invalid password
|
||||
2019-07-28 03:46:58 -- matrix: disconnected from server
|
||||
2019-07-28 03:46:58 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 03:47:08 -- matrix: disconnected from server
|
||||
2019-07-28 03:50:52 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 03:50:52 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 03:50:52 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 03:50:52 -- matrix: received certificate
|
||||
2019-07-28 03:50:52 - certificate info:
|
||||
2019-07-28 03:50:52 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 03:50:52 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 03:50:52 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 03:50:52 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 03:50:52 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 03:50:52 sha256WithRSAEncryption
|
||||
2019-07-28 03:50:52 - period of validity:
|
||||
2019-07-28 03:50:52 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 03:50:52 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 03:50:52 - fingerprints:
|
||||
2019-07-28 03:50:52 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 03:50:52 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 03:50:52 -- matrix: Logging in...
|
||||
2019-07-28 03:50:53 =!= matrix: Error: LoginError: 403 Invalid password
|
||||
2019-07-28 03:50:53 -- matrix: disconnected from server
|
||||
2019-07-28 03:50:53 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 03:51:03 -- matrix: reconnecting to server...
|
||||
2019-07-28 03:51:03 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 03:51:03 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 03:51:03 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 03:51:03 -- matrix: received certificate
|
||||
2019-07-28 03:51:03 - certificate info:
|
||||
2019-07-28 03:51:03 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 03:51:03 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 03:51:03 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 03:51:03 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 03:51:03 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 03:51:03 sha256WithRSAEncryption
|
||||
2019-07-28 03:51:03 - period of validity:
|
||||
2019-07-28 03:51:03 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 03:51:03 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 03:51:03 - fingerprints:
|
||||
2019-07-28 03:51:03 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 03:51:03 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 03:51:03 -- matrix: Logging in...
|
||||
2019-07-28 03:51:04 =!= matrix: Error: LoginError: 403 Invalid password
|
||||
2019-07-28 03:51:04 -- matrix: disconnected from server
|
||||
2019-07-28 03:51:04 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 03:51:09 -- matrix: disconnected from server
|
||||
2019-07-28 03:51:43 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 03:51:43 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 03:51:43 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 03:51:43 -- matrix: received certificate
|
||||
2019-07-28 03:51:43 - certificate info:
|
||||
2019-07-28 03:51:43 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 03:51:43 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 03:51:43 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 03:51:43 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 03:51:43 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 03:51:43 sha256WithRSAEncryption
|
||||
2019-07-28 03:51:43 - period of validity:
|
||||
2019-07-28 03:51:43 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 03:51:43 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 03:51:43 - fingerprints:
|
||||
2019-07-28 03:51:43 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 03:51:43 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 03:51:43 -- matrix: Logging in...
|
||||
2019-07-28 03:51:48 -- matrix: Logged in as @jowj:awful.club
|
||||
2019-07-28 04:02:01 -- matrix: disconnected from server
|
||||
2019-07-28 04:02:04 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 04:02:04 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 04:02:04 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 04:02:04 -- matrix: received certificate
|
||||
2019-07-28 04:02:04 - certificate info:
|
||||
2019-07-28 04:02:04 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 04:02:04 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 04:02:04 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 04:02:04 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 04:02:04 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 04:02:04 sha256WithRSAEncryption
|
||||
2019-07-28 04:02:04 - period of validity:
|
||||
2019-07-28 04:02:04 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 04:02:04 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 04:02:04 - fingerprints:
|
||||
2019-07-28 04:02:04 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 04:02:04 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 04:02:04 -- matrix: Already logged in, syncing...
|
||||
2019-07-28 13:31:34 -- Error while reading from socket: error104 Connection reset by peer
|
||||
2019-07-28 13:31:34 -- matrix: disconnecting from server...
|
||||
2019-07-28 13:31:34 -- matrix: disconnected from server
|
||||
2019-07-28 13:31:34 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 13:31:45 -- matrix: reconnecting to server...
|
||||
2019-07-28 13:31:45 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 13:31:45 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 13:31:45 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 13:31:45 -- matrix: received certificate
|
||||
2019-07-28 13:31:45 - certificate info:
|
||||
2019-07-28 13:31:45 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 13:31:45 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 13:31:45 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 13:31:45 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 13:31:45 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 13:31:45 sha256WithRSAEncryption
|
||||
2019-07-28 13:31:45 - period of validity:
|
||||
2019-07-28 13:31:45 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 13:31:45 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 13:31:45 - fingerprints:
|
||||
2019-07-28 13:31:45 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 13:31:45 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 13:31:45 -- matrix: Already logged in, syncing...
|
||||
2019-07-28 14:03:14 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 14:03:14 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 14:03:14 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 14:03:14 -- matrix: received certificate
|
||||
2019-07-28 14:03:14 - certificate info:
|
||||
2019-07-28 14:03:14 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 14:03:14 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 14:03:14 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 14:03:14 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 14:03:14 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 14:03:14 sha256WithRSAEncryption
|
||||
2019-07-28 14:03:14 - period of validity:
|
||||
2019-07-28 14:03:14 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 14:03:14 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 14:03:14 - fingerprints:
|
||||
2019-07-28 14:03:14 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 14:03:14 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 14:03:14 -- matrix: Logging in...
|
||||
2019-07-28 14:03:15 =!= matrix: Error: LoginError: 403 Invalid password
|
||||
2019-07-28 14:03:15 -- matrix: disconnected from server
|
||||
2019-07-28 14:03:15 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 14:03:25 -- matrix: reconnecting to server...
|
||||
2019-07-28 14:03:25 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 14:03:25 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 14:03:25 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 14:03:25 -- matrix: received certificate
|
||||
2019-07-28 14:03:25 - certificate info:
|
||||
2019-07-28 14:03:25 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 14:03:25 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 14:03:25 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 14:03:25 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 14:03:25 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 14:03:25 sha256WithRSAEncryption
|
||||
2019-07-28 14:03:25 - period of validity:
|
||||
2019-07-28 14:03:25 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 14:03:25 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 14:03:25 - fingerprints:
|
||||
2019-07-28 14:03:25 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 14:03:25 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 14:03:25 -- matrix: Logging in...
|
||||
2019-07-28 14:03:26 =!= matrix: Error: LoginError: 403 Invalid password
|
||||
2019-07-28 14:03:26 -- matrix: disconnected from server
|
||||
2019-07-28 14:03:26 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 14:03:32 -- matrix: disconnected from server
|
||||
2019-07-28 14:08:27 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 14:08:27 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 14:08:27 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 14:08:27 -- matrix: received certificate
|
||||
2019-07-28 14:08:27 - certificate info:
|
||||
2019-07-28 14:08:27 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 14:08:27 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 14:08:27 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 14:08:27 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 14:08:27 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 14:08:27 sha256WithRSAEncryption
|
||||
2019-07-28 14:08:27 - period of validity:
|
||||
2019-07-28 14:08:27 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 14:08:27 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 14:08:27 - fingerprints:
|
||||
2019-07-28 14:08:27 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 14:08:27 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 14:08:27 -- matrix: Logging in...
|
||||
2019-07-28 14:08:28 -- matrix: Logged in as @jowj:awful.club
|
||||
2019-07-28 14:43:53 -- matrix: disconnected from server
|
||||
2019-07-28 14:43:53 -- matrix: reconnecting to server in 10 seconds
|
||||
2019-07-28 14:44:04 -- matrix: reconnecting to server...
|
||||
2019-07-28 14:44:04 -- matrix: Connecting to matrix.awful.club:443 (SSL)...
|
||||
2019-07-28 14:44:04 -- matrix: Doing SSL handshake...
|
||||
2019-07-28 14:44:04 -- matrix: Connected using TLSv1.3, and 256 bit TLS_AES_256_GCM_SHA384 cipher suite.
|
||||
2019-07-28 14:44:04 -- matrix: received certificate
|
||||
2019-07-28 14:44:04 - certificate info:
|
||||
2019-07-28 14:44:04 - subject: commonName=matrix.awful.club, serial number
|
||||
2019-07-28 14:44:04 03D2FAE5CFBAC8E87B3FFCD76EC20D7D2458
|
||||
2019-07-28 14:44:04 - issuer: countryName=US, organizationName=Let's Encrypt,
|
||||
2019-07-28 14:44:04 commonName=Let's Encrypt Authority X3
|
||||
2019-07-28 14:44:04 - key info: RSA key 2048 bits, signed using
|
||||
2019-07-28 14:44:04 sha256WithRSAEncryption
|
||||
2019-07-28 14:44:04 - period of validity:
|
||||
2019-07-28 14:44:04 Begins on: Jul 20 03:16:09 2019 GMT
|
||||
2019-07-28 14:44:04 Expires on: Oct 18 03:16:09 2019 GMT
|
||||
2019-07-28 14:44:04 - fingerprints:
|
||||
2019-07-28 14:44:04 SHA1: 08:A6:42:A2:A2:14:36:7F:62:E0:6A:4E:6C:AD:4D:03:A3:C9:9F:3D
|
||||
2019-07-28 14:44:04 SHA256: 96:BB:26:F7:DB:C9:25:FA:CA:FB:CD:12:EF:C5:AD:95:41:63:DD:BA:45:70:26:EF:CB:02:32:F1:62:64:8E:9B
|
||||
2019-07-28 14:44:04 -- matrix: Already logged in, syncing...
|
@ -0,0 +1,14 @@
|
||||
#
|
||||
# weechat -- lua.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[look]
|
||||
check_license = off
|
||||
eval_keep_context = on
|
@ -0,0 +1,70 @@
|
||||
#
|
||||
# weechat -- matrix.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[network]
|
||||
debug_buffer = off
|
||||
debug_category = all
|
||||
debug_level = error
|
||||
fetch_backlog_on_pgup = on
|
||||
lag_min_show = 500
|
||||
lag_reconnect = 90
|
||||
lazy_load_room_users = off
|
||||
max_backlog_sync_events = 10
|
||||
max_initial_sync_events = 30
|
||||
max_nicklist_users = 5000
|
||||
print_unconfirmed_messages = on
|
||||
read_markers_conditions = "${markers_enabled}"
|
||||
resending_ignores_devices = on
|
||||
typing_notice_conditions = "${typing_enabled}"
|
||||
|
||||
[look]
|
||||
bar_item_typing_notice_prefix = "Typing: "
|
||||
busy_sign = "?"
|
||||
code_block_margin = 2
|
||||
code_blocks = on
|
||||
disconnect_sign = "?"
|
||||
encrypted_room_sign = "?"
|
||||
encryption_warning_sign = "?? "
|
||||
human_buffer_names = off
|
||||
max_typing_notice_item_length = 50
|
||||
pygments_style = "native"
|
||||
redactions = strikethrough
|
||||
server_buffer = merge_with_core
|
||||
|
||||
[color]
|
||||
error_message_bg = default
|
||||
error_message_fg = darkgray
|
||||
quote_bg = default
|
||||
quote_fg = lightgreen
|
||||
unconfirmed_message_bg = default
|
||||
unconfirmed_message_fg = darkgray
|
||||
untagged_code_bg = default
|
||||
untagged_code_fg = blue
|
||||
|
||||
[server]
|
||||
awful.club.autoconnect = off
|
||||
awful.club.address = "matrix.awful.club"
|
||||
awful.club.port = 443
|
||||
awful.club.proxy = ""
|
||||
awful.club.ssl_verify = on
|
||||
awful.club.username = ""
|
||||
awful.club.password = ""
|
||||
awful.club.device_name = "Weechat Matrix"
|
||||
awful.club.autoreconnect_delay = 10
|
||||
awful-club.autoconnect = off
|
||||
awful-club.address = "matrix.awful.club"
|
||||
awful-club.port = 443
|
||||
awful-club.proxy = ""
|
||||
awful-club.ssl_verify = on
|
||||
awful-club.username = "jowj"
|
||||
awful-club.password = "${sec.data.awful-club}"
|
||||
awful-club.device_name = "Weechat Matrix"
|
||||
awful-club.autoreconnect_delay = 10
|
Binary file not shown.
@ -0,0 +1 @@
|
||||
AWBGQZPECG
|
@ -0,0 +1,14 @@
|
||||
#
|
||||
# weechat -- perl.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[look]
|
||||
check_license = off
|
||||
eval_keep_context = on
|
@ -0,0 +1,14 @@
|
||||
#
|
||||
# weechat -- plugins.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[var]
|
||||
|
||||
[desc]
|
@ -0,0 +1,14 @@
|
||||
#
|
||||
# weechat -- python.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[look]
|
||||
check_license = off
|
||||
eval_keep_context = on
|
@ -0,0 +1,610 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Weechat Matrix Protocol Script
|
||||
# Copyright © 2018 Damir Jelić <poljar@termina.org.uk>
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for
|
||||
# any purpose with or without fee is hereby granted, provided that the
|
||||
# above copyright notice and this permission notice appear in all copies.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
|
||||
# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
|
||||
# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import os
|
||||
import socket
|
||||
import ssl
|
||||
import textwrap
|
||||
# pylint: disable=redefined-builtin
|
||||
from builtins import str
|
||||
from itertools import chain
|
||||
# pylint: disable=unused-import
|
||||
from typing import Any, AnyStr, Deque, Dict, List, Optional, Set, Text, Tuple
|
||||
|
||||
import logbook
|
||||
import OpenSSL.crypto as crypto
|
||||
from future.utils import bytes_to_native_str as n
|
||||
from logbook import Logger, StreamHandler
|
||||
from nio import RemoteProtocolError, RemoteTransportError, TransportType
|
||||
|
||||
from matrix import globals as G
|
||||
from matrix.bar_items import (
|
||||
init_bar_items,
|
||||
matrix_bar_item_buffer_modes,
|
||||
matrix_bar_item_lag,
|
||||
matrix_bar_item_name,
|
||||
matrix_bar_item_plugin,
|
||||
matrix_bar_nicklist_count,
|
||||
matrix_bar_typing_notices_cb
|
||||
)
|
||||
from matrix.buffer import room_buffer_close_cb, room_buffer_input_cb
|
||||
# Weechat searches for the registered callbacks in the scope of the main script
|
||||
# file, import the callbacks here so weechat can find them.
|
||||
from matrix.commands import (hook_commands, hook_page_up,
|
||||
matrix_command_buf_clear_cb, matrix_command_cb,
|
||||
matrix_command_pgup_cb, matrix_invite_command_cb,
|
||||
matrix_join_command_cb, matrix_kick_command_cb,
|
||||
matrix_me_command_cb, matrix_part_command_cb,
|
||||
matrix_redact_command_cb, matrix_topic_command_cb,
|
||||
matrix_olm_command_cb, matrix_devices_command_cb,
|
||||
matrix_room_command_cb, matrix_uploads_command_cb,
|
||||
matrix_upload_command_cb, matrix_send_anyways_cb)
|
||||
from matrix.completion import (init_completion, matrix_command_completion_cb,
|
||||
matrix_debug_completion_cb,
|
||||
matrix_message_completion_cb,
|
||||
matrix_olm_device_completion_cb,
|
||||
matrix_olm_user_completion_cb,
|
||||
matrix_server_command_completion_cb,
|
||||
matrix_server_completion_cb,
|
||||
matrix_user_completion_cb,
|
||||
matrix_own_devices_completion_cb,
|
||||
matrix_room_completion_cb)
|
||||
from matrix.config import (MatrixConfig, config_log_category_cb,
|
||||
config_log_level_cb, config_server_buffer_cb,
|
||||
matrix_config_reload_cb, config_pgup_cb)
|
||||
from matrix.globals import SCRIPT_NAME, SERVERS, W, MAX_EVENTS
|
||||
from matrix.server import (MatrixServer, create_default_server,
|
||||
matrix_config_server_change_cb,
|
||||
matrix_config_server_read_cb,
|
||||
matrix_config_server_write_cb, matrix_timer_cb,
|
||||
send_cb, matrix_load_users_cb,
|
||||
matrix_partial_sync_cb)
|
||||
from matrix.utf import utf8_decode
|
||||
from matrix.utils import server_buffer_prnt, server_buffer_set_title
|
||||
|
||||
from matrix.uploads import UploadsBuffer, upload_cb
|
||||
|
||||
# yapf: disable
|
||||
WEECHAT_SCRIPT_NAME = SCRIPT_NAME
|
||||
WEECHAT_SCRIPT_DESCRIPTION = "matrix chat plugin" # type: str
|
||||
WEECHAT_SCRIPT_AUTHOR = "Damir Jelić <poljar@termina.org.uk>" # type: str
|
||||
WEECHAT_SCRIPT_VERSION = "0.1" # type: str
|
||||
WEECHAT_SCRIPT_LICENSE = "ISC" # type: str
|
||||
# yapf: enable
|
||||
|
||||
|
||||
logger = Logger("matrix-cli")
|
||||
|
||||
|
||||
def print_certificate_info(buff, sock, cert):
|
||||
cert_pem = ssl.DER_cert_to_PEM_cert(sock.getpeercert(True))
|
||||
|
||||
x509 = crypto.load_certificate(crypto.FILETYPE_PEM, cert_pem)
|
||||
|
||||
public_key = x509.get_pubkey()
|
||||
|
||||
key_type = ("RSA" if public_key.type() == crypto.TYPE_RSA else "DSA")
|
||||
key_size = str(public_key.bits())
|
||||
sha256_fingerprint = x509.digest(n(b"SHA256"))
|
||||
sha1_fingerprint = x509.digest(n(b"SHA1"))
|
||||
signature_algorithm = x509.get_signature_algorithm()
|
||||
|
||||
key_info = ("key info: {key_type} key {bits} bits, signed using "
|
||||
"{algo}").format(
|
||||
key_type=key_type, bits=key_size,
|
||||
algo=n(signature_algorithm))
|
||||
|
||||
validity_info = (" Begins on: {before}\n"
|
||||
" Expires on: {after}").format(
|
||||
before=cert["notBefore"], after=cert["notAfter"])
|
||||
|
||||
rdns = chain(*cert["subject"])
|
||||
subject = ", ".join(["{}={}".format(name, value) for name, value in rdns])
|
||||
|
||||
rdns = chain(*cert["issuer"])
|
||||
issuer = ", ".join(["{}={}".format(name, value) for name, value in rdns])
|
||||
|
||||
subject = "subject: {sub}, serial number {serial}".format(
|
||||
sub=subject, serial=cert["serialNumber"])
|
||||
|
||||
issuer = "issuer: {issuer}".format(issuer=issuer)
|
||||
|
||||
fingerprints = (" SHA1: {}\n"
|
||||
" SHA256: {}").format(n(sha1_fingerprint),
|
||||
n(sha256_fingerprint))
|
||||
|
||||
wrapper = textwrap.TextWrapper(
|
||||
initial_indent=" - ", subsequent_indent=" ")
|
||||
|
||||
message = ("{prefix}matrix: received certificate\n"
|
||||
" - certificate info:\n"
|
||||
"{subject}\n"
|
||||
"{issuer}\n"
|
||||
"{key_info}\n"
|
||||
" - period of validity:\n{validity_info}\n"
|
||||
" - fingerprints:\n{fingerprints}").format(
|
||||
prefix=W.prefix("network"),
|
||||
subject=wrapper.fill(subject),
|
||||
issuer=wrapper.fill(issuer),
|
||||
key_info=wrapper.fill(key_info),
|
||||
validity_info=validity_info,
|
||||
fingerprints=fingerprints)
|
||||
|
||||
W.prnt(buff, message)
|
||||
|
||||
|
||||
def wrap_socket(server, file_descriptor):
|
||||
# type: (MatrixServer, int) -> None
|
||||
sock = None # type: socket.socket
|
||||
|
||||
temp_socket = socket.fromfd(file_descriptor, socket.AF_INET,
|
||||
socket.SOCK_STREAM)
|
||||
|
||||
# fromfd() duplicates the file descriptor, we can close the one we got from
|
||||
# weechat now since we use the one from our socket when calling hook_fd()
|
||||
os.close(file_descriptor)
|
||||
|
||||
# For python 2.7 wrap_socket() doesn't work with sockets created from an
|
||||
# file descriptor because fromfd() doesn't return a wrapped socket, the bug
|
||||
# was fixed for python 3, more info: https://bugs.python.org/issue13942
|
||||
# pylint: disable=protected-access,unidiomatic-typecheck
|
||||
if type(temp_socket) == socket._socket.socket:
|
||||
# pylint: disable=no-member
|
||||
sock = socket._socketobject(_sock=temp_socket)
|
||||
else:
|
||||
sock = temp_socket
|
||||
|
||||
# fromfd() duplicates the file descriptor but doesn't retain it's blocking
|
||||
# non-blocking attribute, so mark the socket as non-blocking even though
|
||||
# weechat already did that for us
|
||||
sock.setblocking(False)
|
||||
|
||||
message = "{prefix}matrix: Doing SSL handshake...".format(
|
||||
prefix=W.prefix("network"))
|
||||
W.prnt(server.server_buffer, message)
|
||||
|
||||
ssl_socket = server.ssl_context.wrap_socket(
|
||||
sock, do_handshake_on_connect=False,
|
||||
server_hostname=server.address) # type: ssl.SSLSocket
|
||||
|
||||
server.socket = ssl_socket
|
||||
|
||||
try_ssl_handshake(server)
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def ssl_fd_cb(server_name, file_descriptor):
|
||||
server = SERVERS[server_name]
|
||||
|
||||
if server.ssl_hook:
|
||||
W.unhook(server.ssl_hook)
|
||||
server.ssl_hook = None
|
||||
|
||||
try_ssl_handshake(server)
|
||||
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
def try_ssl_handshake(server):
|
||||
sock = server.socket
|
||||
|
||||
while True:
|
||||
try:
|
||||
sock.do_handshake()
|
||||
|
||||
cipher = sock.cipher()
|
||||
cipher_message = ("{prefix}matrix: Connected using {tls}, and "
|
||||
"{bit} bit {cipher} cipher suite.").format(
|
||||
prefix=W.prefix("network"),
|
||||
tls=cipher[1],
|
||||
bit=cipher[2],
|
||||
cipher=cipher[0])
|
||||
W.prnt(server.server_buffer, cipher_message)
|
||||
|
||||
cert = sock.getpeercert()
|
||||
if cert:
|
||||
print_certificate_info(server.server_buffer, sock, cert)
|
||||
|
||||
finalize_connection(server)
|
||||
|
||||
return True
|
||||
|
||||
except ssl.SSLWantReadError:
|
||||
hook = W.hook_fd(server.socket.fileno(), 1, 0, 0, "ssl_fd_cb",
|
||||
server.name)
|
||||
server.ssl_hook = hook
|
||||
|
||||
return False
|
||||
|
||||
except ssl.SSLWantWriteError:
|
||||
hook = W.hook_fd(server.socket.fileno(), 0, 1, 0, "ssl_fd_cb",
|
||||
server.name)
|
||||
server.ssl_hook = hook
|
||||
|
||||
return False
|
||||
|
||||
except (ssl.SSLError, ssl.CertificateError, socket.error) as error:
|
||||
try:
|
||||
str_error = error.reason if error.reason else "Unknown error"
|
||||
except AttributeError:
|
||||
str_error = str(error)
|
||||
|
||||
message = ("{prefix}Error while doing SSL handshake"
|
||||
": {error}").format(
|
||||
prefix=W.prefix("network"), error=str_error)
|
||||
|
||||
server_buffer_prnt(server, message)
|
||||
|
||||
server_buffer_prnt(
|
||||
server, ("{prefix}matrix: disconnecting from server..."
|
||||
).format(prefix=W.prefix("network")))
|
||||
|
||||
server.disconnect()
|
||||
return False
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def receive_cb(server_name, file_descriptor):
|
||||
server = SERVERS[server_name]
|
||||
|
||||
while True:
|
||||
try:
|
||||
data = server.socket.recv(4096)
|
||||
except ssl.SSLWantReadError:
|
||||
break
|
||||
except socket.error as error:
|
||||
errno = "error" + str(error.errno) + " " if error.errno else ""
|
||||
str_error = error.strerror if error.strerror else "Unknown error"
|
||||
str_error = errno + str_error
|
||||
|
||||
message = ("{prefix}Error while reading from "
|
||||
"socket: {error}").format(
|
||||
prefix=W.prefix("network"), error=str_error)
|
||||
|
||||
server_buffer_prnt(server, message)
|
||||
|
||||
server_buffer_prnt(
|
||||
server, ("{prefix}matrix: disconnecting from server..."
|
||||
).format(prefix=W.prefix("network")))
|
||||
|
||||
server.disconnect()
|
||||
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
if not data:
|
||||
server_buffer_prnt(
|
||||
server,
|
||||
"{prefix}matrix: Error while reading from socket".format(
|
||||
prefix=W.prefix("network")))
|
||||
server_buffer_prnt(
|
||||
server, ("{prefix}matrix: disconnecting from server..."
|
||||
).format(prefix=W.prefix("network")))
|
||||
|
||||
server.disconnect()
|
||||
break
|
||||
|
||||
try:
|
||||
server.client.receive(data)
|
||||
except (RemoteTransportError, RemoteProtocolError) as e:
|
||||
server.error(str(e))
|
||||
server.disconnect()
|
||||
break
|
||||
|
||||
response = server.client.next_response(MAX_EVENTS)
|
||||
|
||||
# Check if we need to send some data back
|
||||
data_to_send = server.client.data_to_send()
|
||||
|
||||
if data_to_send:
|
||||
server.send(data_to_send)
|
||||
|
||||
if response:
|
||||
server.handle_response(response)
|
||||
break
|
||||
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
def finalize_connection(server):
|
||||
hook = W.hook_fd(
|
||||
server.socket.fileno(),
|
||||
1,
|
||||
0,
|
||||
0,
|
||||
"receive_cb",
|
||||
server.name
|
||||
)
|
||||
|
||||
server.fd_hook = hook
|
||||
server.connected = True
|
||||
server.connecting = False
|
||||
server.reconnect_delay = 0
|
||||
|
||||
negotiated_protocol = (server.socket.selected_alpn_protocol() or
|
||||
server.socket.selected_npn_protocol())
|
||||
|
||||
if negotiated_protocol == "h2":
|
||||
server.transport_type = TransportType.HTTP2
|
||||
else:
|
||||
server.transport_type = TransportType.HTTP
|
||||
|
||||
data = server.client.connect(server.transport_type)
|
||||
server.send(data)
|
||||
|
||||
server.login()
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def connect_cb(data, status, gnutls_rc, sock, error, ip_address):
|
||||
# pylint: disable=too-many-arguments,too-many-branches
|
||||
status_value = int(status) # type: int
|
||||
server = SERVERS[data]
|
||||
|
||||
if status_value == W.WEECHAT_HOOK_CONNECT_OK:
|
||||
file_descriptor = int(sock) # type: int
|
||||
server.numeric_address = ip_address
|
||||
server_buffer_set_title(server)
|
||||
|
||||
wrap_socket(server, file_descriptor)
|
||||
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
elif status_value == W.WEECHAT_HOOK_CONNECT_ADDRESS_NOT_FOUND:
|
||||
server.error('{address} not found'.format(address=ip_address))
|
||||
|
||||
elif status_value == W.WEECHAT_HOOK_CONNECT_IP_ADDRESS_NOT_FOUND:
|
||||
server.error('IP address not found')
|
||||
|
||||
elif status_value == W.WEECHAT_HOOK_CONNECT_CONNECTION_REFUSED:
|
||||
server.error('Connection refused')
|
||||
|
||||
elif status_value == W.WEECHAT_HOOK_CONNECT_PROXY_ERROR:
|
||||
server.error('Proxy fails to establish connection to server')
|
||||
|
||||
elif status_value == W.WEECHAT_HOOK_CONNECT_LOCAL_HOSTNAME_ERROR:
|
||||
server.error('Unable to set local hostname')
|
||||
|
||||
elif status_value == W.WEECHAT_HOOK_CONNECT_GNUTLS_INIT_ERROR:
|
||||
server.error('TLS init error')
|
||||
|
||||
elif status_value == W.WEECHAT_HOOK_CONNECT_GNUTLS_HANDSHAKE_ERROR:
|
||||
server.error('TLS Handshake failed')
|
||||
|
||||
elif status_value == W.WEECHAT_HOOK_CONNECT_MEMORY_ERROR:
|
||||
server.error('Not enough memory')
|
||||
|
||||
elif status_value == W.WEECHAT_HOOK_CONNECT_TIMEOUT:
|
||||
server.error('Timeout')
|
||||
|
||||
elif status_value == W.WEECHAT_HOOK_CONNECT_SOCKET_ERROR:
|
||||
server.error('Unable to create socket')
|
||||
else:
|
||||
server.error('Unexpected error: {status}'.format(status=status_value))
|
||||
|
||||
server.disconnect(reconnect=True)
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def room_close_cb(data, buffer):
|
||||
W.prnt("",
|
||||
"Buffer '%s' will be closed!" % W.buffer_get_string(buffer, "name"))
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_unload_cb():
|
||||
for server in SERVERS.values():
|
||||
server.config.free()
|
||||
|
||||
G.CONFIG.free()
|
||||
|
||||
# for server in SERVERS.values():
|
||||
# server.store_olm()
|
||||
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
def autoconnect(servers):
|
||||
for server in servers.values():
|
||||
if server.config.autoconnect:
|
||||
server.connect()
|
||||
|
||||
|
||||
def debug_buffer_close_cb(data, buffer):
|
||||
G.CONFIG.debug_buffer = ""
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
def server_buffer_cb(server_name, buffer, input_data):
|
||||
message = ("{}{}: this buffer is not a room buffer!").format(
|
||||
W.prefix("error"), SCRIPT_NAME)
|
||||
W.prnt(buffer, message)
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
class WeechatHandler(StreamHandler):
|
||||
def __init__(self, level=logbook.NOTSET, format_string=None, filter=None,
|
||||
bubble=False):
|
||||
StreamHandler.__init__(
|
||||
self,
|
||||
object(),
|
||||
level,
|
||||
format_string,
|
||||
None,
|
||||
filter,
|
||||
bubble
|
||||
)
|
||||
|
||||
def write(self, item):
|
||||
buf = ""
|
||||
|
||||
if G.CONFIG.network.debug_buffer:
|
||||
if not G.CONFIG.debug_buffer:
|
||||
G.CONFIG.debug_buffer = W.buffer_new(
|
||||
"Matrix Debug", "", "", "debug_buffer_close_cb", "")
|
||||
|
||||
buf = G.CONFIG.debug_buffer
|
||||
|
||||
W.prnt(buf, item)
|
||||
|
||||
|
||||
def buffer_switch_cb(_, _signal, buffer_ptr):
|
||||
"""Do some buffer operations when we switch buffers.
|
||||
|
||||
This function is called every time we switch a buffer. The pointer of
|
||||
the new buffer is given to us by weechat.
|
||||
|
||||
If it is one of our room buffers we check if the members for the room
|
||||
aren't fetched and fetch them now if they aren't.
|
||||
|
||||
Read receipts are send out from here as well.
|
||||
"""
|
||||
for server in SERVERS.values():
|
||||
if buffer_ptr == server.server_buffer:
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
if buffer_ptr not in server.buffers.values():
|
||||
continue
|
||||
|
||||
room_buffer = server.find_room_from_ptr(buffer_ptr)
|
||||
if not room_buffer:
|
||||
continue
|
||||
|
||||
if room_buffer.should_send_read_marker:
|
||||
event_id = room_buffer.last_event_id
|
||||
|
||||
# A buffer may not have any events, in that case no event id is
|
||||
# here returned
|
||||
if event_id:
|
||||
server.room_send_read_marker(
|
||||
room_buffer.room.room_id, event_id)
|
||||
room_buffer.last_read_event = event_id
|
||||
|
||||
if room_buffer.members_fetched:
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
room_id = room_buffer.room.room_id
|
||||
server.get_joined_members(room_id)
|
||||
|
||||
break
|
||||
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
def typing_notification_cb(data, signal, buffer_ptr):
|
||||
"""Send out typing notifications if the user is typing.
|
||||
|
||||
This function is called every time the input text is changed.
|
||||
It checks if we are on a buffer we own, and if we are sends out a typing
|
||||
notification if the room is configured to send them out.
|
||||
"""
|
||||
for server in SERVERS.values():
|
||||
room_buffer = server.find_room_from_ptr(buffer_ptr)
|
||||
if room_buffer:
|
||||
server.room_send_typing_notice(room_buffer)
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
if buffer_ptr == server.server_buffer:
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
def buffer_command_cb(data, _, command):
|
||||
"""Override the buffer command to allow switching buffers by short name."""
|
||||
command = command[7:].strip()
|
||||
|
||||
buffer_subcommands = ["list", "add", "clear", "move", "swap", "cycle",
|
||||
"merge", "unmerge", "hide", "unhide", "renumber",
|
||||
"close", "notify", "localvar", "set", "get"]
|
||||
|
||||
if not command:
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
command_words = command.split()
|
||||
|
||||
if len(command_words) >= 1:
|
||||
if command_words[0] in buffer_subcommands:
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
elif command_words[0].startswith("*"):
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
try:
|
||||
int(command_words[0])
|
||||
return W.WEECHAT_RC_OK
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
room_buffers = []
|
||||
|
||||
for server in SERVERS.values():
|
||||
room_buffers.extend(server.room_buffers.values())
|
||||
|
||||
sorted_buffers = sorted(
|
||||
room_buffers,
|
||||
key=lambda b: b.weechat_buffer.number
|
||||
)
|
||||
|
||||
for room_buffer in sorted_buffers:
|
||||
buffer = room_buffer.weechat_buffer
|
||||
|
||||
if command in buffer.short_name:
|
||||
displayed = W.current_buffer() == buffer._ptr
|
||||
|
||||
if displayed:
|
||||
continue
|
||||
|
||||
W.buffer_set(buffer._ptr, 'display', '1')
|
||||
return W.WEECHAT_RC_OK_EAT
|
||||
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
if W.register(WEECHAT_SCRIPT_NAME, WEECHAT_SCRIPT_AUTHOR,
|
||||
WEECHAT_SCRIPT_VERSION, WEECHAT_SCRIPT_LICENSE,
|
||||
WEECHAT_SCRIPT_DESCRIPTION, 'matrix_unload_cb', ''):
|
||||
|
||||
if not W.mkdir_home("matrix", 0o700):
|
||||
message = ("{prefix}matrix: Error creating session "
|
||||
"directory").format(prefix=W.prefix("error"))
|
||||
W.prnt("", message)
|
||||
|
||||
handler = WeechatHandler()
|
||||
handler.format_string = "{record.channel}: {record.message}"
|
||||
handler.push_application()
|
||||
|
||||
# TODO if this fails we should abort and unload the script.
|
||||
G.CONFIG = MatrixConfig()
|
||||
G.CONFIG.read()
|
||||
|
||||
hook_commands()
|
||||
init_bar_items()
|
||||
init_completion()
|
||||
|
||||
W.hook_command_run("/buffer", "buffer_command_cb", "")
|
||||
W.hook_signal("buffer_switch", "buffer_switch_cb", "")
|
||||
W.hook_signal("input_text_changed", "typing_notification_cb", "")
|
||||
|
||||
if not SERVERS:
|
||||
create_default_server(G.CONFIG)
|
||||
|
||||
autoconnect(SERVERS)
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,248 @@
|
||||
import datetime
|
||||
import random
|
||||
import string
|
||||
|
||||
WEECHAT_BASE_COLORS = {
|
||||
"black": "0",
|
||||
"red": "1",
|
||||
"green": "2",
|
||||
"brown": "3",
|
||||
"blue": "4",
|
||||
"magenta": "5",
|
||||
"cyan": "6",
|
||||
"default": "7",
|
||||
"gray": "8",
|
||||
"lightred": "9",
|
||||
"lightgreen": "10",
|
||||
"yellow": "11",
|
||||
"lightblue": "12",
|
||||
"lightmagenta": "13",
|
||||
"lightcyan": "14",
|
||||
"white": "15"
|
||||
}
|
||||
|
||||
|
||||
class MockObject(object):
|
||||
pass
|
||||
|
||||
class MockConfig(object):
|
||||
config_template = {
|
||||
'debug_buffer': None,
|
||||
'debug_category': None,
|
||||
'_ptr': None,
|
||||
'read': None,
|
||||
'free': None,
|
||||
'page_up_hook': None,
|
||||
'color': {
|
||||
'error_message_bg': "",
|
||||
'error_message_fg': "",
|
||||
'quote_bg': "",
|
||||
'quote_fg': "",
|
||||
'unconfirmed_message_bg': "",
|
||||
'unconfirmed_message_fg': "",
|
||||
'untagged_code_bg': "",
|
||||
'untagged_code_fg': "",
|
||||
},
|
||||
'upload_buffer': {
|
||||
'display': None,
|
||||
'move_line_down': None,
|
||||
'move_line_up': None,
|
||||
'render': None,
|
||||
},
|
||||
'look': {
|
||||
'bar_item_typing_notice_prefix': None,
|
||||
'busy_sign': None,
|
||||
'code_block_margin': None,
|
||||
'code_blocks': None,
|
||||
'disconnect_sign': None,
|
||||
'encrypted_room_sign': None,
|
||||
'encryption_warning_sign': None,
|
||||
'max_typing_notice_item_length': None,
|
||||
'pygments_style': None,
|
||||
'redactions': None,
|
||||
'server_buffer': None,
|
||||
},
|
||||
'network': {
|
||||
'debug_buffer': None,
|
||||
'debug_category': None,
|
||||
'debug_level': None,
|
||||
'fetch_backlog_on_pgup': None,
|
||||
'lag_min_show': None,
|
||||
'lag_reconnect': None,
|
||||
'lazy_load_room_users': None,
|
||||
'max_initial_sync_events': None,
|
||||
'max_nicklist_users': None,
|
||||
'print_unconfirmed_messages': None,
|
||||
'read_markers_conditions': None,
|
||||
'typing_notice_conditions': None,
|
||||
},
|
||||
}
|
||||
|
||||
def __init__(self):
|
||||
for category, options in MockConfig.config_template.items():
|
||||
if options:
|
||||
category_object = MockObject()
|
||||
for option, value in options.items():
|
||||
setattr(category_object, option, value)
|
||||
else:
|
||||
category_object = options
|
||||
|
||||
setattr(self, category, category_object)
|
||||
|
||||
|
||||
def color(color_name):
|
||||
# type: (str) -> str
|
||||
# yapf: disable
|
||||
escape_codes = []
|
||||
reset_code = "0"
|
||||
|
||||
def make_fg_color(color_code):
|
||||
return "38;5;{}".format(color_code)
|
||||
|
||||
def make_bg_color(color_code):
|
||||
return "48;5;{}".format(color_code)
|
||||
|
||||
attributes = {
|
||||
"bold": "1",
|
||||
"-bold": "21",
|
||||
"reverse": "27",
|
||||
"-reverse": "21",
|
||||
"italic": "3",
|
||||
"-italic": "23",
|
||||
"underline": "4",
|
||||
"-underline": "24",
|
||||
"reset": "0",
|
||||
"resetcolor": "39"
|
||||
}
|
||||
|
||||
short_attributes = {
|
||||
"*": "1",
|
||||
"!": "27",
|
||||
"/": "3",
|
||||
"_": "4"
|
||||
}
|
||||
|
||||
colors = color_name.split(",", 2)
|
||||
|
||||
fg_color = colors.pop(0)
|
||||
|
||||
bg_color = colors.pop(0) if colors else ""
|
||||
|
||||
if fg_color in attributes:
|
||||
escape_codes.append(attributes[fg_color])
|
||||
else:
|
||||
chars = list(fg_color)
|
||||
|
||||
for char in chars:
|
||||
if char in short_attributes:
|
||||
escape_codes.append(short_attributes[char])
|
||||
elif char == "|":
|
||||
reset_code = ""
|
||||
else:
|
||||
break
|
||||
|
||||
stripped_color = fg_color.lstrip("*_|/!")
|
||||
|
||||
if stripped_color in WEECHAT_BASE_COLORS:
|
||||
escape_codes.append(
|
||||
make_fg_color(WEECHAT_BASE_COLORS[stripped_color]))
|
||||
|
||||
elif stripped_color.isdigit():
|
||||
num_color = int(stripped_color)
|
||||
if 0 <= num_color < 256:
|
||||
escape_codes.append(make_fg_color(stripped_color))
|
||||
|
||||
if bg_color in WEECHAT_BASE_COLORS:
|
||||
escape_codes.append(make_bg_color(WEECHAT_BASE_COLORS[bg_color]))
|
||||
else:
|
||||
if bg_color.isdigit():
|
||||
num_color = int(bg_color)
|
||||
if 0 <= num_color < 256:
|
||||
escape_codes.append(make_bg_color(bg_color))
|
||||
|
||||
escape_string = "\033[{}{}m".format(reset_code, ";".join(escape_codes))
|
||||
|
||||
return escape_string
|
||||
|
||||
|
||||
def prefix(prefix_string):
|
||||
prefix_to_symbol = {
|
||||
"error": "=!=",
|
||||
"network": "--",
|
||||
"action": "*",
|
||||
"join": "-->",
|
||||
"quit": "<--"
|
||||
}
|
||||
|
||||
if prefix_string in prefix_to_symbol:
|
||||
return prefix_to_symbol[prefix]
|
||||
|
||||
return ""
|
||||
|
||||
|
||||
def prnt(_, message):
|
||||
print(message)
|
||||
|
||||
|
||||
def prnt_date_tags(_, date, tags_string, data):
|
||||
message = "{} {} [{}]".format(
|
||||
datetime.datetime.fromtimestamp(date),
|
||||
data,
|
||||
tags_string
|
||||
)
|
||||
print(message)
|
||||
|
||||
|
||||
def config_search_section(*_, **__):
|
||||
pass
|
||||
|
||||
|
||||
def config_new_option(*_, **__):
|
||||
pass
|
||||
|
||||
|
||||
def mkdir_home(*_, **__):
|
||||
return True
|
||||
|
||||
|
||||
def info_get(info, *_):
|
||||
if info == "nick_color_name":
|
||||
return random.choice(list(WEECHAT_BASE_COLORS.keys()))
|
||||
|
||||
return ""
|
||||
|
||||
|
||||
def buffer_new(*_, **__):
|
||||
return "".join(
|
||||
random.choice(string.ascii_uppercase + string.digits) for _ in range(8)
|
||||
)
|
||||
|
||||
|
||||
def buffer_set(*_, **__):
|
||||
return
|
||||
|
||||
|
||||
def buffer_get_string(_ptr, property):
|
||||
if property == "localvar_type":
|
||||
return "channel"
|
||||
return ""
|
||||
|
||||
|
||||
def nicklist_add_group(*_, **__):
|
||||
return
|
||||
|
||||
|
||||
def nicklist_add_nick(*_, **__):
|
||||
return
|
||||
|
||||
|
||||
def nicklist_remove_nick(*_, **__):
|
||||
return
|
||||
|
||||
|
||||
def nicklist_search_nick(*args, **kwargs):
|
||||
return buffer_new(args, kwargs)
|
||||
|
||||
|
||||
def string_remove_color(message, _):
|
||||
return message
|
@ -0,0 +1,202 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright © 2018, 2019 Damir Jelić <poljar@termina.org.uk>
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for
|
||||
# any purpose with or without fee is hereby granted, provided that the
|
||||
# above copyright notice and this permission notice appear in all copies.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
|
||||
# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
|
||||
# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from . import globals as G
|
||||
from .globals import SERVERS, W
|
||||
from .utf import utf8_decode
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_bar_item_plugin(data, item, window, buffer, extra_info):
|
||||
# pylint: disable=unused-argument
|
||||
for server in SERVERS.values():
|
||||
if buffer in server.buffers.values() or buffer == server.server_buffer:
|
||||
return "matrix{color}/{color_fg}{name}".format(
|
||||
color=W.color("bar_delim"),
|
||||
color_fg=W.color("bar_fg"),
|
||||
name=server.name,
|
||||
)
|
||||
|
||||
ptr_plugin = W.buffer_get_pointer(buffer, "plugin")
|
||||
name = W.plugin_get_name(ptr_plugin)
|
||||
|
||||
return name
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_bar_item_name(data, item, window, buffer, extra_info):
|
||||
# pylint: disable=unused-argument
|
||||
for server in SERVERS.values():
|
||||
if buffer in server.buffers.values():
|
||||
color = (
|
||||
"status_name_ssl"
|
||||
if server.ssl_context.check_hostname
|
||||
else "status_name"
|
||||
)
|
||||
|
||||
room_buffer = server.find_room_from_ptr(buffer)
|
||||
room = room_buffer.room
|
||||
|
||||
return "{color}{name}".format(
|
||||
color=W.color(color), name=room.display_name
|
||||
)
|
||||
|
||||
if buffer == server.server_buffer:
|
||||
color = (
|
||||
"status_name_ssl"
|
||||
if server.ssl_context.check_hostname
|
||||
else "status_name"
|
||||
)
|
||||
|
||||
return "{color}server{del_color}[{color}{name}{del_color}]".format(
|
||||
color=W.color(color),
|
||||
del_color=W.color("bar_delim"),
|
||||
name=server.name,
|
||||
)
|
||||
|
||||
name = W.buffer_get_string(buffer, "name")
|
||||
|
||||
return "{}{}".format(W.color("status_name"), name)
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_bar_item_lag(data, item, window, buffer, extra_info):
|
||||
# pylint: disable=unused-argument
|
||||
for server in SERVERS.values():
|
||||
if buffer in server.buffers.values() or buffer == server.server_buffer:
|
||||
if server.lag >= G.CONFIG.network.lag_min_show:
|
||||
color = W.color("irc.color.item_lag_counting")
|
||||
if server.lag_done:
|
||||
color = W.color("irc.color.item_lag_finished")
|
||||
|
||||
lag = "{0:.3f}" if round(server.lag) < 1000 else "{0:.0f}"
|
||||
lag_string = "Lag: {color}{lag}{ncolor}".format(
|
||||
lag=lag.format((server.lag / 1000)),
|
||||
color=color,
|
||||
ncolor=W.color("reset"),
|
||||
)
|
||||
return lag_string
|
||||
return ""
|
||||
|
||||
return ""
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_bar_item_buffer_modes(data, item, window, buffer, extra_info):
|
||||
# pylint: disable=unused-argument
|
||||
for server in SERVERS.values():
|
||||
if buffer in server.buffers.values():
|
||||
room_buffer = server.find_room_from_ptr(buffer)
|
||||
room = room_buffer.room
|
||||
modes = []
|
||||
|
||||
if room.encrypted:
|
||||
modes.append(G.CONFIG.look.encrypted_room_sign)
|
||||
|
||||
if (server.client
|
||||
and server.client.room_contains_unverified(room.room_id)):
|
||||
modes.append(G.CONFIG.look.encryption_warning_sign)
|
||||
|
||||
if not server.connected:
|
||||
modes.append(G.CONFIG.look.disconnect_sign)
|
||||
|
||||
if room_buffer.backlog_pending or server.busy:
|
||||
modes.append(G.CONFIG.look.busy_sign)
|
||||
|
||||
return "".join(modes)
|
||||
|
||||
return ""
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_bar_nicklist_count(data, item, window, buffer, extra_info):
|
||||
# pylint: disable=unused-argument
|
||||
color = W.color("status_nicklist_count")
|
||||
|
||||
for server in SERVERS.values():
|
||||
if buffer in server.buffers.values():
|
||||
room_buffer = server.find_room_from_ptr(buffer)
|
||||
room = room_buffer.room
|
||||
return "{}{}".format(color, room.member_count)
|
||||
|
||||
nicklist_enabled = bool(W.buffer_get_integer(buffer, "nicklist"))
|
||||
|
||||
if nicklist_enabled:
|
||||
nick_count = W.buffer_get_integer(buffer, "nicklist_visible_count")
|
||||
return "{}{}".format(color, nick_count)
|
||||
|
||||
return ""
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_bar_typing_notices_cb(data, item, window, buffer, extra_info):
|
||||
"""Update a status bar item showing users currently typing.
|
||||
This function is called by weechat every time a buffer is switched or
|
||||
W.bar_item_update(<item>) is explicitly called. The bar item shows
|
||||
currently typing users for the current buffer."""
|
||||
# pylint: disable=unused-argument
|
||||
for server in SERVERS.values():
|
||||
if buffer in server.buffers.values():
|
||||
room_buffer = server.find_room_from_ptr(buffer)
|
||||
room = room_buffer.room
|
||||
|
||||
if room.typing_users:
|
||||
nicks = []
|
||||
|
||||
for user_id in room.typing_users:
|
||||
if user_id == room.own_user_id:
|
||||
continue
|
||||
|
||||
nick = room_buffer.displayed_nicks.get(user_id, user_id)
|
||||
nicks.append(nick)
|
||||
|
||||
if not nicks:
|
||||
return ""
|
||||
|
||||
msg = "{}{}".format(
|
||||
G.CONFIG.look.bar_item_typing_notice_prefix,
|
||||
", ".join(sorted(nicks))
|
||||
)
|
||||
|
||||
max_len = G.CONFIG.look.max_typing_notice_item_length
|
||||
if len(msg) > max_len:
|
||||
msg[:max_len - 3] + "..."
|
||||
|
||||
return msg
|
||||
|
||||
return ""
|
||||
|
||||
return ""
|
||||
|
||||
|
||||
def init_bar_items():
|
||||
W.bar_item_new("(extra)buffer_plugin", "matrix_bar_item_plugin", "")
|
||||
W.bar_item_new("(extra)buffer_name", "matrix_bar_item_name", "")
|
||||
W.bar_item_new("(extra)lag", "matrix_bar_item_lag", "")
|
||||
W.bar_item_new(
|
||||
"(extra)buffer_nicklist_count",
|
||||
"matrix_bar_nicklist_count",
|
||||
""
|
||||
)
|
||||
W.bar_item_new(
|
||||
"(extra)matrix_typing_notice",
|
||||
"matrix_bar_typing_notices_cb",
|
||||
""
|
||||
)
|
||||
W.bar_item_new("(extra)buffer_modes", "matrix_bar_item_buffer_modes", "")
|
||||
W.bar_item_new("(extra)matrix_modes", "matrix_bar_item_buffer_modes", "")
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,366 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright © 2018, 2019 Damir Jelić <poljar@termina.org.uk>
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for
|
||||
# any purpose with or without fee is hereby granted, provided that the
|
||||
# above copyright notice and this permission notice appear in all copies.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
|
||||
# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
|
||||
# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from typing import List, Optional
|
||||
from matrix.globals import SERVERS, W, SCRIPT_NAME
|
||||
from matrix.utf import utf8_decode
|
||||
from matrix.utils import tags_from_line_data
|
||||
from nio import LocalProtocolError
|
||||
|
||||
|
||||
def add_servers_to_completion(completion):
|
||||
for server_name in SERVERS:
|
||||
W.hook_completion_list_add(
|
||||
completion, server_name, 0, W.WEECHAT_LIST_POS_SORT
|
||||
)
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_server_command_completion_cb(
|
||||
data, completion_item, buffer, completion
|
||||
):
|
||||
buffer_input = W.buffer_get_string(buffer, "input").split()
|
||||
|
||||
args = buffer_input[1:]
|
||||
commands = ["add", "delete", "list", "listfull"]
|
||||
|
||||
def complete_commands():
|
||||
for command in commands:
|
||||
W.hook_completion_list_add(
|
||||
completion, command, 0, W.WEECHAT_LIST_POS_SORT
|
||||
)
|
||||
|
||||
if len(args) == 1:
|
||||
complete_commands()
|
||||
|
||||
elif len(args) == 2:
|
||||
if args[1] not in commands:
|
||||
complete_commands()
|
||||
else:
|
||||
if args[1] == "delete" or args[1] == "listfull":
|
||||
add_servers_to_completion(completion)
|
||||
|
||||
elif len(args) == 3:
|
||||
if args[1] == "delete" or args[1] == "listfull":
|
||||
if args[2] not in SERVERS:
|
||||
add_servers_to_completion(completion)
|
||||
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_server_completion_cb(data, completion_item, buffer, completion):
|
||||
add_servers_to_completion(completion)
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_command_completion_cb(data, completion_item, buffer, completion):
|
||||
for command in [
|
||||
"connect",
|
||||
"disconnect",
|
||||
"reconnect",
|
||||
"server",
|
||||
"help",
|
||||
"debug",
|
||||
]:
|
||||
W.hook_completion_list_add(
|
||||
completion, command, 0, W.WEECHAT_LIST_POS_SORT
|
||||
)
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_debug_completion_cb(data, completion_item, buffer, completion):
|
||||
for debug_type in ["messaging", "network", "timing"]:
|
||||
W.hook_completion_list_add(
|
||||
completion, debug_type, 0, W.WEECHAT_LIST_POS_SORT
|
||||
)
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
# TODO this should be configurable
|
||||
REDACTION_COMP_LEN = 50
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_message_completion_cb(data, completion_item, buffer, completion):
|
||||
max_events = 500
|
||||
|
||||
def redacted_or_not_message(tags):
|
||||
# type: (List[str]) -> bool
|
||||
if SCRIPT_NAME + "_redacted" in tags:
|
||||
return True
|
||||
if SCRIPT_NAME + "_message" not in tags:
|
||||
return True
|
||||
|
||||
return False
|
||||
|
||||
def event_id_from_tags(tags):
|
||||
# type: (List[str]) -> Optional[str]
|
||||
for tag in tags:
|
||||
if tag.startswith("matrix_id"):
|
||||
event_id = tag[10:]
|
||||
return event_id
|
||||
|
||||
return None
|
||||
|
||||
for server in SERVERS.values():
|
||||
if buffer in server.buffers.values():
|
||||
room_buffer = server.find_room_from_ptr(buffer)
|
||||
lines = room_buffer.weechat_buffer.lines
|
||||
|
||||
added = 0
|
||||
|
||||
for line in lines:
|
||||
tags = line.tags
|
||||
if redacted_or_not_message(tags):
|
||||
continue
|
||||
|
||||
event_id = event_id_from_tags(tags)
|
||||
|
||||
if not event_id:
|
||||
continue
|
||||
|
||||
message = line.message
|
||||
|
||||
if len(message) > REDACTION_COMP_LEN + 2:
|
||||
message = message[:REDACTION_COMP_LEN] + ".."
|
||||
|
||||
item = ('{event_id}:"{message}"').format(
|
||||
event_id=event_id, message=message
|
||||
)
|
||||
|
||||
W.hook_completion_list_add(
|
||||
completion, item, 0, W.WEECHAT_LIST_POS_END
|
||||
)
|
||||
added += 1
|
||||
|
||||
if added >= max_events:
|
||||
break
|
||||
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
def server_from_buffer(buffer):
|
||||
for server in SERVERS.values():
|
||||
if buffer in server.buffers.values():
|
||||
return server
|
||||
if buffer == server.server_buffer:
|
||||
return server
|
||||
return None
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_olm_user_completion_cb(data, completion_item, buffer, completion):
|
||||
server = server_from_buffer(buffer)
|
||||
|
||||
if not server:
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
try:
|
||||
device_store = server.client.device_store
|
||||
except LocalProtocolError:
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
for user in device_store.users:
|
||||
W.hook_completion_list_add(
|
||||
completion, user, 0, W.WEECHAT_LIST_POS_SORT
|
||||
)
|
||||
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_olm_device_completion_cb(data, completion_item, buffer, completion):
|
||||
server = server_from_buffer(buffer)
|
||||
|
||||
if not server:
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
try:
|
||||
device_store = server.client.device_store
|
||||
except LocalProtocolError:
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
args = W.hook_completion_get_string(completion, "args")
|
||||
|
||||
fields = args.split()
|
||||
|
||||
if len(fields) < 2:
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
user = fields[-1]
|
||||
|
||||
if user not in device_store.users:
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
for device in device_store.active_user_devices(user):
|
||||
W.hook_completion_list_add(
|
||||
completion, device.id, 0, W.WEECHAT_LIST_POS_SORT
|
||||
)
|
||||
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_own_devices_completion_cb(
|
||||
data,
|
||||
completion_item,
|
||||
buffer,
|
||||
completion
|
||||
):
|
||||
server = server_from_buffer(buffer)
|
||||
|
||||
if not server:
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
olm = server.client.olm
|
||||
|
||||
if not olm:
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
W.hook_completion_list_add(
|
||||
completion, olm.device_id, 0, W.WEECHAT_LIST_POS_SORT
|
||||
)
|
||||
|
||||
user = olm.user_id
|
||||
|
||||
if user not in olm.device_store.users:
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
for device in olm.device_store.active_user_devices(user):
|
||||
W.hook_completion_list_add(
|
||||
completion, device.id, 0, W.WEECHAT_LIST_POS_SORT
|
||||
)
|
||||
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_user_completion_cb(data, completion_item, buffer, completion):
|
||||
def add_user(completion, user):
|
||||
W.hook_completion_list_add(
|
||||
completion, user, 0, W.WEECHAT_LIST_POS_SORT
|
||||
)
|
||||
|
||||
for server in SERVERS.values():
|
||||
if buffer == server.server_buffer:
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
room_buffer = server.find_room_from_ptr(buffer)
|
||||
|
||||
if not room_buffer:
|
||||
continue
|
||||
|
||||
users = room_buffer.room.users
|
||||
|
||||
users = [user[1:] for user in users]
|
||||
|
||||
for user in users:
|
||||
add_user(completion, user)
|
||||
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_room_completion_cb(data, completion_item, buffer, completion):
|
||||
"""Completion callback for matrix room names."""
|
||||
for server in SERVERS.values():
|
||||
for room_buffer in server.room_buffers.values():
|
||||
name = room_buffer.weechat_buffer.short_name
|
||||
|
||||
W.hook_completion_list_add(
|
||||
completion, name, 0, W.WEECHAT_LIST_POS_SORT
|
||||
)
|
||||
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
def init_completion():
|
||||
W.hook_completion(
|
||||
"matrix_server_commands",
|
||||
"Matrix server completion",
|
||||
"matrix_server_command_completion_cb",
|
||||
"",
|
||||
)
|
||||
|
||||
W.hook_completion(
|
||||
"matrix_servers",
|
||||
"Matrix server completion",
|
||||
"matrix_server_completion_cb",
|
||||
"",
|
||||
)
|
||||
|
||||
W.hook_completion(
|
||||
"matrix_commands",
|
||||
"Matrix command completion",
|
||||
"matrix_command_completion_cb",
|
||||
"",
|
||||
)
|
||||
|
||||
W.hook_completion(
|
||||
"matrix_messages",
|
||||
"Matrix message completion",
|
||||
"matrix_message_completion_cb",
|
||||
"",
|
||||
)
|
||||
|
||||
W.hook_completion(
|
||||
"matrix_debug_types",
|
||||
"Matrix debugging type completion",
|
||||
"matrix_debug_completion_cb",
|
||||
"",
|
||||
)
|
||||
|
||||
W.hook_completion(
|
||||
"olm_user_ids",
|
||||
"Matrix olm user id completion",
|
||||
"matrix_olm_user_completion_cb",
|
||||
"",
|
||||
)
|
||||
|
||||
W.hook_completion(
|
||||
"olm_devices",
|
||||
"Matrix olm device id completion",
|
||||
"matrix_olm_device_completion_cb",
|
||||
"",
|
||||
)
|
||||
|
||||
W.hook_completion(
|
||||
"matrix_users",
|
||||
"Matrix user id completion",
|
||||
"matrix_user_completion_cb",
|
||||
"",
|
||||
)
|
||||
|
||||
W.hook_completion(
|
||||
"matrix_own_devices",
|
||||
"Matrix own devices completion",
|
||||
"matrix_own_devices_completion_cb",
|
||||
"",
|
||||
)
|
||||
|
||||
W.hook_completion(
|
||||
"matrix_rooms",
|
||||
"Matrix room name completion",
|
||||
"matrix_room_completion_cb",
|
||||
"",
|
||||
)
|
@ -0,0 +1,807 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright © 2018, 2019 Damir Jelić <poljar@termina.org.uk>
|
||||
# Copyright © 2018, 2019 Denis Kasak <dkasak@termina.org.uk>
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for
|
||||
# any purpose with or without fee is hereby granted, provided that the
|
||||
# above copyright notice and this permission notice appear in all copies.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
|
||||
# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
|
||||
# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
"""weechat-matrix Configuration module.
|
||||
|
||||
This module contains abstractions on top of weechats configuration files and
|
||||
the main script configuration class.
|
||||
|
||||
To add configuration options refer to MatrixConfig.
|
||||
Server specific configuration options are handled in server.py
|
||||
"""
|
||||
|
||||
from builtins import super
|
||||
from collections import namedtuple
|
||||
from enum import Enum, unique
|
||||
|
||||
import logbook
|
||||
|
||||
import nio
|
||||
from matrix.globals import SCRIPT_NAME, SERVERS, W
|
||||
from matrix.utf import utf8_decode
|
||||
|
||||
from . import globals as G
|
||||
|
||||
|
||||
@unique
|
||||
class RedactType(Enum):
|
||||
STRIKETHROUGH = 0
|
||||
NOTICE = 1
|
||||
DELETE = 2
|
||||
|
||||
|
||||
@unique
|
||||
class ServerBufferType(Enum):
|
||||
MERGE_CORE = 0
|
||||
MERGE = 1
|
||||
INDEPENDENT = 2
|
||||
|
||||
|
||||
nio.logger_group.level = logbook.ERROR
|
||||
|
||||
|
||||
class Option(
|
||||
namedtuple(
|
||||
"Option",
|
||||
[
|
||||
"name",
|
||||
"type",
|
||||
"string_values",
|
||||
"min",
|
||||
"max",
|
||||
"value",
|
||||
"description",
|
||||
"cast_func",
|
||||
"change_callback",
|
||||
],
|
||||
)
|
||||
):
|
||||
"""A class representing a new configuration option.
|
||||
|
||||
An option object is consumed by the ConfigSection class adding
|
||||
configuration options to weechat.
|
||||
"""
|
||||
|
||||
__slots__ = ()
|
||||
|
||||
def __new__(
|
||||
cls,
|
||||
name,
|
||||
type,
|
||||
string_values,
|
||||
min,
|
||||
max,
|
||||
value,
|
||||
description,
|
||||
cast=None,
|
||||
change_callback=None,
|
||||
):
|
||||
"""
|
||||
Parameters:
|
||||
name (str): Name of the configuration option
|
||||
type (str): Type of the configuration option, can be one of the
|
||||
supported weechat types: string, boolean, integer, color
|
||||
string_values: (str): A list of string values that the option can
|
||||
accept seprated by |
|
||||
min (int): Minimal value of the option, only used if the type of
|
||||
the option is integer
|
||||
max (int): Maximal value of the option, only used if the type of
|
||||
the option is integer
|
||||
description (str): Description of the configuration option
|
||||
cast (callable): A callable function taking a single value and
|
||||
returning a modified value. Useful to turn the configuration
|
||||
option into an enum while reading it.
|
||||
change_callback(callable): A function that will be called
|
||||
by weechat every time the configuration option is changed.
|
||||
"""
|
||||
|
||||
return super().__new__(
|
||||
cls,
|
||||
name,
|
||||
type,
|
||||
string_values,
|
||||
min,
|
||||
max,
|
||||
value,
|
||||
description,
|
||||
cast,
|
||||
change_callback,
|
||||
)
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def matrix_config_reload_cb(data, config_file):
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
|
||||
def change_log_level(category, level):
|
||||
"""Change the log level of the underlying nio lib
|
||||
|
||||
Called every time the user changes the log level or log category
|
||||
configuration option."""
|
||||
|
||||
if category == "all":
|
||||
nio.logger_group.level = level
|
||||
elif category == "http":
|
||||
nio.http.logger.level = level
|
||||
elif category == "client":
|
||||
nio.client.logger.level = level
|
||||
elif category == "events":
|
||||
nio.events.logger.level = level
|
||||
elif category == "responses":
|
||||
nio.responses.logger.level = level
|
||||
elif category == "encryption":
|
||||
nio.crypto.logger.level = level
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def config_server_buffer_cb(data, option):
|
||||
"""Callback for the look.server_buffer option.
|
||||
Is called when the option is changed and merges/splits the server
|
||||
buffer"""
|
||||
|
||||
for server in SERVERS.values():
|
||||
server.buffer_merge()
|
||||
return 1
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def config_log_level_cb(data, option):
|
||||
"""Callback for the network.debug_level option."""
|
||||
change_log_level(
|
||||
G.CONFIG.network.debug_category, G.CONFIG.network.debug_level
|
||||
)
|
||||
return 1
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def config_log_category_cb(data, option):
|
||||
"""Callback for the network.debug_category option."""
|
||||
change_log_level(G.CONFIG.debug_category, logbook.ERROR)
|
||||
G.CONFIG.debug_category = G.CONFIG.network.debug_category
|
||||
change_log_level(
|
||||
G.CONFIG.network.debug_category, G.CONFIG.network.debug_level
|
||||
)
|
||||
return 1
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def config_pgup_cb(data, option):
|
||||
"""Callback for the network.fetch_backlog_on_pgup option.
|
||||
Enables or disables the hook that is run when /window page_up is called"""
|
||||
if G.CONFIG.network.fetch_backlog_on_pgup:
|
||||
if not G.CONFIG.page_up_hook:
|
||||
G.CONFIG.page_up_hook = W.hook_command_run(
|
||||
"/window page_up", "matrix_command_pgup_cb", ""
|
||||
)
|
||||
else:
|
||||
if G.CONFIG.page_up_hook:
|
||||
W.unhook(G.CONFIG.page_up_hook)
|
||||
G.CONFIG.page_up_hook = None
|
||||
|
||||
return 1
|
||||
|
||||
|
||||
def level_to_logbook(value):
|
||||
if value == 0:
|
||||
return logbook.ERROR
|
||||
if value == 1:
|
||||
return logbook.WARNING
|
||||
if value == 2:
|
||||
return logbook.INFO
|
||||
if value == 3:
|
||||
return logbook.DEBUG
|
||||
|
||||
return logbook.ERROR
|
||||
|
||||
|
||||
def logbook_category(value):
|
||||
if value == 0:
|
||||
return "all"
|
||||
if value == 1:
|
||||
return "http"
|
||||
if value == 2:
|
||||
return "client"
|
||||
if value == 3:
|
||||
return "events"
|
||||
if value == 4:
|
||||
return "responses"
|
||||
if value == 5:
|
||||
return "encryption"
|
||||
|
||||
return "all"
|
||||
|
||||
|
||||
def eval_cast(string):
|
||||
"""A function that passes a string to weechat which evaluates it using its
|
||||
expression evaluation syntax.
|
||||
Can only be used with strings, useful for passwords or options that contain
|
||||
a formatted string to e.g. add colors.
|
||||
More info here:
|
||||
https://weechat.org/files/doc/stable/weechat_plugin_api.en.html#_string_eval_expression"""
|
||||
|
||||
return W.string_eval_expression(string, {}, {}, {})
|
||||
|
||||
|
||||
class WeechatConfig(object):
|
||||
"""A class representing a weechat configuration file
|
||||
Wraps weechats configuration creation functionality"""
|
||||
|
||||
def __init__(self, sections):
|
||||
"""Create a new weechat configuration file, expects the global
|
||||
SCRIPT_NAME to be defined and a reload callback
|
||||
|
||||
Parameters:
|
||||
sections (List[Tuple[str, List[Option]]]): List of config sections
|
||||
that will be created for the configuration file.
|
||||
"""
|
||||
self._ptr = W.config_new(
|
||||
SCRIPT_NAME, SCRIPT_NAME + "_config_reload_cb", ""
|
||||
)
|
||||
|
||||
for section in sections:
|
||||
name, options = section
|
||||
section_class = ConfigSection.build(name, options)
|
||||
setattr(self, name, section_class(name, self._ptr, options))
|
||||
|
||||
def free(self):
|
||||
"""Free all the config sections and their options as well as the
|
||||
configuration file. Should be called when the script is unloaded."""
|
||||
for section in [
|
||||
getattr(self, a)
|
||||
for a in dir(self)
|
||||
if isinstance(getattr(self, a), ConfigSection)
|
||||
]:
|
||||
section.free()
|
||||
|
||||
W.config_free(self._ptr)
|
||||
|
||||
def read(self):
|
||||
"""Read the config file"""
|
||||
return_code = W.config_read(self._ptr)
|
||||
if return_code == W.WEECHAT_CONFIG_READ_OK:
|
||||
return True
|
||||
if return_code == W.WEECHAT_CONFIG_READ_MEMORY_ERROR:
|
||||
return False
|
||||
if return_code == W.WEECHAT_CONFIG_READ_FILE_NOT_FOUND:
|
||||
return True
|
||||
return False
|
||||
|
||||
|
||||
class ConfigSection(object):
|
||||
"""A class representing a weechat config section.
|
||||
Should not be used on its own, the WeechatConfig class uses this to build
|
||||
config sections."""
|
||||
@classmethod
|
||||
def build(cls, name, options):
|
||||
def constructor(self, name, config_ptr, options):
|
||||
self._ptr = W.config_new_section(
|
||||
config_ptr, name, 0, 0, "", "", "", "", "", "", "", "", "", ""
|
||||
)
|
||||
self._config_ptr = config_ptr
|
||||
self._option_ptrs = {}
|
||||
|
||||
for option in options:
|
||||
self._add_option(option)
|
||||
|
||||
attributes = {
|
||||
option.name: cls.option_property(
|
||||
option.name, option.type, cast_func=option.cast_func
|
||||
)
|
||||
for option in options
|
||||
}
|
||||
attributes["__init__"] = constructor
|
||||
|
||||
section_class = type(name.title() + "Section", (cls,), attributes)
|
||||
return section_class
|
||||
|
||||
def free(self):
|
||||
W.config_section_free_options(self._ptr)
|
||||
W.config_section_free(self._ptr)
|
||||
|
||||
def _add_option(self, option):
|
||||
cb = option.change_callback.__name__ if option.change_callback else ""
|
||||
option_ptr = W.config_new_option(
|
||||
self._config_ptr,
|
||||
self._ptr,
|
||||
option.name,
|
||||
option.type,
|
||||
option.description,
|
||||
option.string_values,
|
||||
option.min,
|
||||
option.max,
|
||||
option.value,
|
||||
option.value,
|
||||
0,
|
||||
"",
|
||||
"",
|
||||
cb,
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
)
|
||||
|
||||
self._option_ptrs[option.name] = option_ptr
|
||||
|
||||
@staticmethod
|
||||
def option_property(name, option_type, evaluate=False, cast_func=None):
|
||||
"""Create a property for this class that makes the reading of config
|
||||
option values pythonic. The option will be available as a property with
|
||||
the name of the option.
|
||||
If a cast function was defined for the option the property will pass
|
||||
the option value to the cast function and return its result."""
|
||||
|
||||
def bool_getter(self):
|
||||
return bool(W.config_boolean(self._option_ptrs[name]))
|
||||
|
||||
def str_getter(self):
|
||||
if cast_func:
|
||||
return cast_func(W.config_string(self._option_ptrs[name]))
|
||||
return W.config_string(self._option_ptrs[name])
|
||||
|
||||
def str_evaluate_getter(self):
|
||||
return W.string_eval_expression(
|
||||
W.config_string(self._option_ptrs[name]), {}, {}, {}
|
||||
)
|
||||
|
||||
def int_getter(self):
|
||||
if cast_func:
|
||||
return cast_func(W.config_integer(self._option_ptrs[name]))
|
||||
return W.config_integer(self._option_ptrs[name])
|
||||
|
||||
if option_type in ("string", "color"):
|
||||
if evaluate:
|
||||
return property(str_evaluate_getter)
|
||||
return property(str_getter)
|
||||
if option_type == "boolean":
|
||||
return property(bool_getter)
|
||||
if option_type == "integer":
|
||||
return property(int_getter)
|
||||
|
||||
|
||||
class MatrixConfig(WeechatConfig):
|
||||
"""Main matrix configuration file.
|
||||
This class defines all the global matrix configuration options.
|
||||
New global options should be added to the constructor of this class under
|
||||
the appropriate section.
|
||||
|
||||
There are three main sections defined:
|
||||
Look: This section is for options that change the way matrix messages
|
||||
are shown or the way the buffers are shown.
|
||||
Color: This section should mainly be for color options, options that
|
||||
change color schemes or themes should go to the look section.
|
||||
Network: This section is for options that change the way the script
|
||||
behaves, e.g. the way it communicates with the server, it handles
|
||||
responses or any other behavioural change that doesn't fit in the
|
||||
previous sections.
|
||||
|
||||
There is a special section called server defined which contains per server
|
||||
configuration options. Server options aren't defined here, they need to be
|
||||
added in server.py
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
self.debug_buffer = ""
|
||||
self.upload_buffer = ""
|
||||
self.debug_category = "all"
|
||||
self.page_up_hook = None
|
||||
self.human_buffer_names = None
|
||||
|
||||
look_options = [
|
||||
Option(
|
||||
"redactions",
|
||||
"integer",
|
||||
"strikethrough|notice|delete",
|
||||
0,
|
||||
0,
|
||||
"strikethrough",
|
||||
(
|
||||
"Only notice redactions, strike through or delete "
|
||||
"redacted messages"
|
||||
),
|
||||
RedactType,
|
||||
),
|
||||
Option(
|
||||
"server_buffer",
|
||||
"integer",
|
||||
"merge_with_core|merge_without_core|independent",
|
||||
0,
|
||||
0,
|
||||
"merge_with_core",
|
||||
"Merge server buffers",
|
||||
ServerBufferType,
|
||||
config_server_buffer_cb,
|
||||
),
|
||||
Option(
|
||||
"max_typing_notice_item_length",
|
||||
"integer",
|
||||
"",
|
||||
10,
|
||||
1000,
|
||||
"50",
|
||||
("Limit the length of the typing notice bar item."),
|
||||
),
|
||||
Option(
|
||||
"bar_item_typing_notice_prefix",
|
||||
"string",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"Typing: ",
|
||||
("Prefix for the typing notice bar item."),
|
||||
),
|
||||
Option(
|
||||
"encryption_warning_sign",
|
||||
"string",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"⚠️ ",
|
||||
("A sign that is used to signal trust issues in encrypted "
|
||||
"rooms (note: content is evaluated, see /help eval)"),
|
||||
eval_cast,
|
||||
),
|
||||
Option(
|
||||
"busy_sign",
|
||||
"string",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"⏳",
|
||||
("A sign that is used to signal that the client is busy e.g. "
|
||||
"when the room backlog is fetching"
|
||||
" (note: content is evaluated, see /help eval)"),
|
||||
eval_cast,
|
||||
),
|
||||
Option(
|
||||
"encrypted_room_sign",
|
||||
"string",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"🔐",
|
||||
("A sign that is used to show that the current room is "
|
||||
"encrypted "
|
||||
"(note: content is evaluated, see /help eval)"),
|
||||
eval_cast,
|
||||
),
|
||||
Option(
|
||||
"disconnect_sign",
|
||||
"string",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"❌",
|
||||
("A sign that is used to show that the server is disconnected "
|
||||
"(note: content is evaluated, see /help eval)"),
|
||||
eval_cast,
|
||||
),
|
||||
Option(
|
||||
"pygments_style",
|
||||
"string",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"native",
|
||||
"Pygments style to use for highlighting source code blocks",
|
||||
),
|
||||
Option(
|
||||
"code_blocks",
|
||||
"boolean",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"on",
|
||||
("Display preformatted code blocks as rectangular areas by "
|
||||
"padding them with whitespace up to the length of the longest"
|
||||
" line (with optional margin)"),
|
||||
),
|
||||
Option(
|
||||
"code_block_margin",
|
||||
"integer",
|
||||
"",
|
||||
0,
|
||||
100,
|
||||
"2",
|
||||
("Number of spaces to add as a margin around around a code "
|
||||
"block"),
|
||||
),
|
||||
Option(
|
||||
"human_buffer_names",
|
||||
"boolean",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"off",
|
||||
("If turned on the buffer name will consist of the server "
|
||||
"name and the room name instead of the Matrix room ID. Note, "
|
||||
"this requires a change to the logger.file.mask setting "
|
||||
"since conflicts can happen otherwise "
|
||||
"(requires a script reload)."),
|
||||
),
|
||||
]
|
||||
|
||||
network_options = [
|
||||
Option(
|
||||
"max_initial_sync_events",
|
||||
"integer",
|
||||
"",
|
||||
1,
|
||||
10000,
|
||||
"30",
|
||||
("How many events to fetch during the initial sync"),
|
||||
),
|
||||
Option(
|
||||
"max_backlog_sync_events",
|
||||
"integer",
|
||||
"",
|
||||
1,
|
||||
100,
|
||||
"10",
|
||||
("How many events to fetch during backlog fetching"),
|
||||
),
|
||||
Option(
|
||||
"fetch_backlog_on_pgup",
|
||||
"boolean",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"on",
|
||||
("Fetch messages in the backlog on a window page up event"),
|
||||
None,
|
||||
config_pgup_cb,
|
||||
),
|
||||
Option(
|
||||
"debug_level",
|
||||
"integer",
|
||||
"error|warn|info|debug",
|
||||
0,
|
||||
0,
|
||||
"error",
|
||||
"Enable network protocol debugging.",
|
||||
level_to_logbook,
|
||||
config_log_level_cb,
|
||||
),
|
||||
Option(
|
||||
"debug_category",
|
||||
"integer",
|
||||
"all|http|client|events|responses|encryption",
|
||||
0,
|
||||
0,
|
||||
"all",
|
||||
"Debugging category",
|
||||
logbook_category,
|
||||
config_log_category_cb,
|
||||
),
|
||||
Option(
|
||||
"debug_buffer",
|
||||
"boolean",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"off",
|
||||
("Use a separate buffer for debug logs."),
|
||||
),
|
||||
Option(
|
||||
"lazy_load_room_users",
|
||||
"boolean",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"off",
|
||||
("If on, room users won't be loaded in the background "
|
||||
"proactively, they will be loaded when the user switches to "
|
||||
"the room buffer. This only affects non-encrypted rooms."),
|
||||
),
|
||||
Option(
|
||||
"max_nicklist_users",
|
||||
"integer",
|
||||
"",
|
||||
100,
|
||||
20000,
|
||||
"5000",
|
||||
("Limit the number of users that are added to the nicklist. "
|
||||
"Active users and users with a higher power level are always."
|
||||
" Inactive users will be removed from the nicklist after a "
|
||||
"day of inactivity."),
|
||||
),
|
||||
Option(
|
||||
"lag_reconnect",
|
||||
"integer",
|
||||
"",
|
||||
5,
|
||||
604800,
|
||||
"90",
|
||||
("Reconnect to the server if the lag is greater than this "
|
||||
"value (in seconds)"),
|
||||
),
|
||||
Option(
|
||||
"print_unconfirmed_messages",
|
||||
"boolean",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"on",
|
||||
("If off, messages are only printed after the server confirms "
|
||||
"their receival. If on, messages are immediately printed but "
|
||||
"colored differently until receival is confirmed."),
|
||||
),
|
||||
Option(
|
||||
"lag_min_show",
|
||||
"integer",
|
||||
"",
|
||||
1,
|
||||
604800,
|
||||
"500",
|
||||
("minimum lag to show (in milliseconds)"),
|
||||
),
|
||||
Option(
|
||||
"typing_notice_conditions",
|
||||
"string",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"${typing_enabled}",
|
||||
("conditions to send typing notifications (note: content is "
|
||||
"evaluated, see /help eval); besides the buffer and window "
|
||||
"variables the typing_enabled variable is also expanded; "
|
||||
"the typing_enabled variable can be manipulated with the "
|
||||
"/room command, see /help room"),
|
||||
),
|
||||
Option(
|
||||
"read_markers_conditions",
|
||||
"string",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"${markers_enabled}",
|
||||
("conditions to send read markers (note: content is "
|
||||
"evaluated, see /help eval); besides the buffer and window "
|
||||
"variables the markers_enabled variable is also expanded; "
|
||||
"the markers_enabled variable can be manipulated with the "
|
||||
"/room command, see /help room"),
|
||||
),
|
||||
Option(
|
||||
"resending_ignores_devices",
|
||||
"boolean",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"on",
|
||||
("If on resending the same message to a room that contains "
|
||||
"unverified devices will mark the devices as ignored and "
|
||||
"continue sending the message. If off resending the message "
|
||||
"will again fail and devices need to be marked as verified "
|
||||
"one by one or the /send-anyways command needs to be used to "
|
||||
"ignore them."),
|
||||
),
|
||||
]
|
||||
|
||||
color_options = [
|
||||
Option(
|
||||
"quote_fg",
|
||||
"color",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"lightgreen",
|
||||
"Foreground color for matrix style blockquotes",
|
||||
),
|
||||
Option(
|
||||
"quote_bg",
|
||||
"color",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"default",
|
||||
"Background counterpart of quote_fg",
|
||||
),
|
||||
Option(
|
||||
"error_message_fg",
|
||||
"color",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"darkgray",
|
||||
("Foreground color for error messages that appear inside a "
|
||||
"room buffer (e.g. when a message errors out when sending or "
|
||||
"when a message is redacted)"),
|
||||
),
|
||||
Option(
|
||||
"error_message_bg",
|
||||
"color",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"default",
|
||||
"Background counterpart of error_message_fg.",
|
||||
),
|
||||
Option(
|
||||
"unconfirmed_message_fg",
|
||||
"color",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"darkgray",
|
||||
("Foreground color for messages that are printed out but the "
|
||||
"server hasn't confirmed the that he received them."),
|
||||
),
|
||||
Option(
|
||||
"unconfirmed_message_bg",
|
||||
"color",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"default",
|
||||
"Background counterpart of unconfirmed_message_fg."
|
||||
),
|
||||
Option(
|
||||
"untagged_code_fg",
|
||||
"color",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"blue",
|
||||
("Foreground color for code without a language specifier. "
|
||||
"Also used for `inline code`."),
|
||||
),
|
||||
Option(
|
||||
"untagged_code_bg",
|
||||
"color",
|
||||
"",
|
||||
0,
|
||||
0,
|
||||
"default",
|
||||
"Background counterpart of untagged_code_fg",
|
||||
),
|
||||
]
|
||||
|
||||
sections = [
|
||||
("network", network_options),
|
||||
("look", look_options),
|
||||
("color", color_options),
|
||||
]
|
||||
|
||||
super().__init__(sections)
|
||||
|
||||
# The server section is essentially a section with subsections and no
|
||||
# options, handle that case independently.
|
||||
W.config_new_section(
|
||||
self._ptr,
|
||||
"server",
|
||||
0,
|
||||
0,
|
||||
"matrix_config_server_read_cb",
|
||||
"",
|
||||
"matrix_config_server_write_cb",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
)
|
||||
|
||||
def read(self):
|
||||
super().read()
|
||||
self.human_buffer_names = self.look.human_buffer_names
|
||||
|
||||
def free(self):
|
||||
section_ptr = W.config_search_section(self._ptr, "server")
|
||||
W.config_section_free(section_ptr)
|
||||
super().free()
|
@ -0,0 +1,48 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright © 2018, 2019 Damir Jelić <poljar@termina.org.uk>
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for
|
||||
# any purpose with or without fee is hereby granted, provided that the
|
||||
# above copyright notice and this permission notice appear in all copies.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
|
||||
# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
|
||||
# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import sys
|
||||
from typing import Dict, Optional
|
||||
from logbook import Logger
|
||||
from collections import OrderedDict
|
||||
|
||||
from .utf import WeechatWrapper
|
||||
|
||||
if False:
|
||||
from .server import MatrixServer
|
||||
from .config import MatrixConfig
|
||||
from .uploads import Upload
|
||||
|
||||
|
||||
try:
|
||||
import weechat
|
||||
|
||||
W = weechat if sys.hexversion >= 0x3000000 else WeechatWrapper(weechat)
|
||||
except ImportError:
|
||||
import matrix._weechat as weechat # type: ignore
|
||||
|
||||
W = weechat
|
||||
|
||||
SERVERS = dict() # type: Dict[str, MatrixServer]
|
||||
CONFIG = None # type: Optional[MatrixConfig]
|
||||
ENCRYPTION = True # type: bool
|
||||
SCRIPT_NAME = "matrix" # type: str
|
||||
MAX_EVENTS = 100
|
||||
TYPING_NOTICE_TIMEOUT = 4000 # 4 seconds typing notice lifetime
|
||||
LOGGER = Logger("weechat-matrix")
|
||||
UPLOADS = OrderedDict() # type: Dict[str, Upload]
|
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,399 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright © 2018, 2019 Damir Jelić <poljar@termina.org.uk>
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for
|
||||
# any purpose with or without fee is hereby granted, provided that the
|
||||
# above copyright notice and this permission notice appear in all copies.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
|
||||
# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
|
||||
# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
"""Module implementing upload functionality."""
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import attr
|
||||
import time
|
||||
import json
|
||||
from typing import Dict, Any
|
||||
from uuid import uuid1, UUID
|
||||
from enum import Enum
|
||||
|
||||
try:
|
||||
from json.decoder import JSONDecodeError
|
||||
except ImportError:
|
||||
JSONDecodeError = ValueError # type: ignore
|
||||
|
||||
from .globals import SCRIPT_NAME, SERVERS, W, UPLOADS
|
||||
from .utf import utf8_decode
|
||||
from matrix import globals as G
|
||||
from nio import Api
|
||||
|
||||
|
||||
class UploadState(Enum):
|
||||
created = 0
|
||||
active = 1
|
||||
finished = 2
|
||||
error = 3
|
||||
aborted = 4
|
||||
|
||||
|
||||
@attr.s
|
||||
class Proxy(object):
|
||||
ptr = attr.ib(type=str)
|
||||
|
||||
@property
|
||||
def name(self):
|
||||
return W.infolist_string(self.ptr, "name")
|
||||
|
||||
@property
|
||||
def address(self):
|
||||
return W.infolist_string(self.ptr, "address")
|
||||
|
||||
@property
|
||||
def type(self):
|
||||
return W.infolist_string(self.ptr, "type_string")
|
||||
|
||||
@property
|
||||
def port(self):
|
||||
return str(W.infolist_integer(self.ptr, "port"))
|
||||
|
||||
@property
|
||||
def user(self):
|
||||
return W.infolist_string(self.ptr, "username")
|
||||
|
||||
@property
|
||||
def password(self):
|
||||
return W.infolist_string(self.ptr, "password")
|
||||
|
||||
|
||||
@attr.s
|
||||
class Upload(object):
|
||||
"""Class representing an upload to a matrix server."""
|
||||
|
||||
server_name = attr.ib(type=str)
|
||||
server_address = attr.ib(type=str)
|
||||
access_token = attr.ib(type=str)
|
||||
room_id = attr.ib(type=str)
|
||||
filepath = attr.ib(type=str)
|
||||
encrypt = attr.ib(type=bool, default=False)
|
||||
|
||||
done = 0
|
||||
total = 0
|
||||
|
||||
uuid = None
|
||||
buffer = None
|
||||
upload_hook = None
|
||||
content_uri = None
|
||||
file_name = None
|
||||
mimetype = "?"
|
||||
state = UploadState.created
|
||||
|
||||
def __attrs_post_init__(self):
|
||||
self.uuid = uuid1()
|
||||
self.buffer = ""
|
||||
|
||||
server = SERVERS[self.server_name]
|
||||
|
||||
proxy_name = server.config.proxy
|
||||
proxy = None
|
||||
proxies_list = None
|
||||
|
||||
if proxy_name:
|
||||
proxies_list = W.infolist_get("proxy", "", proxy_name)
|
||||
if proxies_list:
|
||||
W.infolist_next(proxies_list)
|
||||
proxy = Proxy(proxies_list)
|
||||
|
||||
process_args = {
|
||||
"arg1": self.filepath,
|
||||
"arg2": self.server_address,
|
||||
"arg3": self.access_token,
|
||||
"buffer_flush": "1",
|
||||
}
|
||||
|
||||
arg_count = 3
|
||||
|
||||
if self.encrypt:
|
||||
arg_count += 1
|
||||
process_args["arg{}".format(arg_count)] = "--encrypt"
|
||||
|
||||
if not server.config.ssl_verify:
|
||||
arg_count += 1
|
||||
process_args["arg{}".format(arg_count)] = "--insecure"
|
||||
|
||||
if proxy:
|
||||
arg_count += 1
|
||||
process_args["arg{}".format(arg_count)] = "--proxy-type"
|
||||
arg_count += 1
|
||||
process_args["arg{}".format(arg_count)] = proxy.type
|
||||
|
||||
arg_count += 1
|
||||
process_args["arg{}".format(arg_count)] = "--proxy-address"
|
||||
arg_count += 1
|
||||
process_args["arg{}".format(arg_count)] = proxy.address
|
||||
|
||||
arg_count += 1
|
||||
process_args["arg{}".format(arg_count)] = "--proxy-port"
|
||||
arg_count += 1
|
||||
process_args["arg{}".format(arg_count)] = proxy.port
|
||||
|
||||
if proxy.user:
|
||||
arg_count += 1
|
||||
process_args["arg{}".format(arg_count)] = "--proxy-user"
|
||||
arg_count += 1
|
||||
process_args["arg{}".format(arg_count)] = proxy.user
|
||||
|
||||
if proxy.password:
|
||||
arg_count += 1
|
||||
process_args["arg{}".format(arg_count)] = "--proxy-password"
|
||||
arg_count += 1
|
||||
process_args["arg{}".format(arg_count)] = proxy.password
|
||||
|
||||
self.upload_hook = W.hook_process_hashtable(
|
||||
"matrix_upload",
|
||||
process_args,
|
||||
0,
|
||||
"upload_cb",
|
||||
str(self.uuid)
|
||||
)
|
||||
|
||||
if proxies_list:
|
||||
W.infolist_free(proxies_list)
|
||||
|
||||
def abort(self):
|
||||
pass
|
||||
|
||||
@property
|
||||
def msgtype(self):
|
||||
# type: () -> str
|
||||
assert self.mimetype
|
||||
return Api.mimetype_to_msgtype(self.mimetype)
|
||||
|
||||
@property
|
||||
def content(self):
|
||||
# type: () -> Dict[Any, Any]
|
||||
assert self.content_uri
|
||||
|
||||
if self.encrypt:
|
||||
content = {
|
||||
"body": self.file_name,
|
||||
"msgtype": self.msgtype,
|
||||
"file": self.file_keys,
|
||||
}
|
||||
content["file"]["url"] = self.content_uri
|
||||
content["file"]["mimetype"] = self.mimetype
|
||||
|
||||
# TODO thumbnail if it's an image
|
||||
|
||||
return content
|
||||
|
||||
return {
|
||||
"msgtype": self.msgtype,
|
||||
"body": self.file_name,
|
||||
"url": self.content_uri,
|
||||
}
|
||||
|
||||
@property
|
||||
def render(self):
|
||||
# type: () -> str
|
||||
assert self.content_uri
|
||||
|
||||
if self.encrypt:
|
||||
http_url = Api.encrypted_mxc_to_plumb(
|
||||
self.content_uri,
|
||||
self.file_keys["key"]["k"],
|
||||
self.file_keys["hashes"]["sha256"],
|
||||
self.file_keys["iv"]
|
||||
)
|
||||
url = http_url if http_url else self.content_uri
|
||||
|
||||
description = "{}".format(self.file_name)
|
||||
return ("{del_color}<{ncolor}{desc}{del_color}>{ncolor} "
|
||||
"{del_color}[{ncolor}{url}{del_color}]{ncolor}").format(
|
||||
del_color=W.color("chat_delimiters"),
|
||||
ncolor=W.color("reset"),
|
||||
desc=description, url=url)
|
||||
|
||||
http_url = Api.mxc_to_http(self.content_uri)
|
||||
description = ("/{}".format(self.file_name) if self.file_name
|
||||
else "")
|
||||
return "{url}{desc}".format(url=http_url, desc=description)
|
||||
|
||||
|
||||
@attr.s
|
||||
class UploadsBuffer(object):
|
||||
"""Weechat buffer showing the uploads for a server."""
|
||||
|
||||
_ptr = "" # type: str
|
||||
_selected_line = 0 # type: int
|
||||
uploads = UPLOADS
|
||||
|
||||
def __attrs_post_init__(self):
|
||||
self._ptr = W.buffer_new(
|
||||
SCRIPT_NAME + ".uploads",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
)
|
||||
W.buffer_set(self._ptr, "type", "free")
|
||||
W.buffer_set(self._ptr, "title", "Upload list")
|
||||
W.buffer_set(self._ptr, "key_bind_meta2-A", "/uploads up")
|
||||
W.buffer_set(self._ptr, "key_bind_meta2-B", "/uploads down")
|
||||
W.buffer_set(self._ptr, "localvar_set_type", "uploads")
|
||||
|
||||
self.render()
|
||||
|
||||
def move_line_up(self):
|
||||
self._selected_line = max(self._selected_line - 1, 0)
|
||||
self.render()
|
||||
|
||||
def move_line_down(self):
|
||||
self._selected_line = min(
|
||||
self._selected_line + 1,
|
||||
len(self.uploads) - 1
|
||||
)
|
||||
self.render()
|
||||
|
||||
def display(self):
|
||||
"""Display the buffer."""
|
||||
W.buffer_set(self._ptr, "display", "1")
|
||||
|
||||
def render(self):
|
||||
"""Render the new state of the upload buffer."""
|
||||
# This function is under the MIT license.
|
||||
# Copyright (c) 2016 Vladimir Ignatev
|
||||
def progress(count, total):
|
||||
bar_len = 60
|
||||
|
||||
if total == 0:
|
||||
bar = '-' * bar_len
|
||||
return "[{}] {}%".format(bar, "?")
|
||||
|
||||
filled_len = int(round(bar_len * count / float(total)))
|
||||
percents = round(100.0 * count / float(total), 1)
|
||||
bar = '=' * filled_len + '-' * (bar_len - filled_len)
|
||||
|
||||
return "[{}] {}%".format(bar, percents)
|
||||
|
||||
W.buffer_clear(self._ptr)
|
||||
header = "{}{}{}{}{}{}{}{}".format(
|
||||
W.color("green"),
|
||||
"Actions (letter+enter):",
|
||||
W.color("lightgreen"),
|
||||
" [A] Accept",
|
||||
" [C] Cancel",
|
||||
" [R] Remove",
|
||||
" [P] Purge finished",
|
||||
" [Q] Close this buffer"
|
||||
)
|
||||
W.prnt_y(self._ptr, 0, header)
|
||||
|
||||
for line_number, upload in enumerate(self.uploads.values()):
|
||||
line_color = "{},{}".format(
|
||||
"white" if line_number == self._selected_line else "default",
|
||||
"blue" if line_number == self._selected_line else "default",
|
||||
)
|
||||
first_line = ("%s%s %-24s %s%s%s %s (%s.%s)" % (
|
||||
W.color(line_color),
|
||||
"*** " if line_number == self._selected_line else " ",
|
||||
upload.room_id,
|
||||
"\"",
|
||||
upload.filepath,
|
||||
"\"",
|
||||
upload.mimetype,
|
||||
SCRIPT_NAME,
|
||||
upload.server_name,
|
||||
))
|
||||
W.prnt_y(self._ptr, (line_number * 2) + 2, first_line)
|
||||
|
||||
status_color = "{},{}".format("green", "blue")
|
||||
status = "{}{}{}".format(
|
||||
W.color(status_color),
|
||||
upload.state.name,
|
||||
W.color(line_color)
|
||||
)
|
||||
|
||||
second_line = ("{color}{prefix} {status} {progressbar} "
|
||||
"{done} / {total}").format(
|
||||
color=W.color(line_color),
|
||||
prefix="*** " if line_number == self._selected_line else " ",
|
||||
status=status,
|
||||
progressbar=progress(upload.done, upload.total),
|
||||
done=W.string_format_size(upload.done),
|
||||
total=W.string_format_size(upload.total))
|
||||
|
||||
W.prnt_y(self._ptr, (line_number * 2) + 3, second_line)
|
||||
|
||||
|
||||
def find_upload(uuid):
|
||||
return UPLOADS.get(uuid, None)
|
||||
|
||||
|
||||
def handle_child_message(upload, message):
|
||||
if message["type"] == "progress":
|
||||
upload.done = message["data"]
|
||||
|
||||
elif message["type"] == "status":
|
||||
if message["status"] == "started":
|
||||
upload.state = UploadState.active
|
||||
upload.total = message["total"]
|
||||
upload.mimetype = message["mimetype"]
|
||||
upload.file_name = message["file_name"]
|
||||
|
||||
elif message["status"] == "done":
|
||||
upload.state = UploadState.finished
|
||||
upload.content_uri = message["url"]
|
||||
upload.file_keys = message.get("file_keys", None)
|
||||
|
||||
server = SERVERS.get(upload.server_name, None)
|
||||
|
||||
if not server:
|
||||
return
|
||||
|
||||
server.room_send_upload(upload)
|
||||
|
||||
elif message["status"] == "error":
|
||||
upload.state = UploadState.error
|
||||
|
||||
if G.CONFIG.upload_buffer:
|
||||
G.CONFIG.upload_buffer.render()
|
||||
|
||||
|
||||
@utf8_decode
|
||||
def upload_cb(data, command, return_code, out, err):
|
||||
upload = find_upload(UUID(data))
|
||||
|
||||
if not upload:
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
if return_code == W.WEECHAT_HOOK_PROCESS_ERROR:
|
||||
W.prnt("", "Error with command '%s'" % command)
|
||||
return W.WEECHAT_RC_OK
|
||||
|
||||
if err != "":
|
||||
W.prnt("", "Error with command '%s'" % err)
|
||||
upload.state = UploadState.error
|
||||
|
||||
if out != "":
|
||||
upload.buffer += out
|
||||
messages = upload.buffer.split("\n")
|
||||
upload.buffer = ""
|
||||
|
||||
for m in messages:
|
||||
try:
|
||||
message = json.loads(m)
|
||||
except (JSONDecodeError, TypeError):
|
||||
upload.buffer += m
|
||||
continue
|
||||
|
||||
handle_child_message(upload, message)
|
||||
|
||||
return W.WEECHAT_RC_OK
|
@ -0,0 +1,117 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright (c) 2014-2016 Ryan Huber <rhuber@gmail.com>
|
||||
# Copyright (c) 2015-2016 Tollef Fog Heen <tfheen@err.no>
|
||||
|
||||
# Permission is hereby granted, free of charge, to any person obtaining
|
||||
# a copy of this software and associated documentation files (the
|
||||
# "Software"), to deal in the Software without restriction, including
|
||||
# without limitation the rights to use, copy, modify, merge, publish,
|
||||
# distribute, sublicense, and/or sell copies of the Software, and to
|
||||
# permit persons to whom the Software is furnished to do so, subject to
|
||||
# the following conditions:
|
||||
|
||||
# The above copyright notice and this permission notice shall be
|
||||
# included in all copies or substantial portions of the Software.
|
||||
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import sys
|
||||
|
||||
# pylint: disable=redefined-builtin
|
||||
from builtins import bytes, str
|
||||
from functools import wraps
|
||||
|
||||
if sys.version_info.major == 3 and sys.version_info.minor >= 3:
|
||||
from collections.abc import Iterable, Mapping
|
||||
else:
|
||||
from collections import Iterable, Mapping
|
||||
|
||||
# These functions were written by Trygve Aaberge for wee-slack and are under a
|
||||
# MIT License.
|
||||
# More info can be found in the wee-slack repository under the commit:
|
||||
# 5e1c7e593d70972afb9a55f29d13adaf145d0166, the repository can be found at:
|
||||
# https://github.com/wee-slack/wee-slack
|
||||
|
||||
|
||||
class WeechatWrapper(object):
|
||||
def __init__(self, wrapped_class):
|
||||
self.wrapped_class = wrapped_class
|
||||
|
||||
# Helper method used to encode/decode method calls.
|
||||
def wrap_for_utf8(self, method):
|
||||
def hooked(*args, **kwargs):
|
||||
result = method(*encode_to_utf8(args), **encode_to_utf8(kwargs))
|
||||
# Prevent wrapped_class from becoming unwrapped
|
||||
if result == self.wrapped_class:
|
||||
return self
|
||||
return decode_from_utf8(result)
|
||||
|
||||
return hooked
|
||||
|
||||
# Encode and decode everything sent to/received from weechat. We use the
|
||||
# unicode type internally in wee-slack, but has to send utf8 to weechat.
|
||||
def __getattr__(self, attr):
|
||||
orig_attr = self.wrapped_class.__getattribute__(attr)
|
||||
if callable(orig_attr):
|
||||
return self.wrap_for_utf8(orig_attr)
|
||||
return decode_from_utf8(orig_attr)
|
||||
|
||||
# Ensure all lines sent to weechat specify a prefix. For lines after the
|
||||
# first, we want to disable the prefix, which is done by specifying a
|
||||
# space.
|
||||
def prnt_date_tags(self, buffer, date, tags, message):
|
||||
message = message.replace("\n", "\n \t")
|
||||
return self.wrap_for_utf8(self.wrapped_class.prnt_date_tags)(
|
||||
buffer, date, tags, message
|
||||
)
|
||||
|
||||
|
||||
def utf8_decode(function):
|
||||
"""
|
||||
Decode all arguments from byte strings to unicode strings. Use this for
|
||||
functions called from outside of this script, e.g. callbacks from weechat.
|
||||
"""
|
||||
|
||||
@wraps(function)
|
||||
def wrapper(*args, **kwargs):
|
||||
|
||||
# Don't do anything if we're python 3
|
||||
if sys.hexversion >= 0x3000000:
|
||||
return function(*args, **kwargs)
|
||||
|
||||
return function(*decode_from_utf8(args), **decode_from_utf8(kwargs))
|
||||
|
||||
return wrapper
|
||||
|
||||
|
||||
def decode_from_utf8(data):
|
||||
if isinstance(data, bytes):
|
||||
return data.decode("utf-8")
|
||||
if isinstance(data, str):
|
||||
return data
|
||||
elif isinstance(data, Mapping):
|
||||
return type(data)(map(decode_from_utf8, data.items()))
|
||||
elif isinstance(data, Iterable):
|
||||
return type(data)(map(decode_from_utf8, data))
|
||||
return data
|
||||
|
||||
|
||||
def encode_to_utf8(data):
|
||||
if isinstance(data, str):
|
||||
return data.encode("utf-8")
|
||||
if isinstance(data, bytes):
|
||||
return data
|
||||
elif isinstance(data, Mapping):
|
||||
return type(data)(map(encode_to_utf8, data.items()))
|
||||
elif isinstance(data, Iterable):
|
||||
return type(data)(map(encode_to_utf8, data))
|
||||
return data
|
@ -0,0 +1,168 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
# Copyright © 2018, 2019 Damir Jelić <poljar@termina.org.uk>
|
||||
# Copyright © 2018, 2019 Denis Kasak <dkasak@termina.org.uk>
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for
|
||||
# any purpose with or without fee is hereby granted, provided that the
|
||||
# above copyright notice and this permission notice appear in all copies.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
|
||||
# RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF
|
||||
# CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
from __future__ import unicode_literals, division
|
||||
|
||||
import time
|
||||
from typing import Any, Dict, List
|
||||
|
||||
from .globals import W
|
||||
|
||||
if False:
|
||||
from .server import MatrixServer
|
||||
|
||||
|
||||
def key_from_value(dictionary, value):
|
||||
# type: (Dict[str, Any], Any) -> str
|
||||
return list(dictionary.keys())[list(dictionary.values()).index(value)]
|
||||
|
||||
|
||||
def server_buffer_prnt(server, string):
|
||||
# type: (MatrixServer, str) -> None
|
||||
assert server.server_buffer
|
||||
buffer = server.server_buffer
|
||||
now = int(time.time())
|
||||
W.prnt_date_tags(buffer, now, "", string)
|
||||
|
||||
|
||||
def tags_from_line_data(line_data):
|
||||
# type: (str) -> List[str]
|
||||
tags_count = W.hdata_get_var_array_size(
|
||||
W.hdata_get("line_data"), line_data, "tags_array"
|
||||
)
|
||||
|
||||
tags = [
|
||||
W.hdata_string(
|
||||
W.hdata_get("line_data"), line_data, "%d|tags_array" % i
|
||||
)
|
||||
for i in range(tags_count)
|
||||
]
|
||||
|
||||
return tags
|
||||
|
||||
|
||||
def create_server_buffer(server):
|
||||
# type: (MatrixServer) -> None
|
||||
buffer_name = "server.{}".format(server.name)
|
||||
server.server_buffer = W.buffer_new(
|
||||
buffer_name, "server_buffer_cb", server.name, "", ""
|
||||
)
|
||||
|
||||
server_buffer_set_title(server)
|
||||
W.buffer_set(server.server_buffer, "short_name", server.name)
|
||||
W.buffer_set(server.server_buffer, "localvar_set_type", "server")
|
||||
W.buffer_set(
|
||||
server.server_buffer, "localvar_set_nick", server.config.username
|
||||
)
|
||||
W.buffer_set(server.server_buffer, "localvar_set_server", server.name)
|
||||
W.buffer_set(server.server_buffer, "localvar_set_channel", server.name)
|
||||
|
||||
server.buffer_merge()
|
||||
|
||||
|
||||
def server_buffer_set_title(server):
|
||||
# type: (MatrixServer) -> None
|
||||
if server.numeric_address:
|
||||
ip_string = " ({address})".format(address=server.numeric_address)
|
||||
else:
|
||||
ip_string = ""
|
||||
|
||||
title = ("Matrix: {address}:{port}{ip}").format(
|
||||
address=server.address, port=server.config.port, ip=ip_string
|
||||
)
|
||||
|
||||
W.buffer_set(server.server_buffer, "title", title)
|
||||
|
||||
|
||||
def server_ts_to_weechat(timestamp):
|
||||
# type: (float) -> int
|
||||
date = int(timestamp / 1000)
|
||||
return date
|
||||
|
||||
|
||||
def strip_matrix_server(string):
|
||||
# type: (str) -> str
|
||||
return string.rsplit(":", 1)[0]
|
||||
|
||||
|
||||
def shorten_sender(sender):
|
||||
# type: (str) -> str
|
||||
return strip_matrix_server(sender)[1:]
|
||||
|
||||
|
||||
def string_strikethrough(string):
|
||||
return "".join(["{}\u0336".format(c) for c in string])
|
||||
|
||||
|
||||
def string_color_and_reset(string, color):
|
||||
"""Color string with color, then reset all attributes."""
|
||||
|
||||
lines = string.split('\n')
|
||||
lines = ("{}{}{}".format(W.color(color), line, W.color("reset"))
|
||||
for line in lines)
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def string_color(string, color):
|
||||
"""Color string with color, then reset the color attribute."""
|
||||
|
||||
lines = string.split('\n')
|
||||
lines = ("{}{}{}".format(W.color(color), line, W.color("resetcolor"))
|
||||
for line in lines)
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def color_pair(color_fg, color_bg):
|
||||
"""Make a color pair from a pair of colors."""
|
||||
|
||||
if color_bg:
|
||||
return "{},{}".format(color_fg, color_bg)
|
||||
else:
|
||||
return color_fg
|
||||
|
||||
|
||||
def text_block(text, margin=0):
|
||||
"""
|
||||
Pad block of text with whitespace to form a regular block, optionally
|
||||
adding a margin.
|
||||
"""
|
||||
|
||||
# add vertical margin
|
||||
vertical_margin = margin // 2
|
||||
text = "{}{}{}".format(
|
||||
"\n" * vertical_margin,
|
||||
text,
|
||||
"\n" * vertical_margin
|
||||
)
|
||||
|
||||
lines = text.split("\n")
|
||||
longest_len = max(len(l) for l in lines) + margin
|
||||
|
||||
# pad block and add horizontal margin
|
||||
text = "\n".join(
|
||||
"{pre}{line}{post}".format(
|
||||
pre=" " * margin,
|
||||
line=l,
|
||||
post=" " * (longest_len - len(l)))
|
||||
for l in lines)
|
||||
|
||||
return text
|
||||
|
||||
|
||||
def colored_text_block(text, margin=0, color_pair=""):
|
||||
""" Like text_block, but also colors it."""
|
||||
return string_color_and_reset(text_block(text, margin=margin), color_pair)
|
@ -0,0 +1,55 @@
|
||||
#
|
||||
# weechat -- relay.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[look]
|
||||
auto_open_buffer = on
|
||||
raw_messages = 256
|
||||
|
||||
[color]
|
||||
client = cyan
|
||||
status_active = lightblue
|
||||
status_auth_failed = lightred
|
||||
status_connecting = yellow
|
||||
status_disconnected = lightred
|
||||
status_waiting_auth = brown
|
||||
text = default
|
||||
text_bg = default
|
||||
text_selected = white
|
||||
|
||||
[network]
|
||||
allow_empty_password = off
|
||||
allowed_ips = ""
|
||||
bind_address = ""
|
||||
clients_purge_delay = 0
|
||||
compression_level = 6
|
||||
ipv6 = on
|
||||
max_clients = 5
|
||||
password = ""
|
||||
ssl_cert_key = "%h/ssl/relay.pem"
|
||||
ssl_priorities = "NORMAL:-VERS-SSL3.0"
|
||||
totp_secret = ""
|
||||
totp_window = 0
|
||||
websocket_allowed_origins = ""
|
||||
|
||||
[irc]
|
||||
backlog_max_minutes = 1440
|
||||
backlog_max_number = 256
|
||||
backlog_since_last_disconnect = on
|
||||
backlog_since_last_message = off
|
||||
backlog_tags = "irc_privmsg"
|
||||
backlog_time_format = "[%H:%M] "
|
||||
|
||||
[weechat]
|
||||
commands = ""
|
||||
|
||||
[port]
|
||||
|
||||
[path]
|
@ -0,0 +1,14 @@
|
||||
#
|
||||
# weechat -- ruby.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[look]
|
||||
check_license = off
|
||||
eval_keep_context = on
|
@ -0,0 +1,56 @@
|
||||
#
|
||||
# weechat -- script.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[look]
|
||||
columns = "%s %n %V %v %u | %d | %t"
|
||||
diff_color = on
|
||||
diff_command = "auto"
|
||||
display_source = on
|
||||
quiet_actions = on
|
||||
sort = "i,p,n"
|
||||
translate_description = on
|
||||
use_keys = on
|
||||
|
||||
[color]
|
||||
status_autoloaded = cyan
|
||||
status_held = white
|
||||
status_installed = lightcyan
|
||||
status_obsolete = lightmagenta
|
||||
status_popular = yellow
|
||||
status_running = lightgreen
|
||||
status_unknown = lightred
|
||||
text = default
|
||||
text_bg = default
|
||||
text_bg_selected = red
|
||||
text_date = default
|
||||
text_date_selected = white
|
||||
text_delimiters = default
|
||||
text_description = default
|
||||
text_description_selected = white
|
||||
text_extension = default
|
||||
text_extension_selected = white
|
||||
text_name = cyan
|
||||
text_name_selected = lightcyan
|
||||
text_selected = white
|
||||
text_tags = brown
|
||||
text_tags_selected = yellow
|
||||
text_version = magenta
|
||||
text_version_loaded = default
|
||||
text_version_loaded_selected = white
|
||||
text_version_selected = lightmagenta
|
||||
|
||||
[scripts]
|
||||
autoload = on
|
||||
cache_expire = 1440
|
||||
download_timeout = 30
|
||||
hold = ""
|
||||
path = "%h/script"
|
||||
url = "https://weechat.org/files/plugins.xml.gz"
|
Binary file not shown.
@ -0,0 +1,23 @@
|
||||
#
|
||||
# weechat -- sec.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[crypt]
|
||||
cipher = aes256
|
||||
hash_algo = sha256
|
||||
passphrase_file = ""
|
||||
salt = on
|
||||
|
||||
[data]
|
||||
__passphrase__ = on
|
||||
awful-club = "2101B7A5E27FA739B8ACD3268778C7478FB21D1BB0AB92D99CC4E8A55A7E927D2C62D5E6C19A79B4508B0C5C877976F0F10108DE6C9ED7AE476095197F89B49E5A865CAEC4359C0DB8EB94585B352C354AD55CBF32A2"
|
||||
bouncer-freenode = "788FA5CBA8EE781EEBA0DBD8C5F6CDE0B1082EEF0FC98EBAE6702EE652DFEE75F3B603F398EF9708249F6590B846CB5A3E48FE3D154BD803934B89F55F"
|
||||
bouncer-OFTC = "E819C6D41CA4304FA3BDE3E586C946845EEEF227806DE201495C6ABAD01CB7D0F240A3DFF47798CEF14C94143706CA9CE3E24DBD375FE06A7CA3DBDE67"
|
||||
awful.club = "387E8FE089A1A877C231194D1E65A6AEA053667481857E6CBE4E1B830B4BE74E405D6AC6F83D29676162EA5D2614982F9013C40949EFB5A5AB3F79B6309BE3BB258CD384085823C64B36B73D57115E5C20C94D413FAF"
|
@ -0,0 +1,33 @@
|
||||
#
|
||||
# weechat -- spell.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[color]
|
||||
misspelled = lightred
|
||||
suggestion = default
|
||||
suggestion_delimiter_dict = cyan
|
||||
suggestion_delimiter_word = cyan
|
||||
|
||||
[check]
|
||||
commands = "ame,amsg,away,command,cycle,kick,kickban,me,msg,notice,part,query,quit,topic"
|
||||
default_dict = ""
|
||||
during_search = off
|
||||
enabled = off
|
||||
real_time = off
|
||||
suggestions = -1
|
||||
word_min_length = 2
|
||||
|
||||
[dict]
|
||||
|
||||
[look]
|
||||
suggestion_delimiter_dict = " / "
|
||||
suggestion_delimiter_word = ","
|
||||
|
||||
[option]
|
@ -0,0 +1,14 @@
|
||||
#
|
||||
# weechat -- tcl.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[look]
|
||||
check_license = off
|
||||
eval_keep_context = on
|
@ -0,0 +1,83 @@
|
||||
#
|
||||
# weechat -- trigger.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[look]
|
||||
enabled = on
|
||||
monitor_strip_colors = off
|
||||
|
||||
[color]
|
||||
flag_command = lightgreen
|
||||
flag_conditions = yellow
|
||||
flag_post_action = lightblue
|
||||
flag_regex = lightcyan
|
||||
flag_return_code = lightmagenta
|
||||
regex = white
|
||||
replace = cyan
|
||||
trigger = green
|
||||
trigger_disabled = red
|
||||
|
||||
[trigger]
|
||||
bar_resize.arguments = "/bar set buflist size*;/bar set buflist_hotlist size*"
|
||||
bar_resize.command = "/buflist refresh"
|
||||
bar_resize.conditions = ""
|
||||
bar_resize.enabled = on
|
||||
bar_resize.hook = command_run
|
||||
bar_resize.post_action = none
|
||||
bar_resize.regex = ""
|
||||
bar_resize.return_code = ok
|
||||
bar_scroll.arguments = "/bar scroll buflist*"
|
||||
bar_scroll.command = "/bar scroll buflist * ${arguments};/bar scroll buflist_hotlist * ${arguments}"
|
||||
bar_scroll.conditions = ""
|
||||
bar_scroll.enabled = on
|
||||
bar_scroll.hook = command_run
|
||||
bar_scroll.post_action = none
|
||||
bar_scroll.regex = "/.*/${tg_command}/arguments /.* ([^ ]+)$/${re:1}/arguments"
|
||||
bar_scroll.return_code = ok_eat
|
||||
beep.arguments = ""
|
||||
beep.command = "/print -beep"
|
||||
beep.conditions = "${tg_displayed} && (${tg_highlight} || ${tg_msg_pv})"
|
||||
beep.enabled = on
|
||||
beep.hook = print
|
||||
beep.post_action = none
|
||||
beep.regex = ""
|
||||
beep.return_code = ok
|
||||
cmd_pass.arguments = "5000|input_text_display;5000|history_add;5000|irc_command_auth"
|
||||
cmd_pass.command = ""
|
||||
cmd_pass.conditions = ""
|
||||
cmd_pass.enabled = on
|
||||
cmd_pass.hook = modifier
|
||||
cmd_pass.post_action = none
|
||||
cmd_pass.regex = "==^((/(msg|m|quote) +(-server +[^ ]+ +)?nickserv +(id|identify|set +password|ghost +[^ ]+|release +[^ ]+|regain +[^ ]+|recover +[^ ]+) +)|/oper +[^ ]+ +|/quote +pass +|/set +[^ ]*password[^ ]* +|/secure +(passphrase|decrypt|set +[^ ]+) +)(.*)==${re:1}${hide:*,${re:+}}"
|
||||
cmd_pass.return_code = ok
|
||||
cmd_pass_register.arguments = "5000|input_text_display;5000|history_add;5000|irc_command_auth"
|
||||
cmd_pass_register.command = ""
|
||||
cmd_pass_register.conditions = ""
|
||||
cmd_pass_register.enabled = on
|
||||
cmd_pass_register.hook = modifier
|
||||
cmd_pass_register.post_action = none
|
||||
cmd_pass_register.regex = "==^(/(msg|m|quote) +nickserv +register +)([^ ]+)(.*)==${re:1}${hide:*,${re:3}}${re:4}"
|
||||
cmd_pass_register.return_code = ok
|
||||
msg_auth.arguments = "5000|irc_message_auth"
|
||||
msg_auth.command = ""
|
||||
msg_auth.conditions = ""
|
||||
msg_auth.enabled = on
|
||||
msg_auth.hook = modifier
|
||||
msg_auth.post_action = none
|
||||
msg_auth.regex = "==^(.*(id|identify|set +password|register|ghost +[^ ]+|release +[^ ]+|regain +[^ ]+|recover +[^ ]+) +)(.*)==${re:1}${hide:*,${re:+}}"
|
||||
msg_auth.return_code = ok
|
||||
server_pass.arguments = "5000|input_text_display;5000|history_add"
|
||||
server_pass.command = ""
|
||||
server_pass.conditions = ""
|
||||
server_pass.enabled = on
|
||||
server_pass.hook = modifier
|
||||
server_pass.post_action = none
|
||||
server_pass.regex = "==^(/(server|connect) .*-(sasl_)?password=)([^ ]+)(.*)==${re:1}${hide:*,${re:4}}${re:5}"
|
||||
server_pass.return_code = ok
|
@ -0,0 +1,680 @@
|
||||
#
|
||||
# weechat -- weechat.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[debug]
|
||||
|
||||
[startup]
|
||||
command_after_plugins = ""
|
||||
command_before_plugins = ""
|
||||
display_logo = on
|
||||
display_version = on
|
||||
sys_rlimit = ""
|
||||
|
||||
[look]
|
||||
align_end_of_lines = message
|
||||
align_multiline_words = on
|
||||
bar_more_down = ""
|
||||
bar_more_left = "<<"
|
||||
bar_more_right = ">>"
|
||||
bar_more_up = ""
|
||||
bare_display_exit_on_input = on
|
||||
bare_display_time_format = "%H:%M"
|
||||
buffer_auto_renumber = on
|
||||
buffer_notify_default = all
|
||||
buffer_position = end
|
||||
buffer_search_case_sensitive = off
|
||||
buffer_search_force_default = off
|
||||
buffer_search_regex = off
|
||||
buffer_search_where = prefix_message
|
||||
buffer_time_format = "%H:%M:%S"
|
||||
buffer_time_same = ""
|
||||
color_basic_force_bold = off
|
||||
color_inactive_buffer = on
|
||||
color_inactive_message = on
|
||||
color_inactive_prefix = on
|
||||
color_inactive_prefix_buffer = on
|
||||
color_inactive_time = off
|
||||
color_inactive_window = on
|
||||
color_nick_offline = off
|
||||
color_pairs_auto_reset = 5
|
||||
color_real_white = off
|
||||
command_chars = ""
|
||||
command_incomplete = off
|
||||
confirm_quit = off
|
||||
confirm_upgrade = off
|
||||
day_change = on
|
||||
day_change_message_1date = "-- %a, %d %b %Y --"
|
||||
day_change_message_2dates = "-- %%a, %%d %%b %%Y (%a, %d %b %Y) --"
|
||||
eat_newline_glitch = off
|
||||
emphasized_attributes = ""
|
||||
highlight = ""
|
||||
highlight_regex = ""
|
||||
highlight_tags = ""
|
||||
hotlist_add_conditions = "${away} || ${buffer.num_displayed} == 0 || ${info:relay_client_count,weechat,connected} > 0"
|
||||
hotlist_buffer_separator = ", "
|
||||
hotlist_count_max = 2
|
||||
hotlist_count_min_msg = 2
|
||||
hotlist_names_count = 3
|
||||
hotlist_names_length = 0
|
||||
hotlist_names_level = 12
|
||||
hotlist_names_merged_buffers = off
|
||||
hotlist_prefix = "H: "
|
||||
hotlist_remove = merged
|
||||
hotlist_short_names = on
|
||||
hotlist_sort = group_time_asc
|
||||
hotlist_suffix = ""
|
||||
hotlist_unique_numbers = on
|
||||
input_cursor_scroll = 20
|
||||
input_share = none
|
||||
input_share_overwrite = off
|
||||
input_undo_max = 32
|
||||
item_away_message = on
|
||||
item_buffer_filter = "•"
|
||||
item_buffer_zoom = "!"
|
||||
item_mouse_status = "M"
|
||||
item_time_format = "%H:%M"
|
||||
jump_current_to_previous_buffer = on
|
||||
jump_previous_buffer_when_closing = on
|
||||
jump_smart_back_to_buffer = on
|
||||
key_bind_safe = on
|
||||
key_grab_delay = 800
|
||||
mouse = on
|
||||
mouse_timer_delay = 100
|
||||
nick_color_force = ""
|
||||
nick_color_hash = djb2
|
||||
nick_color_stop_chars = "_|["
|
||||
nick_prefix = ""
|
||||
nick_suffix = ""
|
||||
paste_auto_add_newline = on
|
||||
paste_bracketed = on
|
||||
paste_bracketed_timer_delay = 10
|
||||
paste_max_lines = 1
|
||||
prefix_action = " *"
|
||||
prefix_align = right
|
||||
prefix_align_max = 0
|
||||
prefix_align_min = 0
|
||||
prefix_align_more = "+"
|
||||
prefix_align_more_after = on
|
||||
prefix_buffer_align = right
|
||||
prefix_buffer_align_max = 0
|
||||
prefix_buffer_align_more = "+"
|
||||
prefix_buffer_align_more_after = on
|
||||
prefix_error = "=!="
|
||||
prefix_join = "▬▬▶"
|
||||
prefix_network = "--"
|
||||
prefix_quit = "◀▬▬"
|
||||
prefix_same_nick = ""
|
||||
prefix_same_nick_middle = ""
|
||||
prefix_suffix = "│"
|
||||
quote_nick_prefix = "<"
|
||||
quote_nick_suffix = ">"
|
||||
quote_time_format = "%H:%M:%S"
|
||||
read_marker = line
|
||||
read_marker_always_show = off
|
||||
read_marker_string = "─"
|
||||
save_config_on_exit = on
|
||||
save_config_with_fsync = off
|
||||
save_layout_on_exit = none
|
||||
scroll_amount = 3
|
||||
scroll_bottom_after_switch = off
|
||||
scroll_page_percent = 100
|
||||
search_text_not_found_alert = on
|
||||
separator_horizontal = "-"
|
||||
separator_vertical = ""
|
||||
tab_width = 1
|
||||
time_format = "%a, %d %b %Y %T"
|
||||
window_auto_zoom = off
|
||||
window_separator_horizontal = on
|
||||
window_separator_vertical = on
|
||||
window_title = ""
|
||||
word_chars_highlight = "!\u00A0,-,_,|,alnum"
|
||||
word_chars_input = "!\u00A0,-,_,|,alnum"
|
||||
|
||||
[palette]
|
||||
|
||||
[color]
|
||||
bar_more = lightmagenta
|
||||
chat = default
|
||||
chat_bg = default
|
||||
chat_buffer = white
|
||||
chat_channel = white
|
||||
chat_day_change = cyan
|
||||
chat_delimiters = white
|
||||
chat_highlight = yellow
|
||||
chat_highlight_bg = magenta
|
||||
chat_host = 24
|
||||
chat_inactive_buffer = default
|
||||
chat_inactive_window = default
|
||||
chat_nick = lightcyan
|
||||
chat_nick_colors = "cyan,magenta,green,brown,lightblue,default,lightcyan,lightmagenta,lightgreen,blue"
|
||||
chat_nick_offline = default
|
||||
chat_nick_offline_highlight = default
|
||||
chat_nick_offline_highlight_bg = blue
|
||||
chat_nick_other = cyan
|
||||
chat_nick_prefix = green
|
||||
chat_nick_self = white
|
||||
chat_nick_suffix = green
|
||||
chat_prefix_action = white
|
||||
chat_prefix_buffer = brown
|
||||
chat_prefix_buffer_inactive_buffer = default
|
||||
chat_prefix_error = yellow
|
||||
chat_prefix_join = lightgreen
|
||||
chat_prefix_more = lightmagenta
|
||||
chat_prefix_network = magenta
|
||||
chat_prefix_quit = lightred
|
||||
chat_prefix_suffix = green
|
||||
chat_read_marker = magenta
|
||||
chat_read_marker_bg = default
|
||||
chat_server = brown
|
||||
chat_tags = red
|
||||
chat_text_found = yellow
|
||||
chat_text_found_bg = lightmagenta
|
||||
chat_time = default
|
||||
chat_time_delimiters = magenta
|
||||
chat_value = cyan
|
||||
chat_value_null = blue
|
||||
emphasized = yellow
|
||||
emphasized_bg = magenta
|
||||
input_actions = lightgreen
|
||||
input_text_not_found = red
|
||||
item_away = yellow
|
||||
nicklist_away = cyan
|
||||
nicklist_group = green
|
||||
separator = white
|
||||
status_count_highlight = magenta
|
||||
status_count_msg = brown
|
||||
status_count_other = default
|
||||
status_count_private = green
|
||||
status_data_highlight = lightmagenta
|
||||
status_data_msg = yellow
|
||||
status_data_other = default
|
||||
status_data_private = lightgreen
|
||||
status_filter = green
|
||||
status_more = yellow
|
||||
status_mouse = green
|
||||
status_name = 202
|
||||
status_name_ssl = lightgreen
|
||||
status_nicklist_count = default
|
||||
status_number = yellow
|
||||
status_time = default
|
||||
|
||||
[completion]
|
||||
base_word_until_cursor = on
|
||||
command_inline = on
|
||||
default_template = "%(nicks)|%(irc_channels)"
|
||||
nick_add_space = on
|
||||
nick_case_sensitive = off
|
||||
nick_completer = ": "
|
||||
nick_first_only = off
|
||||
nick_ignore_chars = "[]`_-^"
|
||||
partial_completion_alert = on
|
||||
partial_completion_command = off
|
||||
partial_completion_command_arg = off
|
||||
partial_completion_count = on
|
||||
partial_completion_other = off
|
||||
partial_completion_templates = "config_options"
|
||||
|
||||
[history]
|
||||
display_default = 5
|
||||
max_buffer_lines_minutes = 0
|
||||
max_buffer_lines_number = 4096
|
||||
max_commands = 100
|
||||
max_visited_buffers = 50
|
||||
|
||||
[proxy]
|
||||
|
||||
[network]
|
||||
connection_timeout = 60
|
||||
gnutls_ca_file = "/etc/ssl/certs/ca-certificates.crt"
|
||||
gnutls_handshake_timeout = 30
|
||||
proxy_curl = ""
|
||||
|
||||
[plugin]
|
||||
autoload = "*"
|
||||
debug = off
|
||||
extension = ".so,.dll"
|
||||
path = "%h/plugins"
|
||||
save_config_on_unload = on
|
||||
|
||||
[bar]
|
||||
buflist.color_bg = black
|
||||
buflist.color_delim = default
|
||||
buflist.color_fg = default
|
||||
buflist.conditions = ""
|
||||
buflist.filling_left_right = vertical
|
||||
buflist.filling_top_bottom = columns_vertical
|
||||
buflist.hidden = off
|
||||
buflist.items = "buflist"
|
||||
buflist.position = left
|
||||
buflist.priority = 2
|
||||
buflist.separator = off
|
||||
buflist.size = 15
|
||||
buflist.size_max = 0
|
||||
buflist.type = root
|
||||
buflist_hotlist.color_bg = default
|
||||
buflist_hotlist.color_delim = default
|
||||
buflist_hotlist.color_fg = default
|
||||
buflist_hotlist.conditions = ""
|
||||
buflist_hotlist.filling_left_right = vertical
|
||||
buflist_hotlist.filling_top_bottom = horizontal
|
||||
buflist_hotlist.hidden = off
|
||||
buflist_hotlist.items = "buflist2"
|
||||
buflist_hotlist.position = left
|
||||
buflist_hotlist.priority = 1
|
||||
buflist_hotlist.separator = on
|
||||
buflist_hotlist.size = 3
|
||||
buflist_hotlist.size_max = 0
|
||||
buflist_hotlist.type = root
|
||||
fset.color_bg = default
|
||||
fset.color_delim = cyan
|
||||
fset.color_fg = default
|
||||
fset.conditions = "${buffer.full_name} == fset.fset"
|
||||
fset.filling_left_right = vertical
|
||||
fset.filling_top_bottom = horizontal
|
||||
fset.hidden = off
|
||||
fset.items = "fset"
|
||||
fset.position = top
|
||||
fset.priority = 0
|
||||
fset.separator = on
|
||||
fset.size = 3
|
||||
fset.size_max = 3
|
||||
fset.type = window
|
||||
input.color_bg = default
|
||||
input.color_delim = cyan
|
||||
input.color_fg = default
|
||||
input.conditions = ""
|
||||
input.filling_left_right = vertical
|
||||
input.filling_top_bottom = horizontal
|
||||
input.hidden = off
|
||||
input.items = "[input_prompt]+(away),[input_search],[input_paste],input_text"
|
||||
input.position = bottom
|
||||
input.priority = 1000
|
||||
input.separator = off
|
||||
input.size = 1
|
||||
input.size_max = 0
|
||||
input.type = window
|
||||
nicklist.color_bg = default
|
||||
nicklist.color_delim = cyan
|
||||
nicklist.color_fg = default
|
||||
nicklist.conditions = "${nicklist}"
|
||||
nicklist.filling_left_right = vertical
|
||||
nicklist.filling_top_bottom = columns_vertical
|
||||
nicklist.hidden = off
|
||||
nicklist.items = "buffer_nicklist"
|
||||
nicklist.position = right
|
||||
nicklist.priority = 200
|
||||
nicklist.separator = on
|
||||
nicklist.size = 0
|
||||
nicklist.size_max = 0
|
||||
nicklist.type = window
|
||||
status.color_bg = magenta
|
||||
status.color_delim = cyan
|
||||
status.color_fg = default
|
||||
status.conditions = ""
|
||||
status.filling_left_right = vertical
|
||||
status.filling_top_bottom = horizontal
|
||||
status.hidden = off
|
||||
status.items = "[time],[buffer_plugin],scroll,[lag],completion,matrix_typing_notice"
|
||||
status.position = bottom
|
||||
status.priority = 500
|
||||
status.separator = off
|
||||
status.size = 1
|
||||
status.size_max = 0
|
||||
status.type = window
|
||||
title.color_bg = magenta
|
||||
title.color_delim = cyan
|
||||
title.color_fg = default
|
||||
title.conditions = ""
|
||||
title.filling_left_right = vertical
|
||||
title.filling_top_bottom = horizontal
|
||||
title.hidden = off
|
||||
title.items = "buffer_title"
|
||||
title.position = top
|
||||
title.priority = 500
|
||||
title.separator = off
|
||||
title.size = 1
|
||||
title.size_max = 0
|
||||
title.type = window
|
||||
|
||||
[layout]
|
||||
|
||||
[notify]
|
||||
|
||||
[filter]
|
||||
|
||||
[key]
|
||||
ctrl-? = "/input delete_previous_char"
|
||||
ctrl-A = "/input move_beginning_of_line"
|
||||
ctrl-B = "/input move_previous_char"
|
||||
ctrl-C_ = "/input insert \x1F"
|
||||
ctrl-Cb = "/input insert \x02"
|
||||
ctrl-Cc = "/input insert \x03"
|
||||
ctrl-Ci = "/input insert \x1D"
|
||||
ctrl-Co = "/input insert \x0F"
|
||||
ctrl-Cv = "/input insert \x16"
|
||||
ctrl-D = "/input delete_next_char"
|
||||
ctrl-E = "/input move_end_of_line"
|
||||
ctrl-F = "/input move_next_char"
|
||||
ctrl-H = "/input delete_previous_char"
|
||||
ctrl-I = "/input complete_next"
|
||||
ctrl-J = "/input return"
|
||||
ctrl-K = "/input delete_end_of_line"
|
||||
ctrl-L = "/window refresh"
|
||||
ctrl-M = "/input return"
|
||||
ctrl-N = "/buffer +1"
|
||||
ctrl-P = "/buffer -1"
|
||||
ctrl-R = "/input search_text_here"
|
||||
ctrl-Sctrl-U = "/input set_unread"
|
||||
ctrl-T = "/input transpose_chars"
|
||||
ctrl-U = "/input delete_beginning_of_line"
|
||||
ctrl-W = "/input delete_previous_word"
|
||||
ctrl-X = "/input switch_active_buffer"
|
||||
ctrl-Y = "/input clipboard_paste"
|
||||
meta-meta-OP = "/bar scroll buflist * b"
|
||||
meta-meta-OQ = "/bar scroll buflist * e"
|
||||
meta-meta2-11~ = "/bar scroll buflist * b"
|
||||
meta-meta2-12~ = "/bar scroll buflist * e"
|
||||
meta-meta2-1~ = "/window scroll_top"
|
||||
meta-meta2-23~ = "/bar scroll nicklist * b"
|
||||
meta-meta2-24~ = "/bar scroll nicklist * e"
|
||||
meta-meta2-4~ = "/window scroll_bottom"
|
||||
meta-meta2-5~ = "/window scroll_up"
|
||||
meta-meta2-6~ = "/window scroll_down"
|
||||
meta-meta2-7~ = "/window scroll_top"
|
||||
meta-meta2-8~ = "/window scroll_bottom"
|
||||
meta-meta2-A = "/buffer -1"
|
||||
meta-meta2-B = "/buffer +1"
|
||||
meta-meta2-C = "/buffer +1"
|
||||
meta-meta2-D = "/buffer -1"
|
||||
meta-- = "/filter toggle @"
|
||||
meta-/ = "/input jump_last_buffer_displayed"
|
||||
meta-0 = "/buffer *10"
|
||||
meta-1 = "/buffer *1"
|
||||
meta-2 = "/buffer *2"
|
||||
meta-3 = "/buffer *3"
|
||||
meta-4 = "/buffer *4"
|
||||
meta-5 = "/buffer *5"
|
||||
meta-6 = "/buffer *6"
|
||||
meta-7 = "/buffer *7"
|
||||
meta-8 = "/buffer *8"
|
||||
meta-9 = "/buffer *9"
|
||||
meta-< = "/input jump_previously_visited_buffer"
|
||||
meta-= = "/filter toggle"
|
||||
meta-> = "/input jump_next_visited_buffer"
|
||||
meta-OA = "/input history_global_previous"
|
||||
meta-OB = "/input history_global_next"
|
||||
meta-OC = "/input move_next_word"
|
||||
meta-OD = "/input move_previous_word"
|
||||
meta-OF = "/input move_end_of_line"
|
||||
meta-OH = "/input move_beginning_of_line"
|
||||
meta-OP = "/bar scroll buflist * -100%"
|
||||
meta-OQ = "/bar scroll buflist * +100%"
|
||||
meta-Oa = "/input history_global_previous"
|
||||
meta-Ob = "/input history_global_next"
|
||||
meta-Oc = "/input move_next_word"
|
||||
meta-Od = "/input move_previous_word"
|
||||
meta2-11^ = "/bar scroll buflist * -100%"
|
||||
meta2-11~ = "/bar scroll buflist * -100%"
|
||||
meta2-12^ = "/bar scroll buflist * +100%"
|
||||
meta2-12~ = "/bar scroll buflist * +100%"
|
||||
meta2-15~ = "/buffer -1"
|
||||
meta2-17~ = "/buffer +1"
|
||||
meta2-18~ = "/window -1"
|
||||
meta2-19~ = "/window +1"
|
||||
meta2-1;3A = "/buffer -1"
|
||||
meta2-1;3B = "/buffer +1"
|
||||
meta2-1;3C = "/buffer +1"
|
||||
meta2-1;3D = "/buffer -1"
|
||||
meta2-1;3F = "/window scroll_bottom"
|
||||
meta2-1;3H = "/window scroll_top"
|
||||
meta2-1;3P = "/bar scroll buflist * b"
|
||||
meta2-1;3Q = "/bar scroll buflist * e"
|
||||
meta2-1;5A = "/input history_global_previous"
|
||||
meta2-1;5B = "/input history_global_next"
|
||||
meta2-1;5C = "/input move_next_word"
|
||||
meta2-1;5D = "/input move_previous_word"
|
||||
meta2-1;5P = "/bar scroll buflist * -100%"
|
||||
meta2-1;5Q = "/bar scroll buflist * +100%"
|
||||
meta2-1~ = "/input move_beginning_of_line"
|
||||
meta2-200~ = "/input paste_start"
|
||||
meta2-201~ = "/input paste_stop"
|
||||
meta2-20~ = "/bar scroll title * -30%"
|
||||
meta2-21~ = "/bar scroll title * +30%"
|
||||
meta2-23;3~ = "/bar scroll nicklist * b"
|
||||
meta2-23;5~ = "/bar scroll nicklist * -100%"
|
||||
meta2-23^ = "/bar scroll nicklist * -100%"
|
||||
meta2-23~ = "/bar scroll nicklist * -100%"
|
||||
meta2-24;3~ = "/bar scroll nicklist * e"
|
||||
meta2-24;5~ = "/bar scroll nicklist * +100%"
|
||||
meta2-24^ = "/bar scroll nicklist * +100%"
|
||||
meta2-24~ = "/bar scroll nicklist * +100%"
|
||||
meta2-3~ = "/input delete_next_char"
|
||||
meta2-4~ = "/input move_end_of_line"
|
||||
meta2-5;3~ = "/window scroll_up"
|
||||
meta2-5~ = "/window page_up"
|
||||
meta2-6;3~ = "/window scroll_down"
|
||||
meta2-6~ = "/window page_down"
|
||||
meta2-7~ = "/input move_beginning_of_line"
|
||||
meta2-8~ = "/input move_end_of_line"
|
||||
meta2-A = "/input history_previous"
|
||||
meta2-B = "/input history_next"
|
||||
meta2-C = "/input move_next_char"
|
||||
meta2-D = "/input move_previous_char"
|
||||
meta2-F = "/input move_end_of_line"
|
||||
meta2-G = "/window page_down"
|
||||
meta2-H = "/input move_beginning_of_line"
|
||||
meta2-I = "/window page_up"
|
||||
meta2-Z = "/input complete_previous"
|
||||
meta2-[E = "/buffer -1"
|
||||
meta-_ = "/input redo"
|
||||
meta-a = "/input jump_smart"
|
||||
meta-b = "/input move_previous_word"
|
||||
meta-d = "/input delete_next_word"
|
||||
meta-f = "/input move_next_word"
|
||||
meta-h = "/input hotlist_clear"
|
||||
meta-jmeta-f = "/buffer -"
|
||||
meta-jmeta-l = "/buffer +"
|
||||
meta-jmeta-r = "/server raw"
|
||||
meta-jmeta-s = "/server jump"
|
||||
meta-j01 = "/buffer *1"
|
||||
meta-j02 = "/buffer *2"
|
||||
meta-j03 = "/buffer *3"
|
||||
meta-j04 = "/buffer *4"
|
||||
meta-j05 = "/buffer *5"
|
||||
meta-j06 = "/buffer *6"
|
||||
meta-j07 = "/buffer *7"
|
||||
meta-j08 = "/buffer *8"
|
||||
meta-j09 = "/buffer *9"
|
||||
meta-j10 = "/buffer *10"
|
||||
meta-j11 = "/buffer *11"
|
||||
meta-j12 = "/buffer *12"
|
||||
meta-j13 = "/buffer *13"
|
||||
meta-j14 = "/buffer *14"
|
||||
meta-j15 = "/buffer *15"
|
||||
meta-j16 = "/buffer *16"
|
||||
meta-j17 = "/buffer *17"
|
||||
meta-j18 = "/buffer *18"
|
||||
meta-j19 = "/buffer *19"
|
||||
meta-j20 = "/buffer *20"
|
||||
meta-j21 = "/buffer *21"
|
||||
meta-j22 = "/buffer *22"
|
||||
meta-j23 = "/buffer *23"
|
||||
meta-j24 = "/buffer *24"
|
||||
meta-j25 = "/buffer *25"
|
||||
meta-j26 = "/buffer *26"
|
||||
meta-j27 = "/buffer *27"
|
||||
meta-j28 = "/buffer *28"
|
||||
meta-j29 = "/buffer *29"
|
||||
meta-j30 = "/buffer *30"
|
||||
meta-j31 = "/buffer *31"
|
||||
meta-j32 = "/buffer *32"
|
||||
meta-j33 = "/buffer *33"
|
||||
meta-j34 = "/buffer *34"
|
||||
meta-j35 = "/buffer *35"
|
||||
meta-j36 = "/buffer *36"
|
||||
meta-j37 = "/buffer *37"
|
||||
meta-j38 = "/buffer *38"
|
||||
meta-j39 = "/buffer *39"
|
||||
meta-j40 = "/buffer *40"
|
||||
meta-j41 = "/buffer *41"
|
||||
meta-j42 = "/buffer *42"
|
||||
meta-j43 = "/buffer *43"
|
||||
meta-j44 = "/buffer *44"
|
||||
meta-j45 = "/buffer *45"
|
||||
meta-j46 = "/buffer *46"
|
||||
meta-j47 = "/buffer *47"
|
||||
meta-j48 = "/buffer *48"
|
||||
meta-j49 = "/buffer *49"
|
||||
meta-j50 = "/buffer *50"
|
||||
meta-j51 = "/buffer *51"
|
||||
meta-j52 = "/buffer *52"
|
||||
meta-j53 = "/buffer *53"
|
||||
meta-j54 = "/buffer *54"
|
||||
meta-j55 = "/buffer *55"
|
||||
meta-j56 = "/buffer *56"
|
||||
meta-j57 = "/buffer *57"
|
||||
meta-j58 = "/buffer *58"
|
||||
meta-j59 = "/buffer *59"
|
||||
meta-j60 = "/buffer *60"
|
||||
meta-j61 = "/buffer *61"
|
||||
meta-j62 = "/buffer *62"
|
||||
meta-j63 = "/buffer *63"
|
||||
meta-j64 = "/buffer *64"
|
||||
meta-j65 = "/buffer *65"
|
||||
meta-j66 = "/buffer *66"
|
||||
meta-j67 = "/buffer *67"
|
||||
meta-j68 = "/buffer *68"
|
||||
meta-j69 = "/buffer *69"
|
||||
meta-j70 = "/buffer *70"
|
||||
meta-j71 = "/buffer *71"
|
||||
meta-j72 = "/buffer *72"
|
||||
meta-j73 = "/buffer *73"
|
||||
meta-j74 = "/buffer *74"
|
||||
meta-j75 = "/buffer *75"
|
||||
meta-j76 = "/buffer *76"
|
||||
meta-j77 = "/buffer *77"
|
||||
meta-j78 = "/buffer *78"
|
||||
meta-j79 = "/buffer *79"
|
||||
meta-j80 = "/buffer *80"
|
||||
meta-j81 = "/buffer *81"
|
||||
meta-j82 = "/buffer *82"
|
||||
meta-j83 = "/buffer *83"
|
||||
meta-j84 = "/buffer *84"
|
||||
meta-j85 = "/buffer *85"
|
||||
meta-j86 = "/buffer *86"
|
||||
meta-j87 = "/buffer *87"
|
||||
meta-j88 = "/buffer *88"
|
||||
meta-j89 = "/buffer *89"
|
||||
meta-j90 = "/buffer *90"
|
||||
meta-j91 = "/buffer *91"
|
||||
meta-j92 = "/buffer *92"
|
||||
meta-j93 = "/buffer *93"
|
||||
meta-j94 = "/buffer *94"
|
||||
meta-j95 = "/buffer *95"
|
||||
meta-j96 = "/buffer *96"
|
||||
meta-j97 = "/buffer *97"
|
||||
meta-j98 = "/buffer *98"
|
||||
meta-j99 = "/buffer *99"
|
||||
meta-k = "/input grab_key_command"
|
||||
meta-l = "/window bare"
|
||||
meta-m = "/mute mouse toggle"
|
||||
meta-n = "/window scroll_next_highlight"
|
||||
meta-p = "/window scroll_previous_highlight"
|
||||
meta-r = "/input delete_line"
|
||||
meta-s = "/mute spell toggle"
|
||||
meta-u = "/window scroll_unread"
|
||||
meta-wmeta-meta2-A = "/window up"
|
||||
meta-wmeta-meta2-B = "/window down"
|
||||
meta-wmeta-meta2-C = "/window right"
|
||||
meta-wmeta-meta2-D = "/window left"
|
||||
meta-wmeta2-1;3A = "/window up"
|
||||
meta-wmeta2-1;3B = "/window down"
|
||||
meta-wmeta2-1;3C = "/window right"
|
||||
meta-wmeta2-1;3D = "/window left"
|
||||
meta-wmeta-b = "/window balance"
|
||||
meta-wmeta-s = "/window swap"
|
||||
meta-x = "/input zoom_merged_buffer"
|
||||
meta-z = "/window zoom"
|
||||
ctrl-_ = "/input undo"
|
||||
|
||||
[key_search]
|
||||
ctrl-I = "/input search_switch_where"
|
||||
ctrl-J = "/input search_stop_here"
|
||||
ctrl-M = "/input search_stop_here"
|
||||
ctrl-Q = "/input search_stop"
|
||||
ctrl-R = "/input search_switch_regex"
|
||||
meta2-A = "/input search_previous"
|
||||
meta2-B = "/input search_next"
|
||||
meta-c = "/input search_switch_case"
|
||||
|
||||
[key_cursor]
|
||||
ctrl-J = "/cursor stop"
|
||||
ctrl-M = "/cursor stop"
|
||||
meta-meta2-A = "/cursor move area_up"
|
||||
meta-meta2-B = "/cursor move area_down"
|
||||
meta-meta2-C = "/cursor move area_right"
|
||||
meta-meta2-D = "/cursor move area_left"
|
||||
meta2-1;3A = "/cursor move area_up"
|
||||
meta2-1;3B = "/cursor move area_down"
|
||||
meta2-1;3C = "/cursor move area_right"
|
||||
meta2-1;3D = "/cursor move area_left"
|
||||
meta2-A = "/cursor move up"
|
||||
meta2-B = "/cursor move down"
|
||||
meta2-C = "/cursor move right"
|
||||
meta2-D = "/cursor move left"
|
||||
@item(buffer_nicklist):K = "/window ${_window_number};/kickban ${nick}"
|
||||
@item(buffer_nicklist):b = "/window ${_window_number};/ban ${nick}"
|
||||
@item(buffer_nicklist):k = "/window ${_window_number};/kick ${nick}"
|
||||
@item(buffer_nicklist):q = "/window ${_window_number};/query ${nick};/cursor stop"
|
||||
@item(buffer_nicklist):w = "/window ${_window_number};/whois ${nick}"
|
||||
@chat:Q = "hsignal:chat_quote_time_prefix_message;/cursor stop"
|
||||
@chat:m = "hsignal:chat_quote_message;/cursor stop"
|
||||
@chat:q = "hsignal:chat_quote_prefix_message;/cursor stop"
|
||||
|
||||
[key_mouse]
|
||||
@bar(buflist):ctrl-wheeldown = "hsignal:buflist_mouse"
|
||||
@bar(buflist):ctrl-wheelup = "hsignal:buflist_mouse"
|
||||
@bar(input):button2 = "/input grab_mouse_area"
|
||||
@bar(nicklist):button1-gesture-down = "/bar scroll nicklist ${_window_number} +100%"
|
||||
@bar(nicklist):button1-gesture-down-long = "/bar scroll nicklist ${_window_number} e"
|
||||
@bar(nicklist):button1-gesture-up = "/bar scroll nicklist ${_window_number} -100%"
|
||||
@bar(nicklist):button1-gesture-up-long = "/bar scroll nicklist ${_window_number} b"
|
||||
@chat(fset.fset):button1 = "/window ${_window_number};/fset -go ${_chat_line_y}"
|
||||
@chat(fset.fset):button2* = "hsignal:fset_mouse"
|
||||
@chat(fset.fset):wheeldown = "/fset -down 5"
|
||||
@chat(fset.fset):wheelup = "/fset -up 5"
|
||||
@chat(script.scripts):button1 = "/window ${_window_number};/script go ${_chat_line_y}"
|
||||
@chat(script.scripts):button2 = "/window ${_window_number};/script go ${_chat_line_y};/script installremove -q ${script_name_with_extension}"
|
||||
@chat(script.scripts):wheeldown = "/script down 5"
|
||||
@chat(script.scripts):wheelup = "/script up 5"
|
||||
@item(buffer_nicklist):button1 = "/window ${_window_number};/query ${nick}"
|
||||
@item(buffer_nicklist):button1-gesture-left = "/window ${_window_number};/kick ${nick}"
|
||||
@item(buffer_nicklist):button1-gesture-left-long = "/window ${_window_number};/kickban ${nick}"
|
||||
@item(buffer_nicklist):button2 = "/window ${_window_number};/whois ${nick}"
|
||||
@item(buffer_nicklist):button2-gesture-left = "/window ${_window_number};/ban ${nick}"
|
||||
@item(buflist):button1* = "hsignal:buflist_mouse"
|
||||
@item(buflist):button2* = "hsignal:buflist_mouse"
|
||||
@item(buflist2):button1* = "hsignal:buflist_mouse"
|
||||
@item(buflist2):button2* = "hsignal:buflist_mouse"
|
||||
@item(buflist3):button1* = "hsignal:buflist_mouse"
|
||||
@item(buflist3):button2* = "hsignal:buflist_mouse"
|
||||
@bar:wheeldown = "/bar scroll ${_bar_name} ${_window_number} +20%"
|
||||
@bar:wheelup = "/bar scroll ${_bar_name} ${_window_number} -20%"
|
||||
@chat:button1 = "/window ${_window_number}"
|
||||
@chat:button1-gesture-left = "/window ${_window_number};/buffer -1"
|
||||
@chat:button1-gesture-left-long = "/window ${_window_number};/buffer 1"
|
||||
@chat:button1-gesture-right = "/window ${_window_number};/buffer +1"
|
||||
@chat:button1-gesture-right-long = "/window ${_window_number};/input jump_last_buffer"
|
||||
@chat:ctrl-wheeldown = "/window scroll_horiz -window ${_window_number} +10%"
|
||||
@chat:ctrl-wheelup = "/window scroll_horiz -window ${_window_number} -10%"
|
||||
@chat:wheeldown = "/window scroll_down -window ${_window_number}"
|
||||
@chat:wheelup = "/window scroll_up -window ${_window_number}"
|
||||
@*:button3 = "/cursor go ${_x},${_y}"
|
@ -0,0 +1,43 @@
|
||||
[2019-07-28 14:08:00] WeeChat 2.6-dev (git: v2.5-62-g93cd05bdd) (compiled on Jul 28 2019 02:51:00)
|
||||
[2019-07-28 14:08:00] Reading configuration file sec.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file weechat.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file plugins.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file charset.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file logger.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file exec.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file trigger.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file spell.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file alias.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file buflist.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file fifo.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file xfer.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file irc.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file relay.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file python.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file perl.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file script.conf
|
||||
[2019-07-28 14:08:10] Reading configuration file fset.conf
|
||||
[2019-07-28 14:08:10] irc: connecting to server bouncer.awful.club/5000 (SSL)...
|
||||
[2019-07-28 14:08:10] irc: connecting to server bouncer.awful.club/5000 (SSL)...
|
||||
[2019-07-28 14:08:22] Reading configuration file matrix.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file sec.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file weechat.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file plugins.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file charset.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file logger.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file exec.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file trigger.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file spell.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file alias.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file buflist.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file fifo.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file xfer.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file irc.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file relay.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file python.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file perl.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file script.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file fset.conf
|
||||
[2019-07-28 14:17:05] Writing configuration file matrix.conf
|
||||
[2019-07-28 14:44:06] irc: connecting to server bouncer.awful.club/5000 (SSL)...
|
||||
[2019-07-28 14:44:08] irc: connecting to server bouncer.awful.club/5000 (SSL)...
|
@ -0,0 +1,48 @@
|
||||
#
|
||||
# weechat -- xfer.conf
|
||||
#
|
||||
# WARNING: It is NOT recommended to edit this file by hand,
|
||||
# especially if WeeChat is running.
|
||||
#
|
||||
# Use /set or similar command to change settings in WeeChat.
|
||||
#
|
||||
# For more info, see: https://weechat.org/doc/quickstart
|
||||
#
|
||||
|
||||
[look]
|
||||
auto_open_buffer = on
|
||||
progress_bar_size = 20
|
||||
pv_tags = "notify_private"
|
||||
|
||||
[color]
|
||||
status_aborted = lightred
|
||||
status_active = lightblue
|
||||
status_connecting = yellow
|
||||
status_done = lightgreen
|
||||
status_failed = lightred
|
||||
status_waiting = lightcyan
|
||||
text = default
|
||||
text_bg = default
|
||||
text_selected = white
|
||||
|
||||
[network]
|
||||
blocksize = 65536
|
||||
fast_send = on
|
||||
own_ip = ""
|
||||
port_range = ""
|
||||
send_ack = on
|
||||
speed_limit_recv = 0
|
||||
speed_limit_send = 0
|
||||
timeout = 300
|
||||
|
||||
[file]
|
||||
auto_accept_chats = off
|
||||
auto_accept_files = off
|
||||
auto_accept_nicks = ""
|
||||
auto_check_crc32 = off
|
||||
auto_rename = on
|
||||
auto_resume = on
|
||||
convert_spaces = on
|
||||
download_path = "%h/xfer"
|
||||
upload_path = "~"
|
||||
use_nick_in_filename = on
|
Loading…
Reference in new issue