快速部署的KMS服务
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.

73 lines
3.3 KiB

<?php
require_once 'Basis.php';
function showKeysCli(array $kmsKeys, bool $isGbk = false): void { // show kms keys in shell
$ret = PHP_EOL;
foreach ($kmsKeys as $title => $keys) {
$length = 0;
foreach ($keys as $caption => $key) { // found the longest caption
$length = ($length < lenUtf8($caption)) ? lenUtf8($caption) : $length;
}
$ret .= genStr(floor(($length - lenUtf8($title) + 36) / 2)) . $title . PHP_EOL; // add title
$ret .= '┏' . genStr($length + 34, '-') . '┓' . PHP_EOL;
foreach ($keys as $caption => $key) { // add all rows
$ret .= '| ' . $caption . genStr($length - lenUtf8($caption)) . ' | ' . $key . ' |' . PHP_EOL;
}
$ret .= '┗' . genStr($length + 34, '-') . '┛' . PHP_EOL . PHP_EOL;
}
echo $isGbk ? iconv('utf-8', 'gb2312', $ret) : $ret; // utf-8 or gbk
}
function showHelpCli(string $host, int $port): void { // show help message in shell
$kmsServer = $host;
if (isIPv6($host)) { // host without ipv6 bracket
$kmsServer = '[' . $host . ']';
}
if ($port != 1688) {
$kmsServer = $kmsServer . ':' . $port; // add kms server port
}
$length = strlen($kmsServer);
echo "\n" . genStr(floor(($length - 2) / 2)) . "Activation Command\n";
echo "┏" . genStr($length + 14, '-') . "┓\n";
echo "| slmgr /upk" . genStr($length + 3) . "|\n";
echo "| slmgr /ipk KMS_KEY" . genStr($length - 5) . "|\n";
echo "| slmgr /skms $kmsServer |\n";
echo "| slmgr /ato" . genStr($length + 3) . "|\n";
echo "| slmgr /dlv" . genStr($length + 3) . "|\n";
echo "┗" . genStr($length + 14, '-') . "┛\n\n";
echo "Office -> http://$host/office\n\n";
echo "KMS_KEY -> http://$host/win\n";
echo " -> http://$host/win-server\n\n";
echo "KMS_KEY(GBK) -> http://$host/win/gbk\n";
echo " -> http://$host/win-server/gbk\n\n";
}
function showOfficeCli(string $host, int $port): void { // show office commands in shell
if (isIPv6($host)) { // host without ipv6 bracket
$host = '[' . $host . ']';
}
$lenLeft = $lenRight = 0;
$ospp = osppCommand($host, $port);
foreach (officeInfo() as $version => $officeInfo) {
echo "\n" . genStr(34) . "Office Professional Plus $version VL Activation Command\n";
echo genStr(120, '-') . "\n";
echo officeCommand($officeInfo[0], $officeInfo[1], $host, $port);
echo genStr(120, '-') . "\n";
}
foreach ($ospp as $cmd => $desc) {
$lenLeft = ($lenLeft < strlen($cmd)) ? strlen($cmd) : $lenLeft;
$lenRight = ($lenRight < strlen($desc[0])) ? strlen($desc[0]) : $lenRight;
}
$header = 'Common activation commands';
echo "\n" . genStr(floor(($lenLeft + $lenRight - strlen($header) + 24) / 2)) . $header;
echo "\n┏" . genStr($lenLeft + $lenRight + 22, '-') . "┓\n";
foreach ($ospp as $cmd => $desc) {
echo "| cscript ospp.vbs $cmd" . genStr($lenLeft - strlen($cmd)) . ' | ';
echo $desc[0] . genStr($lenRight - strlen($desc[0])) . " |\n";
}
echo '┗' . genStr($lenLeft + $lenRight + 22, '-') . "┛\n\n";
echo "These commands are only applicable to the VL version of Office.\n";
echo "If it is a Retail version, please convert it to Volume first.\n\n";
}