]> git.datanom.net - securemail.git/blobdiff - db.py
Reorder
[securemail.git] / db.py
diff --git a/db.py b/db.py
deleted file mode 100644 (file)
index 45863bc..0000000
--- a/db.py
+++ /dev/null
@@ -1,103 +0,0 @@
-# -*- coding: utf-8 -*-
-# Copyright (c) 2018  Michael Rasmussen <mir@datanom.net>
-# This file is part of SecureMail.
-
-# SecureMail 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, either version 3 of the License, or
-# (at your option) any later version.
-#
-# SecureMail 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 SecureMail.  If not, see <https://www.gnu.org/licenses/>.
-
-# mysql
-# create table account (
-# id int auto_increment,
-# token char(128) unique not null,
-# cipher text not null,
-# primary key (id));
-#
-# postgresql
-# create table account (
-# id serial,
-# token char(128) unique not null,
-# cipher bytea not null,
-# primary key (id));
-
-import base64
-from config import DBTYPE, DBHOST, DBPORT, DBUID, DBPWD, DBNAME
-from cryptonize import Cryptonize
-
-class Singleton:
-    def __init__(self, klass):
-        self.klass = klass
-        self.instance = None
-
-    def __call__(self, *args, **kwargs):
-        if self.instance == None:
-            self.instance = self.klass(*args, **kwargs)
-        return self.instance
-
-@Singleton
-class DB:
-    conn = None
-
-    def get_connection(self):
-        if self.conn is None:
-            if DBTYPE == 'mysql':
-                #import MySQLdb
-                import MySQLdb
-                self.conn = MySQLdb.connect(host=DBHOST, port=DBPORT, user=DBUID, password=DBPWD, database=DBNAME)
-            elif DBTYPE == 'postgresql':
-                import psycopg2
-                self.conn = psycopg2.connect(host=DBHOST, port=DBPORT, user=DBUID, password=DBPWD, dbname=DBNAME)
-            else:
-                raise ValueError('{0}: Unsupported database'.format(DBTYPE))
-        return self.conn
-        
-    def __del__(self):
-        if self.conn is not None:
-            self.conn.close()
-
-class DBInterface:
-    @staticmethod
-    def load_user(key):
-        conn = DB().get_connection()
-        cursor = conn.cursor()
-        cursor.execute("select a.cipher from account a where token = '{0}'".format(key))
-        row = cursor.fetchone()
-        if row is None:
-            obj = None
-        else:
-            c = Cryptonize()
-            msg = base64.b64decode(row[0])
-            obj = c.create_EncryptedMessage(msg)
-        cursor.close()
-        
-        return obj
-        
-    @staticmethod
-    def store_user(key, cipher):
-        if DBTYPE == 'mysql':
-            from MySQLdb import Error as DBError
-        elif DBTYPE == 'postgresql':
-            from psycopg2 import Error as DBError
-        conn = DB().get_connection()
-        cursor = conn.cursor()
-        raw = base64.b64encode(cipher)
-        try:
-            cursor.execute("insert into account(token, cipher) values(%s, %s)", (key, raw))
-            conn.commit()
-        except DBError as e:
-            print (e)
-            conn.rollback()
-            raise e
-        finally:
-            cursor.close()
This page took 0.032818 seconds and 5 git commands to generate.