Merge pull request #162 from Neozonz/issue-161
[FEATURE] Create workers as they connect into pool_worker, validate user...
This commit is contained in:
commit
8d0857e9c6
@ -4,6 +4,7 @@ from datetime import datetime
|
|||||||
import Queue
|
import Queue
|
||||||
import signal
|
import signal
|
||||||
import Cache
|
import Cache
|
||||||
|
from sets import Set
|
||||||
|
|
||||||
import lib.settings as settings
|
import lib.settings as settings
|
||||||
|
|
||||||
@ -154,6 +155,13 @@ class DBInterface():
|
|||||||
if username == "":
|
if username == "":
|
||||||
log.info("Rejected worker for blank username")
|
log.info("Rejected worker for blank username")
|
||||||
return False
|
return False
|
||||||
|
allowed_chars = Set('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-.')
|
||||||
|
if Set(username).issubset(allowed_chars) != True:
|
||||||
|
log.info("Username contains bad arguments")
|
||||||
|
return False
|
||||||
|
if username.count('.') > 1:
|
||||||
|
log.info("Username contains multiple . ")
|
||||||
|
return False
|
||||||
|
|
||||||
# Force username and password to be strings
|
# Force username and password to be strings
|
||||||
username = str(username)
|
username = str(username)
|
||||||
@ -166,9 +174,11 @@ class DBInterface():
|
|||||||
self.cache.set(username, password)
|
self.cache.set(username, password)
|
||||||
return True
|
return True
|
||||||
elif settings.USERS_AUTOADD == True:
|
elif settings.USERS_AUTOADD == True:
|
||||||
self.insert_user(username, password)
|
if self.dbi.get_uid(username) != False:
|
||||||
self.cache.set(username, password)
|
uid = self.dbi.get_uid(username)
|
||||||
return True
|
self.dbi.insert_worker(uid, username, password)
|
||||||
|
self.cache.set(username, password)
|
||||||
|
return True
|
||||||
|
|
||||||
log.info("Authentication for %s failed" % username)
|
log.info("Authentication for %s failed" % username)
|
||||||
return False
|
return False
|
||||||
|
|||||||
@ -204,6 +204,25 @@ class DB_Mysql():
|
|||||||
|
|
||||||
user = self.dbc.fetchone()
|
user = self.dbc.fetchone()
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
def get_uid(self, id_or_username):
|
||||||
|
log.debug("Finding user id of %s", id_or_username)
|
||||||
|
uname = id_or_username.split(".", 1)[0]
|
||||||
|
self.execute("SELECT `id` FROM `accounts` where username = %s", (uname))
|
||||||
|
row = self.dbc.fetchone()
|
||||||
|
|
||||||
|
if row is None:
|
||||||
|
return False
|
||||||
|
else:
|
||||||
|
uid = row[0]
|
||||||
|
return uid
|
||||||
|
|
||||||
|
def insert_worker(self, account_id, username, password):
|
||||||
|
log.debug("Adding new worker %s", username)
|
||||||
|
query = "INSERT INTO pool_worker"
|
||||||
|
self.execute(query + '(account_id, username, password) VALUES (%s, %s, %s);', (account_id, username, password))
|
||||||
|
self.dbh.commit()
|
||||||
|
return str(username)
|
||||||
|
|
||||||
|
|
||||||
def delete_user(self, id_or_username):
|
def delete_user(self, id_or_username):
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user