forked from HPR/hpr_hub
		
	
		
			
				
	
	
		
			340 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			340 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| /*
 | |
| This is the include file for the website and includes functions used by other programs.
 | |
| */
 | |
| 
 | |
| require "/home/hpr/php/credentials.php";
 | |
| 
 | |
| $pos = strpos($_SERVER['REQUEST_URI'], '/', 1 );
 | |
| if ( ! $pos === false) {
 | |
|   $pos = strpos($_SERVER['REQUEST_URI'], '/cms/', 1 );
 | |
|   if ( ! $pos === false) {
 | |
|     http_response_code(404);
 | |
|     mysqli_close();
 | |
|     exit;
 | |
|   }
 | |
| }
 | |
| 
 | |
| date_default_timezone_set("UTC"); 
 | |
| 
 | |
| 
 | |
| 
 | |
| if (!($connection = @ mysqli_connect("$databaseHostName", "$databaseUsername", "$databasePassword")))
 | |
| die("Could not connect to database");
 | |
| 
 | |
| if (!mysqli_select_db($connection, "$databaseName")) {
 | |
|     error_log($msg, 3, "/home/site/logs/sql_error_log");
 | |
|     return "Requested page is temporarily unavailable, please try again later.";
 | |
| }
 | |
| 
 | |
| $connection->set_charset('utf8');
 | |
| 
 | |
| function rrmdir($src) {
 | |
|   $dir = opendir($src);
 | |
|   while(false !== ( $file = readdir($dir)) ) {
 | |
|     if (( $file != '.' ) && ( $file != '..' )) {
 | |
|       $full = $src . '/' . $file;
 | |
|       if ( is_dir($full) ) {
 | |
|         rrmdir($full);
 | |
|       }
 | |
|       else {
 | |
|         unlink($full);
 | |
|       }
 | |
|     }
 | |
|   }
 | |
|   closedir($dir);
 | |
|   rmdir($src);
 | |
| }
 | |
| 
 | |
| function call412($error){
 | |
|   usleep(rand(10000000,30000000));
 | |
| 	global $HPR_Name, $HPR_Names, $naughtyfile;
 | |
| 	header("Status: 412 Precondition Failed");
 | |
| 	print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | |
| <html xmlns="https://www.w3.org/1999/xhtml">
 | |
| <head>
 | |
| <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 | |
| <title>'.$HPR_Name.' Public Radio</title>
 | |
| </head>
 | |
| <body>
 | |
| <h1>412 Precondition Failed</h1>
 | |
| <h2>ERROR CODE</h2>
 | |
| <p>
 | |
| <strong>'.$error.'</strong>
 | |
| </p>
 | |
| <p>
 | |
| If you believe this to be an error, then please copy this error code and send it to admin@hpr.
 | |
| </p>
 | |
| <p>
 | |
| <small>'.date('Y-m-d\TH:i:s') . "\t" . getUserIP() . "\t" . $_SERVER["HTTP_USER_AGENT"] .'</small>
 | |
| </p>
 | |
| <!-- 
 | |
| If however you are checking out how our site works then 
 | |
| please record a show telling us about what you were 
 | |
| trying to do.
 | |
| 
 | |
| We are always looking for help from the community and 
 | |
| over the years many hackers have helped us improve the site.
 | |
| ${baseurl}contribute.html
 | |
| 
 | |
| Thanks.
 | |
| -->
 | |
| </body>
 | |
| </html>';
 | |
| 	file_put_contents($naughtyfile, date('Y-m-d\TH:i:s\Z') . "\t" . getUserIPAdress() ."\t" . $error . "\t" . $_SERVER['REQUEST_URI'] . "\t" . $_SERVER["HTTP_USER_AGENT"] . "\n", FILE_APPEND | LOCK_EX );
 | |
| 	exit;
 | |
| }
 | |
| 
 | |
| 
 | |
