annotate src/luan/host/init.luan @ 1407:1979cff9aad2

add sql/Web_query
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 20 Sep 2019 17:00:30 -0600
parents 8fe777ba5045
children 4abf88ec66de
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 local Luan = require "luan:Luan.luan"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
2 local error = Luan.error
1238
3d29033de2bf changes for https
Franklin Schmidt <fschmidt@gmail.com>
parents: 1235
diff changeset
3 local do_file = Luan.do_file or error()
1135
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
4 local String = require "luan:String.luan"
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
5 local gsub = String.gsub or error()
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
6
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
7
1392
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
8 local dir, domain = ...
1135
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
9
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
10
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
11 -- logging
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
12
1392
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
13 do
1353
8d95711f6615 replace java() with require "java"
Franklin Schmidt <fschmidt@gmail.com>
parents: 1351
diff changeset
14 require "java"
1332
11b7e11f9ed5 cleaner logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1330
diff changeset
15 local Log4j = require "java:luan.modules.logging.Log4j"
1321
307e76ccd0d6 generalize separate logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1315
diff changeset
16 local Level = require "java:org.apache.log4j.Level"
307e76ccd0d6 generalize separate logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1315
diff changeset
17 local EnhancedPatternLayout = require "java:org.apache.log4j.EnhancedPatternLayout"
307e76ccd0d6 generalize separate logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1315
diff changeset
18 local RollingFileAppender = require "java:org.apache.log4j.RollingFileAppender"
1365
6617763dfd76 fix logging and lucene backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1353
diff changeset
19
1332
11b7e11f9ed5 cleaner logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1330
diff changeset
20 local logger = Log4j.getRootLogger()
1365
6617763dfd76 fix logging and lucene backup
Franklin Schmidt <fschmidt@gmail.com>
parents: 1353
diff changeset
21 Log4j.removeAllAppenders(logger)
1321
307e76ccd0d6 generalize separate logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1315
diff changeset
22 local layout = EnhancedPatternLayout.new("%d %-5p %c - %m%n")
1199
3995cbe5b00a simplify logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1185
diff changeset
23 local log_dir = dir.."/site/private/local/logs/"
1135
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
24
1199
3995cbe5b00a simplify logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1185
diff changeset
25 local function add_appender(file,level)
3995cbe5b00a simplify logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1185
diff changeset
26 local appender = RollingFileAppender.new(layout, log_dir..file)
3995cbe5b00a simplify logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1185
diff changeset
27 appender.setMaxFileSize("1MB")
3995cbe5b00a simplify logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1185
diff changeset
28 logger.addAppender(appender)
3995cbe5b00a simplify logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1185
diff changeset
29 if level ~= logger.getEffectiveLevel() then
3995cbe5b00a simplify logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1185
diff changeset
30 appender.setThreshold(level)
3995cbe5b00a simplify logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1185
diff changeset
31 end
3995cbe5b00a simplify logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1185
diff changeset
32 end
1135
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
33
1199
3995cbe5b00a simplify logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1185
diff changeset
34 add_appender("error.log",Level.ERROR)
3995cbe5b00a simplify logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1185
diff changeset
35 add_appender("warn.log",Level.WARN)
3995cbe5b00a simplify logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1185
diff changeset
36 add_appender("info.log",Level.INFO)
1135
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
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
39
1235
22228c12b6dd fix luanhost thread logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1199
diff changeset
40 -- set vars
22228c12b6dd fix luanhost thread logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1199
diff changeset
41
22228c12b6dd fix luanhost thread logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1199
diff changeset
42 local Io = require "luan:Io.luan"
22228c12b6dd fix luanhost thread logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1199
diff changeset
43 local Http = require "luan:http/Http.luan"
22228c12b6dd fix luanhost thread logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1199
diff changeset
44 local Hosting = require "luan:host/Hosting.luan"
22228c12b6dd fix luanhost thread logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1199
diff changeset
45 local Mail = require "luan:mail/Mail.luan"
22228c12b6dd fix luanhost thread logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1199
diff changeset
46
1330
f41919741100 fix security
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
47 Io.password = do_file(dir.."/info.luan").password or error()
1235
22228c12b6dd fix luanhost thread logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1199
diff changeset
48
22228c12b6dd fix luanhost thread logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1199
diff changeset
49 Http.dir = "file:"..dir.."/site"
22228c12b6dd fix luanhost thread logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1199
diff changeset
50
22228c12b6dd fix luanhost thread logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1199
diff changeset
51 function Io.schemes.site(path,loading)
22228c12b6dd fix luanhost thread logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1199
diff changeset
52 return Io.uri( Http.dir..path, loading )
22228c12b6dd fix luanhost thread logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1199
diff changeset
53 end
22228c12b6dd fix luanhost thread logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1199
diff changeset
54
1315
5763597ca5c0 add DomainHandler
Franklin Schmidt <fschmidt@gmail.com>
parents: 1312
diff changeset
55 Http.domain = domain
1235
22228c12b6dd fix luanhost thread logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1199
diff changeset
56
22228c12b6dd fix luanhost thread logging
Franklin Schmidt <fschmidt@gmail.com>
parents: 1199
diff changeset
57
1135
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
58 -- mail - fix later
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
59
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
60 Hosting.send_mail = Mail.Sender{
1312
Franklin Schmidt <fschmidt@gmail.com>
parents: 1239
diff changeset
61 host = "smtpcorp.com"
Franklin Schmidt <fschmidt@gmail.com>
parents: 1239
diff changeset
62 username = "smtp@luan.ws" -- ?
Franklin Schmidt <fschmidt@gmail.com>
parents: 1239
diff changeset
63 password = "luanhost"
Franklin Schmidt <fschmidt@gmail.com>
parents: 1239
diff changeset
64 port = 2525
1135
707a5d874f3e add luan.host
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
65 }.send
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
1392
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
68
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
69
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
70 -- postgres
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
71
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
72 local Sql = require "luan:sql/Sql.luan"
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
73 local database = Sql.database or error()
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
74 local Logging = require "luan:logging/Logging.luan"
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
75 local logger = Logging.logger "init"
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
76
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
77 local fn = Luan.load_file("file:postgres.luan") or error()
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
78 local pg = fn()
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
79
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
80 function Hosting.postgres_spec()
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
81 if pg == nil then
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
82 return nil
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
83 end
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
84 local spec = {
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
85 class = "org.postgresql.Driver"
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
86 url = "jdbc:postgresql://localhost:5432/"..domain
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
87 user = domain
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
88 password = Io.password
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
89 }
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
90 local db = database(pg)
1407
1979cff9aad2 add sql/Web_query
Franklin Schmidt <fschmidt@gmail.com>
parents: 1394
diff changeset
91 local exists = db.query("select datname from pg_database where datname=?",domain).results() ~= nil;
1394
8fe777ba5045 change postgres password
Franklin Schmidt <fschmidt@gmail.com>
parents: 1393
diff changeset
92 --logger.info("exists "..exists)
1392
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
93 if not exists then
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
94 db.update( [[create user "]]..spec.user..[[" with encrypted password ']]..spec.password..[[']] )
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
95 db.update( [[create database "]]..domain..[[" owner "]]..spec.user..[["]] )
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
96 end
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
97 db.close()
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
98 return spec
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
99 end
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
100
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
101
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
102
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
103
002152af497a hosted postgres
Franklin Schmidt <fschmidt@gmail.com>
parents: 1365
diff changeset
104
1238
3d29033de2bf changes for https
Franklin Schmidt <fschmidt@gmail.com>
parents: 1235
diff changeset
105 -- callback to luanhost code
3d29033de2bf changes for https
Franklin Schmidt <fschmidt@gmail.com>
parents: 1235
diff changeset
106 do_file "file:init.luan"
3d29033de2bf changes for https
Franklin Schmidt <fschmidt@gmail.com>
parents: 1235
diff changeset
107
3d29033de2bf changes for https
Franklin Schmidt <fschmidt@gmail.com>
parents: 1235
diff changeset
108
1330
f41919741100 fix security
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
109
1353
8d95711f6615 replace java() with require "java"
Franklin Schmidt <fschmidt@gmail.com>
parents: 1351
diff changeset
110 require "java"
1330
f41919741100 fix security
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
111 local WebHandler = require "java:luan.host.WebHandler"
f41919741100 fix security
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
112 local LuanJava = require "java:luan.Luan"
f41919741100 fix security
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
113
f41919741100 fix security
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
114 function Hosting.no_security(password)
f41919741100 fix security
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
115 WebHandler.securityPassword == password or error "wrong password"
f41919741100 fix security
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
116 LuanJava.setSecurity(nil)
f41919741100 fix security
Franklin Schmidt <fschmidt@gmail.com>
parents: 1321
diff changeset
117 end
1351
21b153b4bcc4 better reset_luan for luanhost
Franklin Schmidt <fschmidt@gmail.com>
parents: 1332
diff changeset
118
21b153b4bcc4 better reset_luan for luanhost
Franklin Schmidt <fschmidt@gmail.com>
parents: 1332
diff changeset
119 function Http.reset_luan()
21b153b4bcc4 better reset_luan for luanhost
Franklin Schmidt <fschmidt@gmail.com>
parents: 1332
diff changeset
120 WebHandler.removeHandler(domain)
21b153b4bcc4 better reset_luan for luanhost
Franklin Schmidt <fschmidt@gmail.com>
parents: 1332
diff changeset
121 end