comparison src/luan/host/main.luan @ 1181:51d1342e25ad

luanhost password handling
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 20 Feb 2018 19:50:30 -0700
parents 1f9d34a6f308
children 0b55a1af5a44
comparison
equal deleted inserted replaced
1180:8ca49f5e114d 1181:51d1342e25ad
14 local matches = String.matches or error() 14 local matches = String.matches or error()
15 local Hosting = require "luan:host/Hosting.luan" 15 local Hosting = require "luan:host/Hosting.luan"
16 local Logging = require "luan:logging/Logging.luan" 16 local Logging = require "luan:logging/Logging.luan"
17 local logger = Logging.logger "main" 17 local logger = Logging.logger "main"
18 local WebHandler = require "java:luan.host.WebHandler" 18 local WebHandler = require "java:luan.host.WebHandler"
19 local Util = require "classpath:luan/host/Util.luan"
20 local read_password = Util.read_password or error()
21 local write_password = Util.write_password or error()
19 22
20 23
21 local sites_dir = Io.schemes.file(Hosting.sites_dir) 24 local sites_dir = Io.schemes.file(Hosting.sites_dir)
22 25
23 sites_dir.mkdir() 26 sites_dir.mkdir()
46 type(domain)=="string" or error() 49 type(domain)=="string" or error()
47 type(password)=="string" or error() 50 type(password)=="string" or error()
48 domain = lower(domain) 51 domain = lower(domain)
49 local dir = sites_dir.child(domain) 52 local dir = sites_dir.child(domain)
50 if dir.exists() then 53 if dir.exists() then
51 local pwd = dir.child("password").read_text() 54 local pwd = read_password(domain)
52 if pwd ~= password then 55 if pwd ~= password then
53 error "wrong password" 56 error "wrong password"
54 end 57 end
55 return dir.child("site") 58 return dir.child("site")
56 else 59 else
100 type(password)=="string" or error() 103 type(password)=="string" or error()
101 domain = lower(domain) 104 domain = lower(domain)
102 local dir = sites_dir.child(domain) 105 local dir = sites_dir.child(domain)
103 dir.exists() and error "already exists" 106 dir.exists() and error "already exists"
104 dir.mkdir() 107 dir.mkdir()
105 dir.child("password").write(password) 108 write_password(domain,password)
106 dir = dir.child("site") 109 dir = dir.child("site")
107 dir.mkdir() 110 dir.mkdir()
108 return { name = dir.name(), path = dir.to_string(), children = {} } 111 return { name = dir.name(), path = dir.to_string(), children = {} }
109 end 112 end
110 113
175 end 178 end
176 179
177 function fns.change_password(domain,old_password,new_password) 180 function fns.change_password(domain,old_password,new_password)
178 local site_dir = get_dir(domain,old_password) 181 local site_dir = get_dir(domain,old_password)
179 site_dir or error "domain not found" 182 site_dir or error "domain not found"
180 site_dir.parent().child("password").write(new_password) 183 write_password(domain,new_password)
181 WebHandler.removeHandler(domain) 184 WebHandler.removeHandler(domain)
182 WebHandler.loadHandler(domain) 185 WebHandler.loadHandler(domain)
183 end 186 end
184 187
185 fns.call = WebHandler.callSite 188 fns.call = WebHandler.callSite