| function problem($error){
 | |
|   global $HPR_Name, $HPR_Names, $naughtyfile;
 | |
| 	file_put_contents($naughtyfile, date('Y-m-d\TH:i:s\Z') . "\t" . getUserIPAdress() ."\tERROR: " . $error . "\t" . $_SERVER['REQUEST_URI'] . "\t" . $_SERVER["HTTP_USER_AGENT"] . "\n", FILE_APPEND | LOCK_EX );
 | |
|   #usleep(2000000);
 | |
|   header("Status: 412 Precondition Failed");
 | |
|   print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | |
| <html xmlns="http://www.w3.org/1999/xhtml">
 | |
| <head>
 | |
| <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 | |
| <title>'.$HPR_Name.' Public Radio</title>
 | |
| </head>
 | |
| <body>
 | |
| <h1>412 Precondition Failed</h1>
 | |
| <h2>ERROR CODE</h2>
 | |
| <p>
 | |
| <strong>'.$error.'</strong>
 | |
| </p>
 | |
| <p>
 | |
| If you believe this to be an error, then please copy this error code and send it to admin@hpr.
 | |
| </p>
 | |
| <p>
 | |
| <small>'.date('Y-m-d\TH:i:s') . "\t" . getUserIP() . "\t" . $_SERVER["HTTP_USER_AGENT"] .'</small>
 | |
| </p>
 | |
| <!-- 
 | |
| If however you are checking out how our site works then 
 | |
| please record a show telling us about what you were 
 | |
| trying to do.
 | |
| 
 | |
| We are always looking for help from the community and 
 | |
| over the years many hackers have helped us improve the site.
 | |
| ${baseurl}contribute.html
 | |
| 
 | |
| Thanks.
 | |
| -->
 | |
| </body>
 | |
| </html>';
 | |
| 	exit;
 | |
| }
 | |
| 
 | |
| function naughty($error){
 | |
|   global $HPR_Name, $HPR_Names, $naughtyfile;
 | |
| 	file_put_contents($naughtyfile, date('Y-m-d\TH:i:s\Z') . "\t" . getUserIPAdress() ."\t" . $error . "\t" . $_SERVER['REQUEST_URI'] . "\t" . $_SERVER["HTTP_USER_AGENT"] . "\n", FILE_APPEND | LOCK_EX );
 | |
|   #usleep(rand(10000000,30000000));
 | |
|   header("Status: 412 Precondition Failed");
 | |
|   print '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 | |
| <html xmlns="http://www.w3.org/1999/xhtml">
 | |
| <head>
 | |
| <meta http-equiv="content-type" content="text/html; charset=utf-8" />
 | |
| <title>'.$HPR_Name.' Public Radio</title>
 | |
| </head>
 | |
| <body>
 | |
| <h1>412 Precondition Failed</h1>
 | |
| <h2>ERROR CODE</h2>
 | |
| <p>
 | |
| <strong>'.$error.'</strong>
 | |
| </p>
 | |
| <p>
 | |
| If you believe this to be an error, then please copy this error code and send it to admin@hpr.
 | |
| </p>
 | |
| <p>
 | |
| <small>'.date('Y-m-d\TH:i:s') . "\t" . getUserIP() . "\t" . $_SERVER["HTTP_USER_AGENT"] .'</small>
 | |
| </p>
 | |
| <!-- 
 | |
| If however you are checking out how our site works then 
 | |
| please record a show telling us about what you were 
 | |
| trying to do.
 | |
| 
 | |
| We are always looking for help from the community and 
 | |
| over the years many hackers have helped us improve the site.
 | |
| ${baseurl}contribute.html
 | |
| 
 | |
| Thanks.
 | |
| -->
 | |
| </body>
 | |
| </html>';
 | |
| 	exit;
 | |
| }
 | |
| 
 | |
| function logextra($message){
 | |
|     global $HPR_Name, $HPR_Names, $naughtyfile;
 | |
| 	file_put_contents($naughtyfile, date('Y-m-d\TH:i:s\Z') . "\t" . getUserIPAdress() ."\t" . $message . "\t" . $_SERVER['REQUEST_URI'] . "\t" . $_SERVER["HTTP_USER_AGENT"] . "\n", FILE_APPEND | LOCK_EX );
 | |
| }
 | |
| 
 | |
