<?php
  if (!defined('PmWiki')) exit(); 

/****************************************************************** 
	ServerInfo.php
	2022-06-10

    A Wiki-Page Server Information Display for programming/debugging

    Written for PmWiki in by Kirk Siqveland - www.SnippetsPub.com

    This file is in the public domain. 

*******************************************************************/  


/**  FOR SECURITY PURPOSES... Replace actual UserName with "username-hidden" **/
	  $curUserName  = get_current_user() ;
	  $SafeUserName = get_current_user() ;

		/** COMMENT THE FOLLOWING IF YOU WANT TO DISPLAY THE REAL USERNAME **/
		$SafeUserName = "username-hidden" ;



Markup( 'ServerInfo',
        'fulltext',
        '/\\(:ServerInfo:\\)/i',
        "showServerInfo"
); 


function showServerInfo(){
	global $curUserName, $SafeUserName ;

  $dir  = dirname(__DIR__) ; ## local path e.g. /home/username/mywikidomain.org/pmwiki/
                             ## this is the path of the pmwiki.php script

	$retstring  = '|| ||' . chr(10) ;
	$retstring .= '||! $_SERVER[ ] ||!Results / Reference  ||' . chr(10) ;	
	// $retstring .= "|| ||From php call, for example: &nbsp;&nbsp;&nbsp;".chr(36)."MyVariable=".chr(36)."_SERVER[<strong>'PHP_SELF'</strong>] ||" . chr(10) ;
	$retstring .= "|| ||Simply replace 'PHP_SELF' with the Keyword in the first column ||" . chr(10) ;	
	$retstring .= "|| ||try something like this: \$result=\$_SERVER['PHP_SELF'] ||" . chr(10) ;	
	$retstring .= '|| || ||' 				 		 . chr(10) ;	
	$retstring .= '|| || ||' 				 		 . chr(10) ;		
	$retstring .= '|| || ||' 				 		 . chr(10) ;	
	$retstring .= '|| THE SCRIPT: || ||' . chr(10) ;
	$retstring .= '|| || ||' 				 		 . chr(10) ;
	$retstring .= '||PHP_SELF  ||' 	     . $_SERVER['PHP_SELF'] 			 . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;filename of the currently executing script ||" . chr(10) ;
	$retstring .= '||SCRIPT_NAME  ||' 	 . $_SERVER['SCRIPT_NAME'] 		 . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;path of the current script ||" . chr(10) ;
	// $retstring .= '||SCRIPT_FILENAME ||'. $_SERVER['SCRIPT_FILENAME'] . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;absolute pathname of the currently executing script ||" . chr(10) ;
		$SafeSCRIPT_FILENAME = str_replace($curUserName, $SafeUserName, $_SERVER['SCRIPT_FILENAME']) ;	
	$retstring .= '||SCRIPT_FILENAME  ||'. $SafeSCRIPT_FILENAME . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;absolute pathname of the currently executing script ||" . chr(10) ;
	$retstring .= '|| || ||' 				 		 . chr(10) ;
	$retstring .= '|| || ||' 				 		 . chr(10) ;
	$retstring .= '|| - THE PAGE -  || ||' 	 . chr(10) ;
	$retstring .= '|| || ||' 				 		 . chr(10) ;
	$retstring .= '||SCRIPT_URI  ||' 	 	 .$_SERVER['SCRIPT_URI'] 			 . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;URI of the current page ||" . chr(10) ;
	$retstring .= '||HTTP_REFERER  ||'   .$_SERVER['HTTP_REFERER'] 		 . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;complete URL of the current page (not reliable because not all user-agents support it) ||" . chr(10) ;
	$retstring .= '|| || ||' 				 		 . chr(10) ;
	$retstring .= '|| || ||' 				 		 . chr(10) ;
	$retstring .= '|| - THE SERVER - || ||' . chr(10) ;	
	$retstring .= '|| || ||' 				 		 . chr(10) ;		
	$retstring .= '||SERVER_ADDR  ||' 	   .$_SERVER['SERVER_ADDR'] 	  . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;IP address of the host server ||" . chr(10) ;
	$retstring .= '||SERVER_NAME  ||' 	 	 .$_SERVER['SERVER_NAME'] 	  . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;name of the host server (such as www.w3schools.com) ||" . chr(10) ;
	$retstring .= '||HTTP_HOST  ||' 	   	 .$_SERVER['HTTP_HOST'] 		  . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;Host header from the current request ||" . chr(10) ;
	$retstring .= '||SERVER_SOFTWARE  ||'  .$_SERVER['SERVER_SOFTWARE'] . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;server identification string (such as Apache/2.2.24) ||" . chr(10) ;
	$retstring .= '||SERVER_PROTOCOL  ||'  .$_SERVER['SERVER_PROTOCOL'] . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;name and revision of the information protocol (such as HTTP/1.1) ||" . chr(10) ;
	$retstring .= '||HTTPS  ||' 					 .$_SERVER['HTTPS'] 		   		. ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;Is the script queried through a secure HTTP protocol ||" . chr(10) ;
	$retstring .= '||GATEWAY_INTERFACE  ||' .$_SERVER['GATEWAY_INTERFACE'] . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;version of the Common Gateway Interface (CGI) the server is using ||" . chr(10) ;
	$retstring .= '||REQUEST_METHOD  ||'   .$_SERVER['REQUEST_METHOD']	. ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;request method used to access the page (such as POST) ||" . chr(10) ;
	$retstring .= '||SERVER_PORT     ||' 	 .$_SERVER['SERVER_PORT']		  . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;port on the server machine being used by the web server for communication (such as 80) ||" . chr(10) ;
	$retstring .= '||REQUEST_TIME    ||'   .$_SERVER['REQUEST_TIME'] 	  . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;timestamp of the start of the request (such as 1377687496) ||" . chr(10) ;

	// $retstring .= '||-readable time-  ' 	 . '||' .format($_SERVER['REQUEST_TIME'],'Y-m-d H:i:s') . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;timestamp of the start of the request (such as 1377687496) ||" . chr(10) ;

	$retstring .= '||HTTP_ACCEPT   ||' 			 .$_SERVER['HTTP_ACCEPT'] 		 		. ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;Accept header from the current request ||" . chr(10) ;
	$retstring .= '||QUERY_STRING  ||' 			 .$_SERVER['QUERY_STRING'] 	 			. ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;query string if the page is accessed via a query string ||" . chr(10) ;
	$retstring .= '||HTTP_ACCEPT_CHARSET ||' .$_SERVER['HTTP_ACCEPT_CHARSET'] . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;Accept_Charset header from the current request (such as utf-8,ISO-8859-1) ||" . chr(10) ;
	$retstring .= '|| || ||' 				   			. chr(10) ;
	$retstring .= '|| || ||' 				   			. chr(10) ;
	$retstring .= '|| - THE USER - ||&nbsp; - &nbsp;&nbsp;Information about the Browser viewing the page ||' 			. chr(10) ;
	$retstring .= '|| || ||' 				   			. chr(10) ;
	$retstring .= '||REMOTE_ADDR  ||' 			.$_SERVER['REMOTE_ADDR'] 		 . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;IP address from where the user is viewing the current page ||" . chr(10) ;
	$retstring .= '||HTTP_CLIENT_IP   ||' 	.$_SERVER['HTTP_CLIENT_IP']  . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;Client IP address  ||" . chr(10) ;
	$retstring .= '||HTTP_USER_AGENT  ||' 	.$_SERVER['HTTP_USER_AGENT'] . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;User Browser: Self-Reported info ||" . chr(10) ;
	$retstring .= '||REMOTE_HOST  ||' 			.$_SERVER['REMOTE_HOST'] 		 . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;Host name from where the user is viewing the current page ||" . chr(10) ;
	$retstring .= '||REMOTE_PORT  ||' 			.$_SERVER['REMOTE_PORT'] 		 . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;port being used on the user's machine to communicate with the web server ||" . chr(10) ;
	$retstring .= '||SERVER_ADMIN  ||' 		  .$_SERVER['SERVER_ADMIN'] 	 . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;value given to the SERVER_ADMIN directive in the web server configuration file  ||" . chr(10) ;
	// 																			// (if your script runs on a virtual host, it will be the value defined for that virtual host) 
	// 																			// (such as someone@w3schools.com)
	$retstring .= '||SERVER_SIGNATURE  ||' .$_SERVER['SERVER_SIGNATURE'] . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;server version and virtual host name which are added to server-generated pages ||" . chr(10) ;
	$retstring .= '||PATH_TRANSLATED  ||' 	.$_SERVER['PATH_TRANSLATED'] . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;file system based path to the current script ||" . chr(10) ;
	$retstring .= '|| || ||' 				 				. chr(10) ;	
	$retstring .= '|| || ||' 				 				. chr(10) ;
	$retstring .= '|| - F Y I - ||Related Global Information  ||' 				 	. chr(10) ;	
	$retstring .= '|| || ||' 				 		 . chr(10) ;
	// $retstring .= '||get_current_user() ||'.get_current_user().' ||' 				 		 . chr(10) ;
		$SafeCurrentUser = str_replace($curUserName, $SafeUserName, get_current_user() ) ;
	$retstring .= '|| get_current_user() ||'.$SafeCurrentUser.' ||' 				 		 . chr(10) ;	
	$retstring .= '|| || ||' 				 		 . chr(10) ;
	// $retstring .= '|| __DIR__ ||' . __DIR__ . ' ||'.chr(10)."|| ||&nbsp; - Super Global - For Comparison: Note how this shows its directory as /cookbook   ||" . chr(10) ;
		  $Safe__DIR__ = str_replace($curUserName, $SafeUserName, __DIR__ ) ;
	$retstring .= '|| __DIR__ ||' . $Safe__DIR__ . ' ||'.chr(10)."|| ||&nbsp; - Super Global - For Comparison: Note how this shows its directory as /cookbook   ||" . chr(10) ;
  $retstring .= '|| dirname(__DIR__) ||'  . dirname($Safe__DIR__) . ' ||'.chr(10)."|| ||&nbsp; - &nbsp;&nbsp;dirname (Parent) of PHP magic constant ||" . chr(10) ;		

	return $retstring ;
}