mirror of https://github.com/dnomd343/kms-server
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.7 KiB
49 lines
1.7 KiB
<?php
|
|
|
|
require_once 'Basis.php';
|
|
require_once 'Check.php';
|
|
require_once 'KmsCli.php';
|
|
require_once 'KmsWeb.php';
|
|
|
|
$kmsHost = getHost(); // kms server address
|
|
$url = $_SERVER['DOCUMENT_URI']; // request url
|
|
$isCli = ($_GET['cli'] == 'true'); // shell or web browser
|
|
|
|
$isGbk = false; // utf-8 or gbk
|
|
$isJson = false; // json output
|
|
if ($url == '/win/gbk' or $url == '/win-server/gbk') {
|
|
$url = ($url == '/win/gbk') ? '/win' : '/win-server'; // gbk mode
|
|
$isGbk = true;
|
|
}
|
|
if ($url == '/win/json' or $url == '/win-server/json') {
|
|
$url = ($url == '/win/json') ? '/win' : '/win-server'; // json mode
|
|
$isJson = true;
|
|
}
|
|
|
|
// start route process
|
|
if ($url == '/' or $url == '/help') {
|
|
$isCli ? showHelpCli($kmsHost) : showHelpHtml($kmsHost); // show help message
|
|
} else if ($url == '/office') {
|
|
$isCli ? showOfficeCli($kmsHost) : showOfficeHtml($kmsHost); // show office commands
|
|
} else if ($url == '/win' or $url == '/win-server') {
|
|
$kmsKeys = getKeys(($url != '/win'));
|
|
$caption = 'Windows ' . (($url == '/win') ? '' : 'Server ') . 'KMS Keys';
|
|
if ($isJson) {
|
|
mimeJson();
|
|
echo json_encode($kmsKeys); // json format of kms keys
|
|
} else {
|
|
$isCli ? showKeysCli($kmsKeys, $isGbk) : showKeysHtml($kmsKeys, $caption); // kms keys of windows
|
|
}
|
|
} else if ($url == '/check' or $url == '/check/') {
|
|
mimeJson();
|
|
echo json_encode(kmsCheckApi()); // check kms server
|
|
} else if (str_starts_with($url, '/check/')) {
|
|
kmsCheckCli(substr($url, 7)); // check kms server (split `/check/`)
|
|
} else { // unknown request
|
|
if ($isCli) {
|
|
echo "Illegal Request\n";
|
|
} else {
|
|
mimeJson();
|
|
echo '{"success":false,"message":"Illegal Request"}';
|
|
}
|
|
}
|
|
|