add delete_group mathod

master3.3
Спиридонов Денис 12 years ago
parent fd9c84e818
commit 6134786943

@ -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

Loading…
Cancel
Save