sky/include/UserAgent/useragent-os.php

976 lines
19 KiB
PHP

<?php
/* Copyright 2008-2015 Kyle Baker (email: kyleabaker@gmail.com)
This program 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
any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
// Detect Operating System
function detect_os($useragent)
{
if(preg_match('/AmigaOS/i', $useragent))
{
$link="http://en.wikipedia.org/wiki/AmigaOS";
$title="AmigaOS";
if(preg_match('/AmigaOS\ ([.0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$title.=" ".$regmatch[1];
}
$code="amigaos";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Android/i', $useragent))
{
$link="http://www.android.com/";
$title="Android";
$code="android";
if(preg_match('/Android[\ |\/]?([.0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$version=$regmatch[1];
$title.=" ".$version;
}
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/[^A-Za-z]Arch/i', $useragent))
{
$link="http://www.archlinux.org/";
$title="Arch Linux";
$code="archlinux";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/BeOS/i', $useragent))
{
$link="http://en.wikipedia.org/wiki/BeOS";
$title="BeOS";
$code="beos";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/CentOS/i', $useragent))
{
$link="http://www.centos.org/";
$title="CentOS";
if(preg_match('/.el([.0-9a-zA-Z]+).centos/i', $useragent, $regmatch))
{
$title.=" ".$regmatch[1];
}
$code="centos";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Chakra/i', $useragent))
{
$link="http://www.chakra-linux.org/";
$title="Chakra Linux";
$code="chakra";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/CrOS/i', $useragent))
{
$link="http://en.wikipedia.org/wiki/Google_Chrome_OS";
$title="Google Chrome OS";
$code="chromeos";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Crunchbang/i', $useragent))
{
$link="http://www.crunchbanglinux.org/";
$title="Crunchbang";
$code="crunchbang";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Debian/i', $useragent))
{
$link="http://www.debian.org/";
$title="Debian GNU/Linux";
$code="debian";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/DragonFly/i', $useragent))
{
$link="http://www.dragonflybsd.org/";
$title="DragonFly BSD";
$code="dragonflybsd";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Edubuntu/i', $useragent))
{
$link="http://www.edubuntu.org/";
$title="Edubuntu";
if(preg_match('/Edubuntu[\/|\ ]([.0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$version.=" ".$regmatch[1];
}
if($regmatch[1] < 10)
{
$code="edubuntu-1";
}
else
{
$code="edubuntu-2";
}
if(strlen($version) > 1)
{
$title.=$version;
}
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Fedora/i', $useragent))
{
$link="http://www.fedoraproject.org/";
$title="Fedora";
if(preg_match('/.fc([.0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$title.=" ".$regmatch[1];
}
$code="fedora";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Foresight\ Linux/i', $useragent))
{
$link="http://www.foresightlinux.org/";
$title="Foresight Linux";
if(preg_match('/Foresight\ Linux\/([.0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$title.=" ".$regmatch[1];
}
$code="foresight";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/FreeBSD/i', $useragent))
{
$link="http://www.freebsd.org/";
$title="FreeBSD";
$code="freebsd";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Gentoo/i', $useragent))
{
$link="http://www.gentoo.org/";
$title="Gentoo";
$code="gentoo";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Inferno/i', $useragent))
{
$link="http://www.vitanuova.com/inferno/";
$title="Inferno";
$code="inferno";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/IRIX/i', $useragent))
{
$link="http://www.sgi.com/partners/?/technology/irix/";
$title="IRIX Linux";
if(preg_match('/IRIX(64)?\ ([.0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
if($regmatch[1])
{
$title.=" x".$regmatch[1];
}
if($regmatch[2])
{
$title.=" ".$regmatch[2];
}
}
$code="irix";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Kanotix/i', $useragent))
{
$link="http://www.kanotix.com/";
$title="Kanotix";
$code="kanotix";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Knoppix/i', $useragent))
{
$link="http://www.knoppix.net/";
$title="Knoppix";
$code="knoppix";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Kubuntu/i', $useragent))
{
$link="http://www.kubuntu.org/";
$title="Kubuntu";
if(preg_match('/Kubuntu[\/|\ ]([.0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$version.=" ".$regmatch[1];
}
if($regmatch[1] < 10)
{
$code="kubuntu-1";
}
else
{
$code="kubuntu-2";
}
if(strlen($version) > 1)
{
$title.=$version;
}
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/LindowsOS/i', $useragent))
{
$link="http://en.wikipedia.org/wiki/Lsongs";
$title="LindowsOS";
$code="lindowsos";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Linspire/i', $useragent))
{
$link="http://www.linspire.com/";
$title="Linspire";
$code="lindowsos";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Linux\ Mint/i', $useragent))
{
$link="http://www.linuxmint.com/";
$title="Linux Mint";
if(preg_match('/Linux\ Mint\/([.0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$title.=" ".$regmatch[1];
}
$code="linuxmint";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Lubuntu/i', $useragent))
{
$link="http://www.lubuntu.net/";
$title="Lubuntu";
if(preg_match('/Lubuntu[\/|\ ]([.0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$version.=" ".$regmatch[1];
}
if($regmatch[1] < 10)
{
$code="lubuntu-1";
}
else
{
$code="lubuntu-2";
}
if(strlen($version) > 1)
{
$title.=$version;
}
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Mac/i', $useragent)
|| preg_match('/Darwin/i', $useragent))
{
$link="http://www.apple.com/macosx/";
if(preg_match('/Mac OS X/i', $useragent))
{
$title=substr($useragent, strpos(strtolower($useragent), strtolower("Mac OS X")));
$title=substr($title, 0, strpos($title, ")"));
if(strpos($title, ";"))
{
$title=substr($title, 0, strpos($title, ";"));
}
$title=str_replace("_", ".", $title);
$code="mac-3";
}
elseif(preg_match('/Mac OSX/i', $useragent))
{
$title=substr($useragent, strpos(strtolower($useragent), strtolower("Mac OS X")));
$title=substr($title, 0, strpos($title, ")"));
if(strpos($title, ";"))
{
$title=substr($title, 0, strpos($title, ";"));
}
$title=str_replace("_", ".", $title);
$code="mac-2";
}
elseif(preg_match('/Darwin/i', $useragent))
{
$title="Mac OS Darwin";
$code="mac-1";
}
else
{
$title="Macintosh";
$code="mac-1";
}
}
elseif(preg_match('/Mageia/i', $useragent))
{
$link="http://www.mageia.org/";
$title="Mageia";
$code="mageia";
}
elseif(preg_match('/Mandriva/i', $useragent))
{
$link="http://www.mandriva.com/";
$title="Mandriva";
if(preg_match('/mdv([.0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$title.=" ".$regmatch[1];
}
$code="mandriva";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/moonOS/i', $useragent))
{
$link="http://www.moonos.org/";
$title="moonOS";
if(preg_match('/moonOS\/([.0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$title.=" ".$regmatch[1];
}
$code="moonos";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/MorphOS/i', $useragent))
{
$link="http://www.morphos-team.net/";
$title="MorphOS";
$code="morphos";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/NetBSD/i', $useragent))
{
$link="http://www.netbsd.org/";
$title="NetBSD";
$code="netbsd";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Nova/i', $useragent))
{
$link="http://www.nova.cu";
$title="Nova";
if(preg_match('/Nova[\/|\ ]([.0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$version.=" ".$regmatch[1];
}
if(strlen($version) > 1)
{
$title.=$version;
}
$code="nova";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/OpenBSD/i', $useragent))
{
$link="http://www.openbsd.org/";
$title="OpenBSD";
$code="openbsd";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Oracle/i', $useragent))
{
$link="http://www.oracle.com/us/technologies/linux/";
$title="Oracle";
if(preg_match('/.el([._0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$title.=" Enterprise Linux ".str_replace("_", ".", $regmatch[1]);
}
else
{
$title.=" Linux";
}
$code="oracle";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Pardus/i', $useragent))
{
$link="http://www.pardus.org.tr/en/";
$title="Pardus";
$code="pardus";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/PCLinuxOS/i', $useragent))
{
$link="http://www.pclinuxos.com/";
$title="PCLinuxOS";
if(preg_match('/PCLinuxOS\/[.\-0-9a-zA-Z]+pclos([.\-0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$title.=" ".str_replace("_", ".", $regmatch[1]);
}
$code="pclinuxos";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Red\ Hat/i', $useragent)
|| preg_match('/RedHat/i', $useragent))
{
$link="http://www.redhat.com/";
$title="Red Hat";
if(preg_match('/.el([._0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$title.=" Enterprise Linux ".str_replace("_", ".", $regmatch[1]);
}
$code="red-hat";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Rosa/i', $useragent))
{
$link="http://www.rosalab.com/";
$title="Rosa Linux";
$code="rosa";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Sabayon/i', $useragent))
{
$link="http://www.sabayonlinux.org/";
$title="Sabayon Linux";
$code="sabayon";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Slackware/i', $useragent))
{
$link="http://www.slackware.com/";
$title="Slackware";
$code="slackware";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Solaris/i', $useragent))
{
$link="http://www.sun.com/software/solaris/";
$title="Solaris";
$code="solaris";
}
elseif(preg_match('/SunOS/i', $useragent))
{
$link="http://www.sun.com/software/solaris/";
$title="Solaris";
$code="solaris";
}
elseif(preg_match('/Suse/i', $useragent))
{
$link="http://www.opensuse.org/";
$title="openSUSE";
$code="suse";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Symb[ian]?[OS]?/i', $useragent))
{
$link="http://www.symbianos.org/";
$title="SymbianOS";
if(preg_match('/Symb[ian]?[OS]?\/([.0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$title.=" ".$regmatch[1];
}
$code="symbianos";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Unix/i', $useragent))
{
$link="http://www.unix.org/";
$title="Unix";
$code="unix";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/VectorLinux/i', $useragent))
{
$link="http://www.vectorlinux.com/";
$title="VectorLinux";
$code="vectorlinux";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Venenux/i', $useragent))
{
$link="http://www.venenux.org/";
$title="Venenux GNU Linux";
$code="venenux";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/webOS/i', $useragent))
{
$link="http://en.wikipedia.org/wiki/WebOS";
$title="Palm webOS";
$code="palm";
}
elseif(preg_match('/Windows/i', $useragent)
|| preg_match('/WinNT/i', $useragent)
|| preg_match('/Win32/i', $useragent))
{
$link="http://www.microsoft.com/windows/";
if(preg_match('/Windows NT 10.0; Win64; x64/i', $useragent)
|| preg_match('/Windows NT 10.0; WOW64/i', $useragent)
|| preg_match('/Windows NT 6.4; Win64; x64/i', $useragent)
|| preg_match('/Windows NT 6.4; WOW64/i', $useragent))
{
$title="Windows 10 x64 Edition";
$code="win-6";
}
elseif(preg_match('/Windows NT 10.0/i', $useragent)
|| preg_match('/Windows NT 6.4/i', $useragent))
{
$title="Windows 10";
$code="win-6";
}
elseif(preg_match('/Windows NT 6.3; Win64; x64/i', $useragent)
|| preg_match('/Windows NT 6.3; WOW64/i', $useragent))
{
$title="Windows 8.1 x64 Edition";
$code="win-5";
}
elseif(preg_match('/Windows NT 6.3/i', $useragent))
{
$title="Windows 8.1";
$code="win-5";
}
elseif(preg_match('/Windows NT 6.2; Win64; x64/i', $useragent)
|| preg_match('/Windows NT 6.2; WOW64/i', $useragent))
{
$title="Windows 8 x64 Edition";
$code="win-5";
}
elseif(preg_match('/Windows NT 6.2/i', $useragent))
{
$title="Windows 8";
$code="win-5";
}
elseif(preg_match('/Windows NT 6.1; Win64; x64/i', $useragent)
|| preg_match('/Windows NT 6.1; WOW64/i', $useragent))
{
$title="Windows 7 x64 Edition";
$code="win-4";
}
elseif(preg_match('/Windows NT 6.1/i', $useragent))
{
$title="Windows 7";
$code="win-4";
}
elseif(preg_match('/Windows NT 6.0/i', $useragent))
{
$title="Windows Vista";
$code="win-3";
}
elseif(preg_match('/Windows NT 5.2 x64/i', $useragent))
{
$title="Windows XP x64 Edition";
$code="win-2";
}
elseif(preg_match('/Windows NT 5.2; Win64; x64/i', $useragent))
{
$title="Windows Server 2003 x64 Edition";
$code="win-2";
}
elseif(preg_match('/Windows NT 5.2/i', $useragent))
{
$title="Windows Server 2003";
$code="win-2";
}
elseif(preg_match('/Windows NT 5.1/i', $useragent)
|| preg_match('/Windows XP/i', $useragent))
{
$title="Windows XP";
$code="win-2";
}
elseif(preg_match('/Windows NT 5.01/i', $useragent))
{
$title="Windows 2000, Service Pack 1 (SP1)";
$code="win-1";
}
elseif(preg_match('/Windows NT 5.0/i', $useragent)
|| preg_match('/Windows 2000/i', $useragent))
{
$title="Windows 2000";
$code="win-1";
}
elseif(preg_match('/Windows NT 4.0/i', $useragent)
|| preg_match('/WinNT4.0/i', $useragent))
{
$title="Microsoft Windows NT 4.0";
$code="win-1";
}
elseif(preg_match('/Windows NT 3.51/i', $useragent)
|| preg_match('/WinNT3.51/i', $useragent))
{
$title="Microsoft Windows NT 3.11";
$code="win-1";
}
elseif(preg_match('/Windows 3.11/i', $useragent)
|| preg_match('/Win3.11/i', $useragent)
|| preg_match('/Win16/i', $useragent))
{
$title="Microsoft Windows 3.11";
$code="win-1";
}
elseif(preg_match('/Windows 3.1/i', $useragent))
{
$title="Microsoft Windows 3.1";
$code="win-1";
}
elseif(preg_match('/Windows 98; Win 9x 4.90/i', $useragent)
|| preg_match('/Win 9x 4.90/i', $useragent)
|| preg_match('/Windows ME/i', $useragent))
{
$title="Windows Millennium Edition (Windows Me)";
$code="win-1";
}
elseif(preg_match('/Win98/i', $useragent))
{
$title="Windows 98 SE";
$code="win-1";
}
elseif(preg_match('/Windows 98/i', $useragent)
|| preg_match('/Windows\ 4.10/i', $useragent))
{
$title="Windows 98";
$code="win-1";
}
elseif(preg_match('/Windows 95/i', $useragent)
|| preg_match('/Win95/i', $useragent))
{
$title="Windows 95";
$code="win-1";
}
elseif(preg_match('/Windows CE/i', $useragent))
{
$title="Windows CE";
$code="win-2";
}
elseif(preg_match('/WM5/i', $useragent))
{
$title="Windows Mobile 5";
$code="win-phone";
}
elseif(preg_match('/WindowsMobile/i', $useragent))
{
$title="Windows Mobile";
$code="win-phone";
}
else
{
$title="Windows";
$code="win-2";
}
}
elseif(preg_match('/Xandros/i', $useragent))
{
$link="http://www.xandros.com/";
$title="Xandros";
$code="xandros";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Xubuntu/i', $useragent))
{
$link="http://www.xubuntu.org/";
$title="Xubuntu";
if(preg_match('/Xubuntu[\/|\ ]([.0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$version.=" ".$regmatch[1];
}
if($regmatch[1] < 10)
{
$code="xubuntu-1";
}
else
{
$code="xubuntu-2";
}
if(strlen($version) > 1)
{
$title.=$version;
}
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Zenwalk/i', $useragent))
{
$link="http://www.zenwalk.org/";
$title="Zenwalk GNU Linux";
$code="zenwalk";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
// Pulled out of order to help ensure better detection for above platforms
elseif(preg_match('/Ubuntu/i', $useragent))
{
$link="http://www.ubuntu.com/";
$title="Ubuntu";
if(preg_match('/Ubuntu[\/|\ ]([.0-9]+[.0-9a-zA-Z]+)/i', $useragent, $regmatch))
{
$version.=" ".$regmatch[1];
}
if($regmatch[1] < 10)
{
$code="ubuntu-1";
}
else
{
$code="ubuntu-2";
}
if(strlen($version) > 1)
{
$title.=$version;
}
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/Linux/i', $useragent))
{
$link="http://www.linux.org/";
$title="GNU/Linux";
$code="linux";
if(preg_match('/x86_64/i', $useragent))
{
$title.=" x64";
}
}
elseif(preg_match('/J2ME\/MIDP/i', $useragent))
{
$link="http://java.sun.com/javame/";
$title="J2ME/MIDP Device";
$code="java";
}
else
{
return "";
}
$result['code'] = $code;
$result['title'] = $title;
return $result;
}
?>