annotate src/luan/host/main.luan @ 1135:707a5d874f3e

add luan.host
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 28 Jan 2018 21:36:58 -0700
parents
children 1f9d34a6f308
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1135
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
1 java()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
2 local Luan = require "luan:Luan.luan"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
3 local error = Luan.error
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
4 local assert_string = Luan.assert_string or error()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
5 local ipairs = Luan.ipairs or error()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
6 local try = Luan.try or error()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
7 local Io = require "luan:Io.luan"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
8 local print = Io.print or error()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
9 local Rpc = require "luan:Rpc.luan"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
10 local Thread = require "luan:Thread.luan"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
11 local String = require "luan:String.luan"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
12 local literal = String.literal or error()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
13 local lower = String.lower or error()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
14 local matches = String.matches or error()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
15 local Hosting = require "luan:host/Hosting.luan"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
16 local Logging = require "luan:logging/Logging.luan"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
17 local logger = Logging.logger "main"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
18 local WebHandler = require "java:luan.host.WebHandler"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
19
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
20
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
21 local sites_dir = Io.schemes.file(Hosting.sites_dir)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
22
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
23 sites_dir.mkdir()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
24
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
25 local function delete_unused(file)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
26 if file.is_directory() then
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
27 if file.name() == "local" then
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
28 return false
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
29 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
30 local all_deleted = true
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
31 for _,child in ipairs(file.children()) do
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
32 all_deleted = delete_unused(child) and all_deleted
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
33 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
34 if not all_deleted then
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
35 return false
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
36 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
37 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
38 file.delete()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
39 return true
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
40 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
41
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
42
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
43 local fns = Rpc.functions
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
44
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
45 local function get_dir(domain,password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
46 assert_string(domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
47 assert_string(password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
48 domain = lower(domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
49 local dir = sites_dir.child(domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
50 if dir.exists() then
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
51 local pwd = dir.child("password").read_text()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
52 if pwd ~= password then
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
53 error "wrong password"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
54 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
55 return dir.child("site")
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
56 else
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
57 return nil
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
58 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
59 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
60
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
61 function fns.get(domain,password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
62 local site_dir = get_dir(domain,password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
63 if site_dir == nil then
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
64 return nil
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
65 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
66
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
67 local children, file_info
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
68
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
69 function children(dir)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
70 if dir.name() == "local" then
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
71 return {}
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
72 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
73 local rtn = {}
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
74 for _,child in ipairs(dir.children()) do
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
75 local info = file_info(child)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
76 if info ~= nil then
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
77 rtn[info.name] = info
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
78 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
79 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
80 return rtn
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
81 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
82
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
83 function file_info(file)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
84 local info = { name = file.name(), path = file.to_string() }
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
85 if file.is_directory() then
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
86 info.children = children(file)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
87 elseif file.is_file() then
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
88 info.checksum = file.checksum()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
89 else
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
90 return nil
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
91 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
92 return info
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
93 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
94
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
95 return file_info(site_dir)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
96 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
97
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
98 function fns.create(domain,password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
99 assert_string(domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
100 assert_string(password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
101 domain = lower(domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
102 local dir = sites_dir.child(domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
103 dir.exists() and error "already exists"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
104 dir.mkdir()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
105 dir.child("password").write(password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
106 dir = dir.child("site")
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
107 dir.mkdir()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
108 return { name = dir.name(), path = dir.to_string(), children = {} }
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
109 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
110
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
111 local function security(site_dir,file)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
112 matches( file.to_string(), "^"..literal(site_dir.to_string()) ) or error "security violation"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
113 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
114
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
115 function fns.copy_file(domain,password,dir,name,content)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
116 local site_dir = get_dir(domain,password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
117 site_dir or error "domain not found"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
118 local file = Io.schemes.file(dir).child(name)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
119 security(site_dir,file)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
120 file.delete()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
121 file.write(content)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
122 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
123
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
124 function fns.mkdir(domain,password,dir,name)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
125 local site_dir = get_dir(domain,password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
126 site_dir or error "domain not found"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
127 local file = Io.schemes.file(dir).child(name)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
128 security(site_dir,file)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
129 file.mkdir()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
130 return { name = file.name(), path = file.to_string(), children = {} }
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
131 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
132
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
133 function fns.delete_unused(domain,password,path)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
134 local site_dir = get_dir(domain,password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
135 site_dir or error "domain not found"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
136 local file = Io.schemes.file(path)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
137 security(site_dir,file)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
138 return delete_unused(file)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
139 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
140
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
141 function fns.update_handler(domain,password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
142 local site_dir = get_dir(domain,password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
143 site_dir or error "domain not found"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
144 domain = lower(domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
145 WebHandler.removeHandler(domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
146 WebHandler.loadHandler(domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
147 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
148
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
149 function fns.delete(domain,password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
150 local site_dir = get_dir(domain,password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
151 site_dir or error "domain not found"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
152 site_dir.parent().delete()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
153 domain = lower(domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
154 WebHandler.removeHandler(domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
155 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
156
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
157 function fns.exists(domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
158 assert_string(domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
159 domain = lower(domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
160 return sites_dir.child(domain).exists()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
161 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
162
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
163 function fns.change_domain(old_domain,new_domain,password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
164 local old_dir = get_dir(old_domain,password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
165 old_dir or error "domain not found"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
166 old_dir = old_dir.parent()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
167 assert_string(new_domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
168 new_domain = lower(new_domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
169 local new_dir = sites_dir.child(new_domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
170 new_dir.exists() and error "new_domain already exists"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
171 WebHandler.removeHandler(old_domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
172 old_dir.rename_to(new_dir.to_string())
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
173 WebHandler.removeHandler(old_domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
174 WebHandler.loadHandler(new_domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
175 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
176
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
177 function fns.change_password(domain,old_password,new_password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
178 local site_dir = get_dir(domain,old_password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
179 site_dir or error "domain not found"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
180 site_dir.parent().child("password").write(new_password)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
181 WebHandler.removeHandler(domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
182 WebHandler.loadHandler(domain)
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
183 end
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
184
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
185 fns.call = WebHandler.callSite
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
186
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
187 Thread.fork(Rpc.serve)