mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-10 04:36:43 +00:00
Other: Add API debug option in QA builds
This commit is contained in:
45
internal/bridge/api.go
Normal file
45
internal/bridge/api.go
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
// Copyright (c) 2022 Proton AG
|
||||||
|
//
|
||||||
|
// This file is part of Proton Mail Bridge.
|
||||||
|
//
|
||||||
|
// Proton Mail 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.
|
||||||
|
//
|
||||||
|
// Proton Mail 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 Proton Mail Bridge. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
package bridge
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/Masterminds/semver/v3"
|
||||||
|
"github.com/ProtonMail/proton-bridge/v2/internal/constants"
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
|
"gitlab.protontech.ch/go/liteapi"
|
||||||
|
)
|
||||||
|
|
||||||
|
// defaultAPIOptions returns a set of default API options for the given parameters.
|
||||||
|
func defaultAPIOptions(
|
||||||
|
apiURL string,
|
||||||
|
version *semver.Version,
|
||||||
|
cookieJar http.CookieJar,
|
||||||
|
transport http.RoundTripper,
|
||||||
|
poolSize int,
|
||||||
|
) []liteapi.Option {
|
||||||
|
return []liteapi.Option{
|
||||||
|
liteapi.WithHostURL(apiURL),
|
||||||
|
liteapi.WithAppVersion(constants.AppVersion(version.Original())),
|
||||||
|
liteapi.WithCookieJar(cookieJar),
|
||||||
|
liteapi.WithTransport(transport),
|
||||||
|
liteapi.WithAttPoolSize(poolSize),
|
||||||
|
liteapi.WithLogger(logrus.StandardLogger()),
|
||||||
|
}
|
||||||
|
}
|
||||||
38
internal/bridge/api_default.go
Normal file
38
internal/bridge/api_default.go
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
// Copyright (c) 2022 Proton AG
|
||||||
|
//
|
||||||
|
// This file is part of Proton Mail Bridge.
|
||||||
|
//
|
||||||
|
// Proton Mail 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.
|
||||||
|
//
|
||||||
|
// Proton Mail 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 Proton Mail Bridge. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
//go:build !build_qa
|
||||||
|
|
||||||
|
package bridge
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
|
||||||
|
"github.com/Masterminds/semver/v3"
|
||||||
|
"gitlab.protontech.ch/go/liteapi"
|
||||||
|
)
|
||||||
|
|
||||||
|
// newAPIOptions returns a set of API options for the given parameters.
|
||||||
|
func newAPIOptions(
|
||||||
|
apiURL string,
|
||||||
|
version *semver.Version,
|
||||||
|
cookieJar http.CookieJar,
|
||||||
|
transport http.RoundTripper,
|
||||||
|
poolSize int,
|
||||||
|
) []liteapi.Option {
|
||||||
|
return defaultAPIOptions(apiURL, version, cookieJar, transport, poolSize)
|
||||||
|
}
|
||||||
53
internal/bridge/api_qa.go
Normal file
53
internal/bridge/api_qa.go
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
// Copyright (c) 2022 Proton AG
|
||||||
|
//
|
||||||
|
// This file is part of Proton Mail Bridge.
|
||||||
|
//
|
||||||
|
// Proton Mail 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.
|
||||||
|
//
|
||||||
|
// Proton Mail 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 Proton Mail Bridge. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
//go:build build_qa
|
||||||
|
|
||||||
|
package bridge
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
|
||||||
|
"github.com/Masterminds/semver/v3"
|
||||||
|
"gitlab.protontech.ch/go/liteapi"
|
||||||
|
)
|
||||||
|
|
||||||
|
// newAPIOptions returns a set of API options for the given parameters.
|
||||||
|
func newAPIOptions(
|
||||||
|
apiURL string,
|
||||||
|
version *semver.Version,
|
||||||
|
cookieJar http.CookieJar,
|
||||||
|
transport http.RoundTripper,
|
||||||
|
poolSize int,
|
||||||
|
) []liteapi.Option {
|
||||||
|
opt := defaultAPIOptions(apiURL, version, cookieJar, transport, poolSize)
|
||||||
|
|
||||||
|
if host := os.Getenv("BRIDGE_API_HOST"); host != "" {
|
||||||
|
opt = append(opt, liteapi.WithHostURL(host))
|
||||||
|
}
|
||||||
|
|
||||||
|
if debug := os.Getenv("BRIDGE_API_DEBUG"); debug != "" {
|
||||||
|
opt = append(opt, liteapi.WithDebug(true))
|
||||||
|
}
|
||||||
|
|
||||||
|
if skipVerify := os.Getenv("BRIDGE_API_SKIP_VERIFY"); skipVerify != "" {
|
||||||
|
opt = append(opt, liteapi.WithSkipVerifyProofs())
|
||||||
|
}
|
||||||
|
|
||||||
|
return opt
|
||||||
|
}
|
||||||
@ -139,14 +139,7 @@ func New( //nolint:funlen
|
|||||||
logSMTP bool, // whether to log SMTP activity
|
logSMTP bool, // whether to log SMTP activity
|
||||||
) (*Bridge, <-chan events.Event, error) {
|
) (*Bridge, <-chan events.Event, error) {
|
||||||
// api is the user's API manager.
|
// api is the user's API manager.
|
||||||
api := liteapi.New(
|
api := liteapi.New(newAPIOptions(apiURL, curVersion, cookieJar, roundTripper, vault.SyncAttPool())...)
|
||||||
liteapi.WithHostURL(apiURL),
|
|
||||||
liteapi.WithAppVersion(constants.AppVersion(curVersion.Original())),
|
|
||||||
liteapi.WithCookieJar(cookieJar),
|
|
||||||
liteapi.WithTransport(roundTripper),
|
|
||||||
liteapi.WithAttPoolSize(vault.SyncAttPool()),
|
|
||||||
liteapi.WithLogger(logrus.StandardLogger()),
|
|
||||||
)
|
|
||||||
|
|
||||||
// tasks holds all the bridge's background tasks.
|
// tasks holds all the bridge's background tasks.
|
||||||
tasks := async.NewGroup(context.Background(), crashHandler)
|
tasks := async.NewGroup(context.Background(), crashHandler)
|
||||||
|
|||||||
Reference in New Issue
Block a user