diff src/luan/host/Config.luan @ 1641:48c24eedb8b2

host cleanup
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 21 Dec 2021 17:21:37 -0700
parents host/Config.luan@520707a70379
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/luan/host/Config.luan	Tue Dec 21 17:21:37 2021 -0700
@@ -0,0 +1,60 @@
+local Luan = require "luan:Luan.luan"
+local error = Luan.error
+local ipairs = Luan.ipairs or error()
+local Io = require "luan:Io.luan"
+local uri = Io.uri or error()
+local Package = require "luan:Package.luan"
+local load = Package.load or error()
+local Logging = require "luan:logging/Logging.luan"
+local logger = Logging.logger "Config"
+
+
+uri("file:local").mkdir()
+local password_file = uri("file:local/password.txt")
+local password = password_file.exists() and password_file.read_text() or "password"
+local site_config = nil
+local site_name
+for _, site_dir in ipairs( uri("file:sites").children() or {} ) do
+	local name = site_dir.name()
+	local config = load("file:sites/"..name.."/site/private/host/Config.luan")
+	if config == false then
+		continue
+	end
+	if config.password ~= password and config.old_password ~= password then
+		logger.warn("wrong password for "..name)
+		continue
+	end
+	if site_config == nil then
+		site_config = config
+		site_name = name
+	else
+		logger.error("conflicting Config in "..name.." and "..site_name)
+	end
+end
+if site_config ~= nil then
+	logger.info("using Config from "..site_name)
+	local site_password = site_config.password or error()
+	if site_password ~= password then
+		password_file.write_text(password)
+	end
+	return site_config
+end
+if password ~= "password" then
+	password_file.write_text("password")
+end
+
+
+local Config = {}
+
+Config.password = "password"
+
+--[[  an example
+Config.postgres = {
+	class = "org.postgresql.Driver"
+	url = "jdbc:postgresql://localhost:5432/postgres"
+	user = "someone"
+	password = "password"
+}
+]]
+
+return Config