def on_configure_sync(self): self.save() if UserManager.get().get_sync_provider( ).classconfig_editor is not None: self.configure_plugin(UserManager.get().get_sync_provider(), notify=False) self.refresh()
def init(self): self.categories = {} self.startup_crashes = [] profile('Starting plugins') for cls in SectionPlugin.get_classes(): try: UserManager.get().require_permission('section:%s' % cls.__name__) try: profile('Starting %s' % cls.__name__) cat = cls.new(self.ui) profile_end() self.append(cat) except SecurityError: pass except Exception, e: e.traceback = traceback.format_exc(e) self.startup_crashes.append(e) except SecurityError: pass profile_end() def category_order(x): order = 98 if x.category in self.category_order: order = self.category_order[x.category] return (order, x.order, x.title) self.children = sorted(self.children, key=category_order) if len(self.children) > 0: self.on_switch(self.children[0].uid)
def init(self): self.categories = {} self.startup_crashes = [] profile_start("Starting plugins") for cls in SectionPlugin.get_classes(): try: UserManager.get().require_permission("section:%s" % cls.__name__) try: profile_start("Starting %s" % cls.__name__) cat = cls.new(self.ui) profile_end() self.append(cat) except SecurityError: pass except Exception, e: e.traceback = traceback.format_exc(e) self.startup_crashes.append(e) except SecurityError: pass profile_end() def category_order(x): order = 98 if x.category in self.category_order: order = self.category_order[x.category] return (order, x.order, x.title) self.children = sorted(self.children, key=category_order) if len(self.children) > 0: self.on_switch(self.children[0].uid)
def on_configure_sync(self): self.save() if UserManager.get().get_sync_provider().classconfig_editor is not None: self.configure_plugin( UserManager.get().get_sync_provider(), notify=False ) self.refresh()
def save(self): self.binder.update() UserManager.get(manager.context).set_sync_provider(self.find('sync-providers').value) for user in ajenti.config.tree.users.values(): if not '|' in user.password: user.password = UserManager.get(manager.context).hash_password(user.password) self.refresh() ajenti.config.save() self.context.notify('info', _('Saved. Please restart Ajenti for changes to take effect.'))
def save(self): self.binder.update() UserManager.get().set_sync_provider(self.find('sync-providers').value) UserManager.get().hash_passwords() self.refresh() ajenti.config.save() self.context.notify( 'info', _('Saved. Please restart Ajenti for changes to take effect.'))
def save(self): new_password = self.find('new-password').value if new_password != self.find('new-password-2').value: self.context.notify('error', _('Passwords don\'t match')) return old_password = self.find('old-password').value if not UserManager.get().check_password(self.context.session.identity, old_password) or not new_password or not old_password: self.context.notify('error', _('Incorrect password')) return UserManager.get().set_password(self.context.session.identity, new_password) ajenti.config.save() self.context.notify('info', _('Password changed'))
def save(self): new_password = self.find('new-password').value if new_password != self.find('new-password-2').value: self.context.notify('error', _('Passwords don\'t match')) return old_password = self.find('old-password').value if not UserManager.get().check_password( self.context.session.identity, old_password) or not new_password or not old_password: self.context.notify('error', _('Incorrect password')) return UserManager.get().set_password(self.context.session.identity, new_password) ajenti.config.save() self.context.notify('info', _('Password changed'))
def save(self): self.binder.update() UserManager.get().set_sync_provider( self.find('sync-providers').value ) UserManager.get().hash_passwords() self.refresh() ajenti.config.save() self.context.notify( 'info', _('Saved. Please restart Ajenti for changes to take effect.') )
def refresh(self): self.binder.unpopulate() self.find('sync-providers').labels = [ x.title for x in UserSyncProvider.get_classes() ] self.find('sync-providers').values = [ x.id for x in UserSyncProvider.get_classes() ] provider = UserManager.get(manager.context).get_sync_provider() self.find('sync-providers').value = provider.id self.find('add-user-button').visible = provider.id == '' self.find('sync-users-button').visible = provider.id != '' self.find('password').visible = provider.id == '' self.find('configure-sync-button' ).visible = provider.classconfig_editor is not None try: provider.test() sync_ok = True except Exception as e: self.context.notify('error', str(e)) sync_ok = False self.find('sync-status-ok').visible = sync_ok self.find('sync-status-fail').visible = not sync_ok languages = sorted(ajenti.locales.list_locales()) self.find('language').labels = [_('Auto'), 'en_US'] + languages self.find('language').values = ['', 'en_US'] + languages self.binder.setup().populate() self.ccmgr.reload() self.classconfig_binding.setup().populate()
def refresh(self): self.find('header').hostname = Sensor.find('hostname').value() self.dash.empty() for widget in self.classconfig['widgets']: for cls in DashboardWidget.get_classes(): if cls.classname == widget['class']: if not UserManager.get().has_permission( self.context, WidgetPermissions.name_for(cls)): continue try: instance = cls.new( self.ui, container=widget['container'], index=widget['index'], config=widget['config'], ) except Exception, e: traceback.print_exc() instance = CrashedWidget.new( self.ui, container=widget['container'], index=widget['index'], config=widget['config'], ) instance.classname = cls.classname instance.set(e) instance.on('save-config', self.on_widget_config, widget, instance) self.dash.append(instance)
def post_user_bind(object, collection, item, ui): provider = UserManager.get(manager.context).get_sync_provider() editable = item.name != 'root' renameable = editable and provider.allows_renaming deletable = renameable ui.find('name-edit').visible = renameable ui.find('name-label').visible = not renameable ui.find('delete').visible = deletable box = ui.find('permissions') box.empty() p = PermissionProvider.get_all() for prov in p: line = self.ui.create('tab', title=prov.get_name()) box.append(line) for perm in prov.get_permissions(): line.append( self.ui.create('checkbox', id=perm[0], text=perm[1], value=(perm[0] in item.permissions)) ) def copy(): self.save() newuser = deepcopy(item) newuser.name += '_' collection[newuser.name] = newuser self.refresh() ui.find('copy').on('click', copy)
def on_configure_sync(self): self.save() self.configure_plugin( UserManager.get().get_sync_provider(), notify=False ) self.refresh()
def init(self): self.title = _('Dashboard') self.category = '' self.icon = 'dashboard' self.order = 0 self.append(self.ui.inflate('dashboard:dash')) self.dash = self.find('dash') self.dash.on('reorder', self.on_reorder) self.autorefresh = False self.find('header').platform = ajenti.platform_unmapped self.find('header').distro = ajenti.platform_string def post_widget_bind(o, c, i, u): u.find('listitem').on('click', self.on_add_widget_click, i) self.find('add-widgets').post_item_bind = post_widget_bind classes = [ x for x in DashboardWidget.get_classes() if not x.hidden and UserManager.get().has_permission( self.context, WidgetPermissions.name_for(x)) ] CollectionAutoBinding(sorted(classes, key=lambda x: x.name), None, self.find('add-widgets')).populate() self.context.session.spawn(self.worker) AjentiUpdater.get().check_for_updates(self.update_check_callback)
def init(self): self.title = _('Dashboard') self.category = '' self.icon = 'dashboard' self.order = 0 self.append(self.ui.inflate('dashboard:dash')) self.dash = self.find('dash') self.dash.on('reorder', self.on_reorder) self.autorefresh = False self.find('header').platform = ajenti.platform_unmapped self.find('header').distro = ajenti.platform_string def post_widget_bind(o, c, i, u): u.find('listitem').on('click', self.on_add_widget_click, i) self.find('add-widgets').post_item_bind = post_widget_bind classes = [ x for x in DashboardWidget.get_classes() if not x.hidden and UserManager.get().has_permission(self.context, WidgetPermissions.name_for(x)) ] CollectionAutoBinding( sorted(classes, key=lambda x: x.name), None, self.find('add-widgets')).populate() self.context.session.spawn(self.worker)
def post_user_bind(object, collection, item, ui): provider = UserManager.get(manager.context).get_sync_provider() editable = item.name != 'root' renameable = editable and provider.allows_renaming deletable = renameable ui.find('name-edit').visible = renameable ui.find('name-label').visible = not renameable ui.find('delete').visible = deletable box = ui.find('permissions') box.empty() p = PermissionProvider.get_all() for prov in p: line = self.ui.create('tab', title=prov.get_name()) box.append(line) for perm in prov.get_permissions(): line.append( self.ui.create('checkbox', id=perm[0], text=perm[1], value=(perm[0] in item.permissions))) def copy(): self.save() newuser = deepcopy(item) newuser.name += '_' collection[newuser.name] = newuser self.refresh() ui.find('copy').on('click', copy)
def refresh(self): self.binder.unpopulate() self.find('sync-providers').labels = [x.title for x in UserSyncProvider.get_classes()] self.find('sync-providers').values = [x.id for x in UserSyncProvider.get_classes()] provider = UserManager.get(manager.context).get_sync_provider() self.find('sync-providers').value = provider.id self.find('add-user-button').visible = provider.id == '' self.find('sync-users-button').visible = provider.id != '' self.find('password').visible = provider.id == '' self.find('configure-sync-button').visible = provider.classconfig_editor is not None try: provider.test() sync_ok = True except Exception as e: self.context.notify('error', str(e)) sync_ok = False self.find('sync-status-ok').visible = sync_ok self.find('sync-status-fail').visible = not sync_ok languages = sorted(ajenti.locales.list_locales()) self.find('language').labels = [_('Auto'), 'en_US'] + languages self.find('language').values = ['', 'en_US'] + languages self.binder.setup().populate() self.ccmgr.reload() self.classconfig_binding.setup().populate()
def refresh(self): self.find('header').hostname = Sensor.find('hostname').value() self.dash.empty() for widget in self.classconfig['widgets']: for cls in DashboardWidget.get_classes(): if cls.classname == widget['class']: if not UserManager.get().has_permission(self.context, WidgetPermissions.name_for(cls)): continue try: instance = cls.new( self.ui, container=widget['container'], index=widget['index'], config=widget['config'], ) except Exception, e: traceback.print_exc() instance = CrashedWidget.new( self.ui, container=widget['container'], index=widget['index'], config=widget['config'], ) instance.classname = cls.classname instance.set(e) instance.on('save-config', self.on_widget_config, widget, instance) self.dash.append(instance)
def save(self): self.binder.update() for user in ajenti.config.tree.users.values(): if not '|' in user.password: user.password = UserManager.get().hash_password(user.password) self.binder.populate() ajenti.config.save() self.context.notify('info', _('Saved. Please restart Ajenti for changes to take effect.'))
def init(self): self.categories = {} self.startup_crashes = [] profile_start('Starting plugins') self.is_empty = True for cls in SectionPlugin.get_classes(): try: if not hasattr(cls, 'permissionless'): permission_target = cls if hasattr(cls, 'uses_access_permission_of'): permission_target = cls.uses_access_permission_of UserManager.get().require_permission( self.context, 'section:%s' % permission_target.__name__) try: profile_start('Starting %s' % cls.__name__) cat = cls.new(self.ui) cat.clsname = cls.classname profile_end() self.append(cat) self.is_empty = False except SecurityError: pass except Exception as e: catcher.backup(e) traceback.print_exc() e.traceback = traceback.format_exc(e) self.startup_crashes.append(e) except SecurityError: pass profile_end() def category_order(x): order = 98 if x.category in self.category_order: order = self.category_order[x.category] return (order, x.order, x.title) self.children = sorted(self.children, key=category_order) if len(self.children) > 0: self.on_switch(self.children[0].uid)
def on_sync_users(self): self.save() prov = UserManager.get().get_sync_provider() try: prov.test() prov.sync() except Exception as e: self.context.notify('error', str(e)) self.refresh()
def save(self): self.binder.update() for user in ajenti.config.tree.users.values(): if not '|' in user.password: user.password = UserManager.get().hash_password(user.password) self.binder.populate() ajenti.config.save() self.context.notify( 'info', 'Saved. Please restart Ajenti for changes to take effect.')
def init(self): self.categories = {} self.startup_crashes = [] profile_start('Starting plugins') self.is_empty = True for cls in SectionPlugin.get_classes(): try: if not hasattr(cls, 'permissionless'): permission_target = cls if hasattr(cls, 'uses_access_permission_of'): permission_target = cls.uses_access_permission_of UserManager.get().require_permission(self.context, 'section:%s' % permission_target.__name__) try: profile_start('Starting %s' % cls.__name__) cat = cls.new(self.ui) cat.clsname = cls.classname profile_end() self.append(cat) self.is_empty = False except SecurityError: pass except Exception as e: catcher.backup(e) traceback.print_exc() e.traceback = traceback.format_exc(e) self.startup_crashes.append(e) except SecurityError: pass profile_end() def category_order(x): order = 98 if x.category in self.category_order: order = self.category_order[x.category] return (order, x.order, x.title) self.children = sorted(self.children, key=category_order) if len(self.children) > 0: self.on_switch(self.children[0].uid)
def refresh(self): self.find("header").hostname = Sensor.find("hostname").value() self.dash.empty() for widget in self.classconfig["widgets"]: for cls in DashboardWidget.get_classes(): if cls.classname == widget["class"]: if not UserManager.get().has_permission(WidgetPermissions.name_for(cls)): continue try: instance = cls.new( self.ui, container=widget["container"], index=widget["index"], config=widget["config"] ) except Exception, e: traceback.print_exc() instance = CrashedWidget.new( self.ui, container=widget["container"], index=widget["index"], config=widget["config"] ) instance.classname = cls.classname instance.set(e) instance.on("save-config", self.on_widget_config, widget, instance) self.dash.append(instance)
def refresh(self): self.binder.reset() self.find('sync-providers').labels = [x.title for x in UserSyncProvider.get_classes()] self.find('sync-providers').values = [x.id for x in UserSyncProvider.get_classes()] provider = UserManager.get(manager.context).get_sync_provider() self.find('sync-providers').value = provider.id self.find('add-user-button').visible = provider.id == '' self.find('sync-users-button').visible = provider.id != '' self.find('password').visible = provider.id == '' self.find('configure-sync-button').visible = provider.classconfig_editor is not None sync_ok = provider.test() self.find('sync-status-ok').visible = sync_ok self.find('sync-status-fail').visible = not sync_ok languages = sorted(ajenti.locales.list_locales()) self.find('language').labels = [_('Auto')] + languages self.find('language').values = [''] + languages self.binder.autodiscover().populate() self.ccmgr.reload() self.classconfig_binding.reset().autodiscover().populate()
def on_configure_sync(self): self.save() self.configure_plugin(UserManager.get( manager.context).get_sync_provider(), notify=False) self.refresh()
def on_sync_users(self): self.save() UserManager.get(manager.context).get_sync_provider().sync() self.refresh()
def try_login(self, context, username, password): if UserManager.get().check_password(username, password): context.session.identity = username context.session.appcontext = AppContext(manager.context, context) return True return False
def try_login(self, context, username, password, env=None): if UserManager.get().check_password(username, password, env=env): self.login(context, username) return True return False