03831d35f7499c87d51205817c93e9a8d42c4baestevel * CDDL HEADER START
03831d35f7499c87d51205817c93e9a8d42c4baestevel * The contents of this file are subject to the terms of the
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Common Development and Distribution License, Version 1.0 only
03831d35f7499c87d51205817c93e9a8d42c4baestevel * (the "License"). You may not use this file except in compliance
03831d35f7499c87d51205817c93e9a8d42c4baestevel * with the License.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
03831d35f7499c87d51205817c93e9a8d42c4baestevel * See the License for the specific language governing permissions
03831d35f7499c87d51205817c93e9a8d42c4baestevel * and limitations under the License.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * When distributing Covered Code, include this CDDL HEADER in each
03831d35f7499c87d51205817c93e9a8d42c4baestevel * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * If applicable, add the following below this CDDL HEADER, with the
03831d35f7499c87d51205817c93e9a8d42c4baestevel * fields enclosed by brackets "[]" replaced with your own identifying
03831d35f7499c87d51205817c93e9a8d42c4baestevel * information: Portions Copyright [yyyy] [name of copyright owner]
03831d35f7499c87d51205817c93e9a8d42c4baestevel * CDDL HEADER END
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Copyright 2002 Sun Microsystems, Inc. All rights reserved.
03831d35f7499c87d51205817c93e9a8d42c4baestevel * Use is subject to license terms.
03831d35f7499c87d51205817c93e9a8d42c4baestevel#pragma ident "%Z%%M% %I% %E% SMI"
03831d35f7499c87d51205817c93e9a8d42c4baestevel * user.c: support for the scadm useradd, userdel, usershow, userpassword,
03831d35f7499c87d51205817c93e9a8d42c4baestevel * userperm options (administration of service processor users)
03831d35f7499c87d51205817c93e9a8d42c4baestevelstatic void max_username();
03831d35f7499c87d51205817c93e9a8d42c4baestevelstatic void wrong_response();
03831d35f7499c87d51205817c93e9a8d42c4baestevelstatic void no_user();
03831d35f7499c87d51205817c93e9a8d42c4baestevelstatic void no_info();
03831d35f7499c87d51205817c93e9a8d42c4baestevelstatic void userperm_usage();
03831d35f7499c87d51205817c93e9a8d42c4baestevelstatic void show_header();
03831d35f7499c87d51205817c93e9a8d42c4baestevelstatic void cleanup();
03831d35f7499c87d51205817c93e9a8d42c4baestevel/* Globals so that exit routine can clean up echo */
03831d35f7499c87d51205817c93e9a8d42c4baesteveltypedef union {
03831d35f7499c87d51205817c93e9a8d42c4baestevel userName = (char *)(&((char *)admMessage)[sizeof (dp_user_adm_t)]);
03831d35f7499c87d51205817c93e9a8d42c4baestevel Message.len = sizeof (dp_user_adm_t) + strlen(userName) + 1;
03831d35f7499c87d51205817c93e9a8d42c4baestevel ADM_Recv(&Message, &Timeout, DP_USER_ADM_R, sizeof (dp_user_adm_r_t));
03831d35f7499c87d51205817c93e9a8d42c4baestevel } else if (admResponse->status == DP_ERR_USER_THERE) {
03831d35f7499c87d51205817c93e9a8d42c4baestevel } else if (admResponse->status == DP_ERR_USER_WARNING) {
03831d35f7499c87d51205817c93e9a8d42c4baestevel gettext("scadm: username did not start with letter\n"
03831d35f7499c87d51205817c93e9a8d42c4baestevel " or did not contain lower case letter\n"));
03831d35f7499c87d51205817c93e9a8d42c4baestevel userName = (char *)(&((char *)admMessage)[sizeof (dp_user_adm_t)]);
03831d35f7499c87d51205817c93e9a8d42c4baestevel Message.len = sizeof (dp_user_adm_t) + strlen(userName) + 1;
03831d35f7499c87d51205817c93e9a8d42c4baestevel ADM_Recv(&Message, &Timeout, DP_USER_ADM_R, sizeof (dp_user_adm_r_t));
03831d35f7499c87d51205817c93e9a8d42c4baestevel Message.len = sizeof (dp_user_adm_t) + strlen(userName) + 1;
03831d35f7499c87d51205817c93e9a8d42c4baestevel (void) printf(" %-16s %-15s ", userName, permissions);
03831d35f7499c87d51205817c93e9a8d42c4baestevel /* Try to set password up to 3 times on Malformed password */
03831d35f7499c87d51205817c93e9a8d42c4baestevel userName = (&((char *)admMessage)[sizeof (dp_user_adm_t)]);
03831d35f7499c87d51205817c93e9a8d42c4baestevel password = (&((char *)admMessage)[sizeof (dp_user_adm_t) +
03831d35f7499c87d51205817c93e9a8d42c4baestevel Message.len = sizeof (dp_user_adm_t) + strlen(userName) +
03831d35f7499c87d51205817c93e9a8d42c4baestevel } else if (admResponse->status == DP_ERR_USER_PASSWD) {
03831d35f7499c87d51205817c93e9a8d42c4baestevel " A valid password is between 6 and 8 "
03831d35f7499c87d51205817c93e9a8d42c4baestevel "characters,\n"
03831d35f7499c87d51205817c93e9a8d42c4baestevel " has at least two alphabetic characters, "
03831d35f7499c87d51205817c93e9a8d42c4baestevel " least one numeric or special character. "
03831d35f7499c87d51205817c93e9a8d42c4baestevel " password must differ from the user's "
03831d35f7499c87d51205817c93e9a8d42c4baestevel "login name\n"
03831d35f7499c87d51205817c93e9a8d42c4baestevel " and any reverse or circular shift of that "
03831d35f7499c87d51205817c93e9a8d42c4baestevel " name.\n"));
03831d35f7499c87d51205817c93e9a8d42c4baestevel /* password was changed successfully, get out of while */
03831d35f7499c87d51205817c93e9a8d42c4baestevel if ((strlen(argv[3]) > 4) || (strlen(argv[3]) < 1)) {
03831d35f7499c87d51205817c93e9a8d42c4baestevel /* See if this field was entered twice */
03831d35f7499c87d51205817c93e9a8d42c4baestevel /* See if this field was enetered twice */
03831d35f7499c87d51205817c93e9a8d42c4baestevel /* See if this field was enetered twice */
03831d35f7499c87d51205817c93e9a8d42c4baestevel /* See if this field was enetered twice */
03831d35f7499c87d51205817c93e9a8d42c4baestevel userName = (char *)(&((char *)admMessage)[sizeof (dp_user_adm_t)]);
03831d35f7499c87d51205817c93e9a8d42c4baestevel Message.len = sizeof (dp_user_adm_t) + strlen(userName) + 1;
03831d35f7499c87d51205817c93e9a8d42c4baestevel ADM_Recv(&Message, &Timeout, DP_USER_ADM_R, sizeof (dp_user_adm_r_t));
03831d35f7499c87d51205817c93e9a8d42c4baestevel /* Truncate at 8 characters */
03831d35f7499c87d51205817c93e9a8d42c4baestevel } else if ((strcmp(pass1, pass2) != 0) && (passTry <= 0)) {
03831d35f7499c87d51205817c93e9a8d42c4baestevel gettext("\nscadm: maximum username length is %d\n\n"),
03831d35f7499c87d51205817c93e9a8d42c4baestevel "\n%s\n\n", gettext("scadm: username does not exist"));
03831d35f7499c87d51205817c93e9a8d42c4baestevel for (i = 0; i < usernLen; i++)
03831d35f7499c87d51205817c93e9a8d42c4baestevel for (; i < 20; i++)
03831d35f7499c87d51205817c93e9a8d42c4baestevel for (i = 0; i < permLen; i++)
03831d35f7499c87d51205817c93e9a8d42c4baestevel for (; i < 19; i++)
03831d35f7499c87d51205817c93e9a8d42c4baestevel for (i = 0; i < pwdLen; i++)