from ipsilon.providers.saml2.provider import InvalidProviderId
from copy import deepcopy
import requests
+import logging
class NewSPAdminPage(AdminPage):
name = None
meta = None
if 'content-type' not in cherrypy.request.headers:
- self._debug("Invalid request, missing content-type")
+ self.debug("Invalid request, missing content-type")
message = "Malformed request"
message_type = ADMIN_STATUS_ERROR
return self.form_new(message, message_type)
ctype = cherrypy.request.headers['content-type'].split(';')[0]
if ctype != 'multipart/form-data':
- self._debug("Invalid form type (%s), trying to cope" % (
- cherrypy.request.content_type,))
+ self.debug("Invalid form type (%s), trying to cope" % (
+ cherrypy.request.content_type,))
for key, value in kwargs.iteritems():
if key == 'name':
name = value
if hasattr(value, 'content_type'):
meta = value.fullvalue()
else:
- self._debug("Invalid format for 'meta'")
+ self.debug("Invalid format for 'meta'")
elif key == 'metaurl':
if len(value) > 0:
try:
r.raise_for_status()
meta = r.content
except Exception, e: # pylint: disable=broad-except
- self._debug("Failed to fetch metadata: " + repr(e))
+ self.debug("Failed to fetch metadata: " + repr(e))
message = "Failed to fetch metadata: " + repr(e)
message_type = ADMIN_STATUS_ERROR
return self.form_new(message, message_type)
message = str(e)
message_type = ADMIN_STATUS_ERROR
except Exception, e: # pylint: disable=broad-except
- self._debug(repr(e))
+ self.debug(repr(e))
message = "Failed to create Service Provider!"
message_type = ADMIN_STATUS_ERROR
else:
value = get_complex_list_value(name,
current,
**kwargs)
+ # if current value is None do nothing
if value is None:
- continue
+ if option.get_value() is None:
+ continue
+ # else pass and let it continue as None
elif type(option) is pconfig.MappingList:
current = deepcopy(option.get_value())
value = get_mapping_list_value(name,
current,
**kwargs)
+ # if current value is None do nothing
if value is None:
- continue
+ if option.get_value() is None:
+ continue
+ # else pass and let it continue as None
else:
continue
set(value) == set(option.get_value())):
continue
cherrypy.log.error("Storing %s = %s" %
- (name, value))
+ (name, value), severity=logging.DEBUG)
new_db_values[name] = value
if len(new_db_values) != 0:
# Make changes in current config
for name, option in conf.iteritems():
value = new_db_values.get(name, False)
- if value:
- if name == 'Name':
- if not self.sp.is_valid_name(value):
- raise InvalidValueFormat(
- 'Invalid name! Use only numbers and'
- ' letters'
- )
- self.sp.name = value
- self.url = '%s/sp/%s' % (self.parent.url, value)
- self.parent.rename_sp(option.get_value(), value)
- elif name == 'User Owner':
- self.sp.owner = value
- elif name == 'Default NameID':
- self.sp.default_nameid = value
- elif name == 'Allowed NameIDs':
- self.sp.allowed_nameids = value
- elif name == 'Attribute Mapping':
- self.sp.attribute_mappings = value
- elif name == 'Allowed Attributes':
- self.sp.allowed_attributes = value
+ # A value of None means remove from the data store
+ if value is False or value == []:
+ continue
+ if name == 'Name':
+ if not self.sp.is_valid_name(value):
+ raise InvalidValueFormat(
+ 'Invalid name! Use only numbers and'
+ ' letters'
+ )
+ self.sp.name = value
+ self.url = '%s/sp/%s' % (self.parent.url, value)
+ self.parent.rename_sp(option.get_value(), value)
+ elif name == 'User Owner':
+ self.sp.owner = value
+ elif name == 'Default NameID':
+ self.sp.default_nameid = value
+ elif name == 'Allowed NameIDs':
+ self.sp.allowed_nameids = value
+ elif name == 'Attribute Mapping':
+ self.sp.attribute_mappings = value
+ elif name == 'Allowed Attributes':
+ self.sp.allowed_attributes = value
except InvalidValueFormat, e:
message = str(e)
message_type = ADMIN_STATUS_WARN
message_type = ADMIN_STATUS_ERROR
return self.root_with_msg(message, message_type)
except Exception as e: # pylint: disable=broad-except
- self._debug("Error: %s" % repr(e))
+ self.debug("Error: %s" % repr(e))
message = "Internal Error"
message_type = ADMIN_STATUS_ERROR
return self.root_with_msg(message, message_type)
self.providers.remove(page.sp)
self.sp.del_subtree(name)
except Exception, e: # pylint: disable=broad-except
- self._debug("Failed to remove provider %s: %s" % (name, str(e)))
+ self.debug("Failed to remove provider %s: %s" % (name, str(e)))
def add_sps(self):
if self.cfg.idp:
self.del_sp(sp.name)
self.add_sp(sp.name, sp)
except Exception, e: # pylint: disable=broad-except
- self._debug("Failed to find provider %s: %s" % (p, str(e)))
+ self.debug("Failed to find provider %s: %s" % (p, str(e)))
def mount(self, page):
self.menu = page.menu