Fixed Utils::getUniqueID() on Linux due to /proc/cpuinfo

This commit is contained in:
Shoghi Cervantes
2014-09-20 12:39:57 +02:00
parent 689b2ea877
commit 1ac08ce404
2 changed files with 17 additions and 5 deletions

View File

@ -2008,7 +2008,7 @@ class Server{
$version = new VersionString(); $version = new VersionString();
$this->lastSendUsage = new SendUsageTask("http://stats.pocketmine.net/usage.php", [ $this->lastSendUsage = new SendUsageTask("http://stats.pocketmine.net/usage.php", [
"serverid" => Binary::readLong(substr(Utils::getUniqueID(true, $this->getIp() . ":" . $this->getPort()), 0, 8)), "serverid" => $this->serverID,
"port" => $this->getPort(), "port" => $this->getPort(),
"os" => Utils::getOS(), "os" => Utils::getOS(),
"name" => $this->getName(), "name" => $this->getName(),

View File

@ -59,13 +59,14 @@ class Utils{
*/ */
public static function getUniqueID($raw = false, $extra = ""){ public static function getUniqueID($raw = false, $extra = ""){
$machine = php_uname("a"); $machine = php_uname("a");
$machine .= file_exists("/proc/cpuinfo") ? file_get_contents("/proc/cpuinfo") : ""; $machine .= file_exists("/proc/cpuinfo") ? `cat /proc/cpuinfo | grep "model name"`: "";
$machine .= sys_get_temp_dir(); $machine .= sys_get_temp_dir();
$machine .= $extra; $machine .= $extra;
if(Utils::getOS() == "win"){ $os = Utils::getOS();
exec("ipconfig /ALL", $mac); if($os === "win"){
@exec("ipconfig /ALL", $mac);
$mac = implode("\n", $mac); $mac = implode("\n", $mac);
if(preg_match_all("#Physical Address[. ]{1,}: ([0-9A-F\-]{17})#", $mac, $matches)){ if(preg_match_all("#Physical Address[. ]{1,}: ([0-9A-F\\-]{17})#", $mac, $matches)){
foreach($matches[1] as $i => $v){ foreach($matches[1] as $i => $v){
if($v == "00-00-00-00-00-00"){ if($v == "00-00-00-00-00-00"){
unset($matches[1][$i]); unset($matches[1][$i]);
@ -73,6 +74,17 @@ class Utils{
} }
$machine .= implode(" ", $matches[1]); //Mac Addresses $machine .= implode(" ", $matches[1]); //Mac Addresses
} }
}elseif($os === "linux"){
@exec("ifconfig /ALL", $mac);
$mac = implode("\n", $mac);
if(preg_match_all("#HWaddr[ \t]{1,}([0-9a-f:]{17})#", $mac, $matches)){
foreach($matches[1] as $i => $v){
if($v == "00:00:00:00:00:00"){
unset($matches[1][$i]);
}
}
$machine .= implode(" ", $matches[1]); //Mac Addresses
}
} }
$data = $machine . PHP_MAXPATHLEN; $data = $machine . PHP_MAXPATHLEN;
$data .= PHP_INT_MAX; $data .= PHP_INT_MAX;