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"}';
							 | 
						|
								    }
							 | 
						|
								}
							 | 
						|
								
							 |