Allow socket and address/port to be used with maxadmin
It's now possible to use both a Unix domain socket and host/port when connecting with MaxAdmin to MaxScale. By default MaxAdmin will attempt to use the default Unix domain socket, but if host and/or port has been specified, then an inet socket will be used. maxscaled will authenticate the connection attempt differently depending on whether a Unix domain socket is used or not. If a Unix domain socket is used, then the Linux user id will be used for the authorization, otherwise the 1.4.3 username/password handshake will be performed. adminusers has now been extended so that there is one set of functions for local users (connecting locally over a Unix socket) and one set of functions for remote users (connecting locally or remotely over an Inet socket). The local users are stored in the new .../maxscale-users and the remote users in .../passwd. That is, the old users of a 1.4 installation will work as such in 2.0. One difference is that there will be *no* default remote user. That is, remote users will always have to be added manually using a local user. The implementation is shared; the local and remote alternatives use common functions to which the hashtable and filename to be used are forwarded. The commands "[add|remove] user" behave now exactly like they did in 1.4.3, and also all existing users work out of the box. In addition there is now the commands "[enable|disable] account" using which Linux accounts can be enabled for MaxAdmin usage.
This commit is contained in:
@ -51,11 +51,15 @@ typedef struct admin_session
|
||||
#endif
|
||||
} ADMIN_session;
|
||||
|
||||
extern const char *admin_local_add_user(const char *uname);
|
||||
extern const char *admin_local_remove_user(const char *uname);
|
||||
extern bool admin_local_search_user(const char *uname);
|
||||
extern const char *admin_enable_linux_account(const char *uname);
|
||||
extern const char *admin_disable_linux_account(const char *uname);
|
||||
extern bool admin_linux_account_enabled(const char *uname);
|
||||
|
||||
extern bool admin_remote_verify(const char *uname, const char *password);
|
||||
extern const char *admin_add_inet_user(const char *uname, const char *password);
|
||||
extern const char *admin_remove_inet_user(const char *uname, const char *password);
|
||||
extern bool admin_inet_user_exists(const char *uname);
|
||||
|
||||
extern bool admin_verify_inet_user(const char *uname, const char *password);
|
||||
|
||||
extern void dcb_PrintAdminUsers(DCB *dcb);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user