change request create and get certificate widget

master3.3
Denis Spiridonov 13 years ago
parent cefa802a71
commit b2fac43ac0

@ -34,62 +34,42 @@ class CertClass (QtGui.QWidget):
# self.default_cert_path = self.default_cert_path.replace("~",homePath)
self.sendlayout = QtGui.QGridLayout()
self.getlayout = QtGui.QGridLayout()
self.sendlayout.setColumnStretch(0,5)
self.sendlayout.setColumnStretch(1,5)
self.sendlayout.setColumnStretch(2,5)
self.mainlayout = QtGui.QVBoxLayout()
# gen ceth by host
self.sendlayout.addWidget(LabelWordWrap(_('Host'), self), 1,0)
self.send_host = QtGui.QLineEdit('localhost', self)
self.sendlayout.addWidget(self.send_host, 1, 1)
self.sendlayout.addWidget(self.send_host, 1, 1, 1, 2)
self.sendlayout.addWidget(LabelWordWrap(_('Port'), self), 2,0)
self.send_port = QtGui.QLineEdit('8888', self)
self.send_port.setValidator(QtGui.QIntValidator(self))
self.sendlayout.addWidget(self.send_port, 2, 1)
self.sendlayout.addWidget(self.send_port, 2, 1, 1, 2)
Send_button = QtGui.QPushButton(_("Send"), self)
Send_button.clicked.connect(self.send)
self.sendlayout.addWidget(Send_button, 3, 1)
self.sendlayout.addWidget(Send_button, 3, 0)
self.GroupBoxSend = QtGui.QGroupBox \
(_('Send certificate signing request'))
self.GroupBoxSend.setLayout(self.sendlayout)
# GroupBox get certificate
self.getlayout.addWidget(LabelWordWrap(_('Host'), self), 1,0)
self.get_host = QtGui.QLineEdit('localhost', self)
self.getlayout.addWidget(self.get_host, 1, 1)
self.getlayout.addWidget(LabelWordWrap(_('Port'), self), 2,0)
self.get_port = QtGui.QLineEdit('8888', self)
self.get_port.setValidator(QtGui.QIntValidator(self))
self.getlayout.addWidget(self.get_port, 2, 1)
Get_button = QtGui.QPushButton(_("Get"), self)
Get_button.clicked.connect(self.get)
self.getlayout.addWidget(Get_button, 3, 1)
self.GroupBoxGet = QtGui.QGroupBox(_('Get certificate from server'))
self.GroupBoxGet.setLayout(self.getlayout)
# group all in widget
self.sendlayout.addWidget(Get_button, 3, 1)
Quit_button = QtGui.QPushButton(_("Quit"), self)
Quit_button.setShortcut(QtGui.QKeySequence(QtCore.Qt.Key_Return))
Quit_button.clicked.connect(self.close)
self.sendlayout.addWidget(Quit_button, 3, 2)
self.connect(Quit_button, QtCore.SIGNAL("clicked()"),
self, QtCore.SLOT("close()"))
self.GroupBoxSend = QtGui.QGroupBox \
(_('Certificate signing request'))
self.GroupBoxSend.setLayout(self.sendlayout)
self.resize(400,200)
self.mainlayout.addWidget(self.GroupBoxSend)
self.mainlayout.addWidget(self.GroupBoxGet)
self.mainlayout.addWidget(Quit_button)
self.setLayout(self.mainlayout)
self.setFocus()
# for clear memory after closed this window
@ -117,24 +97,23 @@ class CertClass (QtGui.QWidget):
if port == '' or not port.isdigit():
show_msg (_('Enter Port'), _('Field "Port" Error!'))
return 1
# send request
cert_path = self.default_cert_path
if os.path.exists(cert_path + 'req_id'):
text = _("You have sent a request to sign the certificate!")
informative_text = _("request id = %s\n") \
%open(cert_path + 'req_id', 'r').read() \
+ _("Send new request?")
reply = show_question(self, text, informative_text)
if reply == QtGui.QMessageBox.No:
return 0
elif reply == QtGui.QMessageBox.Yes:
pass
url = "https://%s:%d/?wsdl" %(by_host, int(port))
print 'URL = ', url
from suds.client import Client
@ -214,19 +193,19 @@ class CertClass (QtGui.QWidget):
req_id = fc.read()
fc.close()
from_host = self.get_host.text()
from_host = self.send_host.text()
if from_host == '':
show_msg (_('Enter Hostname or IP adress'), \
_('Field "Host" Error!'))
return 1
port = self.get_port.text()
port = self.send_port.text()
if port == '' or not port.isdigit():
show_msg (_('Enter Port'), _('Field "Port" Error!'))
return 1
url = "https://%s:%s/?wsdl" %(from_host, port)
from suds.client import Client
try:
client = Client(url, \
@ -246,24 +225,24 @@ class CertClass (QtGui.QWidget):
print 'method get in CertificateClass Exception'
show_msg (e, _("Not connected!"))
return 1
if not os.path.exists(cert_path + server_host_name + '.csr'):
show_msg(_('Request %s not found on client side') \
%(cert_path + server_host_name + '.csr'))
return 1
request = open(cert_path + server_host_name + '.csr').read()
md5 = hashlib.md5()
md5.update(request)
md5sum = md5.hexdigest()
try:
result = client.service.get_client_cert(req_id, md5sum)
except urllib2.URLError, e:
print 'client.service.get_client_cert in CertificateClass Exception'
show_msg (e, _("Not connected!"))
return 1
cert = result[0][0]
try:
ca_root = result[0][1]
@ -288,33 +267,34 @@ class CertClass (QtGui.QWidget):
fc.close()
os.unlink(cert_path + 'req_id')
show_msg (_('OK. Certificate save. Your certificate id = %s') %req_id)
if ca_root:
system_ca_db = self.ClientObj.VarsApi.Get('cl_glob_root_cert')
if os.path.exists(system_ca_db):
if ca_root in open(system_ca_db, 'r').read():
return 0
cl_client_cert_dir = self.ClientObj.VarsApi.Get('cl_client_cert_dir')
cl_client_cert_dir = self.ClientObj.VarsApi.Get \
('cl_client_cert_dir')
homePath = self.ClientObj.VarsApi.Get('ur_home_path')
cl_client_cert_dir = cl_client_cert_dir.replace("~",homePath)
if not os.path.isdir(cl_client_cert_dir):
os.mkdir(cl_client_cert_dir)
if not os.path.isdir(cl_client_cert_dir+'/ca'):
os.mkdir(cl_client_cert_dir+'/ca')
root_cert_md5 = cl_client_cert_dir + "/ca/cert_list"
md5 = hashlib.md5()
md5.update(ca_root)
md5sum = md5.hexdigest()
print "\n================================================="
print "md5sum = ", md5sum
if not os.path.isfile(root_cert_md5):
fc = open(root_cert_md5,"w")
fc.close()
filename = None
with open(root_cert_md5) as fd:
t = fd.read()
@ -331,15 +311,15 @@ class CertClass (QtGui.QWidget):
for item in Issuer:
if item[0] == 'CN':
filename = item[1]
fc = open(root_cert_md5,"a")
fc.write('%s %s\n' %(md5sum, filename))
fc.close()
if not filename:
show_msg (_('Not found field "CN" in root certificate!'))
return 1
fd = open(cl_client_cert_dir + '/ca/' + filename, 'w')
fd.write(ca_root)
fd.close()

Loading…
Cancel
Save