Version 0.1.2-1 - first version on Git
This commit is contained in:
commit
ae56e34ceb
|
@ -0,0 +1,12 @@
|
|||
Package: chaseget
|
||||
Priority: optional
|
||||
Section: misc
|
||||
Version: 0.1.2-3
|
||||
Architecture: mipsel
|
||||
Maintainer: mymsman
|
||||
Depends: webif(>=1.4.4-7), curl, ir (>=1.10-2), procps
|
||||
Description: Retrieve and decrypt recording, can run whilst recording is still in progress
|
||||
This is intended to be used as part of other packages (such as detectads) rather than used standalone
|
||||
Runs as first stage of pipeline, output is always to stdout
|
||||
Usage= /mod/bin/chaseget recording.ts start_offset logfile > output.ts
|
||||
Tags: http://wiki.hummy.tv/wiki/DetectAds
|
|
@ -0,0 +1,15 @@
|
|||
#!/bin/sh
|
||||
|
||||
export tmpf=/tmp/cronf.$$
|
||||
|
||||
# Add cron jobs
|
||||
|
||||
crontab=$PKG_ROOT/bin/crontab
|
||||
if [ -x $crontab ]; then
|
||||
$crontab -l | grep -v /mod/bin/chaseget > $tmpf
|
||||
cat $tmpf - << EOM | $crontab -
|
||||
13-59/20 * * * * /mod/bin/chaseget -standby>/dev/null 2>&1
|
||||
EOM
|
||||
fi
|
||||
|
||||
[ -f $tmpf ] && rm -f $tmpf
|
|
@ -0,0 +1,456 @@
|
|||
#!/mod/bin/jimsh
|
||||
# Retrieve recording via dlna (using curl) whilst recording is still in progress and write it to stdout for use in pipelines
|
||||
|
||||
source /mod/webif/lib/setup
|
||||
require lock system.class ts.class settings.class rsv.class
|
||||
set loglevel 0
|
||||
set status 0
|
||||
catch {
|
||||
# Use same logging option as auto log
|
||||
set settings [settings]
|
||||
set loglevel [$settings _nval_setting "autolog"]
|
||||
set status [$settings _nval_setting "chaseget_status" ]
|
||||
}
|
||||
|
||||
if {[lindex $argv 0] eq "-d"} {
|
||||
set argv [lrange $argv 1 end]
|
||||
set loglevel 2
|
||||
}
|
||||
|
||||
|
||||
proc log {msg {level 2}} {
|
||||
if {$level > $::loglevel} return
|
||||
system plog $::logfile "CG([pid])- $msg"
|
||||
#puts $::logfd "[\
|
||||
# clock format [clock seconds] -format "%d/%m/%Y %H:%M:%S"\
|
||||
# ] CG([pid])- $msg"
|
||||
#flush $::logfd
|
||||
}
|
||||
|
||||
proc help_text {} {
|
||||
puts "chaseget - Retrieve recording via dlna (using curl) whilst recording is still in progress and write it to stdout for use in pipelines"
|
||||
puts ""
|
||||
puts "chaseget -d options = Detailed debug output"
|
||||
puts "chaseget recording.ts start_offset logfile = Retrieve recording"
|
||||
puts "chaseget -standby ignoreTerminals logfile = Check whether safe to put system back into standby (ignoreTerminals 0=No 1=Yes)"
|
||||
puts "chaseget -help = This help text"
|
||||
puts "Author MymsMan see http://hummy.tv/forum/forums/hd-hdr-fox-t2-customised-firmware.28/ for more information"
|
||||
}
|
||||
|
||||
set file [lindex $argv 0]
|
||||
set fs [lindex $argv 1]
|
||||
if {$fs eq ""} {set fs 0}
|
||||
set logfile [lindex $argv 2]
|
||||
if {$logfile eq ""} {set logfile "chaseget"}
|
||||
#set logfd [open $logfile "a+"]
|
||||
set ::awfile "/mod/etc/chaseget_awakened"
|
||||
|
||||
|
||||
|
||||
proc getfile {file {fs 0}} {
|
||||
set ts [ts fetch $file]
|
||||
log "ChaseGet $file" 0
|
||||
|
||||
|
||||
set blksize $(256*1024)
|
||||
# extract recording info & calculate
|
||||
# - full recording size when complete
|
||||
# - remaining recording time and retrieval rate
|
||||
set stime [$ts get start]
|
||||
set etime [$ts get end]
|
||||
log "Recording start: [clock format $stime -format "%H:%M:%S"] end: [clock format $etime -format "%H:%M:%S"]"
|
||||
|
||||
set csize [file size "$file"]
|
||||
set dlnaretry 0
|
||||
set dlnaalert 0
|
||||
|
||||
while {$csize > $fs} {
|
||||
if {[system dlnastatus]} {
|
||||
set dlnaok 1
|
||||
set dlnaretry 0
|
||||
set dlnaalert 0
|
||||
#log "DLNA Server is running." 2
|
||||
} else {
|
||||
set dlnaok 0
|
||||
incr dlnaretry
|
||||
log "DLNA Server is NOT running." 0
|
||||
# Attempt to turn box fully on using IR package
|
||||
if {[system instandby]} {
|
||||
awake_from_standy
|
||||
}
|
||||
# Check file sharing enabled
|
||||
if {![system param DMS_START_ON]} {
|
||||
log "Content Sharing Disabled" 0
|
||||
if {!$dlnaalert} {
|
||||
set dlnaalert 1
|
||||
system notify "ChaseGet: Contents sharing disabled, Enable via Humax Settings menu"
|
||||
}
|
||||
}
|
||||
if {$dlnaretry >10} {
|
||||
log "DLNA Server is still NOT running. Giving up" 0
|
||||
return "DLNA Server is still NOT running. Giving up"
|
||||
}
|
||||
sleep 60
|
||||
continue
|
||||
}
|
||||
set ctime [clock seconds]
|
||||
set elapsed $($ctime-$stime)
|
||||
set durn $($etime-$stime)
|
||||
set remain $($etime-$ctime)
|
||||
log "duration: $durn elapsed: $elapsed remaining: $remain" 2
|
||||
if {$remain > 0} {
|
||||
# Now using time slicing rather than throttling
|
||||
# set totsize $($csize*$durn/$elapsed)
|
||||
# set recrate $($csize/$elapsed)
|
||||
# set drate $(($totsize-$fs)/($remain))
|
||||
# log "est total size: $totsize recording rate: $recrate download rate limit: $drate"
|
||||
# set lrate "--limit-rate $($drate*1)"
|
||||
# sleep 10
|
||||
set lrate ""
|
||||
} else { set lrate ""}
|
||||
|
||||
set retrct 0
|
||||
lassign [$ts dlnaloc "127.0.0.1"] url
|
||||
if {$url ne ""} {
|
||||
log " $file - has been indexed."
|
||||
set helper 0
|
||||
} else {
|
||||
log " $file - Not yet indexed, trying helper."
|
||||
if {[catch {
|
||||
lassign [system dlnahelper [file normalize $file]] url
|
||||
} msg]} {
|
||||
log " $file - $msg"
|
||||
system dlnahelper -release
|
||||
}
|
||||
if {$url eq ""} {
|
||||
log " $file - Can't use helper. retry"
|
||||
# system dlnahelper -release
|
||||
if {$remain > 30} {sleep 15} else {sleep 5}
|
||||
continue
|
||||
}
|
||||
set helper 1
|
||||
}
|
||||
log "Start at offset $fs cur recording size: $csize DLNA: $url" 2
|
||||
|
||||
if {!$::status} {
|
||||
# show sctive on webif status display
|
||||
set statustok [system startop -multiple chaseget $file]
|
||||
}
|
||||
|
||||
if {[catch -break -eval -signal -- {
|
||||
set input [open "|curl -C $fs $lrate $url 2> /dev/null "]
|
||||
} msg opts]} {
|
||||
log "Open caught: $msg $opts" 1
|
||||
break
|
||||
}
|
||||
log "Curl pid [pid $input]" 2
|
||||
while {1} {
|
||||
if {[catch -break -eval -signal -- {
|
||||
set block [read $input $blksize]
|
||||
puts -nonewline $block
|
||||
flush stdout
|
||||
} msg opts]} {
|
||||
log "caught: $msg $opts" 0
|
||||
# set ps [exec ps -Af]
|
||||
# log $ps
|
||||
break
|
||||
}
|
||||
incr fs [string bytelength $block]
|
||||
incr retrct [string bytelength $block]
|
||||
if {[eof $input]} {
|
||||
log "EOF detected $fs $retrct" 2
|
||||
break
|
||||
}
|
||||
}
|
||||
close $input
|
||||
# Short sleep to allow pipeline to drain and for more data to accumulate on input
|
||||
# Helper lock still held so parallel recording doesn't start getting and overload CPU
|
||||
sleep 3
|
||||
# Release the helper lock once finished.
|
||||
if {$helper} { system dlnahelper -release }
|
||||
|
||||
if {!$::status} {
|
||||
# not active for status
|
||||
system endop $statustok
|
||||
}
|
||||
|
||||
if {$retrct==0} {
|
||||
log "No data returned" 1
|
||||
break
|
||||
}
|
||||
set ctime [clock seconds]
|
||||
set remain $($etime-$ctime)
|
||||
if {$remain > 60} {
|
||||
# Sleep if not close to recording end to allow other recordings a chance to get in and for more data to accumulate
|
||||
log "snoozzzing" 2
|
||||
sleep 30
|
||||
} else {
|
||||
sleep 3
|
||||
}
|
||||
set csize [file size "$file"]
|
||||
}
|
||||
|
||||
if {[file size $file] >$fs } {
|
||||
log " Failed to retrieve entire file $([file size $file] -$fs) bytes missing" 0
|
||||
log " Attempt to recreate failure message" 1
|
||||
set curlout ""; set msg ""; set opts ""
|
||||
catch {set curlout [exec curl -C $fs $url > /dev/null]} msg opts
|
||||
log "Curl message: $msg" 1
|
||||
log "Curl error: $opts" 1
|
||||
log "Curl output: $curlout" 1
|
||||
return -code error $msg
|
||||
}
|
||||
|
||||
log "ChaseGet end $file Size $fs bytes" 0
|
||||
#log "-----------------------------------------------" 2
|
||||
return $fs
|
||||
}
|
||||
|
||||
# Check whether now is within time range, time formats hh:mm
|
||||
proc inTimeRange {start end} {
|
||||
set now [clock format [clock seconds] -format "%H:%M"]
|
||||
log "Now $now Range $start - $end" 2
|
||||
if {$start eq $end} {return 0}
|
||||
if {$start <= $end} {
|
||||
# start and stop times are in the same day
|
||||
if {$now >= $start && $now <= $end} {
|
||||
# current time is between start and stop
|
||||
return 1
|
||||
}
|
||||
} else {
|
||||
# start and stop times are in different days
|
||||
if {$now >= $start || $now <= $end} {
|
||||
# current time is between start and stop
|
||||
return 1
|
||||
}
|
||||
}
|
||||
# outside range
|
||||
return 0
|
||||
}
|
||||
|
||||
proc awake_from_standy {} {
|
||||
catch {exec ir POWER}
|
||||
log "System power on attempted" 0
|
||||
set settings [settings]
|
||||
set mute [$settings _nval_setting "chaseget_mute" ]
|
||||
set standby_start [$settings _tval_setting "chaseget_standby_start1"]
|
||||
set standby_end [$settings _tval_setting "chaseget_standby_end1"]
|
||||
|
||||
if {$mute && ![inTimeRange "$standby_start" "$standby_end"]} {
|
||||
sleep 2
|
||||
# Mute in case it comes on in middle of night and to provoke button push by passive viewer
|
||||
catch {exec ir MUTE}
|
||||
log "Sound mute attempted" 1
|
||||
}
|
||||
catch {exec touch $::awfile}
|
||||
#[settings new] _nval_setting "chaseget_awakened" [clock seconds]
|
||||
}
|
||||
|
||||
proc awakened_by_chaseget {} {
|
||||
#set settings [settings]
|
||||
#set ::awakened [$settings _nval_setting "chaseget_awakened"]
|
||||
if {[file exists $::awfile]} {
|
||||
set ::awakened [file mtime $::awfile]
|
||||
log "Awakened by ChaseGet at [clock format $::awakened -format %T]" 2
|
||||
return 1
|
||||
} else {
|
||||
set ::awakened 0
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
proc clear_awakened_status {} {
|
||||
# [settings new] _nval_setting "chaseget_awakened" 0
|
||||
file delete $::awfile
|
||||
set ::awakened 0
|
||||
}
|
||||
|
||||
proc standby_check {{ignoreTerm 1}} {
|
||||
# Quit quietly if nothing to do
|
||||
set settings [settings]
|
||||
set standby_start [$settings _tval_setting "chaseget_standby_start1"]
|
||||
set standby_end [$settings _tval_setting "chaseget_standby_end1"]
|
||||
#set lastboot $([clock seconds] - round([system uptime]))
|
||||
#log "Last boot time [clock format $lastboot -format %T]" 2
|
||||
|
||||
if {[inTimeRange "$standby_start" "$standby_end"]} {
|
||||
log "Standby check disabled - quit" 2
|
||||
exit
|
||||
}
|
||||
|
||||
if {![awakened_by_chaseget]} {
|
||||
log "Not awakened by chaseget - quit" 2
|
||||
exit
|
||||
}
|
||||
|
||||
log "ChaseGet - standby_check starting" 1
|
||||
|
||||
if {[system instandby]} {
|
||||
log "System in standby - quit" 1
|
||||
clear_awakened_status
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
# foreach {process in detectads, auto, ...} {
|
||||
# # process list should probably be in a config file to allow easy update
|
||||
# # what others?
|
||||
# if {process active} { exit }
|
||||
# }
|
||||
|
||||
# open and read configuration file
|
||||
set cf "/mod/etc/chaseget.conf"
|
||||
|
||||
if {![catch {set fp [open $cf r]}]} {
|
||||
set clist [split [read $fp] "\n"]
|
||||
} else {
|
||||
set clist {}
|
||||
}
|
||||
|
||||
# Check if proces in list is active
|
||||
foreach process $clist {
|
||||
if {![string length $process]} continue
|
||||
log "Checking entry: $process" 2
|
||||
set status [catch {exec pgrep -x $process} ]
|
||||
if {$status == 0} {
|
||||
log "Active process $process - quit" 1
|
||||
return 0
|
||||
}
|
||||
}
|
||||
|
||||
# # can putty/telnet users be detected ?
|
||||
set termct [exec ls /dev/pts | wc -l]
|
||||
log "Pseudo terminals: $termct" 2
|
||||
if {!$ignoreTerm && $termct > 0 } {
|
||||
log "Active terminals $termct - quit" 1
|
||||
return 0
|
||||
}
|
||||
|
||||
#
|
||||
# if { last boot time > chaseget awakened time} {
|
||||
# Clear awakend by chaseget status
|
||||
# exit
|
||||
# }
|
||||
|
||||
# Ideally should be: set lastboot [system lastboottime]
|
||||
#set lastboot [file mtime "/tmp/if-up"]
|
||||
set lastboot $([clock seconds] - round([system uptime]))
|
||||
log "Last boot time [clock format $lastboot -format %T]" 2
|
||||
if {$lastboot > $::awakened} {
|
||||
log "Boot time [clock format $lastboot -format %T] > Awakened time [clock format $::awakened -format %T] - quit" 1
|
||||
clear_awakened_status
|
||||
return 0
|
||||
}
|
||||
|
||||
#
|
||||
# if { any .ts in use (except recording) } { exit }
|
||||
#
|
||||
|
||||
set ret {}
|
||||
# Get a list of unique in-use .ts files
|
||||
if {[catch {set data [exec /mod/webif/lib/bin/lsof -Fns | grep {\.ts} | sort -u ]} msg]} {
|
||||
set ret {}
|
||||
} else {
|
||||
set flist ""
|
||||
foreach line [split $data "\n"] {
|
||||
set file [string range $line 1 end]
|
||||
if {[file tail $file] eq "0.ts"} continue
|
||||
|
||||
set csize [file size "$file"]
|
||||
log "In use $file size $csize" 2
|
||||
lappend flist [list $file $csize]
|
||||
}
|
||||
sleep 2
|
||||
# Check for files size change over last few seconds - indicates recording in progress
|
||||
foreach line $flist {
|
||||
lassign $line file csize
|
||||
set nsize [file size "$file"]
|
||||
log "In use $file size $csize -> $nsize" 2
|
||||
if {$csize == $nsize} {
|
||||
log "In use $file not recording -quit" 1
|
||||
return
|
||||
} else { log "In use $file is recording OK" 2 }
|
||||
}
|
||||
}
|
||||
|
||||
#
|
||||
# # Need check for within a reminder period?
|
||||
|
||||
set now [clock seconds]
|
||||
set events [rsv list tbl_reservation \
|
||||
" where ersvtype = 2 and nsttime < $now and nsttime + nduration > $now "]
|
||||
if {[llength $events]} {
|
||||
foreach event $events {
|
||||
log [concat \
|
||||
"Reminder '[$event name]' " \
|
||||
"on [$event channel_name] at " \
|
||||
"[clock format [$event get nsttime] -format {%H:%M}]" \
|
||||
" duration [clock format [$event get nduration] -format {%H:%M}]" \
|
||||
] 2
|
||||
}
|
||||
log "Current reminders= [llength $events] - quit" 1
|
||||
return 0
|
||||
} else {log "No reminders found" 2}
|
||||
|
||||
|
||||
# if {idle time < now - chaseget awakened time} {
|
||||
# # Buttons pressed since woken
|
||||
# if {last button != 'power'} {
|
||||
# Clear awakend by chaseget status
|
||||
# exit
|
||||
# }
|
||||
# }
|
||||
|
||||
set idletime [system idletime]
|
||||
set now [clock seconds]
|
||||
if {$idletime < $now - $::awakened} {
|
||||
set lastir 0
|
||||
if {[file readable /tmp/.lastir]} {
|
||||
set lastir [file read /tmp/.lastir -nonewline]
|
||||
}
|
||||
# Buttons pressed since woken
|
||||
log "Remote Buttons pressed (last button $lastir) - quit" 1
|
||||
clear_awakened_status
|
||||
return 0
|
||||
}
|
||||
|
||||
|
||||
# # No current activity since awakened
|
||||
#
|
||||
# ir power
|
||||
# Clear awakend by chaseget status
|
||||
|
||||
# Check system hasn't re-entered standby of it its own accord whilst we werent looking
|
||||
if {[system instandby]} {
|
||||
log "System in standby - quit" 1
|
||||
clear_awakened_status
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
log "System power Off attempted, ChaseGet power On was at [clock format $::awakened -format %T] " 0
|
||||
clear_awakened_status
|
||||
catch {exec ir POWER}
|
||||
|
||||
}
|
||||
|
||||
|
||||
switch -- $file {
|
||||
|
||||
"-standby" {
|
||||
standby_check $fs
|
||||
}
|
||||
|
||||
"--help" -
|
||||
"-help" -
|
||||
"--h" -
|
||||
"-h" -
|
||||
"" {
|
||||
help_text
|
||||
}
|
||||
|
||||
default {
|
||||
getfile $file $fs
|
||||
}
|
||||
}
|
||||
exit
|
|
@ -0,0 +1,10 @@
|
|||
detectads
|
||||
rset
|
||||
srma
|
||||
fix-disk
|
||||
wget
|
||||
curl
|
||||
ffmpeg
|
||||
deq
|
||||
rs_process
|
||||
chasedecrypt
|
Binary file not shown.
After Width: | Height: | Size: 401 B |
Binary file not shown.
After Width: | Height: | Size: 322 B |
Binary file not shown.
After Width: | Height: | Size: 1.9 KiB |
|
@ -0,0 +1,28 @@
|
|||
#!/mod/bin/jimsh
|
||||
# mymsman 151008
|
||||
|
||||
package require cgi
|
||||
source /mod/webif/lib/setup
|
||||
require settings.class
|
||||
|
||||
httpheader
|
||||
|
||||
|
||||
set mute [cgi_get chaseget_mute no ]
|
||||
set status [cgi_get chaseget_status no ]
|
||||
set standby_start1 [cgi_get chaseget_standby_start1 ""]
|
||||
set standby_end1 [cgi_get chaseget_standby_end1 ""]
|
||||
|
||||
set val 1
|
||||
if {$mute ne "yes"} { set val 0 }
|
||||
[settings new] _nval_setting "chaseget_mute" $val
|
||||
|
||||
set val 1
|
||||
if {$status ne "yes"} { set val 0 }
|
||||
[settings new] _nval_setting "chaseget_status" $val
|
||||
|
||||
[settings new] _tval_setting "chaseget_standby_start1" $standby_start1
|
||||
[settings new] _tval_setting "chaseget_standby_end1" $standby_end1
|
||||
|
||||
puts "Settings saved."
|
||||
|
|
@ -0,0 +1,113 @@
|
|||
# Chasget settins - mymsman 151008
|
||||
#source /mod/webif/lib/setup
|
||||
#require settings.class
|
||||
#set settings [settings]
|
||||
|
||||
set ::chaseget::status [$settings _nval_setting "chaseget_status"]
|
||||
set ::chaseget::mute [$settings _nval_setting "chaseget_mute"]
|
||||
set ::chaseget::standby_start1 [$settings _tval_setting "chaseget_standby_start1"]
|
||||
set ::chaseget::standby_end1 [$settings _tval_setting "chaseget_standby_end1"]
|
||||
|
||||
puts "
|
||||
<fieldset style=\"display: inline\">
|
||||
<legend>
|
||||
<a href=\"http://wiki.hummy.tv/wiki/DetectAds#ChaseGet_settings\" target=\"_blank\">ChaseGet (Get file whilst recording) settings</a>
|
||||
</legend>
|
||||
<p>See <b><a href=\"http://wiki.hummy.tv/wiki/DetectAds#ChaseGet_settings\" target=\"_blank\">DetectAds user guide</a></b> for help</p>
|
||||
<form class=auto id=chaseget method=get
|
||||
action=/plugin/chaseget/save.jim>
|
||||
<table>"
|
||||
puts "
|
||||
<tr>
|
||||
<th class=key>Hide ChaseGet on status display?
|
||||
</th>
|
||||
<td><input id=chaseget_status name=chaseget_status
|
||||
type=checkbox value=yes"
|
||||
if {$::chaseget::status} { puts -nonewline " checked" }
|
||||
puts ">
|
||||
</td>
|
||||
</tr>"
|
||||
puts "
|
||||
<tr>
|
||||
<th class=key>Mute sound on ChaseGet wake from standby?
|
||||
</th>
|
||||
<td><input id=chaseget_mute name=chaseget_mute
|
||||
type=checkbox value=yes"
|
||||
if {$::chaseget::mute} { puts -nonewline " checked" }
|
||||
puts ">
|
||||
</td>
|
||||
</tr>"
|
||||
proc timelist {sel} {
|
||||
for {set t 0} {$t <=1440} {incr t 30} {
|
||||
# (mis)use the the fact of 60 sec per min 60 min per hour to format hh:mm, t is min per period
|
||||
set ft [clock format $t -format %M:%S]
|
||||
puts -nonewline "<option value=\"$ft\""
|
||||
if {$sel eq $ft} {
|
||||
puts -nonewline " selected=yes"
|
||||
}
|
||||
puts ">$ft</option>"
|
||||
}
|
||||
}
|
||||
|
||||
puts "
|
||||
<tr id=chaseget_timerange >
|
||||
<th class=key>Don't mute or return to standby between
|
||||
</th>
|
||||
<th class=key>
|
||||
<select id=chaseget_standby_start1 name=chaseget_standby_start1
|
||||
class=\"ui-widget-content ui-corner-all\" >"
|
||||
timelist $::chaseget::standby_start1
|
||||
puts " </select>
|
||||
and
|
||||
<select id=chaseget_standby_end1 name=chaseget_standby_end1
|
||||
class=\"ui-widget-content ui-corner-all\" >"
|
||||
timelist $::chaseget::standby_end1
|
||||
puts " </select>
|
||||
</th>
|
||||
</tr>"
|
||||
puts "
|
||||
<tr>
|
||||
<td colspan=2><input type=submit value=\"Update settings\">
|
||||
<div id=chaseget_output></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</form>
|
||||
</fieldset>
|
||||
"
|
||||
#puts "<datalist id=timelist>"
|
||||
#for {set t 0} {$t <=1440} {incr t 30} {
|
||||
# # (mis)use the the fact of 60 sec per min 60 min per hour to format hh:mm, t is min per period
|
||||
# puts "<option value=\"[clock format $t -format %M:%S]\">"
|
||||
#}
|
||||
#puts "</datalist>"
|
||||
#set pattern {([01]?[0-9]|2[0-4]):[0-5][0-9]}
|
||||
#puts "
|
||||
# <tr id=chaseget_timerange >
|
||||
# <th class=key>Don't return to standby between
|
||||
# </th>
|
||||
# <th class=key>
|
||||
# <input id=chaseget_standby_start1 name=chaseget_standby_start1
|
||||
# type=text size=5 list=timelist value=\"$::chaseget::standby_start1\"
|
||||
# class=\"ui-widget-content ui-corner-all\"
|
||||
# pattern=$pattern title=\"hh:mm time\">
|
||||
#
|
||||
# and
|
||||
# <input id=chaseget_standby_end1 name=chaseget_standby_end1
|
||||
# type=text size=5 list=timelist value=\"$::chaseget::standby_end1\"
|
||||
# class=\"ui-widget-content ui-corner-all\"
|
||||
# pattern=$pattern title=\"hh:mm time\">
|
||||
# </th>
|
||||
# </tr>"
|
||||
#puts "
|
||||
# <tr>
|
||||
# <td colspan=2><input type=submit value=\"Update settings\">
|
||||
# <div id=chaseget_output></div>
|
||||
# </td>
|
||||
# </tr>
|
||||
# </table>
|
||||
# </form>
|
||||
# </fieldset>
|
||||
# "
|
||||
|
||||
|
|
@ -0,0 +1,6 @@
|
|||
register_statusop chaseget "Chaseget decrypting" "/plugin/chaseget/running.png"
|
||||
# Icon by Ivan Boyko https://www.iconfinder.com/icons/310307/running_sport_icon
|
||||
# Creative Commons (Attribution 3.0 Unported) https://creativecommons.org/licenses/by/3.0/
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue