utils
index
/home/gl/pylink/utils.py

 
Modules
       
imp
inspect
re
string
world

 
Classes
       
builtins.Exception(builtins.BaseException)
NotAuthenticatedError
builtins.object
TS6SIDGenerator
TS6UIDGenerator

 
class NotAuthenticatedError(builtins.Exception)
    # This is separate from classes.py to prevent import loops.
 
 
Method resolution order:
NotAuthenticatedError
builtins.Exception
builtins.BaseException
builtins.object

Data descriptors defined here:
__weakref__
list of weak references to the object (if defined)

Methods inherited from builtins.Exception:
__init__(self, /, *args, **kwargs)
Initialize self.  See help(type(self)) for accurate signature.
__new__(*args, **kwargs) from builtins.type
Create and return a new object.  See help(type) for accurate signature.

Methods inherited from builtins.BaseException:
__delattr__(self, name, /)
Implement delattr(self, name).
__getattribute__(self, name, /)
Return getattr(self, name).
__reduce__(...)
__repr__(self, /)
Return repr(self).
__setattr__(self, name, value, /)
Implement setattr(self, name, value).
__setstate__(...)
__str__(self, /)
Return str(self).
with_traceback(...)
Exception.with_traceback(tb) --
set self.__traceback__ to tb and return self.

Data descriptors inherited from builtins.BaseException:
__cause__
exception cause
__context__
exception context
__dict__
__suppress_context__
__traceback__
args

 
class TS6SIDGenerator(builtins.object)
    TS6 SID Generator. <query> is a 3 character string with any combination of
uppercase letters, digits, and #'s. it must contain at least one #,
which are used by the generator as a wildcard. On every next_sid() call,
the first available wildcard character (from the right) will be
incremented to generate the next SID.
 
When there are no more available SIDs left (SIDs are not reused, only
incremented), RuntimeError is raised.
 
Example queries:
    "1#A" would give: 10A, 11A, 12A ... 19A, 1AA, 1BA ... 1ZA (36 total results)
    "#BQ" would give: 0BQ, 1BQ, 2BQ ... 9BQ (10 total results)
    "6##" would give: 600, 601, 602, ... 60Y, 60Z, 610, 611, ... 6ZZ (1296 total results)
 
  Methods defined here:
__init__(self, irc)
increment(self, pos=2)
next_sid(self)

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
class TS6UIDGenerator(builtins.object)
    TS6 UID Generator module, adapted from InspIRCd source
https://github.com/inspircd/inspircd/blob/f449c6b296ab/src/server.cpp#L85-L156
 
  Methods defined here:
__init__(self, sid)
increment(self, pos=5)
next_uid(self)

Data descriptors defined here:
__dict__
dictionary for instance variables (if defined)
__weakref__
list of weak references to the object (if defined)

 
Functions
       
add_cmd(func, name=None)
add_hook(func, command)
Add a hook <func> for command <command>.
applyModes(irc, target, changedmodes)
Takes a list of parsed IRC modes, and applies them on the given target.
 
The target can be either a channel or a user; this is handled automatically.
checkAuthenticated(irc, uid, allowAuthed=True, allowOper=True)
Checks whetherthe given user has operator status on PyLink, raising
NotAuthenticatedError and logging the access denial if not.
clientToServer(irc, numeric)
Finds the SID of the server a user is on.
getHostmask(irc, user)
Gets the hostmask of the given user, if present.
getProtoModule(protoname)
Imports and returns the protocol module requested.
isChannel(s)
Checks whether the string given is a valid channel name.
isHostmask(text)
Returns whether the given text is a valid hostmask.
isInternalClient(irc, numeric)
Checks whether the given numeric is a PyLink Client,
returning the SID of the server it's on if so.
isInternalServer(irc, sid)
Returns whether the given SID is an internal PyLink server.
isManipulatableClient(irc, uid)
Returns whether the given user is marked as an internal, manipulatable
client. Usually, automatically spawned services clients should have this
set True to prevent interactions with opers (like mode changes) from
causing desyncs.
isNick(s, nicklen=None)
Checks whether the string given is a valid nick.
isOper(irc, uid, allowAuthed=True, allowOper=True)
Returns whether the given user has operator status on PyLink. This can be achieved
by either identifying to PyLink as admin (if allowAuthed is True),
or having user mode +o set (if allowOper is True). At least one of
allowAuthed or allowOper must be True for this to give any meaningful
results.
isServerName(s)
Checks whether the string given is a server name.
joinModes(modes)
Takes a list of (mode, arg) tuples in parseModes() format, and
joins them into a string.
 
See testJoinModes in tests/test_utils.py for some examples.
loadModuleFromFolder(name, folder)
Attempts an import of name from a specific folder, returning the resulting module.
nickToUid(irc, nick)
Returns the UID of a user named nick, if present.
parseModes(irc, target, args)
Parses a modestring list into a list of (mode, argument) tuples.
['+mitl-o', '3', 'person'] => [('+m', None), ('+i', None), ('+t', None), ('+l', '3'), ('-o', 'person')]
reverseModes(irc, target, modes, oldobj=None)
Reverses/Inverts the mode string or mode list given.
 
Optionally, an oldobj argument can be given to look at an earlier state of
a channel/user object, e.g. for checking the op status of a mode setter
before their modes are processed and added to the channel state.
 
This function allows both mode strings or mode lists. Example uses:
    "+mi-lk test => "-mi+lk test"
    "mi-k test => "-mi+k test"
    [('+m', None), ('+r', None), ('+l', '3'), ('-o', 'person')
     => {('-m', None), ('-r', None), ('-l', None), ('+o', 'person')})
    {('s', None), ('+o', 'whoever') => {('-s', None), ('-o', 'whoever')})
toLower(irc, text)
Returns a lowercase representation of text based on the IRC object's
casemapping (rfc1459 or ascii).

 
Data
        hostmaskRe = re.compile('^\\S+!\\S+@\\S+$')
log = <logging.RootLogger object>