#!/star/Perl/bin/perl
use Astro::FITS::CFITSIO;
use File::Basename;
require 'server.pl';

my $logDir=$TMPWEB."logs/";


$diskFile=$logDir."disksOffline.txt";



sub getDisks {
    my @disks;
    open(FSTAB, "/etc/fstab") or die "Can't open /etc/fstab";
    while(<FSTAB>) {
	push(@disks, $disk) if ($disk) = $_ =~ m~^[^#].*/(disk\d\d)~;
					       }
	close (FSTAB);
	return @disks;
    }

sub getKeyVal { 
my $status = 0;
my $fitsFileName=$_[0]; 
my $keyword=$_[1]; 
my $fptr =Astro::FITS::CFITSIO::open_file($fitsFileName,Astro::FITS::CFITSIO::READONLY(),$status); 
$fptr->read_key_str($keyword,$keyval,undef,$status);
return $keyval;
}

sub getUnfiltFileName {
my $filtFilename=$_[0];
my $unfiltDir=$_[1];
($name,$path,$suffix) = fileparse($filtFilename);
(my $unFiltName=$name) =~ s/_two//g;
   my $unFiltFilename= $unfiltDir."/".$unFiltName;
  if (-e $unFiltFilename){
	return $unFiltFilename;
    }
}

sub getUnfiltDirName {
    $filtFilename=$_[0];
    my @disks=@_[1..@_];  

   ($name,$path,$suffix) = fileparse($filtFilename);

$dirname  = basename($path);

$verPos=index($dirname,"_v",0);
$version=substr($dirname,$verPos+2,100);
$preVersion=$version;
  for ($preversion=$version; $preversion > 0 ; $preversion-- ) { 
($unfiltDirName = $dirname) =~ s/_v${version}/_v${preVersion}/g;

foreach (@disks) {
    $ingestDir="/".$_."/wsa/ingest/fits/".$unfiltDirName;

    if (-e $ingestDir) {
    return $ingestDir;
}
}

}


}








sub cgiLog {
    my $cgiName=$_[0];
    my $ip=$_[1];
    my $bytesSent=$_[2];
    my $extra=$_[3];
    my $err=$_[4];
    my $logString=$cgiName.",".$ip.",".$bytesSent.",".$extra.",".$err;
($sec,$min,$hour,$day,$mon,$year,$a1,$a2,$a3) = localtime (time);

$year=$year+1900;

$thisMonth= (Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec)[$mon];
$mon++;
$timeStamp=sprintf("%02d",$day)."/".$thisMonth."/".$year." ".sprintf("%02d",$hour).":".sprintf("%02d",$min).":".sprintf("%02d",$sec);
$logFile=$logDir."cgi".$year."_".sprintf("%02d",$mon)."_".sprintf("%02d",$day).".log";
$logString=$timeStamp.",".$logString;
open(LOGFILE, ">> $logFile") || die "cant open logfile: $!";
print LOGFILE "$logString\n";
close(LOGFILE);
} 

sub isDiskOnline {
	my $path=$_[0];
	$pos1=index($path,"/",0);
	$pos2=index($path,"/",$pos1+1);
	if ($pos1 >=0 && $pos2 > $pos1) {
	$disk=substr($path,$pos1,$pos2-$pos1);
	if (-e $diskFile) {
		open (DISKFILE, "< $diskFile") || die return 1;
		while (<DISKFILE>) {
			if (/$disk/) {
				#print "match \n";
				return 0;
			}
		}
	#print "$disk \n";
	return 1;
	}
	}
	else {
		return 1;
	}
	return ($pos1,$pos2);
	
}

