Esempio n. 1
0
static void replication_add_users(struct replicator_queue *queue)
{
    struct auth_master_connection *auth_conn;
    struct auth_master_user_list_ctx *ctx;
    struct auth_user_info user_info;
    struct replicator_user *user;
    const char *path, *username;

    auth_conn = auth_master_init(set->auth_socket_path,
                                 AUTH_MASTER_FLAG_NO_IDLE_TIMEOUT);

    memset(&user_info, 0, sizeof(user_info));
    user_info.service = REPLICATOR_AUTH_SERVICE_NAME;

    /* add all users into replication queue, so that we can start doing
       full syncs for everyone whose state can't be found */
    ctx = auth_master_user_list_init(auth_conn, "", &user_info);
    while ((username = auth_master_user_list_next(ctx)) != NULL) {
        user = replicator_queue_add(queue, username,
                                    REPLICATION_PRIORITY_NONE);
        user->last_update = 0;
    }
    if (auth_master_user_list_deinit(&ctx) < 0)
        i_error("listing users failed, can't replicate existing data");
    auth_master_deinit(&auth_conn);

    /* add updates from replicator db, if it exists */
    path = t_strconcat(service_set->state_dir, "/"REPLICATOR_DB_FNAME, NULL);
    (void)replicator_queue_import(queue, path);
}
void replicator_queue_add_auth_users(struct replicator_queue *queue,
				     const char *auth_socket_path,
				     const char *usermask, time_t last_update)
{
	struct auth_master_connection *auth_conn;
	struct auth_master_user_list_ctx *ctx;
	struct auth_user_info user_info;
	struct replicator_user *user;
	const char *username;

	auth_conn = auth_master_init(auth_socket_path,
				     AUTH_MASTER_FLAG_NO_IDLE_TIMEOUT);

	memset(&user_info, 0, sizeof(user_info));
	user_info.service = REPLICATOR_AUTH_SERVICE_NAME;

	/* add all users into replication queue, so that we can start doing
	   full syncs for everyone whose state can't be found */
	ctx = auth_master_user_list_init(auth_conn, usermask, &user_info);
	while ((username = auth_master_user_list_next(ctx)) != NULL) {
		user = replicator_queue_add(queue, username,
					    REPLICATION_PRIORITY_NONE);
		user->last_update = last_update;
	}
	if (auth_master_user_list_deinit(&ctx) < 0)
		i_error("listing users failed, can't replicate existing data");
	auth_master_deinit(&auth_conn);
}
int mail_storage_service_all_next(struct mail_storage_service_ctx *ctx,
				  const char **username_r)
{
	i_assert((ctx->flags & MAIL_STORAGE_SERVICE_FLAG_USERDB_LOOKUP) != 0);

	*username_r = auth_master_user_list_next(ctx->auth_list);
	if (*username_r != NULL)
		return 1;
	return mail_storage_service_all_iter_deinit(ctx);
}
Esempio n. 4
0
static void
cmd_user_list(struct auth_master_connection *conn,
              const struct authtest_input *input,
              char *const *users)
{
    struct auth_master_user_list_ctx *ctx;
    const char *username, *user_mask = "*";
    unsigned int i;

    if (users[0] != NULL && users[1] == NULL)
        user_mask = users[0];

    ctx = auth_master_user_list_init(conn, user_mask, &input->info);
    while ((username = auth_master_user_list_next(ctx)) != NULL) {
        for (i = 0; users[i] != NULL; i++) {
            if (wildcard_match_icase(username, users[i]))
                break;
        }
        if (users[i] != NULL)
            printf("%s\n", username);
    }
    if (auth_master_user_list_deinit(&ctx) < 0)
        i_fatal("user listing failed");
}