Beispiel #1
0
    def push_status(self, status):
        sender = get_sender()
        job = self.context.job_by_pid(sender.credentials['pid'])
        if not job:
            raise RpcException(errno.EINVAL, 'Unknown job')

        job.push_status(status)
Beispiel #2
0
    def push_status(self, status):
        sender = get_sender()
        job = self.context.job_by_pid(sender.credentials['pid'])
        if not job:
            raise RpcException(errno.EINVAL, 'Unknown job')

        job.push_status(status)
Beispiel #3
0
    def checkin(self):
        sender = get_sender()
        job = self.context.job_by_pid(sender.credentials['pid'])
        if not job:
            raise RpcException(errno.EINVAL, 'Unknown job')

        job.checkin()
Beispiel #4
0
    def checkin(self):
        sender = get_sender()
        job = self.context.job_by_pid(sender.credentials['pid'])
        if not job:
            raise RpcException(errno.EINVAL, 'Unknown job')

        job.checkin()
Beispiel #5
0
def privileged(uid):
    """
    Warning: that function shall be used only within RPC method context
    """
    sender = get_sender()
    if not sender:
        logging.warning('privileged(): sender unknown, assuming no')
        return False

    return sender.credentials and sender.credentials['uid'] in (0, uid)
Beispiel #6
0
def privileged(uid):
    """
    Warning: that function shall be used only within RPC method context
    """
    sender = get_sender()
    if not sender:
        logging.warning('privileged(): sender unknown, assuming no')
        return False

    return sender.credentials and sender.credentials['uid'] in (0, uid)
Beispiel #7
0
    def push(self, entry):
        creds = get_sender().credentials
        if creds:
            entry['pid'] = creds['pid']
            entry['uid'] = creds['uid']
            entry['gid'] = creds['gid']

        if 'identifier' not in entry:
            try:
                proc = kinfo_getproc(entry['pid'])
                entry['identifier'] = proc.command
            except OSError:
                entry['identifier'] = 'unknown'

        entry['source'] = 'rpc'
        self.context.push(entry)
Beispiel #8
0
    def push(self, entry):
        creds = get_sender().credentials
        if creds:
            entry['pid'] = creds['pid']
            entry['uid'] = creds['uid']
            entry['gid'] = creds['gid']

        if 'identifier' not in entry:
            try:
                proc = kinfo_getproc(entry['pid'])
                entry['identifier'] = proc.command
            except OSError:
                entry['identifier'] = 'unknown'

        entry['source'] = 'rpc'
        self.context.push(entry)
Beispiel #9
0
    def change_password(self, user_name, password):
        self.logger.debug('Change password request for user {0}'.format(user_name))
        if not self.getpwnam(user_name):
            raise RpcException(errno.ENOENT, 'User {0} not found'.format(user_name))

        # Now user is cached (if exists)
        item = self.context.users_cache.get(name=user_name)

        sender = get_sender()
        if not sender.credentials:
            raise RpcException(errno.EPERM, 'Permission denied')

        if sender.credentials['uid'] not in (item.value['uid'], 0):
            raise RpcException(errno.EPERM, 'Permission denied')

        item.directory.instance.change_password(user_name, password)
        self.context.users_cache.flush(item.uuid)
Beispiel #10
0
    def change_password(self, user_name, password):
        self.logger.debug('Change password request for user {0}'.format(user_name))
        if not self.getpwnam(user_name):
            raise RpcException(errno.ENOENT, 'User {0} not found'.format(user_name))

        # Now user is cached (if exists)
        item = self.context.users_cache.get(name=user_name)

        sender = get_sender()
        if not sender.credentials:
            raise RpcException(errno.EPERM, 'Permission denied')

        if sender.credentials['uid'] not in (item.value['uid'], 0):
            raise RpcException(errno.EPERM, 'Permission denied')

        item.directory.instance.change_password(user_name, password)
        self.context.users_cache.flush(item.uuid)