You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
78 lines
2.7 KiB
78 lines
2.7 KiB
// Copyright (c) 2020 Proton Technologies AG |
|
// |
|
// This file is part of ProtonMail Bridge. |
|
// |
|
// ProtonMail Bridge is free software: you can redistribute it and/or modify |
|
// it under the terms of the GNU General Public License as published by |
|
// the Free Software Foundation, either version 3 of the License, or |
|
// (at your option) any later version. |
|
// |
|
// ProtonMail Bridge is distributed in the hope that it will be useful, |
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
// GNU General Public License for more details. |
|
// |
|
// You should have received a copy of the GNU General Public License |
|
// along with ProtonMail Bridge. If not, see <https://www.gnu.org/licenses/>. |
|
|
|
// Package preferences provides key names and defaults for preferences used in Bridge. |
|
package preferences |
|
|
|
import ( |
|
"strconv" |
|
"time" |
|
|
|
"github.com/ProtonMail/proton-bridge/pkg/config" |
|
"github.com/sirupsen/logrus" |
|
) |
|
|
|
// Keys of preferences in JSON file. |
|
const ( |
|
FirstStartKey = "first_time_start" |
|
NextHeartbeatKey = "next_heartbeat" |
|
APIPortKey = "user_port_api" |
|
IMAPPortKey = "user_port_imap" |
|
SMTPPortKey = "user_port_smtp" |
|
SMTPSSLKey = "user_ssl_smtp" |
|
AllowProxyKey = "allow_proxy" |
|
AutostartKey = "autostart" |
|
ReportOutgoingNoEncKey = "report_outgoing_email_without_encryption" |
|
LastVersionKey = "last_used_version" |
|
) |
|
|
|
type configProvider interface { |
|
GetPreferencesPath() string |
|
GetDefaultAPIPort() int |
|
GetDefaultIMAPPort() int |
|
GetDefaultSMTPPort() int |
|
} |
|
|
|
var ( |
|
log = logrus.WithField("pkg", "store") //nolint[gochecknoglobals] |
|
) |
|
|
|
// New returns loaded preferences with Bridge defaults when values are not set yet. |
|
func New(cfg configProvider) (pref *config.Preferences) { |
|
path := cfg.GetPreferencesPath() |
|
pref = config.NewPreferences(path) |
|
setDefaults(pref, cfg) |
|
|
|
log.WithField("path", path).Trace("Opened preferences") |
|
|
|
return |
|
} |
|
|
|
func setDefaults(preferences *config.Preferences, cfg configProvider) { |
|
preferences.SetDefault(FirstStartKey, "true") |
|
preferences.SetDefault(NextHeartbeatKey, strconv.FormatInt(time.Now().Unix(), 10)) |
|
preferences.SetDefault(APIPortKey, strconv.Itoa(cfg.GetDefaultAPIPort())) |
|
preferences.SetDefault(IMAPPortKey, strconv.Itoa(cfg.GetDefaultIMAPPort())) |
|
preferences.SetDefault(SMTPPortKey, strconv.Itoa(cfg.GetDefaultSMTPPort())) |
|
preferences.SetDefault(AllowProxyKey, "true") |
|
preferences.SetDefault(AutostartKey, "true") |
|
preferences.SetDefault(ReportOutgoingNoEncKey, "false") |
|
preferences.SetDefault(LastVersionKey, "") |
|
|
|
// By default, stick to STARTTLS. If the user uses catalina+applemail they'll have to change to SSL. |
|
preferences.SetDefault(SMTPSSLKey, "false") |
|
}
|
|
|