mirror of https://github.com/dnomd343/kms-server
Dnomd343
1 year ago
2 changed files with 111 additions and 24 deletions
@ -0,0 +1,103 @@ |
|||
<?php |
|||
|
|||
require_once "utils.php"; |
|||
|
|||
/// Print list structural under command line. |
|||
/// |
|||
/// Example |
|||
/// ┏-----------┓ |
|||
/// | xxxx | |
|||
/// | xxxxxxxxx | |
|||
/// | xxxxxx | |
|||
/// ┗-----------┛ |
|||
function showCliList(string $title, array $content): void { |
|||
$contentLen = 0; |
|||
foreach ($content as $row) { // found the longest row |
|||
$contentLen = ($contentLen < stringLen($row)) ? stringLen($row) : $contentLen; |
|||
} |
|||
|
|||
$bodyLen = $contentLen + 4; // add 4-slots -> `| xxx |` |
|||
$titleLen = stringLen($title); |
|||
$bodyOffset = $titleOffset = 0; |
|||
if ($titleLen > $bodyLen) { // title longer than body |
|||
$bodyOffset = floor(($titleLen - $bodyLen) / 2); // body move right |
|||
} else { |
|||
$titleOffset = floor(($bodyLen - $titleLen) / 2); // title move right |
|||
} |
|||
|
|||
printf("%s%s\n", stringGen($titleOffset), $title); // show list title |
|||
printf("%s┏-%s-┓\n", stringGen($bodyOffset), stringGen($contentLen, '-')); |
|||
foreach ($content as $row) { // show list body |
|||
printf("%s| %s%s |\n", |
|||
stringGen($bodyOffset), $row, stringGen($contentLen - stringLen($row)) |
|||
); |
|||
} |
|||
printf("%s┗-%s-┛\n", stringGen($bodyOffset), stringGen($contentLen, '-')); |
|||
} |
|||
|
|||
/// Print table with two columns under command line. |
|||
/// |
|||
/// Example |
|||
/// ┏---------------┓ |
|||
/// | xxx | xxxxxx | |
|||
/// | xxxx | xxxxxx | |
|||
/// | xx | xxxxxx | |
|||
/// ┗---------------┛ |
|||
function showCliTable(string $title, array $content): void { |
|||
$length = 0; |
|||
foreach ($content as $row => $_) { // found the longest item |
|||
$length = ($length < stringLen($row)) ? stringLen($row) : $length; |
|||
} |
|||
$cache = array(); |
|||
foreach ($content as $row_1 => $row_2) { |
|||
$cache[] = $row_1 . stringGen($length - stringLen($row_1)) . ' | ' . $row_2; |
|||
} |
|||
showCliList($title, $cache); // render as list |
|||
} |
|||
|
|||
class CliOutput { |
|||
/// Print help message under command line. |
|||
public function showHelp(string $host, string $port): void { |
|||
if (isIPv6($host)) { |
|||
$host = "[$host]"; // add ipv6 bracket |
|||
} |
|||
$kmsServer = $host; |
|||
$urlPrefix = "http://$host"; |
|||
if ($port != 1688) { // not default port |
|||
$kmsServer = "$kmsServer:$port"; // add service port |
|||
} |
|||
|
|||
echo PHP_EOL; |
|||
showCliList('Windows Activation', [ |
|||
'slmgr /upk', |
|||
'slmgr /ipk KMS_KEY', |
|||
"slmgr /skms $kmsServer", |
|||
'slmgr /ato', |
|||
'slmgr /dlv', |
|||
]); |
|||
echo "\nKMS_KEY\n"; |
|||
echo " -> $urlPrefix/win\n"; |
|||
echo " -> $urlPrefix/win-server\n"; |
|||
echo "\nOffice\n"; |
|||
echo " -> $urlPrefix/office\n\n"; |
|||
} |
|||
|
|||
/// Print GVLKs under command line. |
|||
public function showGvlks(bool $isWinServer): void { |
|||
echo PHP_EOL; |
|||
foreach (loadGvlks($isWinServer) as $version => $content) { |
|||
showCliTable($version, $content); |
|||
echo PHP_EOL; |
|||
} |
|||
} |
|||
|
|||
} |
|||
|
|||
$cli = new CliOutput(); |
|||
//$cli->showHelp('kms.343.re', 1688); |
|||
//$cli->showHelp('kms.343.re', 1689); |
|||
//$cli->showHelp('1.1.1.1', 1689); |
|||
//$cli->showHelp('fc00::', 1689); |
|||
|
|||
$cli->showGvlks(false); |
|||
$cli->showGvlks(true); |
Loading…
Reference in new issue