latest weechat

localirc
Ben Harris 2018-11-19 14:17:22 -05:00
parent 174197f597
commit 3387e124d2
5 changed files with 185 additions and 47 deletions

View File

@ -36,4 +36,4 @@ indent = "${color:237}${if:${buffer.next_buffer.local_variables.type}=~^(channel
lag = " ${color:green}[${color:brown}${lag}${color:green}]" lag = " ${color:green}[${color:brown}${lag}${color:green}]"
name = "${name}" name = "${name}"
nick_prefix = "${color_nick_prefix}${nick_prefix}" nick_prefix = "${color_nick_prefix}${nick_prefix}"
number = "${color:green}${number}${if:${number_displayed}?:}" number = "${color:green}${number}"

View File

@ -112,7 +112,7 @@ whois_double_nick = off
addresses = "" addresses = ""
anti_flood_prio_high = 2 anti_flood_prio_high = 2
anti_flood_prio_low = 2 anti_flood_prio_low = 2
autoconnect = off autoconnect = on
autojoin = "" autojoin = ""
autoreconnect = on autoreconnect = on
autoreconnect_delay = 10 autoreconnect_delay = 10
@ -156,7 +156,7 @@ tilde.addresses = "localhost"
tilde.proxy tilde.proxy
tilde.ipv6 tilde.ipv6
tilde.ssl = off tilde.ssl = off
tilde.ssl_cert tilde.ssl_cert = "%h/ssl/benharri.pem"
tilde.ssl_priorities tilde.ssl_priorities
tilde.ssl_dhkey_size tilde.ssl_dhkey_size
tilde.ssl_fingerprint tilde.ssl_fingerprint
@ -180,7 +180,7 @@ tilde.local_hostname
tilde.usermode tilde.usermode
tilde.command = "/oper root ${sec.data.tildenetoper}; /msg operserv login ${sec.data.pass}" tilde.command = "/oper root ${sec.data.tildenetoper}; /msg operserv login ${sec.data.pass}"
tilde.command_delay tilde.command_delay
tilde.autojoin = "#opers,#secret-sudoers,#meta,#team,#sudoers,#YourTilde,#chaos,#bots,#music,#share,#stevenuniverse,#suwp,#projects,#politics,#dnd,#journal,#shitposting,#quotes,#gopher,#tildeverse,#venting,#idlerpg,#tilderadio,#zaphod,#thunix,#yee,#modded,#minecraft,#minetest,#bbj,#tildelinux,#tildetheater,#slbr youneedtoknowthepassword,secretsudoteam" tilde.autojoin = "#chaos,#secret-sudoers,#opers,#meta,#team,#sudoers,#YourTilde,#bots,#music,#share,#stevenuniverse,#suwp,#projects,#politics,#dnd,#journal,#shitposting,#quotes,#gopher,#tildeverse,#venting,#idlerpg,#tilderadio,#zaphod,#thunix,#yee,#modded,#minecraft,#minetest,#bbj,#tildelinux,#tildetheater,#slbr fosslinux,secretsudoteam,youneedtoknowthepassword"
tilde.autorejoin tilde.autorejoin
tilde.autorejoin_delay tilde.autorejoin_delay
tilde.connection_timeout tilde.connection_timeout
@ -344,7 +344,7 @@ sdf.local_hostname
sdf.usermode sdf.usermode
sdf.command sdf.command
sdf.command_delay sdf.command_delay
sdf.autojoin = "#helpdesk,#anonradio,#gopher,#sdf" sdf.autojoin = "#sdf,#gopher,#anonradio,#helpdesk"
sdf.autorejoin sdf.autorejoin
sdf.autorejoin_delay sdf.autorejoin_delay
sdf.connection_timeout sdf.connection_timeout
@ -521,47 +521,6 @@ blinkenshell.msg_part
blinkenshell.msg_quit blinkenshell.msg_quit
blinkenshell.notify blinkenshell.notify
blinkenshell.split_msg_max_length blinkenshell.split_msg_max_length
dgrove.addresses = "irc.dannygrove.com/6697"
dgrove.proxy
dgrove.ipv6
dgrove.ssl = on
dgrove.ssl_cert
dgrove.ssl_priorities
dgrove.ssl_dhkey_size
dgrove.ssl_fingerprint
dgrove.ssl_verify
dgrove.password
dgrove.capabilities
dgrove.sasl_mechanism
dgrove.sasl_username
dgrove.sasl_password
dgrove.sasl_key
dgrove.sasl_timeout
dgrove.sasl_fail
dgrove.autoconnect
dgrove.autoreconnect
dgrove.autoreconnect_delay
dgrove.nicks
dgrove.nicks_alternate
dgrove.username
dgrove.realname
dgrove.local_hostname
dgrove.usermode
dgrove.command
dgrove.command_delay
dgrove.autojoin
dgrove.autorejoin
dgrove.autorejoin_delay
dgrove.connection_timeout
dgrove.anti_flood_prio_high
dgrove.anti_flood_prio_low
dgrove.away_check
dgrove.away_check_max_nicks
dgrove.msg_kick
dgrove.msg_part
dgrove.msg_quit
dgrove.notify
dgrove.split_msg_max_length
cat.addresses = "tilde.cat" cat.addresses = "tilde.cat"
cat.proxy cat.proxy
cat.ipv6 cat.ipv6
@ -644,3 +603,44 @@ bitlbee.msg_part
bitlbee.msg_quit bitlbee.msg_quit
bitlbee.notify bitlbee.notify
bitlbee.split_msg_max_length bitlbee.split_msg_max_length
inspircd.addresses = "irc.inspircd.org"
inspircd.proxy
inspircd.ipv6
inspircd.ssl
inspircd.ssl_cert
inspircd.ssl_priorities
inspircd.ssl_dhkey_size
inspircd.ssl_fingerprint
inspircd.ssl_verify
inspircd.password
inspircd.capabilities
inspircd.sasl_mechanism
inspircd.sasl_username = "benharri"
inspircd.sasl_password = "${sec.data.pass}"
inspircd.sasl_key
inspircd.sasl_timeout
inspircd.sasl_fail
inspircd.autoconnect = on
inspircd.autoreconnect
inspircd.autoreconnect_delay
inspircd.nicks = "benharri"
inspircd.nicks_alternate
inspircd.username
inspircd.realname
inspircd.local_hostname
inspircd.usermode
inspircd.command
inspircd.command_delay
inspircd.autojoin = "#inspircd"
inspircd.autorejoin
inspircd.autorejoin_delay
inspircd.connection_timeout
inspircd.anti_flood_prio_high
inspircd.anti_flood_prio_low
inspircd.away_check
inspircd.away_check_max_nicks
inspircd.msg_kick
inspircd.msg_part
inspircd.msg_quit
inspircd.notify
inspircd.split_msg_max_length

