aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLibravatar Vijay Raghavan Aravamudhan <vraravam@users.noreply.github.com>2021-07-12 05:09:17 +0530
committerLibravatar GitHub <noreply@github.com>2021-07-12 05:09:17 +0530
commitbb4037a57bba79d04e873f2198d19a368d8f6b02 (patch)
treebaad72b60084318267dcc6b19b9ca3d9e82d83fa /src
parentUpgraded nodejs to '14.17.3' (diff)
downloadferdium-app-bb4037a57bba79d04e873f2198d19a368d8f6b02.tar.gz
ferdium-app-bb4037a57bba79d04e873f2198d19a368d8f6b02.tar.zst
ferdium-app-bb4037a57bba79d04e873f2198d19a368d8f6b02.zip
Use 'useragent-generator' to generate the user-agent string rather than manually building it. (#1592)
Diffstat (limited to 'src')
-rw-r--r--src/helpers/userAgent-helpers.js42
-rw-r--r--src/models/UserAgent.js4
2 files changed, 20 insertions, 26 deletions
diff --git a/src/helpers/userAgent-helpers.js b/src/helpers/userAgent-helpers.js
index fc9a6f507..4aa6f92d0 100644
--- a/src/helpers/userAgent-helpers.js
+++ b/src/helpers/userAgent-helpers.js
@@ -1,29 +1,35 @@
1import os from 'os'; 1import os from 'os';
2import macosVersion from 'macos-version'; 2import macosVersion from 'macos-version';
3import { 3import { chromeVersion, isMac, isWindows } from '../environment';
4 ferdiVersion, electronVersion, chromeVersion, isMac, isWindows, 4
5} from '../environment'; 5const uaGenerator = require('useragent-generator');
6
7function is64Bit() {
8 return os.arch().match(/64/);
9}
6 10
7function macOS() { 11function macOS() {
8 const version = macosVersion(); 12 const version = macosVersion();
9 return `Macintosh; Intel Mac OS X ${version.replace(/\./g, '_')}`; 13 let cpuName = os.cpus()[0].model.split(' ')[0];
14 if (cpuName && cpuName.match(/\(/)) {
15 cpuName = cpuName.split('(')[0];
16 }
17 return `Macintosh; ${cpuName} Mac OS X ${version.replace(/\./g, '_')}`;
10} 18}
11 19
12function windows() { 20function windows() {
13 const version = os.release(); 21 const version = os.release();
14 const [majorVersion, minorVersion] = version.split('.'); 22 const [majorVersion, minorVersion] = version.split('.');
15 return `Windows NT ${majorVersion}.${minorVersion}; Win64; x64`; 23 const archString = is64Bit() ? 'Win64' : 'Win32';
24 return `Windows NT ${majorVersion}.${minorVersion}; ${archString}; ${os.arch()}`;
16} 25}
17 26
18function linux() { 27function linux() {
19 return 'X11; Ubuntu; Linux x86_64'; 28 const archString = is64Bit() ? 'x86_64' : os.arch();
20} 29 return `X11; Ubuntu; Linux ${archString}`;
21
22export function isChromeless(url) {
23 return url.startsWith('https://accounts.google.com');
24} 30}
25 31
26export default function userAgent(removeChromeVersion = false, addFerdiVersion = false) { 32export default function userAgent() {
27 let platformString = ''; 33 let platformString = '';
28 34
29 if (isMac) { 35 if (isMac) {
@@ -34,17 +40,5 @@ export default function userAgent(removeChromeVersion = false, addFerdiVersion =
34 platformString = linux(); 40 platformString = linux();
35 } 41 }
36 42
37 let chromeVersionString = 'Chrome'; 43 return uaGenerator.chrome({ os: platformString, version: chromeVersion });
38 if (!removeChromeVersion) {
39 chromeVersionString = `Chrome/${chromeVersion}`;
40 }
41
42 let applicationString = '';
43 if (addFerdiVersion) {
44 applicationString = ` Ferdi/${ferdiVersion} Electron/${electronVersion}`;
45 }
46
47 // Chrome is pinned to WebKit 537.36, the latest version before hard forking to Blink.
48 return `Mozilla/5.0 (${platformString}) AppleWebKit/537.36 (KHTML, like Gecko) ${chromeVersionString} Safari/537.36${applicationString}`;
49 // Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36 Ferdi/5.5.1-nightly.13 Electron/8.2.3
50} 44}
diff --git a/src/models/UserAgent.js b/src/models/UserAgent.js
index f1d08e306..6f91d4ed0 100644
--- a/src/models/UserAgent.js
+++ b/src/models/UserAgent.js
@@ -5,7 +5,7 @@ import {
5 observable, 5 observable,
6} from 'mobx'; 6} from 'mobx';
7 7
8import defaultUserAgent, { isChromeless } from '../helpers/userAgent-helpers'; 8import defaultUserAgent from '../helpers/userAgent-helpers';
9 9
10const debug = require('debug')('Ferdi:UserAgent'); 10const debug = require('debug')('Ferdi:UserAgent');
11 11
@@ -76,7 +76,7 @@ export default class UserAgent {
76 } 76 }
77 77
78 @action _handleNavigate(url, forwardingHack = false) { 78 @action _handleNavigate(url, forwardingHack = false) {
79 if (isChromeless(url)) { 79 if (url.startsWith('https://accounts.google.com')) {
80 if (!this.chromelessUserAgent) { 80 if (!this.chromelessUserAgent) {
81 debug('Setting user agent to chromeless for url', url); 81 debug('Setting user agent to chromeless for url', url);
82 this.chromelessUserAgent = true; 82 this.chromelessUserAgent = true;