Files
@ 71ffa932799d
Branch filter:
Location: kallithea/pylons_app/lib/auth.py - annotation
71ffa932799d
3.5 KiB
text/x-python
Added app basic auth.
Changed few deprecations for new pylons.
added sqlite logging for user actions.
Changed few deprecations for new pylons.
added sqlite logging for user actions.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d 71ffa932799d | import sqlite3
import os
import logging
from os.path import dirname as dn
from datetime import datetime
import crypt
log = logging.getLogger(__name__)
ROOT = dn(dn(dn(os.path.realpath(__file__))))
def get_sqlite_cur_conn():
conn = sqlite3.connect(os.path.join(ROOT, 'auth.sqlite'))
cur = conn.cursor()
return conn, cur
def authfunc(environ, username, password):
conn, cur = get_sqlite_cur_conn()
password_crypt = crypt.crypt(password, '6a')
cur.execute("SELECT * FROM users WHERE username=?", (username,))
data = cur.fetchone()
if data:
if data[3]:
if data[1] == username and data[2] == password_crypt:
log.info('user %s authenticated correctly', username)
http_accept = environ.get('HTTP_ACCEPT')
if http_accept.startswith('application/mercurial') or \
environ['PATH_INFO'].find('raw-file') != -1:
cmd = environ['PATH_INFO']
for qry in environ['QUERY_STRING'].split('&'):
if qry.startswith('cmd'):
cmd += "|" + qry
try:
cur.execute('''INSERT INTO
user_logs
VALUES(?,?,?,?)''',
(None, data[0], cmd, datetime.now()))
conn.commit()
except Exception as e:
conn.rollback()
log.error(e)
return True
else:
log.error('user %s is disabled', username)
return False
def create_user_table():
'''
Create a auth database
'''
conn, cur = get_sqlite_cur_conn()
try:
log.info('creating table %s', 'users')
cur.execute('''DROP TABLE IF EXISTS users ''')
cur.execute('''CREATE TABLE users
(id INTEGER PRIMARY KEY AUTOINCREMENT,
username TEXT,
password TEXT,
active INTEGER)''')
log.info('creating table %s', 'user_logs')
cur.execute('''DROP TABLE IF EXISTS user_logs ''')
cur.execute('''CREATE TABLE user_logs
(id INTEGER PRIMARY KEY AUTOINCREMENT,
user_id INTEGER,
last_action TEXT,
last_action_date DATETIME)''')
conn.commit()
except:
conn.rollback()
raise
cur.close()
def create_user(username, password):
conn, cur = get_sqlite_cur_conn()
password_crypt = crypt.crypt(password, '6a')
cur_date = datetime.now()
log.info('creating user %s', username)
try:
cur.execute('''INSERT INTO users values (?,?,?,?) ''',
(None, username, password_crypt, 1,))
conn.commit()
except:
conn.rollback()
raise
if __name__ == "__main__":
create_user_table()
create_user('marcink', 'qweqwe')
create_user('lukaszd', 'qweqwe')
create_user('adriand', 'qweqwe')
create_user('radek', 'qweqwe')
create_user('skrzeka', 'qweqwe')
create_user('bart', 'qweqwe')
create_user('maho', 'qweqwe')
create_user('michalg', 'qweqwe')
#authfunc('', 'marcink', 'qweqwe')
|