diff --git a/CONTROL/control b/CONTROL/control index 9e78f77..92550fc 100644 --- a/CONTROL/control +++ b/CONTROL/control @@ -1,11 +1,11 @@ Package: webif Priority: optional Section: web -Version: 0.7.8 +Version: 0.8.0 Architecture: mipsel Maintainer: af123@hummypkg.org.uk -Depends: mongoose(>=3.0-2),jim(>=0.71-1),jim-sqlite3(>=0.71-1),jim-cgi(>=0.4),jim-oo,jim-pack,service-control,busybox(>=1.18.3-1),lsof,epg(>=1.0.7),hmt(>=1.0.8),ssmtp +Depends: mongoose(>=3.0-2),jim(>=0.71-1),jim-sqlite3(>=0.71-1),jim-cgi(>=0.4),jim-oo,jim-pack,service-control,busybox(>=1.18.3-1),lsof,epg(>=1.0.7),hmt(>=1.1.0),ssmtp Replaces: af123-webif Conflicts: af123-webif -Suggests: ffmpeg,webif-iphone +Suggests: ffmpeg,webif-iphone,nicesplice Description: An evolving web interface for the Humax. diff --git a/var/mongoose/cgi-bin/browse.jim b/var/mongoose/cgi-bin/browse.jim index cee9442..f0ed4f0 100755 --- a/var/mongoose/cgi-bin/browse.jim +++ b/var/mongoose/cgi-bin/browse.jim @@ -81,6 +81,7 @@ proc entry {file} {{i 0}} { set locked 0 set encd 0 + set odencd 0 set def unknown set bx 0 if {$type eq "ts"} { @@ -108,6 +109,9 @@ proc entry {file} {{i 0}} { src=/images/749_1_26_Video_Encryption.png height=21>" } + if {[$ts flag "ODEncrypted"] > 0} { + set odencd 1 + } # Guidance if {[$ts flag "Guidance"] > 0} { @@ -125,6 +129,7 @@ proc entry {file} {{i 0}} {
@@ -151,6 +156,9 @@ puts {
  • Rename
  • Download
  • } +if {[system model] eq "HDR"} { + puts {
  • Decrypt
  • } +} if {[file exists /mod/bin/nicesplice]} { puts {
  • Crop
  • } } diff --git a/var/mongoose/cgi-bin/browse/browse.js b/var/mongoose/cgi-bin/browse/browse.js index f495a7e..2510e9c 100755 --- a/var/mongoose/cgi-bin/browse/browse.js +++ b/var/mongoose/cgi-bin/browse/browse.js @@ -156,6 +156,12 @@ function preparemenu(el, menu) $(menu).changeContextMenuItem('#lock', 'Lock'); $('#optmenu').enableContextMenuItems('#delete'); } + + if (el.attr('odencd') == 1) + $('#optmenu').enableContextMenuItems('#decrypt'); + else + $('#optmenu').disableContextMenuItems('#decrypt'); + } else { @@ -163,6 +169,7 @@ function preparemenu(el, menu) $('#optmenu').disableContextMenuItems('#lock'); $('#optmenu').disableContextMenuItems('#enc'); $('#optmenu').disableContextMenuItems('#new'); + $('#optmenu').disableContextMenuItems('#decrypt'); $('#optmenu').disableContextMenuItems('#crop'); } @@ -228,6 +235,11 @@ var menuclick = function(action, el, pos) encodeURIComponent(file); break; + case 'decrypt': + window.location.href = '/cgi-bin/browse/decrypt.jim?file=' + + encodeURIComponent(file); + break; + default: alert('Unhandled action: ' + action); break; diff --git a/var/mongoose/cgi-bin/browse/decrypt.jim b/var/mongoose/cgi-bin/browse/decrypt.jim new file mode 100755 index 0000000..e39174b --- /dev/null +++ b/var/mongoose/cgi-bin/browse/decrypt.jim @@ -0,0 +1,128 @@ +#!/mod/bin/jimsh + +package require sqlite3 +package require cgi +source /mod/var/mongoose/lib/setup +require ts.class + +puts "Content-Type: text/html\r\n\r\n" + +cgi_input +#cgi_dump + +set tsfile [cgi_get file] +set rfile [file normalize $tsfile] +set ts [ts fetch $rfile] +set dir [file dirname $rfile] +set len [$ts duration 1] +lassign [$ts dlnaloc] url + +if {[cgi_get do] eq "it"} { + set base [file rootname $rfile] + set origdir "$dir/_original" + if {![file exists $origdir]} { file mkdir $origdir } + + set shname [file tail $base] + puts "Processing $shname" + + exec wget -O "$rfile.decrypting" $url + + puts "Moving recording to $origdir" + + foreach f [glob -nocomplain "${base}.*"] { + if {[file extension $f] eq ".decrypting"} { continue } + set tail [file tail $f] + puts " $tail" + file rename $f "${origdir}/$tail" + } + + file rename "$rfile.decrypting" $rfile + + 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" + } + } + + if {[file exists "$dir/$shname.hmt"]} { + exec /mod/bin/hmt -encrypted "$dir/$shname.hmt" + } + + exit +} + +header + +puts " + + + + + + + +
    File:$rfile
    Length:[clock format $len -format "%T"]
    DLNA URL$url
    +" + +if {$url eq ""} { + puts "This file has not been indexed by the media server. + Cannot decrypt." + exit +} + +puts { + +
    +
    + + + + + +} + diff --git a/var/mongoose/cgi-bin/browse/decrypt_progress.jim b/var/mongoose/cgi-bin/browse/decrypt_progress.jim new file mode 100755 index 0000000..f429df2 --- /dev/null +++ b/var/mongoose/cgi-bin/browse/decrypt_progress.jim @@ -0,0 +1,23 @@ +#!/mod/bin/jimsh + +package require cgi +source /mod/var/mongoose/lib/setup +require ts.class + +puts "Content-Type: text/html\r\n\r\n" + +cgi_input +#cgi_dump + +set tsfile [cgi_get file] +set rfile [file normalize $tsfile] + +if {![file exists "$rfile.decrypting"]} { + puts "0" +} else { + set sz [file size $rfile] + set nsz [file size "$rfile.decrypting"] + + puts [expr $nsz * 100 / $sz] +} +