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
|
#!/usr/bin/python
# Authors:
# Endi S. Dewata <edewata@redhat.com>
#
# This program 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; version 2 of the License.
#
# This program 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 this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
#
# Copyright (C) 2013 Red Hat, Inc.
# All rights reserved.
#
import re
import os
import pki
INSTANCE_BASE_DIR = '/var/lib/pki'
REGISTRY_DIR = '/etc/sysconfig/pki'
SUBSYSTEM_TYPES = ['ca', 'kra', 'ocsp', 'tks', 'tps']
class PKISubsystem(object):
def __init__(self, instance, subsystem_name):
self.instance = instance
self.name = subsystem_name
self.type = instance.type
if self.type >= 10:
self.conf_dir = os.path.join(
INSTANCE_BASE_DIR,
instance.name, 'conf', subsystem_name)
self.base_dir = os.path.join(
INSTANCE_BASE_DIR,
instance.name, subsystem_name)
else:
self.conf_dir = os.path.join(pki.BASE_DIR, instance.name, 'conf')
self.base_dir = os.path.join(pki.BASE_DIR, instance.name)
self.validate()
def validate(self):
if not os.path.exists(self.conf_dir):
raise pki.PKIException(
'Invalid subsystem: ' + self.__repr__(),
None, self.instance)
def __repr__(self):
return str(self.instance) + '/' + self.name
class PKIInstance(object):
def __init__(self, name, instanceType=10):
self.name = name
self.type = instanceType
if self.type >= 10:
self.conf_dir = os.path.join(INSTANCE_BASE_DIR, name, 'conf')
self.base_dir = os.path.join(INSTANCE_BASE_DIR, name)
else:
self.conf_dir = os.path.join(pki.BASE_DIR, name, 'conf')
self.base_dir = os.path.join(pki.BASE_DIR, name)
self.validate()
def validate(self):
if not os.path.exists(self.conf_dir):
raise pki.PKIException(
'Invalid instance: ' + self.__repr__(), None)
def __repr__(self):
if self.type == 9:
return "Dogtag 9 " + self.name
return self.name
class PKIServerException(pki.PKIException):
def __init__(self, message, exception=None,
instance=None, subsystem=None):
pki.PKIException.__init__(self, message, exception)
self.instance = instance
self.subsystem = subsystem
|