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"
"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" ],
},
"write": {
"ubus": {
- "luci": [ "initCall", "localtime", "timezone" ],
+ "luci": [ "initCall", "setLocaltime", "timezone" ],
"uci": [ "add", "apply", "confirm", "delete", "order", "set" ]
},
"uci": [ "*" ]
'require rpc';
'require form';
-var callInitList, callInitAction, callLocaltime, callTimezone, CBILocalTime;
+var callInitList, callInitAction, callTimezone,
+ callGetLocaltime, callSetLocaltime, CBILocalTime;
callInitList = rpc.declare({
object: 'luci',
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 }
});
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));
callInitList('sysntpd'),
callInitList('zram'),
callTimezone(),
- callLocaltime(),
+ callGetLocaltime(),
uci.load('luci'),
uci.load('system')
]);
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();
});
});