xref: /haiku/src/add-ons/mail_daemon/inbound_protocols/imap/Settings.cpp (revision 9192d4dcf36ca64087e0702be1ef464c1e49d208)
1*9192d4dcSAxel Dörfler /*
2*9192d4dcSAxel Dörfler  * Copyright 2011, Axel Dörfler, axeld@pinc-software.de.
3*9192d4dcSAxel Dörfler  * Distributed under the terms of the MIT License.
4*9192d4dcSAxel Dörfler  */
5*9192d4dcSAxel Dörfler 
6*9192d4dcSAxel Dörfler 
7*9192d4dcSAxel Dörfler #include "Settings.h"
8*9192d4dcSAxel Dörfler 
9*9192d4dcSAxel Dörfler #include <crypt.h>
10*9192d4dcSAxel Dörfler 
11*9192d4dcSAxel Dörfler 
12*9192d4dcSAxel Dörfler Settings::Settings(const BMessage& archive)
13*9192d4dcSAxel Dörfler 	:
14*9192d4dcSAxel Dörfler 	fMessage(archive)
15*9192d4dcSAxel Dörfler {
16*9192d4dcSAxel Dörfler }
17*9192d4dcSAxel Dörfler 
18*9192d4dcSAxel Dörfler 
19*9192d4dcSAxel Dörfler Settings::~Settings()
20*9192d4dcSAxel Dörfler {
21*9192d4dcSAxel Dörfler }
22*9192d4dcSAxel Dörfler 
23*9192d4dcSAxel Dörfler 
24*9192d4dcSAxel Dörfler BNetworkAddress
25*9192d4dcSAxel Dörfler Settings::ServerAddress() const
26*9192d4dcSAxel Dörfler {
27*9192d4dcSAxel Dörfler 	return BNetworkAddress(Server(), Port());
28*9192d4dcSAxel Dörfler }
29*9192d4dcSAxel Dörfler 
30*9192d4dcSAxel Dörfler 
31*9192d4dcSAxel Dörfler BString
32*9192d4dcSAxel Dörfler Settings::Server() const
33*9192d4dcSAxel Dörfler {
34*9192d4dcSAxel Dörfler 	BString server;
35*9192d4dcSAxel Dörfler 	if (fMessage.FindString("server", &server) == B_OK)
36*9192d4dcSAxel Dörfler 		return server;
37*9192d4dcSAxel Dörfler 
38*9192d4dcSAxel Dörfler 	return "";
39*9192d4dcSAxel Dörfler }
40*9192d4dcSAxel Dörfler 
41*9192d4dcSAxel Dörfler 
42*9192d4dcSAxel Dörfler uint16
43*9192d4dcSAxel Dörfler Settings::Port() const
44*9192d4dcSAxel Dörfler {
45*9192d4dcSAxel Dörfler 	int32 port;
46*9192d4dcSAxel Dörfler 	if (fMessage.FindInt32("port", &port) == B_OK)
47*9192d4dcSAxel Dörfler 		return port;
48*9192d4dcSAxel Dörfler 
49*9192d4dcSAxel Dörfler 	return UseSSL() ? 993 : 143;
50*9192d4dcSAxel Dörfler }
51*9192d4dcSAxel Dörfler 
52*9192d4dcSAxel Dörfler 
53*9192d4dcSAxel Dörfler bool
54*9192d4dcSAxel Dörfler Settings::UseSSL() const
55*9192d4dcSAxel Dörfler {
56*9192d4dcSAxel Dörfler 	int32 flavor;
57*9192d4dcSAxel Dörfler 	if (fMessage.FindInt32("flavor", &flavor) == B_OK)
58*9192d4dcSAxel Dörfler 		return flavor == 1;
59*9192d4dcSAxel Dörfler 
60*9192d4dcSAxel Dörfler 	return false;
61*9192d4dcSAxel Dörfler }
62*9192d4dcSAxel Dörfler 
63*9192d4dcSAxel Dörfler 
64*9192d4dcSAxel Dörfler BString
65*9192d4dcSAxel Dörfler Settings::Username() const
66*9192d4dcSAxel Dörfler {
67*9192d4dcSAxel Dörfler 	BString username;
68*9192d4dcSAxel Dörfler 	if (fMessage.FindString("username", &username) == B_OK)
69*9192d4dcSAxel Dörfler 		return username;
70*9192d4dcSAxel Dörfler 
71*9192d4dcSAxel Dörfler 	return "";
72*9192d4dcSAxel Dörfler }
73*9192d4dcSAxel Dörfler 
74*9192d4dcSAxel Dörfler 
75*9192d4dcSAxel Dörfler BString
76*9192d4dcSAxel Dörfler Settings::Password() const
77*9192d4dcSAxel Dörfler {
78*9192d4dcSAxel Dörfler 	BString password;
79*9192d4dcSAxel Dörfler 	char* passwd = get_passwd(&fMessage, "cpasswd");
80*9192d4dcSAxel Dörfler 	if (passwd != NULL) {
81*9192d4dcSAxel Dörfler 		password = passwd;
82*9192d4dcSAxel Dörfler 		delete[] passwd;
83*9192d4dcSAxel Dörfler 		return password;
84*9192d4dcSAxel Dörfler 	}
85*9192d4dcSAxel Dörfler 
86*9192d4dcSAxel Dörfler 	return "";
87*9192d4dcSAxel Dörfler }
88