waylon-core 0.1.5 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 443bc0d5a5a87010e8c006d2882631ef323ed5c06ed343e6ca1f5cb080042c33
4
- data.tar.gz: 10812a5cd59babb662a9ef73f0c68146c2e736605f383047e08150375057c78a
3
+ metadata.gz: 628f00817729895a327ec3adff832ba15fdb071da3762a061eb637b0492b2953
4
+ data.tar.gz: 17276d8b5acbdaf2b5c90766329d53ec8fe42d0afae64f7aa062ad0a4cb1a381
5
5
  SHA512:
6
- metadata.gz: a2a5f869c3bec9cac04882f15b6d5241468d88bdc2c6d3c205f6db920041f6837c719dbf21812fb450d4a1024819391cbbf184aece064a3eeebea2ef2d8dde22
7
- data.tar.gz: de895fbc4f2718a3c5f016f3f76fbe6d2abcfa22885a2a0bfc84968c937a60403e7b8b2394e6e911bf170c05d6d075daa97588420eced57978b7dad157570991
6
+ metadata.gz: 6724d7e8ee142b43534ca17fd53d729272d83ab0f6e5f3ef0cf1b07ac63a552bc8393a167b1d6f324cf809fd27bb88f6379375929f130481a16b1ef69f24068e
7
+ data.tar.gz: 800fa36240abe3b85afc58951efa01c519fa6802d74d9fe92a67eb5719e3d25dfc2348f6d38dc347be7ccf9d6c7c1a6e4f4ca92d3117c04775a67ed151295a3e
data/Gemfile.lock CHANGED
@@ -1,13 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- waylon-core (0.1.5)
4
+ waylon-core (0.1.9)
5
5
  addressable (~> 2.8)
6
6
  faraday (~> 1.8)
7
7
  i18n (~> 1.8)
8
8
  json (~> 2.6)
9
9
  moneta (~> 1.4)
10
10
  puma (~> 5.5)
11
+ rbnacl (~> 7.1)
11
12
  resque (~> 2.2)
12
13
 
13
14
  GEM
@@ -42,13 +43,14 @@ GEM
42
43
  faraday-patron (1.0.0)
43
44
  faraday-rack (1.0.0)
44
45
  faraday-retry (1.0.3)
46
+ ffi (1.15.5)
45
47
  i18n (1.10.0)
46
48
  concurrent-ruby (~> 1.0)
47
49
  json (2.6.2)
48
50
  moneta (1.5.1)
49
51
  mono_logger (1.1.1)
50
52
  multi_json (1.15.0)
51
- multipart-post (2.2.0)
53
+ multipart-post (2.2.3)
52
54
  mustermann (1.1.1)
53
55
  ruby2_keywords (~> 0.0.1)
54
56
  nio4r (2.5.8)
@@ -63,6 +65,8 @@ GEM
63
65
  rack
64
66
  rainbow (3.1.1)
65
67
  rake (13.0.6)
68
+ rbnacl (7.1.1)
69
+ ffi
66
70
  redis (4.6.0)
67
71
  redis-namespace (1.8.2)
68
72
  redis (>= 3.0.4)
@@ -127,7 +127,7 @@ module Waylon
127
127
  end
128
128
 
129
129
  # A wrapper for accessing the persistent storage
130
- # @return [Waylon::Storage] The Storage wrapper class
130
+ # @return [Waylon::Storage] The Storage wrapper module
131
131
  def storage
132
132
  Waylon::Storage
133
133
  end
data/lib/waylon/config.rb CHANGED
@@ -32,11 +32,10 @@ module Waylon
32
32
 
33
33
  # Load in the config from env variables
34
34
  # @return [Boolean] Was the configuration loaded?
35
- def load_env # rubocop:disable Metrics/AbcSize
35
+ def load_env
36
36
  @schema ||= {}
37
37
  self["global.log.level"] = ENV.fetch("LOG_LEVEL", "info")
38
- self["global.redis.host"] = ENV.fetch("REDIS_HOST", "redis")
39
- self["global.redis.port"] = ENV.fetch("REDIS_PORT", "6379")
38
+ self["global.redis"] = ENV.fetch("REDIS", "localhost:6379")
40
39
  self["global.admins"] = ENV.fetch("GLOBAL_ADMINS", "")
41
40
  ENV.keys.grep(/CONF_/).each do |env_key|
42
41
  conf_key = env_key.downcase.split("_")[1..].join(".")
@@ -49,13 +48,13 @@ module Waylon
49
48
  # Provides the redis host used for most of Waylon's brain
50
49
  # @return [String] The redis host
51
50
  def redis_host
52
- self["global.redis.host"]
51
+ self["global.redis"].split(":").first
53
52
  end
54
53
 
55
54
  # Provides the redis port used for most of Waylon's brain
56
55
  # @return [String] The redis host
57
56
  def redis_port
58
- self["global.redis.port"]
57
+ self["global.redis"].split(":").last
59
58
  end
60
59
 
61
60
  # Clear the configuration
