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)
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")
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))