Lizenzsystem einbauen
Aus sourceDESK Wiki
Version vom 4. Oktober 2018, 22:04 Uhr von Richard Reiber (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „sourceDESK bietet ein integriertes Lizenzsystem für den Vertrieb von lizensierten Software-Produkten. Hierfür generiert sourceDESK für jede gekaufte Ins…“)
sourceDESK bietet ein integriertes Lizenzsystem für den Vertrieb von lizensierten Software-Produkten. Hierfür generiert sourceDESK für jede gekaufte Instanz des Produktes einen Lizenz-Schlüssel, der dem Kunden angezeigt wird und den dieser in die zu lizensierende Software eintragen muss. Dieser Schlüssel wird dann immer nach einer gewissen Cache-Zeit validiert.
Eine Beispiel-Implementierung des Lizenzsystems in PHP sieht so aus:
function sd_licenseCheck($licenseKey = "", $cacheKey = "", $r = false){ /* Please insert the secret shown in the product configuration in sourceDESK here */ $secret = "123456"; /* Please insert the number of directory should be removed from the path end */ $rmdir = 0; /* Please insert the ID of the product */ $pid = 123; /* Please insert the URL to sourceDESK */ $url = "https://sourceway.de/"; /* DO NOT CHANGE ANYTHING BELOW THIS LINE */ $host = $_SERVER['SERVER_NAME']; $ip = isset($_SERVER['SERVER_ADDR']) ? $_SERVER['SERVER_ADDR'] : $_SERVER['LOCAL_ADDR']; $dir = $rmdir > 0 ? implode("/", array_splice(explode("/", __DIR__), 0, $rmdir / -1)) : __DIR__; if(!empty($cacheKey)){ $ex = explode("|", $cacheKey); if( count($ex) == 6 && $pid == $ex[0] && ($ex[1] == "all" || in_array($host, explode(",", $ex[1]))) && ($ex[2] == "all" || in_array($ip, explode(",", $ex[2]))) && ($ex[3] == "all" || in_array($dir, explode(",", $ex[3]))) && strtotime($ex[4]) >= strtotime(date("Y-m-d")) && $ex[5] == hash("sha512", $secret . implode("|", array_splice($ex, 0, 5))) ) return Array(true, $cacheKey); else if($r) return Array(false, ""); } if(empty($licenseKey)) return Array(false, ""); $url = rtrim($url, "/") . "/api/license/info?key=" . urlencode($licenseKey) . "&dir=" . urlencode($dir); $res = @file_get_contents($url); if(!$res || !($res = json_decode($res)) || empty($res->cacheKey)) return Array(false, ""); return sd_licenseCheck($licenseKey, $res->data->cacheKey, true); }
Sie müssen sicherstellen, dass es dem Nutzer nicht möglich ist, das Lizenzsystem einfach so zu entfernen.