| function convertSecToTime($sec){
 | |
| 	$date1 = new DateTime("@0"); //starting seconds
 | |
| 	$date2 = new DateTime("@$sec"); // ending seconds
 | |
| 	$interval =  date_diff($date1, $date2); //the time difference
 | |
| 	return $interval->format('%y Years, %m months, %d days, %h hours, %i minutes and %s seconds'); // convert into Years, Months, Days, Hours, Minutes and Seconds
 | |
| }
 | |
| 
 | |
| function fixid($id){
 | |
|     return sprintf('%04d',$id);
 | |
| }
 | |
| 
 | |
| function navtext($id,$curr_ep_id){
 | |
|     if ( $id <= 1 ) {
 | |
|         echo "<< First, < Previous, ";
 | |
|     }
 | |
|     else {
 | |
|         echo "<a href=\"".$_SERVER['PHP_SELF']."?id=0001\" rel=\"first\"><< First, </a>";
 | |
|         echo "<a href=\"".$_SERVER['PHP_SELF']."?id=" . (fixid($id-1)) . "\" rel=\"previous\">< Previous, </a>";
 | |
|     }
 | |
|     if ( $id >= $curr_ep_id ) {
 | |
|         echo "Next >, ";
 | |
|         echo "Latest >>";
 | |
|     }
 | |
|     else {
 | |
|         echo "<a href=\"".$_SERVER['PHP_SELF']."?id=".(fixid($id+1))."\" rel=\"next\">Next >, </a> ";
 | |
|         echo "<a href=\"".$_SERVER['PHP_SELF']."?id=$curr_ep_id\" rel=\"last\">Latest >></a>";
 | |
|     }
 | |
| }
 | |
| 
 | |
| function formatemail($email) {
 | |
|     // Miminal spam protection 
 | |
|   if (!stristr($email, '.nospam@nospam.')){
 | |
|     $part = explode("@", $email);
 | |
|     $email = $part[0] . ".nospam@nospam." . $part[1];
 | |
|   }
 | |
|   return $email;
 | |
| }
 | |
| 
 | |
| function unformatemail($email) {
 | |
|   // Miminal spam protection 
 | |
|   if (stristr($email, '.nospam@nospam.')){
 | |
|     $part = explode(".nospam@nospam.", $email);
 | |
|     $email = $part[0] . "@" . $part[1];
 | |
|   }
 | |
|   return $email;
 | |
| }
 | |
| 
 | |
| function makeClickableLinks($string) {
 | |
|     # Used to display links from test urls 
 | |
|     $pattern = '/\b((?:https?:\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?«»“”‘’]))/i';
 | |
|     $replacement = '<a href="$1" target="_blank">$1</a>';
 | |
|     return preg_replace($pattern, $replacement, $string);
 | |
| }
 | |
| 
 | |
| function get_gravatar( $email, $s = 80, $d = '404', $r = 'x', $img = false, $atts = array() ) {
 | |
|     /**
 | |
|     * Get either a Gravatar URL or complete image tag for a specified email address.
 | |
|     *
 | |
|     * @param string $email The email address
 | |
|     * @param string $s Size in pixels, defaults to 80px [ 1 - 512 ]
 | |
|     * @param string $d Default imageset to use [ 404 | mm | identicon | monsterid | wavatar ]
 | |
|     * @param string $r Maximum rating (inclusive) [ g | pg | r | x ]
 | |
|     * @param boole $img True to return a complete IMG tag False for just the URL
 | |
|     * @param array $atts Optional, additional key/value attributes to include in the IMG tag
 | |
|     * @return String containing either just a URL or a complete image tag
 | |
|     * @source http://gravatar.com/site/implement/images/php/
 | |
|     */
 | |
|     $url = 'https://secure.gravatar.com/avatar/';
 | |
|     $url .= md5( strtolower( trim( $email ) ) );
 | |
|     $url .= "?s=${s}&d=${d}.png";
 | |
|     if ( $img ) {
 | |
|         $url = '<img src="' . $url . '"';
 | |
|         foreach ( $atts as $key => $val )
 | |
|             $url .= ' ' . $key . '="' . $val . '"';
 | |
|             $url .= '.png />';
 | |
|     }
 | |
|     return $url;
 | |
| }
 | |
| 
 | |
