# -*- coding: utf-8 -*- from gluon import * from gluon import dal from gluon.tools import Auth import os.path AUTH_DATABASE = 'sqlite:///home/tool/config/auth.sq3' RESULT_DATABASE_PATH = '/home/tool/data/result.sq3' RESULT_DATABASE = 'sqlite://' + RESULT_DATABASE_PATH SYSERRORS_DATABASE = 'sqlite:///var/log/syserrors.sq3' dbPool = {} gErrorResultDBNotFound = False def fileExist(fname): return(os.path.exists(fname)) def resultDBExists(): return (fileExist(RESULT_DATABASE_PATH)) def getDatabases(locals, threadName, s): global dbPool if threadName in dbPool: locals.update(dbPool[threadName]) connectDatabases(locals['db'], locals['resultdb'], locals['syserrdb']) auth = locals['auth'] if s.auth: auth.user = s.auth.user else: auth.user = None #print threadName,"USE DB" else: db, auth = createMainDB() resultdb = createResultDB() syserrdb = createSysErrorsDB() #print threadName, "CREATE DB" dbPool[threadName] = {'db': db, 'auth': auth, 'resultdb': resultdb, 'syserrdb': syserrdb} locals.update(dbPool[threadName]) def connectDatabases(db, resultdb, syserrdb): global gErrorResultDBNotFound db._adapter = dal.SQLiteAdapter(db, AUTH_DATABASE) if not resultDBExists(): resultdb = None gErrorResultDBNotFound = True else: resultdb._adapter = dal.SQLiteAdapter(resultdb, RESULT_DATABASE) gErrorResultDBNotFound = False syserrdb._adapter = dal.SQLiteAdapter(syserrdb, SYSERRORS_DATABASE) def createMainDB(): db = DAL(AUTH_DATABASE, migrate=False) db.define_table('permission_list', Field('name', 'string'), Field('description', 'string'), migrate=False) # authentication/authorization #----------------------------------------------------- auth = Auth(db) # Set key for HMAC message autentification (set before define_tables()) auth.settings.hmac_key = 'sha512:5f207db57-012b-4d4f-8ff4-ff440ca089cd' auth.settings.password_min_length = 0 # adds extra fields to user: auth.settings.extra_fields['auth_user'] = [ Field('active', 'boolean', default=False, required=True, notnull=True)] # creates all needed tables auth.define_tables(username=True, migrate=False) auth.settings.allow_basic_login = True auth.settings.on_failed_authentication = '/login' return db, auth def createResultDB(): global gErrorResultDBNotFound if not resultDBExists(): resultdb = None gErrorResultDBNotFound = True else: resultdb = DAL(RESULT_DATABASE, migrate=False) gErrorResultDBNotFound = False return resultdb def createSysErrorsDB(): syserrdb = DAL(SYSERRORS_DATABASE, migrate=False) return syserrdb