dyndoc-ruby 1.3.6 → 1.3.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/dyndoc-world.rb +68 -4
- data/share/html-srv/dyn-html-srv.ru +7 -11
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e134057e655c0154df49f4518d6964d373efd163adde55ac057f734649c677b
|
4
|
+
data.tar.gz: 6f92db285fbbb590d952480e9ba1b8a1fc099c6924861b87a548e097b1188e55
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 673b82c1efc5b4e1f6a16e9f394ff35cba499353050043351c13037ef49e6ee24be0a75acb1d1ef378ad6decf741859aa9b15920eee2f5936b78d6ab17e46417
|
7
|
+
data.tar.gz: d1b541c745c7dab4ee9c8372f71d9f7524c6b438ad8c0d101e5adf6de0a6581b4674f735dbf601daaf0af124cb0466abdb631440d0a708c84a36c298dbe22f60
|
data/lib/dyndoc-world.rb
CHANGED
@@ -1,11 +1,75 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
1
3
|
module DyndocWorld
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
+
@@root=nil
|
6
|
+
@@public=nil
|
7
|
+
|
8
|
+
def DyndocWorld.root(root=nil)
|
9
|
+
@@root=root if root
|
10
|
+
return @@root
|
11
|
+
end
|
12
|
+
|
13
|
+
def DyndocWorld.public_root(public_root=nil)
|
14
|
+
@@public=public_root if public_root
|
15
|
+
return @@public
|
5
16
|
end
|
6
17
|
|
7
|
-
def DyndocWorld.
|
8
|
-
|
18
|
+
def DyndocWorld.cfg(admin=nil)
|
19
|
+
cfg={}
|
20
|
+
secret = File.join(DyndocWorld.root,admin ? ".admin.yml" : ".secret.yml")
|
21
|
+
cfg = YAML::load_file(secret) if DyndocWorld.root and File.exists? secret
|
22
|
+
return cfg
|
9
23
|
end
|
10
24
|
|
25
|
+
## access ##
|
26
|
+
## prj is to give access for a user or a group of users
|
27
|
+
## if prj or prj/secret is undefined it is accessible
|
28
|
+
def DyndocWorld.yml?(prj,yml)
|
29
|
+
admin=(prj=="admin")
|
30
|
+
cfg=DyndocWorld.cfg(admin)
|
31
|
+
cfg=cfg[prj] unless admin
|
32
|
+
return true unless cfg
|
33
|
+
##DEBUG: p [:"yml?", cfg, yml, (cfg and yml and ((cfg["secret"] || "none") == (yml["secret"] || "none")) and yml["file"] and !(yml["file"].include? "../"))]
|
34
|
+
return (cfg and yml and ((cfg["secret"] || "none") == (yml["secret"] || "none")) and yml["file"] and !(yml["file"].include? "../"))
|
35
|
+
end
|
36
|
+
|
37
|
+
## file ##
|
38
|
+
## from yml
|
39
|
+
## ex: public/<user>/<pathname>
|
40
|
+
## edit/<user>/<pathname>
|
41
|
+
## dynworld/<user>/<pathname>
|
42
|
+
def DyndocWorld.prj_file(yml,content)
|
43
|
+
success,prj_file=false,""
|
44
|
+
parts=yml["file"].split("/")
|
45
|
+
p [:parts,parts]
|
46
|
+
root=parts.shift
|
47
|
+
p [:root,root]
|
48
|
+
if ["public","edit","dynworld"].include? root
|
49
|
+
user=parts.shift
|
50
|
+
case root
|
51
|
+
when "public"
|
52
|
+
prj_file=File.join(DyndocWorld.public_root,"users",user)
|
53
|
+
prj_file=(Dir.exists? prj_file) ? File.join(prj_file,parts) : ""
|
54
|
+
when "edit"
|
55
|
+
prj_file=File.join(DyndocWorld.public_root,"users",user,".edit")
|
56
|
+
prj_file=(Dir.exists? prj_file) ? File.join(prj_file,parts) : ""
|
57
|
+
when "dynworld"
|
58
|
+
prj_file=File.join(DyndocWorld.root,user,parts)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
p [:prj_file,prj_file]
|
62
|
+
unless prj_file.empty?
|
63
|
+
FileUtils.mkdir_p File.dirname prj_file
|
64
|
+
File.open(prj_file,"w") {|f|
|
65
|
+
if root == "edit"
|
66
|
+
f << yml.to_yaml
|
67
|
+
f << "---\n"
|
68
|
+
end
|
69
|
+
f << content.strip
|
70
|
+
}
|
71
|
+
success=true
|
72
|
+
end
|
73
|
+
return success
|
74
|
+
end
|
11
75
|
end
|
@@ -10,9 +10,10 @@ cfg.merge! YAML::load_file(cfg_yml) if File.exist? cfg_yml
|
|
10
10
|
root = cfg["root"] || File.join(ENV["HOME"],"RCqls","RodaServer")
|
11
11
|
$public_root = cfg["public_root"] || File.join(root ,"public")
|
12
12
|
##p [:public_root,$public_root]
|
13
|
-
$dynworld_root=cfg["dynworld_root"] || File.join(ENV["HOME"],".dyndoc-world")
|
14
13
|
|
15
14
|
require 'dyndoc-world'
|
15
|
+
DyndocWorld.root(cfg["dynworld_root"] || File.join(ENV["HOME"],".dyndoc-world"))
|
16
|
+
DyndocWorld.public_root($public_root)
|
16
17
|
|
17
18
|
class App < Roda
|
18
19
|
use Rack::Session::Cookie, :secret => (secret="Thanks like!")
|
@@ -42,24 +43,19 @@ class App < Roda
|
|
42
43
|
|
43
44
|
r.post "file-save" do
|
44
45
|
puts "file-save"
|
45
|
-
prj,yml,@
|
46
|
-
p [prj,yml,@
|
46
|
+
prj,yml,@content=r['prj'].strip,r['yml'].strip,r['content']
|
47
|
+
p [prj,yml,@content]
|
47
48
|
success=false
|
48
49
|
unless yml.empty?
|
49
50
|
yml="---\n" + yml unless yml[0,4] == "---\n"
|
50
51
|
yml=YAML::load(yml)
|
51
52
|
p [:yml, yml]
|
52
53
|
require 'fileutils'
|
53
|
-
if
|
54
|
-
|
55
|
-
prj_dir=DyndocWorld.prj_dir(prj,yml)
|
56
|
-
dynworld_file=File.join($dynworld_root,prj_dir,@file)
|
57
|
-
FileUtils.mkdir_p File.dirname dynworld_file
|
58
|
-
File.open(dynworld_file,"w") {|f| f << @content.strip}
|
59
|
-
success=true
|
60
|
-
end
|
54
|
+
if DyndocWorld.yml?(prj,yml)
|
55
|
+
success=DyndocWorld.prj_file(yml,@content)
|
61
56
|
end
|
62
57
|
end
|
58
|
+
p [:success, "{success: " + success.to_s + "}"]
|
63
59
|
"{success: " + success.to_s + "}"
|
64
60
|
end
|
65
61
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dyndoc-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- RCqls
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-12-
|
11
|
+
date: 2019-12-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: R4rb
|