summaryrefslogtreecommitdiffstats
path: root/src/postconf/postconf_other.c
blob: 0c4c0c45234250cd92d529bca95982e8d9240fd3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
/*++
/* NAME
/*	postconf_other 3
/* SUMMARY
/*	support for miscellaneous information categories
/* SYNOPSIS
/*	#include <postconf.h>
/*
/*	void	pcf_show_maps()
/*
/*	void	pcf_show_locks()
/*
/*	void	pcf_show_sasl(mode)
/*	int	mode;
/*
/*	void	pcf_show_tls(what)
/*	const char *what;
/* DESCRIPTION
/*	pcf_show_maps() lists the available map (lookup table)
/*	types.
/*
/*	pcf_show_locks() lists the available mailbox lock types.
/*
/*	pcf_show_sasl() shows the available SASL authentication
/*	plugin types.
/*
/*	pcf_show_tls() reports the "compile-version" or "run-version"
/*	of the TLS library, or the supported public-key algorithms.
/*
/*	Arguments:
/* .IP mode
/*	Show server information if the PCF_SHOW_SASL_SERV flag is
/*	set, otherwise show client information.
/* .IP what
/*	One of the literals "compile-version", "run-version" or
/*	"public-key-algorithms".
/* DIAGNOSTICS
/*	Problems are reported to the standard error stream.
/* LICENSE
/* .ad
/* .fi
/*	The Secure Mailer license must be distributed with this software.
/* AUTHOR(S)
/*	Wietse Venema
/*	IBM T.J. Watson Research
/*	P.O. Box 704
/*	Yorktown Heights, NY 10598, USA
/*
/*	Wietse Venema
/*	Google, Inc.
/*	111 8th Avenue
/*	New York, NY 10011, USA
/*--*/

/* System library. */

#include <sys_defs.h>

/* Utility library. */

#include <vstream.h>
#include <argv.h>
#include <dict.h>
#include <msg.h>

/* Global library. */

#include <mbox_conf.h>

/* XSASL library. */

#include <xsasl.h>

/* TLS library. */

#include <tls.h>

/* Application-specific. */

#include <postconf.h>

/* pcf_show_maps - show available maps */

void    pcf_show_maps(void)
{
    ARGV   *maps_argv;
    int     i;

    maps_argv = dict_mapnames();
    for (i = 0; i < maps_argv->argc; i++)
	vstream_printf("%s\n", maps_argv->argv[i]);
    argv_free(maps_argv);
}

/* pcf_show_locks - show available mailbox locking methods */

void    pcf_show_locks(void)
{
    ARGV   *locks_argv;
    int     i;

    locks_argv = mbox_lock_names();
    for (i = 0; i < locks_argv->argc; i++)
	vstream_printf("%s\n", locks_argv->argv[i]);
    argv_free(locks_argv);
}

/* pcf_show_sasl - show SASL plug-in types */

void    pcf_show_sasl(int what)
{
    ARGV   *sasl_argv;
    int     i;

    sasl_argv = (what & PCF_SHOW_SASL_SERV) ? xsasl_server_types() :
	xsasl_client_types();
    for (i = 0; i < sasl_argv->argc; i++)
	vstream_printf("%s\n", sasl_argv->argv[i]);
    argv_free(sasl_argv);
}

/* pcf_show_tls - show TLS support */

void    pcf_show_tls(const char *what)
{
#ifdef USE_TLS
    if (strcmp(what, "compile-version") == 0)
	vstream_printf("%s\n", tls_compile_version());
    else if (strcmp(what, "run-version") == 0)
	vstream_printf("%s\n", tls_run_version());
    else if (strcmp(what, "public-key-algorithms") == 0) {
	const char **cpp;

	for (cpp = tls_pkey_algorithms(); *cpp; cpp++)
	    vstream_printf("%s\n", *cpp);
    } else {
	msg_warn("unknown 'postconf -T' mode: %s", what);
	exit(1);
    }
#endif						/* USE_TLS */
}