aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/users/users.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/users/users.py')
-rw-r--r--lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/users/users.py184
1 files changed, 0 insertions, 184 deletions
diff --git a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/users/users.py b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/users/users.py
deleted file mode 100644
index cae07428..00000000
--- a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/process/users/users.py
+++ /dev/null
@@ -1,184 +0,0 @@
-# This file is part of Buildbot. Buildbot 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, version 2.
-#
-# 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 Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Copyright Buildbot Team Members
-
-import os
-from twisted.python import log
-from twisted.internet import defer
-
-from buildbot.util import flatten
-
-try:
- from hashlib import sha1 as sha
- assert sha
-except ImportError:
- # For Python 2.4
- import sha
-
-srcs = ['git', 'svn', 'hg', 'cvs', 'darcs', 'bzr']
-salt_len = 8
-
-def createUserObject(master, author, src=None):
- """
- Take a Change author and source and translate them into a User Object,
- storing the user in master.db, or returning None if the src is not
- specified.
-
- @param master: link to Buildmaster for database operations
- @type master: master.Buildmaster instance
-
- @param authors: Change author if string or Authz instance
- @type authors: string or status.web.authz instance
-
- @param src: source from which the User Object will be created
- @type src: string
- """
-
- if not src:
- log.msg("No vcs information found, unable to create User Object")
- return defer.succeed(None)
-
- if src in srcs:
- usdict = dict(identifier=author, attr_type=src, attr_data=author)
- else:
- log.msg("Unrecognized source argument: %s" % src)
- return defer.succeed(None)
-
- return master.db.users.findUserByAttr(
- identifier=usdict['identifier'],
- attr_type=usdict['attr_type'],
- attr_data=usdict['attr_data'])
-
-
-def _extractContact(usdict, contact_types, uid):
- if usdict:
- for type in contact_types:
- contact = usdict.get(type)
- if contact:
- break
- else:
- contact = None
- if contact is None:
- log.msg(format="Unable to find any of %(contact_types)r for uid: %(uid)r",
- contact_types=contact_types, uid=uid)
- return contact
-
-def getUserContact(master, contact_types, uid):
- """
- This is a simple getter function that returns a user attribute
- that matches the contact_types argument, or returns None if no
- uid/match is found.
-
- @param master: BuildMaster used to query the database
- @type master: BuildMaster instance
-
- @param contact_types: list of contact attributes to look for in
- in a given user, such as 'email' or 'nick'
- @type contact_types: list of strings
-
- @param uid: user that is searched for the contact_types match
- @type uid: integer
-
- @returns: string of contact information or None via deferred
- """
- d = master.db.users.getUser(uid)
- d.addCallback(_extractContact, contact_types, uid)
- return d
-
-def _filter(contacts):
- def notNone(c):
- return c is not None
- return filter(notNone, contacts)
-
-def getUsersContacts(master, contact_types, uids):
- d = defer.gatherResults([getUserContact(master, contact_types, uid) for uid in uids])
- d.addCallback(_filter)
- return d
-
-def getChangeContacts(master, change, contact_types):
- d = master.db.changes.getChangeUids(change.number)
- d.addCallback(lambda uids: getUsersContacts(master, contact_types, uids))
- return d
-
-def getSourceStampContacts(master, ss, contact_types):
- dl = [getChangeContacts(master, change, contact_types) for change in ss.changes]
- if False and ss.patch_info:
- d = master.db.users.getUserByUsername(ss.patch_into[0])
- d.addCallback(_extractContact, contact_types, ss.patch_info[0])
- d.addCallback(lambda contact: filter(None, [contact]))
- dl.append(d)
- d = defer.gatherResults(dl)
- d.addCallback(flatten)
- return d
-
-def getBuildContacts(master, build, contact_types):
- dl = []
- ss_list = build.getSourceStamps()
- for ss in ss_list:
- dl.append(getSourceStampContacts(master, ss, contact_types))
- d = defer.gatherResults(dl)
- d.addCallback(flatten)
- @d.addCallback
- def addOwners(recipients):
- dl = []
- for owner in build.getInterestedUsers():
- d = master.db.users.getUserByUsername(owner)
- d.addCallback(_extractContact, contact_types, owner)
- dl.append(d)
- d = defer.gatherResults(dl)
- d.addCallback(_filter)
- d.addCallback(lambda owners: recipients + owners)
- return d
- return d
-
-def encrypt(passwd):
- """
- Encrypts the incoming password after adding some salt to store
- it in the database.
-
- @param passwd: password portion of user credentials
- @type passwd: string
-
- @returns: encrypted/salted string
- """
- try:
- m = sha()
- except TypeError:
- m = sha.new()
-
- salt = os.urandom(salt_len).encode('hex_codec')
- m.update(passwd + salt)
- crypted = salt + m.hexdigest()
- return crypted
-
-def check_passwd(guess, passwd):
- """
- Tests to see if the guess, after salting and hashing, matches the
- passwd from the database.
-
- @param guess: incoming password trying to be used for authentication
- @param passwd: already encrypted password from the database
-
- @returns: boolean
- """
- try:
- m = sha()
- except TypeError:
- m = sha.new()
-
- salt = passwd[:salt_len * 2] # salt_len * 2 due to encode('hex_codec')
- m.update(guess + salt)
- crypted_guess = salt + m.hexdigest()
-
- return (crypted_guess == passwd)