data/lib/waylon/core.rb CHANGED
@@ -21,6 +21,7 @@ require "faraday"
21
21
  require "i18n"
22
22
  require "json"
23
23
  require "moneta"
24
+ require "rbnacl"
24
25
  require "resque"
25
26
  require "sinatra"
26
27
 
@@ -32,6 +33,7 @@ require "waylon/exceptions/not_implemented_error"
32
33
  require "waylon/exceptions/validation_error"
33
34
  require "waylon/group"
34
35
  require "waylon/logger"
36
+ require "waylon/storage"
35
37
  require "waylon/base_component"
36
38
  require "waylon/condition"
37
39
  require "waylon/message"
@@ -20,7 +20,7 @@ config = Waylon::Config.instance
20
20
  config.load_env
21
21
 
22
22
  Waylon::Cache = Moneta.new(:Cookie)
23
- Waylon::Storage = Moneta.new(:LRUHash)
23
+ p Waylon::Storage
24
24
  Waylon::Logger.log("Found Global Admins: #{config.admins}")
25
25
 
26
26
  Waylon::RSpec::TestUser.find_or_create(
data/lib/waylon/rspec.rb CHANGED
@@ -47,4 +47,4 @@ module Waylon
47
47
  end
48
48
 
49
49
  Waylon::Cache = Moneta.new(:Cookie)
50
- Waylon::Storage = Moneta.new(:Cookie)
50
+ Waylon::Storage::Store = Moneta.new(:Cookie)
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ Waylon::Cache = Moneta.new(
4
+ :Redis,
5
+ url: "redis://#{ENV.fetch("REDIS", "localhost:6379")}/1"
6
+ )
7
+
8
+ module Waylon
9
+ # Used for working with the Moneta store
10
+ module Storage
11
+ Store = Moneta.new(
12
+ :Redis,
13
+ url: "redis://#{ENV.fetch("REDIS", "localhost:6379")}/2"
14
+ )
15
+
16
+ def self.cipher
17
+ key_bytes = RbNaCl::Hash.sha256(ENV.fetch("ENCRYPTION_KEY", "thisisVeryUnsafe4U"))[0..31]
18
+ RbNaCl::SimpleBox.from_secret_key(key_bytes)
19
+ end
20
+
21
+ def self.clear
22
+ Store.clear
23
+ end
24
+
25
+ def self.key?(name)
26
+ Store.key?(name)
27
+ end
28
+
29
+ def self.load(key)
30
+ this_cipher = cipher
31
+ raw = Store.load(key)
32
+ return nil unless raw
33
+
34
+ decoded = Base64.decode64(raw)
35
+ plain = this_cipher.decrypt(decoded)
36
+ JSON.parse(plain)
37
+ end
38
+
39
+ def self.store(key, value)
40
+ this_cipher = cipher
41
+ encrypted = this_cipher.encrypt(value.to_json)
42
+ encoded = Base64.encode64(encrypted)
43
+ Store.store(key, encoded)
44
+ end
45
+ end
46
+ end
@@ -6,7 +6,7 @@ module Waylon
6
6
  VERSION = [
7
7
  0, # Major
8
8
  1, # Minor
9
- 5 # Patch
9
+ 9 # Patch
10
10
  ].join(".")
11
11
  end
12
12
  end
data/scripts/release.sh CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/bin/sh
2
2
 
3
+ apt-get update && apt-get install -y libsodium-dev
4
+
3
5
  gem install bundler -v '~> 2.3'
4
6
  bundle install
5
7
  rm -rf pkg/*.gem
data/scripts/test.sh CHANGED
@@ -1,5 +1,7 @@
1
1
  #!/bin/sh
2
2
 
3
+ apt-get update && apt-get install -y libsodium-dev
4
+
3
5
  gem install bundler -v '~> 2.3'
4
6
  bundle install
5
7
  bundle exec rake
data/waylon-core.gemspec CHANGED
@@ -33,6 +33,7 @@ Gem::Specification.new do |spec|
33
33
  spec.add_dependency "json", "~> 2.6"
34
34
  spec.add_dependency "moneta", "~> 1.4"
35
35
  spec.add_dependency "puma", "~> 5.5"
36
+ spec.add_dependency "rbnacl", "~> 7.1"
36
37
  spec.add_dependency "resque", "~> 2.2"
37
38
 
38
39
  spec.add_development_dependency "bundler", "~> 2.3"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: waylon-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.5
4
+ version: 0.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Gnagy
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-06-07 00:00:00.000000000 Z
11
+ date: 2022-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: addressable
@@ -94,6 +94,20 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: '5.5'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rbnacl
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '7.1'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '7.1'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: resque
99
113
  requirement: !ruby/object:Gem::Requirement
@@ -283,6 +297,7 @@ files:
283
297
  - lib/waylon/skills/fun.rb
284
298
  - lib/waylon/skills/groups.rb
285
299
  - lib/waylon/skills/help.rb
300
+ - lib/waylon/storage.rb
286
301
  - lib/waylon/user.rb
287
302
  - lib/waylon/version.rb
288
303
  - lib/waylon/webhook.rb