コード例 #1
0
ファイル: configurator.py プロジェクト: paimpozhil/ajenti
 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()
コード例 #2
0
ファイル: main.py プロジェクト: rockworldmi/ajenti
    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)
コード例 #3
0
ファイル: main.py プロジェクト: Zenger/ajenti
    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)
コード例 #4
0
ファイル: configurator.py プロジェクト: Bludge0n/ajenti
 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()
コード例 #5
0
ファイル: configurator.py プロジェクト: Xorcode/ajenti
    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.'))
コード例 #6
0
ファイル: configurator.py プロジェクト: paimpozhil/ajenti
    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.'))
コード例 #7
0
ファイル: passwd.py プロジェクト: AojiaoZero/ajenti
 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'))
コード例 #8
0
ファイル: configurator.py プロジェクト: xuemy/ajenti
    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.'))
コード例 #9
0
ファイル: passwd.py プロジェクト: surjit/ajenti_cp
 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'))
コード例 #10
0
ファイル: configurator.py プロジェクト: Bludge0n/ajenti
    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.')
        )
コード例 #11
0
ファイル: configurator.py プロジェクト: unixmonster/ajenti
    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()
コード例 #12
0
    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)
コード例 #13
0
ファイル: configurator.py プロジェクト: Xorcode/ajenti
        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)
コード例 #14
0
ファイル: configurator.py プロジェクト: akaifi/ajenti
 def on_configure_sync(self):
     self.save()
     self.configure_plugin(
         UserManager.get().get_sync_provider(),
         notify=False
     )
     self.refresh()
コード例 #15
0
    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)
コード例 #16
0
ファイル: dash.py プロジェクト: avitebskiy/ajenti
    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)
コード例 #17
0
ファイル: configurator.py プロジェクト: unixmonster/ajenti
        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)
コード例 #18
0
ファイル: configurator.py プロジェクト: Xorcode/ajenti
    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()
コード例 #19
0
ファイル: dash.py プロジェクト: avitebskiy/ajenti
    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)
コード例 #20
0
ファイル: configurator.py プロジェクト: inone/ajenti
 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.'))
コード例 #21
0
    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)
コード例 #22
0
ファイル: configurator.py プロジェクト: Bludge0n/ajenti
 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()
コード例 #23
0
ファイル: configurator.py プロジェクト: paimpozhil/ajenti
 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()
コード例 #24
0
ファイル: configurator.py プロジェクト: daemon13/ajenti
 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.')
コード例 #25
0
ファイル: main.py プロジェクト: AojiaoZero/ajenti
    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)
コード例 #26
0
ファイル: dash.py プロジェクト: pacNAS/ajenti
    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)
コード例 #27
0
ファイル: configurator.py プロジェクト: xuemy/ajenti
    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()
コード例 #28
0
ファイル: configurator.py プロジェクト: unixmonster/ajenti
 def on_configure_sync(self):
     self.save()
     self.configure_plugin(UserManager.get(
         manager.context).get_sync_provider(),
                           notify=False)
     self.refresh()
コード例 #29
0
ファイル: configurator.py プロジェクト: xuemy/ajenti
 def on_sync_users(self):
     self.save()
     UserManager.get(manager.context).get_sync_provider().sync()
     self.refresh()
コード例 #30
0
 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
コード例 #31
0
ファイル: middleware.py プロジェクト: surjit/ajenti_cp
 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
コード例 #32
0
ファイル: middleware.py プロジェクト: Bludge0n/ajenti
 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