diff options
author | Stefan Hacker <dd0t@users.sourceforge.net> | 2010-02-12 01:47:07 +0300 |
---|---|---|
committer | Stefan Hacker <dd0t@users.sourceforge.net> | 2010-02-12 01:47:07 +0300 |
commit | 5da1dc21ae1a39719dd7b51a9dae5dc04999c8c4 (patch) | |
tree | 6189a3a5a996c2ad5a21bae6a3ee22cf57c4c133 | |
parent | 40bb6b1d3d4e2f4b11a1582a2f54c472683565bb (diff) |
Update smfauth.py and phpBB3auth.py for Murmur 1.2.2 avatar capabilities.
WARNING: This breaks backwards compatibility with Murmur <1.2.2 . If you plan to use these scripts in this version or any newer version please update Murmur to at least version 1.2.2.
-rw-r--r-- | Authenticators/SMF/smfauth.ini | 14 | ||||
-rw-r--r-- | Authenticators/SMF/smfauth.py | 72 | ||||
-rw-r--r-- | Authenticators/phpBB3/phpBB3auth.ini | 14 | ||||
-rw-r--r-- | Authenticators/phpBB3/phpBB3auth.py | 73 |
4 files changed, 13 insertions, 160 deletions
diff --git a/Authenticators/SMF/smfauth.ini b/Authenticators/SMF/smfauth.ini index 2c0981c..1d572f6 100644 --- a/Authenticators/SMF/smfauth.ini +++ b/Authenticators/SMF/smfauth.ini @@ -20,21 +20,9 @@ path = http://localhost/smf/ [user] ;If you do not already know what it is just leave it as it is id_offset = 1000000000 -;If enabled avatars are automatically set as user textures +;If enabled avatars are automatically set as user avatars avatar_enable = False -;If avatar fetching is enabled and the following options are configured -;the username will be overlayed over the avatar from the board. -;The font can be any truetype font (default is verdana), the x,y variables -;define the offset and fill the color used to draw the text -avatar_username_enable = True -avatar_username_font = verdana.ttf -avatar_username_fontsize = 30 -avatar_username_x = 65 -avatar_username_y = 10 -avatar_username_fill = #FFCC01 - - ;Ice configuration [ice] host = 127.0.0.1 diff --git a/Authenticators/SMF/smfauth.py b/Authenticators/SMF/smfauth.py index 5aac841..9921020 100644 --- a/Authenticators/SMF/smfauth.py +++ b/Authenticators/SMF/smfauth.py @@ -36,7 +36,6 @@ # Requirements: # * python >=2.4 and the following python modules: # * ice-python -# * PIL >=1.1.5 (only if avatar import is enabled) # * MySQLdb # * daemon (when run as a daemon) # @@ -74,7 +73,6 @@ def x2bool(s): #--- Default configuration values # cfgfile = 'smfauth.ini' -user_texture_resolution = (600,60) default = {'database':(('lib', str, 'MySQLdb'), ('name', str, 'smf'), ('user', str, 'smf'), @@ -85,13 +83,7 @@ default = {'database':(('lib', str, 'MySQLdb'), 'forum':(('path', str, 'http://localhost/smf/'),), 'user':(('id_offset', int, 1000000000), - ('avatar_enable', x2bool, False), - ('avatar_username_enable', x2bool, True), - ('avatar_username_font', str, 'verdana.ttf'), - ('avatar_username_fontsize', int, 30), - ('avatar_username_x', int, 65), - ('avatar_username_y', int, 10), - ('avatar_username_fill', str, '#FF0000')), + ('avatar_enable', x2bool, False)), 'ice':(('host', str, '127.0.0.1'), ('port', int, 6502), @@ -290,17 +282,6 @@ def do_main_program(): Murmur.ServerUpdatingAuthenticator.__init__(self) self.server = server - if cfg.user.avatar_enable and cfg.user.avatar_username_enable: - # Load font - try: - self.font = ImageFont.truetype(cfg.user.avatar_username_font, cfg.user.avatar_username_fontsize) - except IOError, e: - error("Could not load font for username texture overlay from '%s': %s", cfg.user.avatar_username_font, e) - self.font = None - else: - self.font = None - - def authenticate(self, name, pw, certlist, certhash, strong, current = None): """ This function is called to authenticate a user @@ -313,7 +294,7 @@ def do_main_program(): if name == 'SuperUser': debug('Forced fall through for SuperUser') return (FALL_THROUGH, None, None) - print entity_encode(name) + try: sql = 'SELECT ID_MEMBER, passwd, ID_GROUP, memberName, realName, additionalGroups, is_activated FROM %smembers WHERE LOWER(memberName) = LOWER(%%s) OR realName = %%s' % cfg.database.prefix cur = threadDB.execute(sql, (name, entity_encode(name))) @@ -481,39 +462,14 @@ def do_main_program(): try: handle = urllib2.urlopen(avatar_file) - file = StringIO.StringIO(handle.read()) + file = handle.read() handle.close() except urllib2.URLError, e: warning('Image download for "%s" (%d) failed: %s', avatar_file, id, str(e)) return FALL_THROUGH - try: - # Load image and scale it - img = Image.open(file).convert("RGBA") - img.thumbnail((user_texture_resolution[0],user_texture_resolution[1]), Image.ANTIALIAS) - img = img.transform(user_texture_resolution, - Image.EXTENT, - (0, 0, user_texture_resolution[0], user_texture_resolution[1])) - - if cfg.user.avatar_username_enable and self.font: - # Insert user name into picture - draw = ImageDraw.Draw(img) - draw.text((cfg.user.avatar_username_x, cfg.user.avatar_username_y), - entity_decode(username), - fill = cfg.user.avatar_username_fill, - font = self.font) - - r,g,b,a = img.split() - raw = Image.merge('RGBA', (b, g, r, a)).tostring() - comp = compress(raw) - res = pack('>L', len(raw)) + comp - except Exception, e: - warning('Image manipulation for "%s" (%d) failed', avatar_file, id) - debug(e) - return FALL_THROUGH - - self.texture_cache[avatar_file] = res - return res + self.texture_cache[avatar_file] = file + return self.texture_cache[avatar_file] def registerUser(self, name, current = None): @@ -673,24 +629,6 @@ if __name__ == '__main__': print>>sys.stderr, 'Fatal error, could not load config file from "%s"' % cfgfile sys.exit(1) - # Do conditional imports - if cfg.user.avatar_enable: - # If we use avatars we need PIL to manipulate it and some other stuff for working with them - try: - import Image - if cfg.user.avatar_username_enable: - import ImageFont - import ImageDraw - except ImportError, e: - print>>sys.stderr, 'Error, could not import PIL library, '\ - 'please install the missing dependency and restart the authenticator' - sys.exit(1) - - import StringIO - - from zlib import compress - from struct import pack - try: db = __import__(cfg.database.lib) except ImportError, e: diff --git a/Authenticators/phpBB3/phpBB3auth.ini b/Authenticators/phpBB3/phpBB3auth.ini index d33a295..b97b849 100644 --- a/Authenticators/phpBB3/phpBB3auth.ini +++ b/Authenticators/phpBB3/phpBB3auth.ini @@ -13,22 +13,10 @@ port = 3306 [user] ;If you do not already know what it is just leave it as it is id_offset = 1000000000 -;If enabled avatars are automatically set as user textures +;If enabled avatars are automatically set as user avatars avatar_enable = False avatar_path = http://localhost/phpBB3/download/file.php?avatar= -;If avatar fetching is enabled and the following options are configured -;the username will be overlayed over the avatar from the board. -;The font can be any truetype font (default is verdana), the x,y variables -;define the offset and fill the color used to draw the text -avatar_username_enable = True -avatar_username_font = verdana.ttf -avatar_username_fontsize = 30 -avatar_username_x = 65 -avatar_username_y = 10 -avatar_username_fill = #FFCC01 - - ;Ice configuration [ice] host = 127.0.0.1 diff --git a/Authenticators/phpBB3/phpBB3auth.py b/Authenticators/phpBB3/phpBB3auth.py index 8d23f6f..cd6b772 100644 --- a/Authenticators/phpBB3/phpBB3auth.py +++ b/Authenticators/phpBB3/phpBB3auth.py @@ -36,7 +36,6 @@ # Requirements: # * python >=2.4 and the following python modules: # * ice-python -# * PIL >=1.1.5 (only if avatar import is enabled) # * MySQLdb # * daemon (when run as a daemon) # @@ -44,6 +43,7 @@ import sys import Ice import thread +import urllib2 import logging import ConfigParser @@ -71,7 +71,6 @@ def x2bool(s): #--- Default configuration values # cfgfile = 'phpBB3auth.ini' -user_texture_resolution = (600,60) default = {'database':(('lib', str, 'MySQLdb'), ('name', str, 'phpbb3'), ('user', str, 'phpbb3'), @@ -82,13 +81,7 @@ default = {'database':(('lib', str, 'MySQLdb'), 'user':(('id_offset', int, 1000000000), ('avatar_enable', x2bool, False), - ('avatar_path', str, 'http://localhost/phpBB3/download.php?avatar='), - ('avatar_username_enable', x2bool, True), - ('avatar_username_font', str, 'verdana.ttf'), - ('avatar_username_fontsize', int, 30), - ('avatar_username_x', int, 65), - ('avatar_username_y', int, 10), - ('avatar_username_fill', str, '#FF0000')), + ('avatar_path', str, 'http://localhost/phpBB3/download.php?avatar=')), 'ice':(('host', str, '127.0.0.1'), ('port', int, 6502), @@ -259,17 +252,6 @@ def do_main_program(): Murmur.ServerUpdatingAuthenticator.__init__(self) self.server = server - if cfg.user.avatar_enable and cfg.user.avatar_username_enable: - # Load font - try: - self.font = ImageFont.truetype(cfg.user.avatar_username_font, cfg.user.avatar_username_fontsize) - except IOError, e: - error("Could not load font for username texture overlay from '%s': %s", cfg.user.avatar_username_font, e) - self.font = None - else: - self.font = None - - def authenticate(self, name, pw, certlist, certhash, strong, current = None): """ This function is called to authenticate a user @@ -425,39 +407,15 @@ def do_main_program(): try: handle = urllib2.urlopen(url) - file = StringIO.StringIO(handle.read()) + file = handle.read() handle.close() except urllib2.URLError, e: warning('Image download for "%s" (%d) failed: %s', url, id, str(e)) return FALL_THROUGH - try: - # Load image and scale it - img = Image.open(file).convert("RGBA") - img.thumbnail((user_texture_resolution[0],user_texture_resolution[1]), Image.ANTIALIAS) - img = img.transform(user_texture_resolution, - Image.EXTENT, - (0, 0, user_texture_resolution[0], user_texture_resolution[1])) - - if cfg.user.avatar_username_enable and self.font: - # Insert user name into picture - draw = ImageDraw.Draw(img) - draw.text((cfg.user.avatar_username_x, cfg.user.avatar_username_y), - username, - fill = cfg.user.avatar_username_fill, - font = self.font) - - r,g,b,a = img.split() - raw = Image.merge('RGBA', (b, g, r, a)).tostring() - comp = compress(raw) - res = pack('>L', len(raw)) + comp - except Exception, e: - warning('Image manipulation for "%s" (%d) failed', url, id) - debug(e) - return FALL_THROUGH - - self.texture_cache[avatar_file] = res - return res + self.texture_cache[avatar_file] = file + + return self.texture_cache[avatar_file] def registerUser(self, name, current = None): @@ -684,25 +642,6 @@ if __name__ == '__main__': except Exception, e: print>>sys.stderr, 'Fatal error, could not load config file from "%s"' % cfgfile sys.exit(1) - - # Do conditional imports - if cfg.user.avatar_enable: - # If we use avatars we need PIL to manipulate it and some other stuff for working with them - try: - import Image - if cfg.user.avatar_username_enable: - import ImageFont - import ImageDraw - except ImportError, e: - print>>sys.stderr, 'Error, could not import PIL library, '\ - 'please install the missing dependency and restart the authenticator' - sys.exit(1) - - import urllib2 - import StringIO - - from zlib import compress - from struct import pack try: db = __import__(cfg.database.lib) |