#!/mod/bin/jimsh

package require sqlite3
package require cgi
source /mod/webif/lib/setup
require ts.class system.class

httpheader

set rfile [cgi_get file]
set ts [ts fetch $rfile]
set dir [file dirname $rfile]
set len [$ts duration 1]
lassign [$ts dlnaloc "127.0.0.1"] url

if {$url eq ""} {
	puts "This file has not been indexed by the media server.
	    Cannot decrypt."
	exit
}

if {[system inuse $rfile]} {
	puts "This file is in use. Cannot decrypt at the moment."
	exit
}

set xstart [clock milliseconds]

set base [file rootname $rfile]
set origdir "$dir/_original"
if {![file exists $origdir]} { file mkdir $origdir }

set shname [file tail $base]
puts "Processing $shname"

if {[file exists "$origdir/$shname.ts"]} {
	puts "The file already exists in _original, cannot decrypt."
	exit
}

set token [system startop -multiple decrypt $rfile]
exec wget -O "$rfile.decrypting" $url
system endop $token

puts "Moving recording to $origdir"

set tail [file tail $base]
foreach ext $tsgroup {
	if {![file exists "$base.$ext"]} continue
	puts "  $tail.$ext"
	file rename "$base.$ext" "${origdir}/$tail.$ext"
}

file rename "$rfile.decrypting" $rfile
file touch $rfile "$origdir/$tail.ts"

foreach ext {nts hmt thm} {
	set sidecar "$shname.$ext"
	if {[file exists "$origdir/$sidecar"]} {
		puts "Copying back sidecar $ext"
		file copy "$origdir/$sidecar" "$dir/$sidecar"
		file touch "$dir/$sidecar" "$origdir/$tail.ts"
	}
}

if {[file exists "$dir/$shname.hmt"]} {
	exec /mod/bin/hmt -encrypted "$dir/$shname.hmt"
}

set xtime [expr [expr [clock milliseconds] - $xstart] / 1000.0]
puts "Time taken: $xtime"

