forked from hummypkg/webif
62a13e18cc
git-svn-id: file:///root/webif/svn/humax/pkg/src/webif/trunk@1848 2a923420-c742-0410-a762-8d5b09965624
330 lines
6.9 KiB
Plaintext
330 lines
6.9 KiB
Plaintext
|
|
if {![exists -proc class]} { package require oo }
|
|
if {![exists -proc sqlite3.open]} { package require sqlite3 }
|
|
|
|
if {![file exists /mod/etc/webif.db]} {
|
|
set settingsdb [sqlite3.open /mod/etc/webif.db]
|
|
catch {
|
|
$settingsdb query {
|
|
CREATE TABLE settings(name text, nval int, tval text);
|
|
}
|
|
$settingsdb query {
|
|
CREATE UNIQUE INDEX key on settings(name);
|
|
}
|
|
}
|
|
} else {
|
|
set settingsdb [sqlite3.open /mod/etc/webif.db]
|
|
}
|
|
|
|
class settings {
|
|
hostname ""
|
|
channel_group 0
|
|
epg_style "standard"
|
|
service_style "grid"
|
|
smtp_server ""
|
|
pkgdev 0
|
|
notoolbar 0
|
|
nomobile 0
|
|
nohelplinks 0
|
|
notwitfeed 0
|
|
nounwatchedcount 0
|
|
xepghours 4
|
|
genrededup 0
|
|
autolog 0
|
|
changechangenc 0
|
|
audiomp3 0
|
|
}
|
|
|
|
settings method hostname {{name ""}} {
|
|
if {$name == ""} {
|
|
# Get
|
|
if {[catch {set fd [open "/var/lib/humaxtv/mod/hostname" r]}]} {
|
|
set name "humax"
|
|
} else {
|
|
set name [string trim [read $fd]]
|
|
close $fd
|
|
}
|
|
return $name
|
|
} else {
|
|
# Set
|
|
if [string is alnum -strict $name] {
|
|
set fd [open "/var/lib/humaxtv/mod/hostname" w]
|
|
puts $fd $name
|
|
close $fd
|
|
exec hostname -F /var/lib/humaxtv/mod/hostname
|
|
}
|
|
}
|
|
}
|
|
|
|
settings method smtp_server {{server ""}} {
|
|
if {$server == ""} {
|
|
# Get
|
|
if {[catch {set fd [open "/mod/etc/ssmtp/ssmtp.conf" r]}]} {
|
|
set server "mail"
|
|
} else {
|
|
foreach line [split [read $fd] "\n"] {
|
|
set a [string first "mailhub=" $line]
|
|
if {$a == 0} {
|
|
set server [string range $line 8 end]
|
|
set server [string trim $server]
|
|
}
|
|
}
|
|
close $fd
|
|
}
|
|
return $server
|
|
} else {
|
|
# Set
|
|
if {[string is ascii -strict $server]} {
|
|
set fd [open "/mod/etc/ssmtp/ssmtp.conf" w]
|
|
puts $fd "mailhub=$server"
|
|
puts $fd "rewriteDomain=hummypkg.org.uk"
|
|
puts $fd "hostname=[$self hostname].hummypkg.org.uk"
|
|
close $fd
|
|
}
|
|
}
|
|
}
|
|
|
|
settings method _nval_setting {name {val -1}} {
|
|
global settingsdb
|
|
|
|
if {$val == -1} {
|
|
# Get
|
|
set res [$settingsdb query "
|
|
select nval from settings
|
|
where name = '$name'
|
|
"]
|
|
if {$res ne ""} {
|
|
return [lindex [lindex $res end] end]
|
|
}
|
|
return 0
|
|
} else {
|
|
# Set
|
|
$settingsdb query "
|
|
replace into settings(name,nval)
|
|
values('$name', $val)
|
|
"
|
|
return 0
|
|
}
|
|
}
|
|
|
|
settings method _tval_setting {name {val -1}} {
|
|
global settingsdb
|
|
|
|
if {$val == -1} {
|
|
# Get
|
|
set res [$settingsdb query "
|
|
select tval from settings
|
|
where name = '$name'
|
|
"]
|
|
if {$res ne ""} {
|
|
return [lindex [lindex $res end] end]
|
|
}
|
|
return 0
|
|
} else {
|
|
# Set
|
|
$settingsdb query "
|
|
replace into settings(name,tval)
|
|
values('$name', '%s')
|
|
" $val
|
|
return 0
|
|
}
|
|
}
|
|
|
|
settings method channel_group {{group -1}} {
|
|
return [$self _nval_setting channel_group $group]
|
|
}
|
|
|
|
settings method xepghours {{hours -1}} {
|
|
return [$self _nval_setting xepghours $hours]
|
|
}
|
|
|
|
settings method epg_style {{style -1}} {
|
|
if {$style != -1} {
|
|
if {$style eq "grid"} { set style 1 } else { set style 0 }
|
|
return [$self _nval_setting epg_style $style]
|
|
}
|
|
set val [$self _nval_setting epg_style]
|
|
if {$val == 1} { return "grid" }
|
|
return "standard"
|
|
}
|
|
|
|
settings method service_style {{style -1}} {
|
|
if {$style != -1} {
|
|
if {$style eq "grid"} { set style 0 } else { set style 1 }
|
|
return [$self _nval_setting service_style $style]
|
|
}
|
|
set val [$self _nval_setting service_style]
|
|
if {$val == 1} { return "standard" }
|
|
return "grid"
|
|
}
|
|
|
|
settings method pkgdev {{val -1}} {
|
|
return [$self _nval_setting pkgdev $val]
|
|
}
|
|
|
|
settings method notoolbar {{val -1}} {
|
|
return [$self _nval_setting notoolbar $val]
|
|
}
|
|
|
|
settings method genrededup {{val -1}} {
|
|
return [$self _nval_setting genrededup $val]
|
|
}
|
|
|
|
settings method nomobile {{val -1}} {
|
|
return [$self _nval_setting nomobile $val]
|
|
}
|
|
|
|
settings method nohelplinks {{val -1}} {
|
|
return [$self _nval_setting nohelplinks $val]
|
|
}
|
|
|
|
settings method notwitfeed {{val -1}} {
|
|
return [$self _nval_setting notwitfeed $val]
|
|
}
|
|
|
|
settings method nounwatchedcount {{val -1}} {
|
|
return [$self _nval_setting nounwatchedcount $val]
|
|
}
|
|
|
|
settings method chanchangenc {{val -1}} {
|
|
return [$self _nval_setting chanchangenc $val]
|
|
}
|
|
|
|
settings method sortorder {{val -1}} {
|
|
return [$self _nval_setting sortorder $val]
|
|
}
|
|
|
|
settings method autolog {{level -1}} {
|
|
return [$self _nval_setting autolog $level]
|
|
}
|
|
|
|
settings method audiomp3 {{val -1}} {
|
|
return [$self _nval_setting audiomp3 $val]
|
|
}
|
|
|
|
settings method audiomp3descr {val} {
|
|
switch $val {
|
|
1 { return "MPEG-1 Audio Layer III (MP3)" }
|
|
default { return "MPEG-1 Audio Layer II (MP2)" }
|
|
}
|
|
}
|
|
|
|
settings method channel_groups {} {
|
|
set ret ""
|
|
set db [sqlite3.open /var/lib/humaxtv/setup.db]
|
|
set res [$db query {
|
|
select itemText from TBL_MENUCONFIG
|
|
where itemName like 'FAV\_CUSTOM\_STR%%' ESCAPE '\'
|
|
}]
|
|
$db close
|
|
foreach g $res {
|
|
set g $g(itemText)
|
|
if {[string index $g 0] == "\025"} {
|
|
lappend ret [string range $g 1 end]
|
|
} else {
|
|
lappend ret $g
|
|
}
|
|
}
|
|
return $ret
|
|
}
|
|
|
|
settings method aclusers {} {
|
|
if {![file exists "/mod/etc/htpasswd"]} { return {} }
|
|
set fd [open "/mod/etc/htpasswd" r]
|
|
set users {}
|
|
foreach line [string trim [split [read $fd] "\n"]] {
|
|
set info [split $line ":"]
|
|
if {[llength $info] != 3} { continue }
|
|
lappend users $info
|
|
}
|
|
$fd close
|
|
return $users
|
|
}
|
|
|
|
# Legacy function for Mongoose.
|
|
|
|
settings method mongooseauth {{mode 1}} {
|
|
if {![file exists /mod/etc/mongoose.conf]} return
|
|
set fd [open "/mod/etc/mongoose.conf" r]
|
|
set fdnew [open "/mod/etc/mongoose.conf.new" w]
|
|
foreach line [string trim [split [read $fd] "\n"]] {
|
|
if {[string match -nocase {authentication_domain*} $line]} {
|
|
continue
|
|
}
|
|
if {[string match -nocase {global_passwords_file*} $line]} {
|
|
continue
|
|
}
|
|
if {$line ne ""} { puts $fdnew $line }
|
|
}
|
|
$fd close
|
|
if {$mode} {
|
|
puts $fdnew "authentication_domain webif"
|
|
puts $fdnew "global_passwords_file /mod/etc/htpasswd"
|
|
}
|
|
$fdnew close
|
|
file delete "/mod/etc/mongoose.conf"
|
|
file rename "/mod/etc/mongoose.conf.new" "/mod/etc/mongoose.conf"
|
|
}
|
|
|
|
settings method htdigest {user pass} {
|
|
set str "$user:webif:$pass"
|
|
set hash [string range [exec echo -n $str | md5sum] 0 32]
|
|
return "$user:webif:$hash"
|
|
}
|
|
|
|
settings method modacluser {user {pass 0}} {
|
|
set fdnew [open "/mod/etc/htpasswd.new" w]
|
|
|
|
# Remove existing user, if present.
|
|
if {[file exists "/mod/etc/htpasswd"]} {
|
|
set fd [open "/mod/etc/htpasswd" r]
|
|
set num 0
|
|
foreach line [string trim [split [read $fd] "\n"]] {
|
|
lassign [split $line ":"] xuser
|
|
if {$xuser eq $user} { continue }
|
|
if {$line ne ""} {
|
|
puts $fdnew $line
|
|
incr num
|
|
}
|
|
}
|
|
$fd close
|
|
}
|
|
|
|
# Add user, if required.
|
|
if {$pass ne "0"} {
|
|
puts $fdnew [$self htdigest $user $pass]
|
|
incr num
|
|
set msg "Added/updated user $user"
|
|
} else {
|
|
set msg "Removed user $user"
|
|
}
|
|
|
|
$fdnew close
|
|
file delete "/mod/etc/htpasswd"
|
|
file rename "/mod/etc/htpasswd.new" "/mod/etc/htpasswd"
|
|
|
|
$self mongooseauth $num
|
|
|
|
return $msg
|
|
}
|
|
|
|
settings method addacluser {user pass} {
|
|
return [$self modacluser $user $pass]
|
|
}
|
|
|
|
settings method delacluser {user} {
|
|
return [$self modacluser $user]
|
|
}
|
|
|
|
settings method smartdata {} {
|
|
global settingsdb
|
|
|
|
set res [$settingsdb query "
|
|
select name, nval, tval from settings
|
|
where name like 'SMART_%%'
|
|
"]
|
|
|
|
return $res
|
|
}
|
|
|