Mercurial > dovecot > original-hg > dovecot-1.2
annotate src/master/ssl-init-main.c @ 3992:04958ae9a2e3 HEAD
Fix building without ssl support
author | Timo Sirainen <tss@iki.fi> |
---|---|
date | Tue, 07 Feb 2006 14:38:04 +0200 |
parents | e93e39326ae1 |
children | b02af502bcd6 |
rev | line source |
---|---|
3989
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
1 /* Copyright (C) 2006 Timo Sirainen */ |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
2 |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
3 #include "lib.h" |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
4 #include "lib-signals.h" |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
5 #include "randgen.h" |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
6 #include "ssl-init.h" |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
7 |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
8 #include <stdio.h> |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
9 #include <fcntl.h> |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
10 #include <unistd.h> |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
11 #include <sys/stat.h> |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
12 |
3992
04958ae9a2e3
Fix building without ssl support
Timo Sirainen <tss@iki.fi>
parents:
3989
diff
changeset
|
13 #ifdef HAVE_SSL |
3989
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
14 static void generate_parameters_file(const char *fname) |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
15 { |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
16 const char *temp_fname; |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
17 mode_t old_mask; |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
18 int fd; |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
19 |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
20 temp_fname = t_strconcat(fname, ".tmp", NULL); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
21 (void)unlink(temp_fname); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
22 |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
23 old_mask = umask(0); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
24 fd = open(temp_fname, O_WRONLY | O_CREAT | O_EXCL, 0644); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
25 umask(old_mask); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
26 |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
27 if (fd == -1) { |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
28 i_fatal("Can't create temporary SSL parameters file %s: %m", |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
29 temp_fname); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
30 } |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
31 |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
32 _ssl_generate_parameters(fd, temp_fname); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
33 |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
34 if (close(fd) < 0) |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
35 i_fatal("close(%s) failed: %m", temp_fname); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
36 |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
37 if (rename(temp_fname, fname) < 0) |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
38 i_fatal("rename(%s, %s) failed: %m", temp_fname, fname); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
39 |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
40 i_info("SSL parameters regeneration completed"); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
41 } |
3992
04958ae9a2e3
Fix building without ssl support
Timo Sirainen <tss@iki.fi>
parents:
3989
diff
changeset
|
42 #else |
04958ae9a2e3
Fix building without ssl support
Timo Sirainen <tss@iki.fi>
parents:
3989
diff
changeset
|
43 static void generate_parameters_file(const char *fname __attr_unused__) |
04958ae9a2e3
Fix building without ssl support
Timo Sirainen <tss@iki.fi>
parents:
3989
diff
changeset
|
44 { |
04958ae9a2e3
Fix building without ssl support
Timo Sirainen <tss@iki.fi>
parents:
3989
diff
changeset
|
45 i_fatal("Dovecot built without SSL support"); |
04958ae9a2e3
Fix building without ssl support
Timo Sirainen <tss@iki.fi>
parents:
3989
diff
changeset
|
46 } |
04958ae9a2e3
Fix building without ssl support
Timo Sirainen <tss@iki.fi>
parents:
3989
diff
changeset
|
47 #endif |
3989
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
48 |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
49 int main(int argc, char *argv[]) |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
50 { |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
51 lib_init(); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
52 i_set_failure_internal(); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
53 |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
54 if (argc < 2) |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
55 i_fatal("Usage: ssl-build-param <path>"); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
56 |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
57 random_init(); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
58 generate_parameters_file(argv[1]); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
59 |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
60 random_deinit(); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
61 lib_deinit(); |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
62 return 0; |
e93e39326ae1
Added ssl-build-param binary to build the ssl-parameters.dat. This way
Timo Sirainen <tss@iki.fi>
parents:
diff
changeset
|
63 } |