luci-base,luci-mod-system: split ubus localtime into get and set call

Signed-off-by: Jo-Philipp Wich <jo@mein.io>
This commit is contained in:
Jo-Philipp Wich 2019-07-08 17:07:11 +02:00
parent abee9138de
commit acbc031a6d
3 changed files with 30 additions and 10 deletions

View file

@ -37,14 +37,26 @@ local methods = {
end
},
localtime = {
getLocaltime = {
call = function(args)
return { localtime = os.time() }
end
},
setLocaltime = {
args = { localtime = 0 },
call = function(args)
local sys = require "luci.sys"
local date = os.date("*t", args.localtime)
if date then
sys.call("date -s '%04d-%02d-%02d %02d:%02d:%02d' >/dev/null" %{ date.year, date.month, date.day, date.hour, date.min, date.sec })
sys.call("/etc/init.d/sysfixtime restart >/dev/null")
end
return { localtime = args.localtime }
end
},
timezone = {
args = { zonename = "UTC" },
call = function(args)
local util = require "luci.util"
local zones = require "luci.sys.zoneinfo"

View file

@ -13,7 +13,7 @@
"read": {
"ubus": {
"iwinfo": [ "info" ],
"luci": [ "boardjson", "duid_hints", "host_hints", "ifaddrs", "initList", "leases", "leds", "netdevs", "offload_support", "usb" ],
"luci": [ "boardjson", "duid_hints", "host_hints", "ifaddrs", "initList", "getLocaltime", "leases", "leds", "netdevs", "offload_support", "usb" ],
"network.device": [ "status" ],
"network.interface": [ "dump" ],
"network.wireless": [ "status" ],
@ -23,7 +23,7 @@
},
"write": {
"ubus": {
"luci": [ "initCall", "localtime", "timezone" ],
"luci": [ "initCall", "setLocaltime", "timezone" ],
"uci": [ "add", "apply", "confirm", "delete", "order", "set" ]
},
"uci": [ "*" ]

View file

@ -3,7 +3,8 @@
'require rpc';
'require form';
var callInitList, callInitAction, callLocaltime, callTimezone, CBILocalTime;
var callInitList, callInitAction, callTimezone,
callGetLocaltime, callSetLocaltime, CBILocalTime;
callInitList = rpc.declare({
object: 'luci',
@ -24,9 +25,16 @@ callInitAction = rpc.declare({
expect: { result: false }
});
callLocaltime = rpc.declare({
callGetLocaltime = rpc.declare({
object: 'luci',
method: 'localtime',
method: 'getLocaltime',
expect: { localtime: 0 }
});
callSetLocaltime = rpc.declare({
object: 'luci',
method: 'setLocaltime',
params: [ 'localtime' ],
expect: { localtime: 0 }
});
@ -48,7 +56,7 @@ CBILocalTime = form.DummyValue.extend({
this.blur();
this.classList.add('spinning');
this.disabled = true;
callLocaltime(Math.floor(Date.now() / 1000)).then(L.bind(function() {
callSetLocaltime(Math.floor(Date.now() / 1000)).then(L.bind(function() {
this.classList.remove('spinning');
this.disabled = false;
}, this));
@ -77,7 +85,7 @@ return L.view.extend({
callInitList('sysntpd'),
callInitList('zram'),
callTimezone(),
callLocaltime(),
callGetLocaltime(),
uci.load('luci'),
uci.load('system')
]);
@ -276,7 +284,7 @@ return L.view.extend({
return m.render().then(function(mapEl) {
L.Poll.add(function() {
return callLocaltime().then(function(t) {
return callGetLocaltime().then(function(t) {
mapEl.querySelector('#localtime').innerHTML = new Date(t * 1000).toLocaleString();
});
});