View File

@ -0,0 +1 @@
../buffer_autoclose.py

View File

@ -0,0 +1,137 @@
# -*- coding: utf-8 -*-
#
# Copyright (c) 2009 by xt <xt@bash.no>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
#
# (this script requires WeeChat 0.3.0 or newer)
#
# History:
# 2018-04-10, Sébastien Helleu <flashcode@flashtux.org>
# version 0.5: fix infolist_time for WeeChat >= 2.2 (WeeChat returns a long
# integer instead of a string)
# 2016-02-05, ixti
# version 0.4: Add Python3 support
# 2009-12-15, xt
# version 0.3: moved around some control structures to not be as noisy
# 2009-12-02, xt
# version 0.2: bugfix, more printing
# 2009-12-01, xt <xt@bash.no>
# version 0.1: initial release
import weechat as w
import time
SCRIPT_NAME = "buffer_autoclose"
SCRIPT_AUTHOR = "xt <xt@bash.no>"
SCRIPT_VERSION = "0.5"
SCRIPT_LICENSE = "GPL3"
SCRIPT_DESC = "Automatically close inactive private message buffers"
settings = {
'interval': '1', # How often in minutes to check
'age_limit': '30', # How old in minutes before auto close
'ignore': '', # Buffers to ignore (use full name: server.buffer_name)
}
if w.register(SCRIPT_NAME, SCRIPT_AUTHOR, SCRIPT_VERSION, SCRIPT_LICENSE,
SCRIPT_DESC, "", ""):
for option, default_value in settings.items():
if not w.config_is_set_plugin(option):
w.config_set_plugin(option, default_value)
w.hook_timer(\
int(w.config_get_plugin('interval')) * 1000 * 60,
0,
0,
"close_time_cb",
'')
def get_all_buffers():
'''Returns list with pointers of all open buffers.'''
buffers = []
infolist = w.infolist_get('buffer', '', '')
while w.infolist_next(infolist):
buffer_type = w.buffer_get_string(w.infolist_pointer(infolist, 'pointer'), 'localvar_type')
if buffer_type == 'private': # we only close private message buffers for now
buffers.append(w.infolist_pointer(infolist, 'pointer'))
w.infolist_free(infolist)
return buffers
def get_last_line_date(buffer):
date = '1970-01-01 01:00:00'
infolist = w.infolist_get('buffer_lines', buffer, '')
while w.infolist_prev(infolist):
date = w.infolist_time(infolist, 'date')
# since WeeChat 2.2, infolist_time returns a long integer instead of
# a string
if not isinstance(date, str):
date = time.strftime('%F %T', time.localtime(int(date)))
if date != '1970-01-01 01:00:00':
# Some lines like "Day changed to" message doesn't have date
# set so loop until we find a message that does
break
w.infolist_free(infolist)
return date
def is_in_hotlist(buffer):
''' Returns true if buffer is in hotlist, false if not'''
hotlist = w.infolist_get('hotlist', '', '')
found = False
while w.infolist_next(hotlist):
thebuffer = w.infolist_pointer(hotlist, 'buffer_pointer')
if thebuffer == buffer:
found = True
name = w.buffer_get_string(thebuffer, 'short_name')
break
w.infolist_free(hotlist)
return found
def close_time_cb(buffer, args):
''' Callback for check for inactivity and close '''
for buffer in get_all_buffers():
name = w.buffer_get_string(buffer, 'name')
date = get_last_line_date(buffer)
date = time.mktime(time.strptime(date, '%Y-%m-%d %H:%M:%S'))
now = time.time()
seconds_old = now - date
if seconds_old > int(w.config_get_plugin('age_limit'))*60:
if is_in_hotlist(buffer):
#w.prnt('', '%s: Not closing buffer: %s: it is in hotlist' %(SCRIPT_NAME, name))
continue
if name in w.config_get_plugin('ignore').split(','):
#w.prnt('', '%s: Not closing buffer: %s: it is in ignore list' %(SCRIPT_NAME, name))
continue
if buffer == w.current_buffer():
# Never close current buffer
#w.prnt('', '%s: Not closing buffer: %s: it is in currently active' %(SCRIPT_NAME, name))
continue
if len(w.buffer_get_string(buffer, 'input')):
# Don't close buffers with text on input line
#w.prnt('', '%s: Not closing buffer: %s: it has input' %(SCRIPT_NAME, name))
continue
w.prnt('', '%s: Closing buffer: %s' %(SCRIPT_NAME, name))
w.command(buffer, '/buffer close')
#else:
# w.prnt('', '%s: Not closing buffer: %s: it is too new: %s' %(SCRIPT_NAME, name, seconds_old))
return w.WEECHAT_RC_OK

View File

@ -110,7 +110,7 @@ prefix_error = "=!="
prefix_join = "-->" prefix_join = "-->"
prefix_network = "--" prefix_network = "--"
prefix_quit = "<--" prefix_quit = "<--"
prefix_same_nick = "-" prefix_same_nick = ""
prefix_suffix = "│" prefix_suffix = "│"
quote_nick_prefix = "<" quote_nick_prefix = "<"
quote_nick_suffix = ">" quote_nick_suffix = ">"