Browse Source

move CA and Requst descriptors to own module

less_magic_more_descriptors
Edoardo Putti 8 years ago
parent
commit
fb4455e9fa
2 changed files with 132 additions and 101 deletions
  1. +0
    -101
      ca_manager.py
  2. +132
    -0
      lookup.py

+ 0
- 101
ca_manager.py View File

@ -101,107 +101,6 @@ class CAManager(object):
os.unlink(os.path.join(REQUESTS_PATH, request.req_id))
class CALookup(object):
"""
Proxy to interact with the database, get CA as element or as list
"""
def __init__(self, ssh_ca_dir, ssl_ca_dir):
"""
The connection attribute is setted by the CAManager instance
when used
"""
self.conn = None
self.ssh_ca_dir = ssh_ca_dir
self.ssl_ca_dir = ssl_ca_dir
def __iter__(self):
c = self.conn.cursor()
c.execute("""SELECT id, name, type FROM cas""")
return iter(c.fetchall())
def __delitem__(self, ca_id):
"""
Delete a specific certification authority from the database
"""
c = self.conn.cursor()
c.execute("""DELETE FROM cas WHERE id = ?""", (ca_id, ))
def __getitem__(self, ca_id):
"""
Get a specific certification authority from the database
"""
c = self.conn.cursor()
c.execute("""SELECT name, type FROM cas WHERE id = ?""", (ca_id, ))
result = c.fetchone()
if not result:
raise ValueError('Unknown CA "%s"' % ca_id)
ca_name, ca_type = result
if ca_type.lower() == 'ssh':
return SSHAuthority(ca_id, ca_name, self.ssh_ca_dir)
elif ca_type.lower() == 'ssl':
return SSLAuthority(ca_id, ca_name, self.ssl_ca_dir)
def __setitem__(self, ca_id, ca_value):
"""
Create a new certification authority, insert
it into the database
"""
ca_name, ca_type = ca_value
authority = None
if ca_type == 'ssh':
authority = SSHAuthority(ca_id, ca_name, self.ssh_ca_dir)
elif ca_type == 'ssl':
authority = SSLAuthority(ca_id, ca_name, self.ssl_ca_dir)
else:
raise ValueError('CA type is not supported')
authority.generate()
c = self.conn.cursor()
c.execute("""INSERT INTO cas VALUES (?, ?, ?)""",
(ca_id, ca_name, ca_type.lower()))
self.conn.commit()
class RequestLookup(object):
"""
Proxy to interact with the requests
"""
def __init__(self):
self.request_dir = REQUESTS_PATH
self.output_dir = OUTPUT_PATH
def __iter__(self):
pass
#return iter(c.fetchall())
def __delitem__(self, request_id):
"""
Delete a specific certificate request
"""
os.unlink(os.path.join(self.request_dir, request_id))
def __getitem__(self, request_id):
"""
Get a specific certificate request
"""
request_path = os.path.join(self.request_dir, request_id)
@property
def ssh(self):
pass
@property
def ssl(self):
pass
def init_manager(paths):
"""
Initiate the manager by creating the


+ 132
- 0
lookup.py View File

@ -0,0 +1,132 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import cmd
import hashlib
import json
import os
import os.path
import shutil
import sqlite3
import tempfile
from certificate_requests import *
from paths import *
__doc__= """
Define classes
"""
class CALookup(object):
"""
Proxy to interact with the database, get CA as element or as list
"""
def __init__(self, ssh_ca_dir, ssl_ca_dir):
"""
The connection attribute is setted by the CAManager instance
when used
"""
self.conn = None
self.ssh_ca_dir = ssh_ca_dir
self.ssl_ca_dir = ssl_ca_dir
def __iter__(self):
c = self.conn.cursor()
c.execute("""SELECT id, name, type FROM cas""")
return iter(c.fetchall())
def __delitem__(self, ca_id):
"""
Delete a specific certification authority from the database
"""
c = self.conn.cursor()
c.execute("""DELETE FROM cas WHERE id = ?""", (ca_id, ))
def __getitem__(self, ca_id):
"""
Get a specific certification authority from the database
"""
c = self.conn.cursor()
c.execute("""SELECT name, type FROM cas WHERE id = ?""", (ca_id, ))
result = c.fetchone()
if not result:
raise ValueError('Unknown CA "%s"' % ca_id)
ca_name, ca_type = result
if ca_type.lower() == 'ssh':
return SSHAuthority(ca_id, ca_name, self.ssh_ca_dir)
elif ca_type.lower() == 'ssl':
return SSLAuthority(ca_id, ca_name, self.ssl_ca_dir)
def __setitem__(self, ca_id, ca_value):
"""
Create a new certification authority, insert
it into the database
"""
ca_name, ca_type = ca_value
authority = None
if ca_type == 'ssh':
authority = SSHAuthority(ca_id, ca_name, self.ssh_ca_dir)
elif ca_type == 'ssl':
authority = SSLAuthority(ca_id, ca_name, self.ssl_ca_dir)
else:
raise ValueError('CA type is not supported')
authority.generate()
c = self.conn.cursor()
c.execute("""INSERT INTO cas VALUES (?, ?, ?)""",
(ca_id, ca_name, ca_type.lower()))
self.conn.commit()
class RequestLookup(object):
"""
Proxy to interact with the requests
"""
def __init__(self):
self.request_dir = REQUESTS_PATH
self.output_dir = OUTPUT_PATH
def __iter__(self):
"""
Iterate over all certificate request in REQUEST_PATH
"""
req_objs = []
for request_id in os.listdir(self.request_dir):
"""
request_id is formatted as uuid
"""
with RequestLoader(request_id) as request:
req_objs.append(request)
return iter(req_objs)
def __delitem__(self, request_id):
"""
Delete a specific certificate request
"""
os.unlink(os.path.join(self.request_dir, request_id))
def __getitem__(self, request_id):
"""
Get a specific certificate request
"""
request_path = os.path.join(self.request_dir, request_id)
@property
def ssh(self):
pass
@property
def ssl(self):
pass

Loading…
Cancel
Save