summaryrefslogtreecommitdiff
path: root/scripts/python/keepnick.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/python/keepnick.py')
-rw-r--r--scripts/python/keepnick.py204
1 files changed, 0 insertions, 204 deletions
diff --git a/scripts/python/keepnick.py b/scripts/python/keepnick.py
deleted file mode 100644
index 7f8c4e024..000000000
--- a/scripts/python/keepnick.py
+++ /dev/null
@@ -1,204 +0,0 @@
-# -*- encoding: iso-8859-1 -*-
-#
-# Copyright (c) 2006 by EgS <i@egs.name>
-#
-# 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 2 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, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-#
-
-
-#######################################################################
-# #
-# This script enables the user to keep their nicks and recover it in #
-# case it get's stolen. It uses the servers prefered nicks, so there #
-# is no need for any kind of setup. #
-# #
-# Name: Keepnick #
-# Licence: GPL v2 #
-# Author: Marcus Eggenberger <i@egs.name> #
-# #
-# Usage: #
-# /keepnick on|off|<positive number> #
-# #
-# use /help command for detailed information #
-# #
-# Changelog: #
-# 0.4: now starts on load and features user defined check intervals #
-# 0.3: Fixed major bug with continuous nickchanges #
-# 0.2: Fixed Bug: now only checks connected servers #
-# 0.1: first version released #
-# #
-#######################################################################
-
-# ====================
-# Imports
-# ====================
-import sys
-
-# ====================
-# Constants
-# ====================
-NAME = 'Keepnick'
-VERSION = '0.4'
-DESCRIPTION = "Plugin to keep your nick and recover it in case it's stolen"
-
-ISON = '/ison %s'
-NICK = '/nick %s'
-
-NICKSTEALER_LEFT = "Nickstealer left Network: %s!"
-KEEPNICK_ARG_ERROR = "\"%s\" is not a valid argument to /keepnick"
-KEEPNICK_ON = "Keepnick locked and loaded! (checking every %s seconds)"
-KEEPNICK_OFF = "Keepnick offline!"
-
-DELAY = 10
-
-# ====================
-# Exceptions
-# ====================
-
-# ====================
-# Helpers
-# ====================
-class WeePrint(object):
- def write(self, text):
- text = text.rstrip(' \0\n') # strip the null byte appended by pythons print
- if text:
- weechat.prnt(text,'')
-
-def registerFunction(function):
- # Register a python function as a commandhandler
- # Function needs to be named like weeFunction and
- # is bound to /function
- # docstring is used for weechat help
- functionname = function.__name__ # guess what :)
- weecommand = functionname[3:].lower() # strip the wee
-
- doc = function.__doc__.splitlines()
- arguments = doc[0] # First docstring line is the arguments string
- description = doc[1][4:]
- args_description = '\n'.join([line[4:] for line in doc[2:-1]]) # join rest and strip indentation
-
- if not function.func_defaults: # use args default value as template
- template = ''
- elif len(function.func_defaults) == 1:
- template = function.func_defaults[0]
- elif len(function.func_defaults) == 2:
- template = func.func_defaults[1]
-
- weechat.add_command_handler(weecommand, functionname, description, arguments, args_description, template)
-
-def registerFunctions():
- functions = [function for name, function in globals().iteritems() if name.startswith('wee') and callable(function)]
- for func in functions:
- registerFunction(func)
-
-# ====================
-# Functions
-# ====================
-def servernicks(servername):
- server = weechat.get_server_info()[servername]
- servernicks = [server['nick1'], server['nick2'], server['nick3']]
- return servernicks
-
-def ison(server, nicklist):
- weechat.command(ISON % ' '.join(nicklist), "", server)
-
-def gotnick(server):
- server = weechat.get_server_info()[server]
- return server['nick'].lower() == server['nick1'].lower()
-
-def checknicks():
- for servername, server in weechat.get_server_info().iteritems():
- if not gotnick(servername) and server['ssl_connected'] + server['is_connected']:
- ison(servername, servernicks(servername))
- return weechat.PLUGIN_RC_OK
-
-def grabnick(server, nick):
- if not gotnick(server):
- print NICKSTEALER_LEFT % server
- weechat.command(NICK % nick, '', server)
-
-def isonhandler(server, args):
- nothing, message, nicks = args.split(':')
- nicks = [nick.lower() for nick in nicks.split()]
- for nick in servernicks(server):
- if nick.lower() == weechat.get_info("nick",server):
- return weechat.PLUGIN_RC_OK_IGNORE_ALL
- elif nick.lower() not in nicks:
- grabnick(server, nick)
- return weechat.PLUGIN_RC_OK_IGNORE_ALL
-
- if 0 in [nick.lower() in [mynick.lower() for mynick in servernicks(server)] for nick in nicks]:
- # if any nick wich is return by ison is not on our checklist we're not the caller
- return weechat.PLUGIN_RC_OK
- else:
- # seems like we're the caller -> ignore the output
- return weechat.PLUGIN_RC_OK_IGNORE_ALL
-
-def weeKeepnick(server, args="ON|OFF"):
- """ON|OFF|<positive number>
- Enables or Disables the use of keepnick.
- When active Keepnick ensures that you keep your preferred nicks.
- Keepnick checks for the preferred nicks of each server config,
- so there is no need to configure anything. Using a number as the
- argument it sets the checkperiod to that number in seconds.
-
- Example:
- /keepnick ON
- """
- VALIDARGS = ['ON','OFF']
-
- weechat.remove_handler('303', "isonhandler")
- weechat.remove_timer_handler("checknicks")
-
- try:
- delay = int(args)
- if delay < 1:
- raise ValueError
- globals()['DELAY'] = delay
- except ValueError:
- if args.upper() not in VALIDARGS:
- print KEEPNICK_ARG_ERROR % args
- return weechat.PLUGIN_RC_OK
-
- if args.upper() != 'OFF':
- weechat.add_timer_handler(DELAY,"checknicks")
- weechat.add_message_handler('303', "isonhandler")
- print KEEPNICK_ON % DELAY
- else:
- print KEEPNICK_OFF
-
- return weechat.PLUGIN_RC_OK
-
-# ====================
-# Let's Register!
-# ====================
-if __name__ == '__main__':
- try:
- import weechat
- except ImportError:
- print "This script is to be loaded as PythonScript in WeeChat"
- print "Get WeeChat now at: http://weechat.flashtux.org/"
- import sys
- sys.exit(10)
-
- # kick pythons print to weechat.prnt(msg, '')
- sys.stdout = WeePrint()
- weechat.register(NAME, VERSION, "", DESCRIPTION)
- registerFunctions()
- weeKeepnick('','ON')
-
-
-
-