Ejemplo n.º 1
0
void testsuite_init(struct sieve_instance *svinst, bool log_stdout)
{
	testsuite_sieve_instance = svinst;

	testsuite_test_context_init();
	testsuite_log_init(log_stdout);
	testsuite_tmp_dir_init();
	
	testsuite_script_init();
	testsuite_binary_init();
	testsuite_smtp_init();

	testsuite_ext = sieve_extension_register
		(svinst, &testsuite_extension, TRUE);
}
Ejemplo n.º 2
0
static bool ext_extracttext_load
(const struct sieve_extension *ext, void **context)
{
	struct sieve_instance *svinst = ext->svinst;
	struct ext_extracttext_context *ectx;

	if ( *context != NULL )
		ext_extracttext_unload(ext);

	ectx = i_new(struct ext_extracttext_context, 1);
	ectx->var_ext = sieve_ext_variables_get_extension(ext->svinst);
	ectx->fep_ext = sieve_extension_register
		(svinst, &foreverypart_extension, FALSE);
	*context = (void *)ectx;
	return TRUE;
}
Ejemplo n.º 3
0
bool sieve_extensions_init(struct sieve_instance *svinst)
{
	unsigned int i;
	struct sieve_extension_registry *ext_reg =
		p_new(svinst->pool, struct sieve_extension_registry, 1);
	struct sieve_extension *ext;

	svinst->ext_reg = ext_reg;

	sieve_extension_registry_init(svinst);
	sieve_capability_registry_init(svinst);

	/* Preloaded 'extensions' */
	ext_reg->comparator_extension =
		sieve_extension_register(svinst, &comparator_extension, TRUE);
	ext_reg->match_type_extension =
		sieve_extension_register(svinst, &match_type_extension, TRUE);
	ext_reg->address_part_extension =
		sieve_extension_register(svinst, &address_part_extension, TRUE);

	p_array_init(&ext_reg->preloaded_extensions, svinst->pool, 5);
	array_append(&ext_reg->preloaded_extensions,
		&ext_reg->comparator_extension, 1);
	array_append(&ext_reg->preloaded_extensions,
		&ext_reg->match_type_extension, 1);
	array_append(&ext_reg->preloaded_extensions,
		&ext_reg->address_part_extension, 1);

	/* Pre-load dummy extensions */
	for ( i = 0; i < sieve_dummy_extensions_count; i++ ) {
		if ( (ext=_sieve_extension_register
			(svinst, sieve_dummy_extensions[i], TRUE, FALSE)) == NULL )
			return FALSE;

		ext->dummy = TRUE;
	}

	/* Pre-load core extensions */
	for ( i = 0; i < sieve_core_extensions_count; i++ ) {
		if ( sieve_extension_register
			(svinst, sieve_core_extensions[i], TRUE) == NULL )
			return FALSE;
	}

	/* Pre-load extra extensions */
	for ( i = 0; i < sieve_extra_extensions_count; i++ ) {
		if ( sieve_extension_register
			(svinst, sieve_extra_extensions[i], FALSE) == NULL )
			return FALSE;
	}

	/* Register deprecated extensions */
	for ( i = 0; i < sieve_deprecated_extensions_count; i++ ) {
		if ( sieve_extension_register
			(svinst, sieve_deprecated_extensions[i], FALSE) == NULL )
			return FALSE;
	}

#ifdef HAVE_SIEVE_UNFINISHED
	/* Register unfinished extensions */
	for ( i = 0; i < sieve_unfinished_extensions_count; i++ ) {
		if ( sieve_extension_register
			(svinst, sieve_unfinished_extensions[i], FALSE) == NULL )
			return FALSE;
	}
#endif

	/* More extensions can be added through plugins */

	return TRUE;
}