Exemple #1
0
/**
 * Verify a username and password
 *
 * @param username      Username to verify
 * @param password      Password to verify
 * @return Non-zero if the username/password combination is valid
 */
int
admin_verify(char *username, char *password)
{
    char *pw;

    initialise();
    if (users == NULL)
    {
        if (strcmp(username, "admin") == 0 && strcmp(password, "mariadb") == 0)
        {
            return 1;
        }
    }
    else
    {
        if ((pw = users_fetch(users, username)) == NULL)
        {
            return 0;
        }
        struct crypt_data cdata;
        cdata.initialized = 0;
        if (strcmp(pw, crypt_r(password, ADMIN_SALT, &cdata)) == 0)
        {
            return 1;
        }
    }
    return 0;
}
Exemple #2
0
/**
 * Verify a username and password
 *
 * @param username      Username to verify
 * @param password      Password to verify
 * @return Non-zero if the username/password combination is valid
 */
int
admin_verify(char *username, char *password)
{
    char *pw;

    initialise();
    if (users == NULL)
    {
        if (strcmp(username, "admin") == 0 && strcmp(password, "mariadb") == 0)
        {
            return 1;
        }
    }
    else
    {
        if ((pw = users_fetch(users, username)) == NULL)
        {
            return 0;
        }
        if (strcmp(pw, crypt(password, ADMIN_SALT)) == 0)
        {
            return 1;
        }
    }
    return 0;
}
Exemple #3
0
/**
 * Check for existance of the user
 *
 * @param user	The user name to test
 * @return 	Non-zero if the user exists
 */
int
admin_search_user(char *user)
{
	initialise();
	if (users == NULL)
		return 0;
	return users_fetch(users, user) != NULL;
}
Exemple #4
0
/**
 * Add user
 *
 * @param uname         Name of the new user
 * @param passwd        Password for the new user
 * @return      NULL on success or an error string on failure
 */
char *
admin_add_user(char *uname, char *passwd)
{
    FILE *fp;
    char fname[1024], *home, *cpasswd;

    initialise();

    if (access(get_datadir(), F_OK) != 0)
    {
        if (mkdir(get_datadir(), S_IRWXU) != 0 && errno != EEXIST)
        {
            return ADMIN_ERR_PWDFILEOPEN;
        }
    }

    snprintf(fname,1023, "%s/passwd", get_datadir());
    fname[1023] = '\0';
    if (users == NULL)
    {
        MXS_NOTICE("Create initial password file.");

        if ((users = users_alloc()) == NULL)
        {
            return ADMIN_ERR_NOMEM;
        }
        if ((fp = fopen(fname, "w")) == NULL)
        {
            MXS_ERROR("Unable to create password file %s.", fname);
            return ADMIN_ERR_PWDFILEOPEN;
        }
        fclose(fp);
    }
    if (users_fetch(users, uname) != NULL)
    {
        return ADMIN_ERR_DUPLICATE;
    }
    struct crypt_data cdata;
    cdata.initialized = 0;
    cpasswd = crypt_r(passwd, ADMIN_SALT, &cdata);
    users_add(users, uname, cpasswd);
    if ((fp = fopen(fname, "a")) == NULL)
    {
        MXS_ERROR("Unable to append to password file %s.", fname);
        return ADMIN_ERR_FILEAPPEND;
    }
    fprintf(fp, "%s:%s\n", uname, cpasswd);
    fclose(fp);
    return ADMIN_SUCCESS;
}
Exemple #5
0
/**
 * Add user
 *
 * @param uname		Name of the new user
 * @param passwd	Password for the new user
 * @return	NULL on success or an error string on failure
 */
char *
admin_add_user(char *uname, char *passwd)
{
FILE	*fp;
char	fname[1024], *home, *cpasswd;

	initialise();
    sprintf(fname, "%s/passwd", get_datadir());
        
	if (users == NULL)
	{
                LOGIF(LM,
                      (skygw_log_write(LOGFILE_MESSAGE,
                                       "Create initial password file.")));
                
		if ((users = users_alloc()) == NULL)
			return ADMIN_ERR_NOMEM;
		if ((fp = fopen(fname, "w")) == NULL)
		{
                    LOGIF(LE,
                          (skygw_log_write_flush(
                                  LOGFILE_ERROR,
                                  "Error : Unable to create password file %s.",
                                  fname)));
                    return ADMIN_ERR_PWDFILEOPEN;
		}
		fclose(fp);
	}
	if (users_fetch(users, uname) != NULL)
	{
		return ADMIN_ERR_DUPLICATE;
	}
	cpasswd = crypt(passwd, ADMIN_SALT);
	users_add(users, uname, cpasswd);
	if ((fp = fopen(fname, "a")) == NULL)
	{
            LOGIF(LE,
                  (skygw_log_write_flush(LOGFILE_ERROR,
                                         "Error : Unable to append to password file %s.",
                                         fname)));
            return ADMIN_ERR_FILEAPPEND;
	}
	fprintf(fp, "%s:%s\n", uname, cpasswd);
	fclose(fp);
	return ADMIN_SUCCESS;
}