--- /dev/null
+#!/usr/bin/lua
+
+require "uci"
+
+cursor = uci.cursor()
+
+archive_dir = uci.get("weathermon","process","archive_dir")
+
+require "wm_util"
+
+command = url_decode(os.getenv('QUERY_STRING'))
+
+print("Content-Type: text/plain\r\n")
+
+if command == "state" or command == "" or not command then
+ print(get_file_content(uci.get("weathermon","process","dump_file")))
+
+elseif command == "props" then
+ print(get_file_content("/www/meteo/properties.json"))
+
+elseif command == "years" then
+ json = require "json"
+ local result = list_dir(archive_dir)
+ table.sort(result, function(a, b) return a > b; end)
+ print(json.encode(result))
+
+elseif startswith(command,"months/") then
+ json = require "json"
+ local year = string.match(command,"months/(%d+)")
+ local result = list_dir(archive_dir.."/"..year)
+ table.sort(result, function(a, b) return a > b; end)
+ print(json.encode(result))
+
+elseif startswith(command,"days/") then
+ json = require "json"
+ local year,month = string.match(command,"days/(%d+)/(%d+)")
+ local result = list_dir(archive_dir.."/"..year.."/"..month)
+ table.sort(result, function(a, b) return a > b; end)
+ print(json.encode(result))
+
+elseif startswith(command,"sensors/") then
+ json = require "json"
+ local year,month,day = string.match(command,"sensors/(%d+)/(%d+)/(%d+)")
+ local files = list_dir(archive_dir.."/"..year.."/"..month.."/"..day)
+ result = {}
+ for key,value in pairs(files) do
+ local id, sensor, param = string.match(value,"(%w+)%.(%w+)%.(%w+).json")
+ if id then
+ result[#result+1] = id.."."..sensor.."."..param
+ end
+ end
+ table.sort(result)
+ print(json.encode(result))
+
+elseif startswith(command,"list/") then
+
+ sensor = string.sub(command,string.len("list/")+1)
+ lfs = require "lfs"
+ json = require "json"
+ dir = uci.get("weathermon","process","working_dir").."/www"
+
+ params = {}
+
+ for name in lfs.dir(dir) do
+ param=name:match(devid.."\."..sensor.."\.(%w+)\.json")
+ if param then
+ params[#params+1] = param
+ end
+ end
+
+ print(json.encode(params))
+
+elseif startswith(command,"get/") then
+
+ sensor_path=string.sub(command,string.len("get/")+1)
+ devid,sensor,param = sensor_path:match("(%w+)/(%w+)/(.+)")
+
+ if param=="*" then
+
+ lfs = require "lfs"
+ dir = uci.get("weathermon","process","working_dir").."/www"
+
+ result = ""
+
+ for name in lfs.dir(dir) do
+ param=name:match(devid.."\."..sensor.."\.(%w+)\.json")
+ if param then
+ content = "\""..param.."\":"..get_file_content(dir.."/"..name)
+ if result=="" then
+ result = content
+ else
+ result = result..","..content
+ end
+ end
+ end
+
+ print("{"..result.."}")
+
+ else
+ print(get_file_content(uci.get("weathermon","process","working_dir").."/www/"..devid.."."..sensor.."."..param..".json"))
+ end
+
+elseif startswith(command,"get-archive/") then
+
+ local sensor_path=string.sub(command,string.len("get-archive/")+1)
+ local year,month,day,devid,sensor,param = sensor_path:match("(%d+)/(%d+)/(%d+)/(%w+)/(%w+)/(%w+)")
+
+ print(get_file_content(archive_dir.."/"..year.."/"..month.."/"..day.."/"..devid.."."..sensor.."."..param..".json"))
+
+end