blob: ce3e6a4d38d84d98e04ed5ed7988d3c827e5f933 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.nifi.registry.security.authorization.shell;
/**
* Common interface for shell command strings to read users and groups.
*
*/
interface ShellCommandsProvider {
/**
* Gets the command for listing users.
*
* When executed, this command should output one record per line in this format:
*
* `username:user-id:primary-group-id`
*
* @return Shell command string that will return a list of users.
*/
String getUsersList();
/**
* Gets the command for listing groups.
*
* When executed, this command should output one record per line in this format:
*
* `group-name:group-id`
*
* @return Shell command string that will return a list of groups.
*/
String getGroupsList();
/**
* Gets the command for listing the members of a group.
*
* When executed, this command should output one line in this format:
*
* `user-name-1,user-name-2,user-name-n`
*
* @param groupName name of group.
* @return Shell command string that will return a list of users for a group.
*/
String getGroupMembers(String groupName);
/**
* Gets the command for reading a single user by id. Implementations may return null if reading a single
* user by id is not supported.
*
* When executed, this command should output a single line, in the format used by `getUsersList`.
*
* @param userId name of user.
* @return Shell command string that will read a single user.
*/
String getUserById(String userId);
/**
* Gets the command for reading a single user. Implementations may return null if reading a single user by
* username is not supported.
*
* When executed, this command should output a single line, in the format used by `getUsersList`.
*
* @param userName name of user.
* @return Shell command string that will read a single user.
*/
String getUserByName(String userName);
/**
* Gets the command for reading a single group. Implementations may return null if reading a single group
* by name is not supported.
*
* When executed, this command should output a single line, in the format used by `getGroupsList`.
*
* @param groupId name of group.
* @return Shell command string that will read a single group.
*/
String getGroupById(String groupId);
/**
* Gets the command for checking the suitability of the host system.
*
* The command is expected to exit with status 0 (zero) to indicate success, and any other status
* to indicate failure.
*
* @return Shell command string that will exit normally (0) on a suitable system.
*/
String getSystemCheck();
}