xref: /haiku/src/add-ons/mail_daemon/inbound_protocols/imap/Settings.cpp (revision eef12cec97f96546a18c596fcfd5a07fb760b2df)
19192d4dcSAxel Dörfler /*
2186c96d5SAxel Dörfler  * Copyright 2011-2013, Axel Dörfler, axeld@pinc-software.de.
39192d4dcSAxel Dörfler  * Distributed under the terms of the MIT License.
49192d4dcSAxel Dörfler  */
59192d4dcSAxel Dörfler 
69192d4dcSAxel Dörfler 
79192d4dcSAxel Dörfler #include "Settings.h"
89192d4dcSAxel Dörfler 
99192d4dcSAxel Dörfler #include <crypt.h>
109192d4dcSAxel Dörfler 
119192d4dcSAxel Dörfler 
Settings(const char * accountName,const BMessage & archive)1228ee6c28SAxel Dörfler Settings::Settings(const char* accountName, const BMessage& archive)
139192d4dcSAxel Dörfler 	:
1428ee6c28SAxel Dörfler 	fMessage(archive),
1528ee6c28SAxel Dörfler 	fAccountName(accountName)
169192d4dcSAxel Dörfler {
179192d4dcSAxel Dörfler }
189192d4dcSAxel Dörfler 
199192d4dcSAxel Dörfler 
~Settings()209192d4dcSAxel Dörfler Settings::~Settings()
219192d4dcSAxel Dörfler {
229192d4dcSAxel Dörfler }
239192d4dcSAxel Dörfler 
249192d4dcSAxel Dörfler 
259192d4dcSAxel Dörfler BNetworkAddress
ServerAddress() const269192d4dcSAxel Dörfler Settings::ServerAddress() const
279192d4dcSAxel Dörfler {
289192d4dcSAxel Dörfler 	return BNetworkAddress(Server(), Port());
299192d4dcSAxel Dörfler }
309192d4dcSAxel Dörfler 
319192d4dcSAxel Dörfler 
329192d4dcSAxel Dörfler BString
Server() const339192d4dcSAxel Dörfler Settings::Server() const
349192d4dcSAxel Dörfler {
35c67313f3SAxel Dörfler 	return fMessage.GetString("server", "");
369192d4dcSAxel Dörfler }
379192d4dcSAxel Dörfler 
389192d4dcSAxel Dörfler 
399192d4dcSAxel Dörfler uint16
Port() const409192d4dcSAxel Dörfler Settings::Port() const
419192d4dcSAxel Dörfler {
429192d4dcSAxel Dörfler 	int32 port;
439192d4dcSAxel Dörfler 	if (fMessage.FindInt32("port", &port) == B_OK)
449192d4dcSAxel Dörfler 		return port;
459192d4dcSAxel Dörfler 
469192d4dcSAxel Dörfler 	return UseSSL() ? 993 : 143;
479192d4dcSAxel Dörfler }
489192d4dcSAxel Dörfler 
499192d4dcSAxel Dörfler 
509192d4dcSAxel Dörfler bool
UseSSL() const519192d4dcSAxel Dörfler Settings::UseSSL() const
529192d4dcSAxel Dörfler {
53c67313f3SAxel Dörfler 	return fMessage.GetInt32("flavor", 1) == 1;
549192d4dcSAxel Dörfler }
559192d4dcSAxel Dörfler 
569192d4dcSAxel Dörfler 
579192d4dcSAxel Dörfler BString
Username() const589192d4dcSAxel Dörfler Settings::Username() const
599192d4dcSAxel Dörfler {
60c67313f3SAxel Dörfler 	return fMessage.GetString("username", "");
619192d4dcSAxel Dörfler }
629192d4dcSAxel Dörfler 
639192d4dcSAxel Dörfler 
649192d4dcSAxel Dörfler BString
Password() const659192d4dcSAxel Dörfler Settings::Password() const
669192d4dcSAxel Dörfler {
679192d4dcSAxel Dörfler 	BString password;
689192d4dcSAxel Dörfler 	char* passwd = get_passwd(&fMessage, "cpasswd");
699192d4dcSAxel Dörfler 	if (passwd != NULL) {
709192d4dcSAxel Dörfler 		password = passwd;
719192d4dcSAxel Dörfler 		delete[] passwd;
729192d4dcSAxel Dörfler 		return password;
739192d4dcSAxel Dörfler 	}
749192d4dcSAxel Dörfler 
759192d4dcSAxel Dörfler 	return "";
769192d4dcSAxel Dörfler }
77186c96d5SAxel Dörfler 
78186c96d5SAxel Dörfler 
79186c96d5SAxel Dörfler BPath
Destination() const80186c96d5SAxel Dörfler Settings::Destination() const
81186c96d5SAxel Dörfler {
8228ee6c28SAxel Dörfler 	BPath path(fMessage.FindString("destination"));
8328ee6c28SAxel Dörfler 	if (path.Path() == NULL) {
8428ee6c28SAxel Dörfler 		// Use default directory
8528ee6c28SAxel Dörfler 		path = "/boot/home/mail";
8628ee6c28SAxel Dörfler 		path.Append(fAccountName.String());
8728ee6c28SAxel Dörfler 	}
8828ee6c28SAxel Dörfler 	return path;
89c67313f3SAxel Dörfler }
90186c96d5SAxel Dörfler 
91c67313f3SAxel Dörfler 
92c67313f3SAxel Dörfler int32
MaxConnections() const93c67313f3SAxel Dörfler Settings::MaxConnections() const
94c67313f3SAxel Dörfler {
95c67313f3SAxel Dörfler 	return fMessage.GetInt32("max connections", 1);
96c67313f3SAxel Dörfler }
97c67313f3SAxel Dörfler 
98c67313f3SAxel Dörfler 
99c67313f3SAxel Dörfler bool
IdleMode() const100c67313f3SAxel Dörfler Settings::IdleMode() const
101c67313f3SAxel Dörfler {
102c67313f3SAxel Dörfler 	return fMessage.GetBool("idle", true);
103186c96d5SAxel Dörfler }
104e9a197ffSAxel Dörfler 
105e9a197ffSAxel Dörfler 
106e9a197ffSAxel Dörfler int32
BodyFetchLimit() const107e9a197ffSAxel Dörfler Settings::BodyFetchLimit() const
108e9a197ffSAxel Dörfler {
109e9a197ffSAxel Dörfler 	return fMessage.GetInt32("partial_download_limit", -1);
110e9a197ffSAxel Dörfler }
111*eef12cecSPeter Kosyh 
112*eef12cecSPeter Kosyh bool
DeleteRemoteWhenLocal() const113*eef12cecSPeter Kosyh Settings::DeleteRemoteWhenLocal() const
114*eef12cecSPeter Kosyh {
115*eef12cecSPeter Kosyh 	return fMessage.FindBool("delete_remote_when_local");
116*eef12cecSPeter Kosyh }
117