| function getUserIPAdress() {
 | |
| 	$ip = '';
 | |
| 	if (getenv('HTTP_CLIENT_IP')) {
 | |
| 		$ip = getenv('HTTP_CLIENT_IP');
 | |
| 	}
 | |
| 	else if(getenv('HTTP_X_FORWARDED_FOR')) {
 | |
| 		$ip = getenv('HTTP_X_FORWARDED_FOR');
 | |
| 	}
 | |
| 	else if(getenv('HTTP_X_FORWARDED')) {
 | |
| 		$ip = getenv('HTTP_X_FORWARDED');
 | |
| 	}
 | |
| 	else if(getenv('HTTP_FORWARDED_FOR')) {
 | |
| 		$ip = getenv('HTTP_FORWARDED_FOR');
 | |
| 	}
 | |
| 	else if(getenv('HTTP_FORWARDED')) {
 | |
| 		$ip = getenv('HTTP_FORWARDED');
 | |
| 	}
 | |
| 	else if(getenv('REMOTE_ADDR')) {
 | |
| 		$ip = getenv('REMOTE_ADDR');
 | |
| 	}
 | |
| 	else {
 | |
| 		$ip = 'UNKNOWN';
 | |
| 	}
 | |
| 	return $ip;
 | |
| }
 | |
| 
 | |
| function getUserIP()
 | |
| {
 | |
|     //check ip from share internet
 | |
|     if (!empty($_SERVER['HTTP_CLIENT_IP']))
 | |
|     {
 | |
|       $ip=$_SERVER['HTTP_CLIENT_IP'];
 | |
|     }
 | |
|     else
 | |
|     {
 | |
|       $ip=$_SERVER['REMOTE_ADDR'];
 | |
|     }
 | |
|     return $ip . "\t" . $_SERVER['REQUEST_URI'] . "\t" . $_SERVER["HTTP_USER_AGENT"] . "\n";
 | |
| }
 | |
| $naughtyfile = '/home/hpr/logs/naughty-ip.txt';
 | |
| # Read more: http://vidiame.com/php/how-to-block-multiple-ip-addresses-using-php
 | |
| 
 | |
| if ( strlen($_SERVER['QUERY_STRING']) > 15 ) {
 | |
|   file_put_contents($naughtyfile, getUserIP(), FILE_APPEND | LOCK_EX );
 | |
| }
 | |
| 
 | |
| function GetFirstFreeSlot() {
 | |
|     // --------------------------------------------
 | |
|     // Get first free slot
 | |
|     $query = mysqli_query("SELECT  id + 1 FROM eps mo
 | |
|     WHERE   NOT EXISTS
 | |
|             (
 | |
|             SELECT  NULL
 | |
|             FROM    eps mi 
 | |
|             WHERE   mi.id = mo.id + 1
 | |
|             )
 | |
|     ORDER BY
 | |
|             id
 | |
|     LIMIT 1");
 | |
|     $next_show_num_array = mysqli_fetch_row($query);
 | |
|     return $next_show_num_array[0];
 | |
| }
 | |
| 
 | |
| function GetLatestPublishedShow($connection){
 | |
|   // --------------------------------------------
 | |
|   // Get latest published show
 | |
|   $query = mysqli_query($connection, "SELECT max(date), max(id) from eps WHERE eps.date <= UTC_DATE()");
 | |
|   $current_episode_array = mysqli_fetch_row($query);
 | |
|   return array($current_episode_array[0], $current_episode_array[1]);
 | |
| }
 | |
| 
 | |
| $PROTOCOL = '';
 | |
| if ((!empty($_SERVER['HTTPS'])) && ($_SERVER['HTTPS'] !== 'off')) {
 | |
|   $PROTOCOL .= 'https://';
 | |
| } else {
 | |
|   $PROTOCOL .= 'http://';
 | |
| }
 | |
| 
 | |
| $HTTP_HOST = $_SERVER['HTTP_HOST'];
 | |
| $pos = strpos($HTTP_HOST, "hobbypublicradio");
 | |
| if ($pos !== false) {
 | |
|     $HPR_Name = "Hobby";
 | |
|     $HPR_Names = "hobbyists";
 | |
| } else {
 | |
|     $HPR_Name = "Hacker";
 | |
|     $HPR_Names = "Hackers";
 | |
| }
 | |
| 
 | |
| ?>
 |