Mercurial Hosting > luan
annotate core/src/luan/modules/host/Hosting.luan @ 742:5578541125ea
add Hosting.caller()
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Tue, 12 Jul 2016 17:47:30 -0600 |
parents | 6871ba08d521 |
children | 2c41f2aec92f |
rev | line source |
---|---|
276
e5a0dd95f3e7
rename Reactionary to Hosting
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
275
diff
changeset
|
1 -- Hosting |
144
2e92f0a6fcac
add Reactionary.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
2 |
693
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
633
diff
changeset
|
3 local Luan = require "luan:Luan.luan" |
379
e9e445e28f0b
add error checking to Hosting
Franklin Schmidt <fschmidt@gmail.com>
parents:
348
diff
changeset
|
4 local error = Luan.error |
610
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
5 local ipairs = Luan.ipairs or error() |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
6 local pairs = Luan.pairs or error() |
742 | 7 local set_metatable = Luan.set_metatable or error() |
693
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
633
diff
changeset
|
8 local Io = require "luan:Io.luan" |
610
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
9 local print = Io.print or error() |
693
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
633
diff
changeset
|
10 local Rpc = require "luan:Rpc.luan" |
ca169567ce07
module URIs must now include ".luan"
Franklin Schmidt <fschmidt@gmail.com>
parents:
633
diff
changeset
|
11 local String = require "luan:String.luan" |
633
c5baaa525897
don't push hidden files to luanhost
Franklin Schmidt <fschmidt@gmail.com>
parents:
619
diff
changeset
|
12 local matches = String.matches or error() |
610
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
13 |
379
e9e445e28f0b
add error checking to Hosting
Franklin Schmidt <fschmidt@gmail.com>
parents:
348
diff
changeset
|
14 |
503 | 15 local M = {} |
189
fb3993431f76
minor
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
184
diff
changeset
|
16 |
503 | 17 M.port = 9101 |
144
2e92f0a6fcac
add Reactionary.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
18 |
503 | 19 function M.push(domain,password,dir) |
610
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
20 local my_dir = Io.uri("file:"..dir) |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
21 my_dir.exists() or error("directory '"..dir.."' not found") |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
22 my_dir.is_directory() or error("'"..dir.."' is not a directory") |
503 | 23 local socket = "socket:" .. domain .. ":" .. M.port |
610
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
24 local host = Rpc.remote(socket) |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
25 local tree = host.get(domain,password) |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
26 if tree == nil then |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
27 print("creating "..domain) |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
28 tree = host.create(domain,password) |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
29 end |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
30 |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
31 local function process(there_parent,there,here) |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
32 if here.is_file() then |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
33 if there == nil or there.last_modified < here.last_modified() then |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
34 print("copying "..here.to_string()) |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
35 host.copy_file(domain,password,there_parent.path,here.name(),here.read_binary()) |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
36 end |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
37 elseif here.is_directory() then |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
38 if here.name() == "local" then |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
39 return |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
40 end |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
41 if there == nil then |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
42 there = host.mkdir(domain,password,there_parent.path,here.name()) |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
43 end |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
44 for _, here_child in ipairs(here.children()) do |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
45 local name = here_child.name() |
633
c5baaa525897
don't push hidden files to luanhost
Franklin Schmidt <fschmidt@gmail.com>
parents:
619
diff
changeset
|
46 if not matches(name,[[^\.]]) then |
c5baaa525897
don't push hidden files to luanhost
Franklin Schmidt <fschmidt@gmail.com>
parents:
619
diff
changeset
|
47 process(there,there.children[name],here_child) |
c5baaa525897
don't push hidden files to luanhost
Franklin Schmidt <fschmidt@gmail.com>
parents:
619
diff
changeset
|
48 there.children[name] = nil |
c5baaa525897
don't push hidden files to luanhost
Franklin Schmidt <fschmidt@gmail.com>
parents:
619
diff
changeset
|
49 end |
610
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
50 end |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
51 for _, there_child in pairs(there.children) do |
619
cc3a68033179
fix hosting delete logging
Franklin Schmidt <fschmidt@gmail.com>
parents:
615
diff
changeset
|
52 if host.delete_unused(domain,password,there_child.path)==true then -- remove ==true later |
cc3a68033179
fix hosting delete logging
Franklin Schmidt <fschmidt@gmail.com>
parents:
615
diff
changeset
|
53 print("deleted "..there_child.name) |
cc3a68033179
fix hosting delete logging
Franklin Schmidt <fschmidt@gmail.com>
parents:
615
diff
changeset
|
54 end |
610
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
55 end |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
56 else |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
57 error "not file or dir" |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
58 end |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
59 end |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
60 |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
61 process( nil, tree, my_dir ) |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
62 |
716 | 63 host.update_handler(domain,password) |
144
2e92f0a6fcac
add Reactionary.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
64 end |
2e92f0a6fcac
add Reactionary.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
65 |
503 | 66 function M.delete(domain,password) |
67 local socket = "socket:" .. domain .. ":" .. M.port | |
610
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
68 local host = Rpc.remote(socket) |
b4f3dbe1c6e3
add Rpc and change Hosting to use Rpc
Franklin Schmidt <fschmidt@gmail.com>
parents:
503
diff
changeset
|
69 host.delete(domain,password) |
144
2e92f0a6fcac
add Reactionary.luan
fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
parents:
diff
changeset
|
70 end |
503 | 71 |
615
abc3198c86dd
fix tail recursion bug;
Franklin Schmidt <fschmidt@gmail.com>
parents:
610
diff
changeset
|
72 function M.exists(domain) |
abc3198c86dd
fix tail recursion bug;
Franklin Schmidt <fschmidt@gmail.com>
parents:
610
diff
changeset
|
73 local socket = "socket:" .. domain .. ":" .. M.port |
abc3198c86dd
fix tail recursion bug;
Franklin Schmidt <fschmidt@gmail.com>
parents:
610
diff
changeset
|
74 local host = Rpc.remote(socket) |
abc3198c86dd
fix tail recursion bug;
Franklin Schmidt <fschmidt@gmail.com>
parents:
610
diff
changeset
|
75 return host.exists(domain) |
abc3198c86dd
fix tail recursion bug;
Franklin Schmidt <fschmidt@gmail.com>
parents:
610
diff
changeset
|
76 end |
abc3198c86dd
fix tail recursion bug;
Franklin Schmidt <fschmidt@gmail.com>
parents:
610
diff
changeset
|
77 |
724
4f8e30a3ffd0
add Hosting.change_domain()
Franklin Schmidt <fschmidt@gmail.com>
parents:
716
diff
changeset
|
78 function M.change_domain(old_domain,new_domain,password) |
4f8e30a3ffd0
add Hosting.change_domain()
Franklin Schmidt <fschmidt@gmail.com>
parents:
716
diff
changeset
|
79 local socket = "socket:" .. new_domain .. ":" .. M.port |
4f8e30a3ffd0
add Hosting.change_domain()
Franklin Schmidt <fschmidt@gmail.com>
parents:
716
diff
changeset
|
80 local host = Rpc.remote(socket) |
4f8e30a3ffd0
add Hosting.change_domain()
Franklin Schmidt <fschmidt@gmail.com>
parents:
716
diff
changeset
|
81 return host.change_domain(old_domain,new_domain,password) |
4f8e30a3ffd0
add Hosting.change_domain()
Franklin Schmidt <fschmidt@gmail.com>
parents:
716
diff
changeset
|
82 end |
4f8e30a3ffd0
add Hosting.change_domain()
Franklin Schmidt <fschmidt@gmail.com>
parents:
716
diff
changeset
|
83 |
740
6871ba08d521
add Hosting.change_password()
Franklin Schmidt <fschmidt@gmail.com>
parents:
724
diff
changeset
|
84 function M.change_password(domain,old_password,new_password) |
6871ba08d521
add Hosting.change_password()
Franklin Schmidt <fschmidt@gmail.com>
parents:
724
diff
changeset
|
85 local socket = "socket:" .. domain .. ":" .. M.port |
6871ba08d521
add Hosting.change_password()
Franklin Schmidt <fschmidt@gmail.com>
parents:
724
diff
changeset
|
86 local host = Rpc.remote(socket) |
6871ba08d521
add Hosting.change_password()
Franklin Schmidt <fschmidt@gmail.com>
parents:
724
diff
changeset
|
87 return host.change_password(domain,old_password,new_password) |
6871ba08d521
add Hosting.change_password()
Franklin Schmidt <fschmidt@gmail.com>
parents:
724
diff
changeset
|
88 end |
6871ba08d521
add Hosting.change_password()
Franklin Schmidt <fschmidt@gmail.com>
parents:
724
diff
changeset
|
89 |
742 | 90 function M.caller(domain) |
91 local socket = "socket:" .. domain .. ":" .. M.port | |
92 local host = Rpc.remote(socket) | |
93 local mt = {} | |
94 function mt.__index(_,key) | |
95 return function(...) | |
96 return host.call(domain,key,...) | |
97 end | |
98 end | |
99 local t = {} | |
100 set_metatable(t,mt) | |
101 return t | |
102 end | |
103 | |
503 | 104 return M |