예제 #1
0
파일: share.py 프로젝트: fredsobon/stuff
def share_modify(args):
    user_id = backend.user_get_id(args.login)

    if not user_id:
        sys.stderr.write("Error: user `%s' does not exist\n" % args.login)
        return

    args.path = share_clean_path(args.path)

    if not args.path:
        sys.stderr.write("Error: shared data path must not be empty\n")
        return

    if not fs.share_path_exists(base_path, args.path):
        sys.stderr.write("Error: share `%s' data path does not exist\n" % args.path)
        return

    share_id = backend.share_id(user_id, args.path)

    if share_id:
        backend.share_update(share_id, args.writable)

        if backend.share_is_acl_set(share_id):
            sys.stdout.write("Setting ACL... [Please wait]\n")
            fs.share_set(base_path, args.path, user_id, args.writable)

        sys.stdout.write("OK\n")
    else:
        sys.stderr.write("Error: share does not exist\n" % args.path)
예제 #2
0
파일: share.py 프로젝트: fredsobon/stuff
def share_add(args):
    user_id = backend.user_get_id(args.login)

    if not user_id:
        sys.stderr.write("Error: user `%s' does not exist\n" % args.login)
        return

    args.path = share_clean_path(args.path)

    if not args.path:
        sys.stderr.write("Error: shared data path must not be empty\n")
        return

    if backend.share_exists(user_id, args.path):
        sys.stderr.write("Error: share `%s' for `%s' user already exists\n" % (args.path, args.login))
        return

    share_id = backend.share_contains(user_id, args.path)

    if share_id is None:
        share_id = backend.share_intersect(user_id, args.path)

    if share_id is not None:
        sys.stderr.write("Error: share `%s' conflicts with `%s'\n" % (args.path, backend.share_get_path(share_id)))
        return

    if fs.user_path_exists(base_path, args.login, args.path):
        sys.stderr.write("Error: share `%s' user path already exists\n" % args.path)
        return

    if not args.create and not fs.share_path_exists(base_path, args.path):
        sys.stderr.write("Error: share `%s' data path does not exist\n" % args.path)
        return

    backend.share_insert(user_id, args.path, args.writable, (True != args.noacl))

    if not args.noacl:
        sys.stdout.write("Setting ACL... [Please wait]\n")
        fs.share_set(base_path, args.path, user_id, args.writable)

    fs.user_link(base_path, args.login, args.path)

    sys.stdout.write("OK\n")
예제 #3
0
파일: share.py 프로젝트: fredsobon/stuff
def share_delete(args):
    user_id = backend.user_get_id(args.login)

    if not user_id:
        sys.stderr.write("Error: user `%s' does not exist\n" % args.login)
        return

    args.path = share_clean_path(args.path)

    if not args.path:
        sys.stderr.write("Error: shared data path must not be empty\n")
        return

    share_id = backend.share_id(user_id, args.path)

    if share_id is not None:
        if not args.force:
            sys.stdout.write(
                "You are about to delete share `%s' for user `%s'. Are you sure? (y/N) " % (args.path, args.login)
            )

            if raw_input().lower().strip() not in ["y", "yes"]:
                return

        backend.share_delete(share_id)

        if backend.share_is_acl_set(share_id):
            if fs.share_path_exists(base_path, args.path):
                sys.stdout.write("Unsetting ACL... [Please wait]\n")
                fs.share_unset(base_path, args.path, user_id)
            else:
                sys.stderr.write("Warning: shared data path `%s' data path does not exist\n" % args.path)

        fs.user_unlink(base_path, args.login, args.path)

        sys.stdout.write("OK\n")
    else:
        sys.stderr.write("Error: share `%s' for user `%s' does not exist\n" % (args.path, args.login))