#! /usr/bin/env php -q
<?php

// program to add entry to a changelog file for a box managed by sev. roots

//conf
$logfile "/var/log/CHANGELOG.test"# Path to changelogfile
$roots = array("big@boss.com"); # Array of all roots
$headline "[NULL] *ChangeLog* "# Prefix for message
$use_color true;    # Use Colors?
$host "NULL.boss.com";    # Hostname

// do ;)
$V 0.1;
if (
$use_color==true) {
    
$color "\x1B[37;1m";
    
$norm "\x1B[0m";
    }
else { 
$color ""$norm ""; }

// First, check if the changelog script isn't run as root what 
// makes it useless
$logname getenv("LOGNAME");

if (
$logname == 'root') {
    echo 
"This script mustn't be run as ROOT.\n";
    echo 
"Please run as normal user.\n";
    die;
    }

// Then check logfile
if (!file_exists($logfile) || !is_writable($logfile)) {
    echo 
"The logfile ('$logfile') is not writable.\n";
    echo 
"Fatal -> Exiting\n";
    die;
    }

// Fetch data
$fp fopen("php://stdin",'r')
    or die(
"Cannot read from stdin\n");

// Get username
$realname exec("grep $logname /etc/passwd");
list(,,,,
$realname,,) = explode(":",$realname);
// Done

// Start fetching input
echo $color."ChangeLog V0.1".$norm."\n";
echo 
$color."User:".$norm.$realname ($logname)\n";
$time time();
echo 
$color."Timestamp:".$norm." ".date("r",$time)." ($time)\n";
echo 
$color."Enter description, exit edit mode by typing `@' on a single line, ^C for interrupt:".$norm."\n";
do {
    
// Read lines for Changelog
    
echo $color.">> ".$norm;
    
$line fgets($fp'10000');
    if (
$line!="@\n") {
        
$log $log.$line;
        }
    else 
$stop true;
} while (
$stop!=true);
// finished.
fclose($fp);
echo 
"Please wait...";

// Correct Tab sets
$log_file str_replace("\n","\n    ",$log);
// yo

// Create file version and store
$fp fopen($logfile'a');
$entry "

Entry created at "
.date("r",$time)." ($time) by $realname ($logname):

    
$log_file
"
;
fputs($fp,$entry);
fclose($fp);
// done.

#echo $entry; #debug

// Create mail version and send
$mail "Hi,

this is the ChangeLog script at 
$host.

ChangeLog Entry added by 
$realname ($logname):
Time: "
.date("r",$time)." ($time)

$log

--
ChangeLog V
$V
written by Fabian Lenker <snyke at bingo-ev dot de>
"
;
$reciepients sizeof($roots);
for (
$i=0;$i<$reciepients;$i++) {
    
mail($roots[$i],"[ChangeLog] $host"$mail);
    
#echo "mailed to {$roots[$i]}\n";
    
}
#echo $mail;
echo "done.\n\n";

?>