def process_error(self, error):
        """ process synchronization API errors
		"""
        if error == 'ApplicationIsNotRegistered':
            # Application was deleted in ProAdmin - now need to switch scheme to local

            # remove remote settings
            from proadmin_remote_settings import RemoteSettings
            RemoteSettings.delete()

            # unregister current scheme
            ProAdmin.stop_sync()
            ProAdmin.unregister_default_scheme()
    def set_local_scheme(self):
        """ set local scheme
		"""
        if not self.is_admin():
            raise AuthorizationError()

        from proadmin_remote_settings import RemoteSettings
        try:
            if RemoteSettings.get_remote_settings(): RemoteSettings.delete()
        except:
            pass

        import ProAdmin
        ProAdmin.unregister_default_scheme()
    def info(self):
        """ return information about current proadmin scheme
		"""
        if not self.is_admin():
            raise AuthorizationError()

        import ProAdmin
        from collections import OrderedDict
        info = OrderedDict()

        # application info
        app = ProAdmin.application()
        app_info = OrderedDict()
        app_info['name'] = app.name
        app_info['guid'] = app.guid
        app_info['api'] = app.scheme.get_option('api_guid')
        info['application'] = app_info

        # scheme info
        scheme = ProAdmin.scheme()
        scheme_info = OrderedDict()
        scheme_info['type'] = scheme.type
        if scheme.is_remote():
            from proadmin_remote_settings import RemoteSettings
            settings = RemoteSettings.get_remote_settings()
            scheme_info['host'] = settings.server
            scheme_info['login'] = settings.login
        info['scheme'] = scheme_info

        return json.dumps(info, indent=4)
    def set_remote_settings(self, server, user, password):
        """ set another proadmin settings
		"""
        import ProAdmin
        from proadmin_remote_settings import RemoteSettings

        if not self.is_admin():
            raise AuthorizationError()

        if self.is_proadmin(): return

        remote = RemoteSettings.get_remote_settings()
        if remote and not password: password = remote.password

        RemoteSettings(user, password, server).save()
        ProAdmin.logoff()
        ProAdmin.unregister_default_scheme()
Example #5
0
    def is_remote(self):
        if getattr(self._local, 'is_remote', None) is None:
            from proadmin_remote_settings import RemoteSettings
            is_remote = bool(RemoteSettings.get_remote_settings())

            self._local.is_remote = is_remote

            if not is_remote:
                import ProAdmin
                ProAdmin.unregister_default_scheme()

        return self._local.is_remote
Example #6
0
def create_remote_scheme():
    """ insert here creating of application scheme
	"""
    import ProAdmin
    from vdom_remote_api import VDOMService
    from md5 import md5
    from proadmin_remote_sync import RemoteSync

    from proadmin_remote_application_scheme import RemoteApplicationScheme
    from proadmin_db_connection import DbConnection

    from class_remote_settings import RemoteSettings

    # create connection to ProAdmin
    remote = RemoteSettings.get_remote_setting()

    server = remote.server
    login = remote.login
    password = md5(remote.password).hexdigest()
    app_id = '491d4c93-4089-4517-93d3-82326298da44'

    # create ldap connection

    import os

    db_path = application.storage.abs_path('test_db.sqlite')
    if not os.path.exists(application.storage.abs_path('')):
        os.makedirs(application.storage.abs_path(''))
    connection = DbConnection(db_path)

    try:
        service = VDOMService(server, login, password, app_id).open_session()

        # create application scheme
        scheme = RemoteApplicationScheme(application.id, connection)
        scheme.set_sync_service(service)

    except Exception, ex:
        RemoteSettings.delete()
        scheme = create_local_scheme()
    def proadmin_internal_url(self, page=''):
        remote = RemoteSettings.get_remote_settings()
        host = remote.server

        if self.is_ip(host):
            host += '/' + ProAdmin.PROADMIN_APPLICATION_GUID

        # check protocol
        if '://' not in host:
            host = SSOUrl.current_protocol() + '://' + host

        # check page
        if '/' in page[:1]:
            page = page[1:]

        host = '%(host)s%(page)s' % {
            'host': host,
            'page': '/' + page if page else '',
        }

        return self(host)
Example #8
0
def create_default_scheme():
    """ insert here creating of application scheme
	"""
    from proadmin_remote_settings import RemoteSettings
    remote = RemoteSettings.get_remote_setting()

    if remote:
        scheme = create_remote_scheme()
    else:
        scheme = create_local_scheme()

    scheme.set_information(application.name)

    # set scheme options
    scheme.set_option('api_guid',
                      '5073ff75-da99-44fb-a5d7-e44e5ab28598')  # API
    scheme.set_option('subjects_limit', None)  # subjects limitation

    app_guid = application.id  #"26d94c75-ce3d-4019-8475-daf6206db7e3"
    app_type = ProAdmin.ACLObjectType("Application", app_guid)
    app_type.set_access_types({"a": "Admin"})
    scheme.add_aclobjecttype(app_type)

    #	# create Mailbox ACL Type
    #	mailbox_guid = '24d8c50b-1de8-4c25-995f-eb127d51f154'
    #	mailbox_type = ProAdmin.ACLObjectType( 'Mailbox', mailbox_guid )
    #	mailbox_type.set_access_types({
    #		"d": "Delete",
    #		"o": "Owner",
    #		"r": "Read",
    #		"w": "Write",
    #	})
    #	scheme.add_aclobjecttype( mailbox_type )

    scheme.register()

    # create admins group and admin user
    app = ProAdmin.application()
    app.create_root_user(password='******')
    app.create_admins_group()
Example #9
0
	# get back url
	back_url = get_logout_back_url()

	user = ProAdmin.current_user()
	if not user:
		response.redirect( '/login?back_url=%s' % back_url )

	self.cont_login.text_login.value = user.name

	if not ProAdmin.application().rules( user, 'a' ):
		self.menu_settings.visible = '0'
		#self.menu_macros.visible = '0'

	list_html = "<div class='top_start_container'></div>"
	if RemoteSettings.get_remote_settings():
		# define current protocol
		protocol = SSOUrl.current_protocol() or 'http'

		list_html += "<div class='first_block block_start_container'><div class='center_align_block switch-to'>"+lang.get("switch_to", "Switch to")+"</div></div>"
		apps = ProAdmin.get_registred_applications()
		current_app_host = ProAdmin.hosts()
		for a in apps:
			if "b0a274f0-22bc-44be-be48-da6ec9180268" != apps[a]["guid"] and current_app_host != apps[a]["hosts"]:
				app_host = apps[a]["hosts"][0] if "hosts" in apps[a] else ""

				# add protocol to application url
				if app_host:
					app_host = protocol + '://' + app_host

				app_img = ""
Example #10
0
from proadmin_remote_settings import RemoteSettings
from proadmin_utils import Utils

class SilentException( Exception ):
	pass

try:
	# there are no remote settings in ProAdmin application
	if Utils.is_proadmin():
		raise SilentException()

	# check user rights
	if not Utils.is_admin():
		self.remotesettings_form.visible = '0'
		raise SilentException()

	# setup form fields
	try:
		remote = RemoteSettings.get_remote_settings()
	except:
		remote = None

	if remote:
		self.remotesettings_form.server.value = remote.server
		self.remotesettings_form.login.value = remote.login
		self.remotesettings_form.password.value = '*'*8

except SilentException:
	pass