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()
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
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)
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()
# 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 = ""
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