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