Refine some OS detection

This commit is contained in:
Faisal Salman 2021-03-25 00:00:30 +07:00
parent a0b40be04f
commit ef4eeadcd8
3 changed files with 148 additions and 39 deletions

View File

@ -676,14 +676,16 @@
/(blackberry)\w*\/?([\w\.]*)/i, // Blackberry /(blackberry)\w*\/?([\w\.]*)/i, // Blackberry
/(tizen|kaios)[\/\s]([\w\.]+)/i // Tizen/KaiOS /(tizen|kaios)[\/\s]([\w\.]+)/i // Tizen/KaiOS
], [NAME, VERSION], [ ], [NAME, VERSION], [
/\((bb)(10);/i // BlackBerry 10 /\(bb(10);/i // BlackBerry 10
], [[NAME, 'BlackBerry'], VERSION], [ ], [VERSION, [NAME, 'BlackBerry']], [
/(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]*)/i // Symbian /(?:symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]*)/i // Symbian
], [[NAME, 'Symbian'], VERSION], [ ], [VERSION, [NAME, 'Symbian']], [
/\((series40);/i // Series 40 /\((series40);/i // Series 40
], [NAME], [ ], [NAME], [
/mozilla.+\(mobile;.+gecko.+firefox/i // Firefox OS /mozilla.+\(mobile;.+gecko.+firefox/i // Firefox OS
], [[NAME, 'Firefox OS'], VERSION], [ ], [[NAME, 'Firefox OS']], [
/\bhpwos\/([\w\.]+)/i // WebOS
], [VERSION, [NAME, 'WebOS']], [
// Google Chromecast // Google Chromecast
/crkey\/([\d\.]+)/i // Google Chromecast /crkey\/([\d\.]+)/i // Google Chromecast
@ -694,9 +696,9 @@
/(xbox);\s+xbox\s([^\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S) /(xbox);\s+xbox\s([^\);]+)/i, // Microsoft Xbox (360, One, X, S, Series X, Series S)
// GNU/Linux based // GNU/Linux based
/(mint)[\/\s\(]?(\w*)/i, // Mint /(mint)[\/\s\(\)]?(\w*)/i, // Mint
/(mageia|vectorlinux)[;\s]/i, // Mageia/VectorLinux /(mageia|vectorlinux)[;\s]/i, // Mageia/VectorLinux
/(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|(?=\s)arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)[\/\s-]?(?!chrom)([\w\.-]*)/i, /(joli|[kxln]?ubuntu|debian|suse|opensuse|gentoo|arch(?=\slinux)|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk|linpus)(?:\sgnu\/linux)?(?:\slinux)?[\/\s-]?(?!chrom|package)([\w\.-]*)/i,
// Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware
// Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk/Linpus
/(hurd|linux)\s?([\w\.]*)/i, // Hurd/Linux /(hurd|linux)\s?([\w\.]*)/i, // Hurd/Linux
@ -711,7 +713,7 @@
], [[NAME, 'Solaris'], VERSION], [ ], [[NAME, 'Solaris'], VERSION], [
// BSD based // BSD based
/\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly /\s([frentopc-]{0,4}bsd|dragonfly)\s?(?!amd|[ix346]{1,2}86)([\w\.]*)/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly
], [NAME, VERSION],[ ], [NAME, VERSION],[
/(haiku)\s(\w+)/i // Haiku /(haiku)\s(\w+)/i // Haiku
@ -742,9 +744,9 @@
return new UAParser(ua, extensions).getResult(); return new UAParser(ua, extensions).getResult();
} }
var _ua; var _ua = ua || ((typeof window !== 'undefined' && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY);
var _rgxmap = extensions ? util.extend(regexes, extensions) : regexes; var _rgxmap = extensions ? util.extend(regexes, extensions) : regexes;
this.getBrowser = function () { this.getBrowser = function () {
var _browser = { name: undefined, version: undefined }; var _browser = { name: undefined, version: undefined };
mapper.rgx.call(_browser, _ua, _rgxmap.browser); mapper.rgx.call(_browser, _ua, _rgxmap.browser);
@ -788,7 +790,7 @@
_ua = ua.length > UA_MAX_LENGTH ? util.trim(ua, UA_MAX_LENGTH) : ua; _ua = ua.length > UA_MAX_LENGTH ? util.trim(ua, UA_MAX_LENGTH) : ua;
return this; return this;
}; };
this.setUA(ua || ((typeof window !== 'undefined' && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY)); this.setUA(_ua);
return this; return this;
}; };

View File

@ -135,6 +135,14 @@
"architecture" : "sparc" "architecture" : "sparc"
} }
}, },
{
"desc" : "sparc64",
"ua" : "ELinks (0.4.3; NetBSD 3.0.2PATCH sparc64; 141x19)",
"expect" :
{
"architecture" : "sparc64"
}
},
{ {
"desc" : "QuickTime", "desc" : "QuickTime",
"ua" : "QuickTime/7.5.6 (qtver=7.5.6;cpu=IA32;os=Mac 10.5.8)", "ua" : "QuickTime/7.5.6 (qtver=7.5.6;cpu=IA32;os=Mac 10.5.8)",

View File

@ -181,11 +181,11 @@
}, },
{ {
"desc" : "WebOS", "desc" : "WebOS",
"ua" : "", "ua" : "Mozilla/5.0 (hp-tablet; Linux; hpwOS/3.0.5; U; en-US) AppleWebKit/534.6 (KHTML, like Gecko) wOSBrowser/234.83 Safari/534.6 TouchPad/1.0",
"expect" : "expect" :
{ {
"name" : "", "name" : "WebOS",
"version" : "" "version" : "3.0.5"
} }
}, },
{ {
@ -325,11 +325,29 @@
}, },
{ {
"desc" : "Mint", "desc" : "Mint",
"ua" : "", "ua" : "Opera/9.80 (X11; Linux x86_64; Edition Linux Mint) Presto/2.12.388 Version/12.16",
"expect" : "expect" :
{ {
"name" : "", "name" : "Mint",
"version" : "" "version" : "undefined"
}
},
{
"desc" : "Mint",
"ua" : "Opera/9.64 (X11; Linux i686; U; Linux Mint; nb) Presto/2.1.1",
"expect" :
{
"name" : "Mint",
"version" : "undefined"
}
},
{
"desc" : "Mint",
"ua" : "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.5) Gecko/2008121622 Linux Mint/6 (Felicia) Firefox/3.0.4",
"expect" :
{
"name" : "Mint",
"version" : "6"
} }
}, },
{ {
@ -360,21 +378,75 @@
} }
}, },
{ {
"desc" : "Debian", "desc" : "Kubuntu",
"ua" : "", "ua" : "Mozilla/5.0 (compatible; Konqueror/4.4; Linux 2.6.32-22-generic; X11; en_US) KHTML/4.4.3 (like Gecko) Kubuntu",
"expect" : "expect" :
{ {
"name" : "", "name" : "Kubuntu",
"version" : "" "version" : "undefined"
}
},
{
"desc" : "Debian",
"ua" : "Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.7 (like Gecko) (Debian)",
"expect" :
{
"name" : "Debian",
"version" : "undefined"
}
},
{
"desc" : "Debian",
"ua" : "Mozilla/5.0 (X11; Linux x86_64; Debian GNU/Linux 8.1 (jessie)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/33.0.1750.0 Maxthon/1.0.5.3 Safari/537.36",
"expect" :
{
"name" : "Debian",
"version" : "8.1"
}
},
{
"desc" : "Debian",
"ua" : "ELinks/0.12~pre5-4 (textmode; Debian; Linux 3.2.0-4-amd64 x86_64 192x47-2)",
"expect" :
{
"name" : "Debian",
"version" : "undefined"
}
},
{
"desc" : "Debian",
"ua" : "w3m/0.5.3+debian-19",
"expect" :
{
"name" : "debian",
"version" : "19"
}
},
{
"desc" : "Debian",
"ua" : "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.0.3) Gecko/2008092814 (Debian-3.0.1-1)",
"expect" :
{
"name" : "Debian",
"version" : "3.0.1-1"
}
},
{
"desc" : "Debian",
"ua" : "Mozilla/5.0 (compatible; Konqueror/3.5; Linux 2.6.24.4; X11) KHTML/3.5.9 (like Gecko) (Debian package 4:3.5.9.dfsg.1-2+b1)",
"expect" :
{
"name" : "Debian",
"version" : "undefined"
} }
}, },
{ {
"desc" : "OpenSUSE", "desc" : "OpenSUSE",
"ua" : "", "ua" : "Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.17) Gecko/20110420 SUSE/3.6.17-0.2.1 Firefox/3.6.17",
"expect" : "expect" :
{ {
"name" : "", "name" : "SUSE",
"version" : "" "version" : "3.6.17-0.2.1"
} }
}, },
{ {
@ -388,11 +460,11 @@
}, },
{ {
"desc" : "Arch", "desc" : "Arch",
"ua" : "", "ua" : "Uzbl (Webkit 1.1.10) (Arch Linux)",
"expect" : "expect" :
{ {
"name" : "", "name" : "Arch",
"version" : "" "version" : "undefined"
} }
}, },
{ {
@ -406,11 +478,29 @@
}, },
{ {
"desc" : "Fedora", "desc" : "Fedora",
"ua" : "", "ua" : "Mozilla/5.0 (X11; Fedora; Linux x86_64; rv:40.0) Gecko/20100101 Firefox/40.0",
"expect" : "expect" :
{ {
"name" : "", "name" : "Fedora",
"version" : "" "version" : "undefined"
}
},
{
"desc" : "Fedora",
"ua" : "Mozilla/5.0 (X11; U; Linux i686; en-GB; rv:2.0) Gecko/20110404 Fedora/16-dev Firefox/4.0",
"expect" :
{
"name" : "Fedora",
"version" : "16-dev"
}
},
{
"desc" : "Fedora",
"ua" : "Mozilla/5.0 (X11; U; Linux i686; sk; rv:1.9.0.4) Gecko/2008111217 Fedora/3.0.4-1.fc10 Firefox/3.0.4",
"expect" :
{
"name" : "Fedora",
"version" : "3.0.4-1.fc10"
} }
}, },
{ {
@ -514,29 +604,29 @@
}, },
{ {
"desc" : "FreeBSD", "desc" : "FreeBSD",
"ua" : "", "ua" : "Mozilla/5.0 (X11; U; FreeBSD x86_64; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16",
"expect" : "expect" :
{ {
"name" : "", "name" : "FreeBSD",
"version" : "" "version" : "undefined"
} }
}, },
{ {
"desc" : "OpenBSD", "desc" : "OpenBSD",
"ua" : "", "ua" : "Mozilla/5.0 (X11; U; OpenBSD i386; en-US; rv:1.9.1) Gecko/20090702 Firefox/3.5",
"expect" : "expect" :
{ {
"name" : "", "name" : "OpenBSD",
"version" : "" "version" : "undefined"
} }
}, },
{ {
"desc" : "NetBSD", "desc" : "NetBSD",
"ua" : "", "ua" : "ELinks (0.4.3; NetBSD 3.0.2PATCH sparc64; 141x19)",
"expect" : "expect" :
{ {
"name" : "", "name" : "NetBSD",
"version" : "" "version" : "3.0.2PATCH"
} }
}, },
{ {
@ -709,5 +799,14 @@
"name" : "Android", "name" : "Android",
"version" : "4.2.1" "version" : "4.2.1"
} }
},
{
"desc" : "Solaris",
"ua" : "NCSA Mosaic/1.0 (X11;SunOS 4.1.4 sun4m)",
"expect" :
{
"name" : "Solaris",
"version" : "4.1.4"
}
} }
] ]