mirror of
https://github.com/ProtonMail/proton-bridge.git
synced 2025-12-10 12:46:46 +00:00
fix(BRIDGE-264): ignore apple notes as User-Agentt
This commit is contained in:
@ -21,6 +21,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"regexp"
|
"regexp"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
"strings"
|
||||||
"sync"
|
"sync"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -42,9 +43,12 @@ func New() *UserAgent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (ua *UserAgent) SetClient(name, version string) {
|
func (ua *UserAgent) SetClient(name, version string) {
|
||||||
|
if strings.EqualFold("Mac OS X Notes", name) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
ua.lock.Lock()
|
ua.lock.Lock()
|
||||||
defer ua.lock.Unlock()
|
defer ua.lock.Unlock()
|
||||||
|
|
||||||
ua.client = fmt.Sprintf("%v/%v", name, regexp.MustCompile(`(.*) \((.*)\)`).ReplaceAllString(version, "$1-$2"))
|
ua.client = fmt.Sprintf("%v/%v", name, regexp.MustCompile(`(.*) \((.*)\)`).ReplaceAllString(version, "$1-$2"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -64,6 +64,14 @@ func TestUserAgent(t *testing.T) {
|
|||||||
platform: "Windows 10 (10.0)",
|
platform: "Windows 10 (10.0)",
|
||||||
want: "Thunderbird/78.6.1 (Windows 10 (10.0))",
|
want: "Thunderbird/78.6.1 (Windows 10 (10.0))",
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// We ignore Apple Notes.
|
||||||
|
{
|
||||||
|
name: "Mac OS X Notes",
|
||||||
|
version: "4.11",
|
||||||
|
platform: "Windows 10 (10.0)",
|
||||||
|
want: DefaultUserAgent + " (Windows 10 (10.0))",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
|
|||||||
@ -22,4 +22,29 @@ Feature: The IMAP ID is propagated to bridge
|
|||||||
When user "[user:user]" connects IMAP client "1"
|
When user "[user:user]" connects IMAP client "1"
|
||||||
And IMAP client "1" announces its ID with name "name" and version "version"
|
And IMAP client "1" announces its ID with name "name" and version "version"
|
||||||
When the user reports a bug
|
When the user reports a bug
|
||||||
Then the header in the "POST" request to "/core/v4/reports/bug" has "User-Agent" set to "name/version ([GOOS])"
|
Then the header in the "POST" request to "/core/v4/reports/bug" has "User-Agent" set to "name/version ([GOOS])"
|
||||||
|
|
||||||
|
Scenario: User agent re-announces a new ID to IMAP client
|
||||||
|
When user "[user:user]" connects IMAP client "1"
|
||||||
|
And IMAP client "1" announces its ID with name "name" and version "version"
|
||||||
|
Then the user agent is "name/version ([GOOS])"
|
||||||
|
And IMAP client "1" announces its ID with name "new_name" and version "new_version"
|
||||||
|
Then the user agent is "new_name/new_version ([GOOS])"
|
||||||
|
|
||||||
|
Scenario: User agent re-announces a new ID to IMAP client and new ID is used for API calls
|
||||||
|
When user "[user:user]" connects IMAP client "1"
|
||||||
|
And IMAP client "1" announces its ID with name "name" and version "version"
|
||||||
|
When the user reports a bug
|
||||||
|
Then the header in the "POST" request to "/core/v4/reports/bug" has "User-Agent" set to "name/version ([GOOS])"
|
||||||
|
When IMAP client "1" announces its ID with name "new_name" and version "new_version"
|
||||||
|
Then the user agent is "new_name/new_version ([GOOS])"
|
||||||
|
When the user reports a bug
|
||||||
|
Then the header in the "POST" request to "/core/v4/reports/bug" has "User-Agent" set to "new_name/new_version ([GOOS])"
|
||||||
|
|
||||||
|
Scenario: Apple Notes user agent is ignored after IMAP client announces its ID
|
||||||
|
When user "[user:user]" connects IMAP client "1"
|
||||||
|
And IMAP client "1" announces its ID with name "name" and version "version"
|
||||||
|
Then the user agent is "name/version ([GOOS])"
|
||||||
|
When IMAP client "1" announces its ID with name "Mac OS X Notes" and version "4.11"
|
||||||
|
Then the user agent is "name/version ([GOOS])"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user