|
|
|
@ -98,7 +98,6 @@ class ApiWsdl:
|
|
|
|
|
fields = ['cl_group_name','']
|
|
|
|
|
|
|
|
|
|
num_id = len(list_group_name)
|
|
|
|
|
print 'num_id = ', num_id
|
|
|
|
|
if page_offset > num_id - 1:
|
|
|
|
|
i = num_id - 1
|
|
|
|
|
else:
|
|
|
|
@ -310,57 +309,40 @@ class ApiWsdl:
|
|
|
|
|
|
|
|
|
|
def change_group_meth(self, dv):
|
|
|
|
|
try:
|
|
|
|
|
group_rights_file = self.Get('cl_api_group_rights')
|
|
|
|
|
group_rights_file = dv.Get('cl_api_group_rights')
|
|
|
|
|
|
|
|
|
|
cl_group_name = str(dv.Get('cl_group_name'))
|
|
|
|
|
cl_group_rights = str(dv.Get('cl_group_rights'))
|
|
|
|
|
cl_group_rights = dv.Get('cl_group_rights')
|
|
|
|
|
#self.startTask('Confirm Request')
|
|
|
|
|
changed_flag = False
|
|
|
|
|
result = []
|
|
|
|
|
|
|
|
|
|
for line in readLinesFile(group_rights_file):
|
|
|
|
|
if line.startswith('#') or not line:
|
|
|
|
|
result.append(line)
|
|
|
|
|
continue
|
|
|
|
|
words = line.split(' ',1)
|
|
|
|
|
# first word in line equal name input method
|
|
|
|
|
if words[0] == cl_group_name:
|
|
|
|
|
line = cl_group_name + ' ' + ','.join(cl_group_rights)
|
|
|
|
|
changed_flag = True
|
|
|
|
|
result.append(line)
|
|
|
|
|
|
|
|
|
|
if cl_group_name == 'all' and not changed_flag:
|
|
|
|
|
result.append(cl_group_name + ' ' + ','.join(cl_group_rights))
|
|
|
|
|
changed_flag = True
|
|
|
|
|
|
|
|
|
|
self.printSUCCESS ('<b>'+_('Change Group')+'</b>')
|
|
|
|
|
fd = open (group_rights_file, 'w')
|
|
|
|
|
for lines in result:
|
|
|
|
|
fd.write(lines + '\n')
|
|
|
|
|
fd.close()
|
|
|
|
|
|
|
|
|
|
if changed_flag:
|
|
|
|
|
self.printSUCCESS ('<b>'+_('Change Group')+'</b>')
|
|
|
|
|
else:
|
|
|
|
|
self.printSUCCESS ('<b>'+_('Not')+'</b>' + _('Changed Group'))
|
|
|
|
|
self.printSUCCESS ("cl_group_name = %s" %cl_group_name)
|
|
|
|
|
self.printSUCCESS ("cl_group_rights = %s" %cl_group_rights)
|
|
|
|
|
return True
|
|
|
|
|
server_cert = cert_path + '/root.crt'
|
|
|
|
|
server_key = cert_path + '/root.key'
|
|
|
|
|
|
|
|
|
|
cl_req = data_path + '/client_certs/%s.csr' %cl_req_id
|
|
|
|
|
cl_cert = data_path + '/client_certs/%s.crt' %cl_req_id
|
|
|
|
|
if not os.path.exists(cl_req):
|
|
|
|
|
self.printERROR (_("Signing Request %s not found") %cl_req)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
if os.path.exists(cl_cert):
|
|
|
|
|
self.printERROR (_("certificate %s already exists") %cl_cert)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
group = "group:%s" %cl_req_group
|
|
|
|
|
config = data_path + '/client_certs/ssl-client.cfg'
|
|
|
|
|
if os.path.exists(config):
|
|
|
|
|
os.unlink(config)
|
|
|
|
|
|
|
|
|
|
cfg_text = ("[ ssl_client ]\n"
|
|
|
|
|
"basicConstraints = CA:FALSE\n"
|
|
|
|
|
"nsCertType = client\n"
|
|
|
|
|
"keyUsage = digitalSignature, keyEncipherment\n"
|
|
|
|
|
"extendedKeyUsage = clientAuth\n"
|
|
|
|
|
"nsComment = %s") %group
|
|
|
|
|
fc = open(config, 'w')
|
|
|
|
|
fc.write(cfg_text)
|
|
|
|
|
fc.close()
|
|
|
|
|
|
|
|
|
|
cmd = ("openssl x509 -req -days 11000 -CA %s -CAkey %s -CAcreateserial "
|
|
|
|
|
"-extfile %s -extensions ssl_client -in %s -out %s") \
|
|
|
|
|
%(server_cert, server_key, config, cl_req, cl_cert)
|
|
|
|
|
print cmd
|
|
|
|
|
PIPE = subprocess.PIPE
|
|
|
|
|
p = subprocess.Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE,
|
|
|
|
|
stderr=subprocess.STDOUT, close_fds=True)
|
|
|
|
|
p.wait()
|
|
|
|
|
self.printSUCCESS ('<b>' + _("certificate %s is signed") %cl_cert \
|
|
|
|
|
+ '</b>')
|
|
|
|
|
#self.endTask()
|
|
|
|
|
self.printSUCCESS ("cl_group_rights = %s" %','.join(cl_group_rights))
|
|
|
|
|
return True
|
|
|
|
|
except (KeyboardInterrupt,):
|
|
|
|
|
self.printERROR('Process is interrupted!')
|
|
|
|
@ -419,149 +401,114 @@ class ApiWsdl:
|
|
|
|
|
self.set_cache(sid, 'change_group', "vars", dv, smart=False)
|
|
|
|
|
return view
|
|
|
|
|
############### END CONFIRM GROUP METHODS ###################################
|
|
|
|
|
def delGroupCommon(self,sid,info,methodname):
|
|
|
|
|
"""
|
|
|
|
|
Install common method
|
|
|
|
|
"""
|
|
|
|
|
try:
|
|
|
|
|
dv = self.get_cache(sid,methodname,"vars")
|
|
|
|
|
#if not dv:
|
|
|
|
|
#reload(cl_install)
|
|
|
|
|
#dv = cl_install.DataVarsInstall()
|
|
|
|
|
#dv.importInstall()
|
|
|
|
|
#dv.flIniFile()
|
|
|
|
|
#initfunc(dv)
|
|
|
|
|
errors = self.check_req_params(dv, info,
|
|
|
|
|
ordered=['cl_group_name'],
|
|
|
|
|
allvars=True)
|
|
|
|
|
if errors:
|
|
|
|
|
return errors
|
|
|
|
|
request_meth = type("delGroupCommon",(self.Common,
|
|
|
|
|
ApiWsdl, object), {})
|
|
|
|
|
pid = self.startprocess(sid, target=request_meth,
|
|
|
|
|
method="del_group_meth",\
|
|
|
|
|
args_proc = (dv,))
|
|
|
|
|
returnmess = ReturnedMessage(type = 'pid', message = pid)
|
|
|
|
|
returnmess.type = "pid"
|
|
|
|
|
returnmess.message = pid
|
|
|
|
|
dv = self.clear_cache(sid,methodname)
|
|
|
|
|
return [returnmess]
|
|
|
|
|
finally:
|
|
|
|
|
if dv:
|
|
|
|
|
self.set_cache(sid,methodname,"vars",dv,smart=False)
|
|
|
|
|
return []
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#def delRequestCommon(self,sid,info,methodname):
|
|
|
|
|
#"""
|
|
|
|
|
#Install common method
|
|
|
|
|
#"""
|
|
|
|
|
#try:
|
|
|
|
|
#dv = self.get_cache(sid,methodname,"vars")
|
|
|
|
|
##if not dv:
|
|
|
|
|
##reload(cl_install)
|
|
|
|
|
##dv = cl_install.DataVarsInstall()
|
|
|
|
|
##dv.importInstall()
|
|
|
|
|
##dv.flIniFile()
|
|
|
|
|
##initfunc(dv)
|
|
|
|
|
#errors = self.check_req_params(dv, info,
|
|
|
|
|
#ordered=['cl_req_id'],
|
|
|
|
|
#allvars=True)
|
|
|
|
|
#if errors:
|
|
|
|
|
#return errors
|
|
|
|
|
#request_meth = type("delRequestCommon",(self.Common,
|
|
|
|
|
#ApiWsdl, object), {})
|
|
|
|
|
#pid = self.startprocess(sid, target=request_meth,
|
|
|
|
|
#method="del_request_meth",\
|
|
|
|
|
#args_proc = (dv,))
|
|
|
|
|
#returnmess = ReturnedMessage(type = 'pid', message = pid)
|
|
|
|
|
#returnmess.type = "pid"
|
|
|
|
|
#returnmess.message = pid
|
|
|
|
|
#dv = self.clear_cache(sid,methodname)
|
|
|
|
|
#return [returnmess]
|
|
|
|
|
#finally:
|
|
|
|
|
#if dv:
|
|
|
|
|
#self.set_cache(sid,methodname,"vars",dv,smart=False)
|
|
|
|
|
#return []
|
|
|
|
|
|
|
|
|
|
#def del_request_meth(self, dv):
|
|
|
|
|
##ob = datavars.DataVarsApi()
|
|
|
|
|
##ob.importApi()
|
|
|
|
|
def del_group_meth(self, dv):
|
|
|
|
|
#ob = datavars.DataVarsApi()
|
|
|
|
|
#ob.importApi()
|
|
|
|
|
|
|
|
|
|
## set var env
|
|
|
|
|
##ob.flIniFile()
|
|
|
|
|
#try:
|
|
|
|
|
#data_path = dv.Get('cl_api_data')
|
|
|
|
|
#certbase = dv.Get('cl_api_database')
|
|
|
|
|
|
|
|
|
|
#id_del_req = str(dv.Get('cl_req_id'))
|
|
|
|
|
#self.startTask("id_del_req = %s" %id_del_req)
|
|
|
|
|
#print "id_del_req = ", id_del_req
|
|
|
|
|
#request = data_path + '/client_certs/%s.csr' %id_del_req
|
|
|
|
|
#cert = data_path + '/client_certs/%s.crt' %id_del_req
|
|
|
|
|
|
|
|
|
|
## chect exists request and certificate files
|
|
|
|
|
#if not os.path.exists(request) and not os.path.exists(cert):
|
|
|
|
|
#self.printERROR (_("Request and certificate with id = %s not found!") \
|
|
|
|
|
#%id_del_req)
|
|
|
|
|
#return False
|
|
|
|
|
|
|
|
|
|
#if not os.path.exists(request):
|
|
|
|
|
#self.printERROR (_("request %s not found!") %request)
|
|
|
|
|
# set var env
|
|
|
|
|
#ob.flIniFile()
|
|
|
|
|
try:
|
|
|
|
|
group_rights_file = dv.Get('cl_api_group_rights')
|
|
|
|
|
cl_group_name = str(dv.Get('cl_group_name'))
|
|
|
|
|
|
|
|
|
|
result = []
|
|
|
|
|
deleted_flag = False
|
|
|
|
|
for line in readLinesFile(group_rights_file):
|
|
|
|
|
if line.startswith('#') or not line:
|
|
|
|
|
result.append(line)
|
|
|
|
|
continue
|
|
|
|
|
words = line.split(' ',1)
|
|
|
|
|
# first word in line equal name input method
|
|
|
|
|
if words[0] != cl_group_name:
|
|
|
|
|
result.append(line)
|
|
|
|
|
else:
|
|
|
|
|
deleted_flag = True
|
|
|
|
|
|
|
|
|
|
#if os.path.exists(cert):
|
|
|
|
|
#self.printERROR (_("This request has already been signed"))
|
|
|
|
|
|
|
|
|
|
## create temp file
|
|
|
|
|
#ft = open(certbase + '_temp', 'w')
|
|
|
|
|
#with open(certbase) as fd:
|
|
|
|
|
#t = fd.read()
|
|
|
|
|
## See each line
|
|
|
|
|
#for line in t.splitlines():
|
|
|
|
|
## and each word in line
|
|
|
|
|
#words = line.split()
|
|
|
|
|
## if in line present certificate id
|
|
|
|
|
#if not words[0] == id_del_req:
|
|
|
|
|
#ft.write(line + '\n')
|
|
|
|
|
#ft.close()
|
|
|
|
|
#fd.close()
|
|
|
|
|
fd = open (group_rights_file, 'w')
|
|
|
|
|
for lines in result:
|
|
|
|
|
fd.write(lines + '\n')
|
|
|
|
|
fd.close()
|
|
|
|
|
|
|
|
|
|
if deleted_flag:
|
|
|
|
|
self.printSUCCESS ('<b>'+_('Group %s deleted') %cl_group_name \
|
|
|
|
|
+ '!</b>')
|
|
|
|
|
else:
|
|
|
|
|
self.printSUCCESS ('<b>'+_('Group %s is not deleted') \
|
|
|
|
|
%cl_group_name + '!</b>')
|
|
|
|
|
return True
|
|
|
|
|
|
|
|
|
|
#ft = open(certbase + '_temp', 'rb')
|
|
|
|
|
#fc = open(certbase, 'wb')
|
|
|
|
|
#ft.seek(0)
|
|
|
|
|
#fc.write(ft.read())
|
|
|
|
|
#ft.close()
|
|
|
|
|
#fc.close()
|
|
|
|
|
#os.unlink(certbase + '_temp')
|
|
|
|
|
#try:
|
|
|
|
|
#if os.path.exists(request):
|
|
|
|
|
#os.unlink (request)
|
|
|
|
|
#self.printSUCCESS (_("request deleted"))
|
|
|
|
|
#if os.path.exists(cert):
|
|
|
|
|
#os.unlink (cert)
|
|
|
|
|
#self.printSUCCESS (_("certificate deleted"))
|
|
|
|
|
#except:
|
|
|
|
|
#self.printERROR (_("delete file error!"))
|
|
|
|
|
#self.endTask()
|
|
|
|
|
#except KeyboardInterrupt:
|
|
|
|
|
#self.endTask()
|
|
|
|
|
#return False
|
|
|
|
|
#except Exception, e:
|
|
|
|
|
#msg = e.message
|
|
|
|
|
#if not msg:
|
|
|
|
|
#msg = e.reason
|
|
|
|
|
#self.printERROR (_("Exception!%s") %msg)
|
|
|
|
|
#return False
|
|
|
|
|
except KeyboardInterrupt:
|
|
|
|
|
self.endTask()
|
|
|
|
|
return False
|
|
|
|
|
except Exception, e:
|
|
|
|
|
msg = e.message
|
|
|
|
|
if not msg:
|
|
|
|
|
msg = e.reason
|
|
|
|
|
self.printERROR (_("Exception!%s") %msg)
|
|
|
|
|
return False
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#@rpc(Integer, DetailRequestInfo, _returns = Array(ReturnedMessage))
|
|
|
|
|
#@Dec.check_permissions(["request"])
|
|
|
|
|
@rpc(Integer, DetailGroupInfo, _returns = Array(ReturnedMessage))
|
|
|
|
|
@Dec.check_permissions(["edit-group"])
|
|
|
|
|
#@Dec.console('cl-show-request')
|
|
|
|
|
##@Dec.gui(_('Api'),_('Delete Request'),'view-certificate-import')
|
|
|
|
|
#@catchExcept()
|
|
|
|
|
#def delete_request ( self, sid, info):
|
|
|
|
|
##dv = self.get_cache(sid,'delete_request',"vars")
|
|
|
|
|
##if not dv:
|
|
|
|
|
#dv = datavars.DataVarsApi()
|
|
|
|
|
#dv.importApi()
|
|
|
|
|
#dv.flIniFile()
|
|
|
|
|
#dv.Set('cl_req_id', info.cl_req_id)
|
|
|
|
|
#self.set_cache(sid, 'delete_request', "vars", dv, smart=False)
|
|
|
|
|
#return self.delRequestCommon(sid,info,'delete_request')
|
|
|
|
|
|
|
|
|
|
#@rpc(Integer, Integer, Boolean, _returns = ViewInfo)
|
|
|
|
|
#@catchExcept()
|
|
|
|
|
#def delete_request_view (self, sid, step, expert):
|
|
|
|
|
#dv = self.get_cache(sid, 'detail_request', 'dv')
|
|
|
|
|
#@Dec.gui(_('Api'),_('Delete Request'),'view-certificate-import')
|
|
|
|
|
@catchExcept()
|
|
|
|
|
def delete_group ( self, sid, info):
|
|
|
|
|
#dv = self.get_cache(sid,'delete_request',"vars")
|
|
|
|
|
#if not dv:
|
|
|
|
|
#dv = datavars.DataVarsApi()
|
|
|
|
|
#dv.importApi()
|
|
|
|
|
#dv.flIniFile()
|
|
|
|
|
#dv.Get('cl_req_id')
|
|
|
|
|
dv = datavars.DataVarsApi()
|
|
|
|
|
dv.importApi()
|
|
|
|
|
dv.flIniFile()
|
|
|
|
|
dv.Set('cl_group_name', info.cl_group_name)
|
|
|
|
|
self.set_cache(sid, 'delete_group', "vars", dv, smart=False)
|
|
|
|
|
return self.delGroupCommon(sid,info,'delete_group')
|
|
|
|
|
|
|
|
|
|
@rpc(Integer, Integer, Boolean, _returns = ViewInfo)
|
|
|
|
|
@catchExcept()
|
|
|
|
|
def delete_group_view (self, sid, step, expert):
|
|
|
|
|
dv = self.get_cache(sid, 'delete_group', 'dv')
|
|
|
|
|
if not dv:
|
|
|
|
|
dv = datavars.DataVarsApi()
|
|
|
|
|
dv.importApi()
|
|
|
|
|
dv.flIniFile()
|
|
|
|
|
dv.Get('cl_req_id')
|
|
|
|
|
|
|
|
|
|
#dv.addGroup(_("Requests delete"),
|
|
|
|
|
#normal=('cl_req_id', 'cl_req_user_name', 'cl_req_ip', 'cl_req_mac',
|
|
|
|
|
#'cl_req_date', 'cl_req_location', 'cl_req_group'),
|
|
|
|
|
#next_label=_("Done"))
|
|
|
|
|
|
|
|
|
|
#view = getViewForVariables (dv,step,expert)
|
|
|
|
|
|
|
|
|
|
#group = GroupField(name=_("Requests detail"),nextlabel=_("Done"),last=True)
|
|
|
|
|
#group.fields = []
|
|
|
|
|
#group.fields.append(Field(
|
|
|
|
|
#name = "but2",
|
|
|
|
|
#label = "Delete",
|
|
|
|
|
#value = "delete_request",
|
|
|
|
|
#element = "button"))
|
|
|
|
|
#view.groups.append(group)
|
|
|
|
|
#self.set_cache(sid, 'delete_request', "vars", dv, smart=False)
|
|
|
|
|
#return view
|
|
|
|
|
dv.addGroup(_("Group delete"),
|
|
|
|
|
normal=('cl_group_name', 'cl_group_rights'),
|
|
|
|
|
next_label=_("Delete"))
|
|
|
|
|
|
|
|
|
|
view = getViewForVariables (dv,step,expert)
|
|
|
|
|
self.set_cache(sid, 'delete_group', "vars", dv, smart=False)
|
|
|
|
|
return view
|
|
|
|
|