host = strtolower(gethostbyaddr(getenv('HTTP_HOST'))); $this->product = $product; $this->licensefile = '/tmp/'.$this->product.'-'.$this->host.'.license'; $this->licenseurl = 'http://license.relog.ch/license.php?host='.$this->host.'&product='.$this->product; if ($this->get_license(1)) /* Cached license file exists */ { $age = time() - filemtime($this->licensefile); if ($age > 86400) /* Cached file is expired */ { if (!$this->get_license()) /* Try to get a new license from server */ { if ($age > 604800) /* Couldn't get a new license for a week */ { unlink($this->licensefile); /* License finally expired */ unset($this->license); } } } } else $this->get_license(); $this->check(); if (!$this->internal) { if ($fh = fopen($this->licensefile, "w")) { fwrite($fh, $this->license); fclose($fh); } } } function get_license($internal=0) { $url = $internal ? $this->licensefile : $this->licenseurl; /* echo "Getting license \"$url\"
\n"; */ if ($file = @file($url)) { $this->license = $file[0]; $this->internal = $internal; return $url; } return 0; } function check() { $secret="Jm+sd3O5NfvBudDhaf/N24-%C"; list($header, $formatversion, $comment, $code, $md5, $end) = explode('|', $this->license); if ($header == 'RELOG/ULTRALICENSE3000') { if ($formatversion == 1) { if (md5($secret.$code.$secret) == base64_decode($md5)) { list($formatversion, $host, $product, $this->exp) = explode('|', base64_decode($code)); if ($formatversion == 1) { if ($host == $this->host) { if ($product == $this->product) { list($year, $month, $day) = explode('-', $this->exp); $exp = mktime(0, 0, 0, $month, $day, $year); $now = time(); if ($exp > $now) /* Valid license */ return; $error = 'license expired on '.$this->exp; } else $error = 'wrong product'; } else $error = 'wrong host'; } else $error = 'format2'; } else $error = 'license not authentic'; } else $error = 'format'; } else $error = 'no license'; echo $this->host.": invalid license for product $product, reason: $error
\n"; exit; } function valid_until() { return $this->exp; } } /* End class it_license */ ?>