above 0.2.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f7e51e2b89987edc6d43589b7f0cd54c1ac4f5a7fd7e220c563ec468c85f8ea0
4
- data.tar.gz: bb2b4bb89b3a3c23d4e2ba91990c65eae13ce516c69600ce166d7c122a4f1bba
3
+ metadata.gz: 9ea955b114b5c26d8b50b4bca80873886cd27120f93b0db78748260aee0d8be0
4
+ data.tar.gz: 3d55ce5bcb54f9e71486c18cd0f75a05d3abf5591b8dc45248b933712ce6dbb5
5
5
  SHA512:
6
- metadata.gz: 98f9509eccf23022d3d3d05e070c627e175008e4b2adb6951cc822d204e44b0eb459adbfe4753197fd79d1bdb7d0dece715b4ea1e4a808543862540cebf03eff
7
- data.tar.gz: 242ae0538a1c634ddfd2ab6ece8ff9b8061813da931f896be0195424b6f88668204433630c51dd4e5d210993821ef4491122293861841a81e99a6e0da9198913
6
+ metadata.gz: bc3bdf91d67c17ced435b2d0b40fbe1cbf922771823b97a65e565a75d7b9a7e1c470458702d3862e218eaaeda2fa6a3eaa0b99ef078c2481e2422892e276cc32
7
+ data.tar.gz: 6673f6e8a16c040e37e678cb3b0a12ca7f6effc978d19184f7a6b8c2b43ffceb077bb18148a37c419b1670e48ab4eecc6354859bcab54c02c6517e3eb55804c5
checksums.yaml.gz.sig CHANGED
Binary file
data/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # Above Changelog
2
2
 
3
+ ## 0.4.0 - 6 September 2024
4
+
5
+ - breaking change - add ip address as a separate config value for the TCP listener
6
+ - add a Docker example
7
+ - refactor Config from a class to a module
8
+ - reconfigure Standard
9
+ - dependency updates, remove reek, add logger explicitly (leaving the standard library in 3.4)
10
+
11
+ ## 0.3.0 - 27 August 2024
12
+
13
+ - minor refactor, but includes the link to the repo from the Gemspec (sigh)
14
+
3
15
  ## 0.2.0 - 24 August 2024
4
16
 
5
17
  - Initial release
data/bin/above CHANGED
@@ -1,9 +1,10 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
4
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), "..", "lib")
5
5
 
6
- require 'bundler/setup'
7
- require 'above/cli'
6
+ require "bundler"
7
+ require "bundler/setup"
8
+ require "above/cli"
8
9
 
9
10
  Above::CLI.new.start
data/bin/console CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'bundler/setup'
5
- require 'above'
4
+ require "bundler/setup"
5
+ require "above"
6
6
 
7
7
  # You can add fixtures and/or initialization code here to make experimenting
8
8
  # with your gem easier. You can also use a different console, if you like.
@@ -11,5 +11,5 @@ require 'above'
11
11
  # require "pry"
12
12
  # Pry.start
13
13
 
14
- require 'irb'
14
+ require "irb"
15
15
  IRB.start
data/lib/above/cli.rb CHANGED
@@ -4,6 +4,7 @@ require "optparse"
4
4
  require_relative "certs"
5
5
  require_relative "config"
6
6
  require_relative "server"
7
+ require_relative "version"
7
8
 
8
9
  module Above
9
10
  # CLI handled by optparse
@@ -75,8 +76,9 @@ module Above
75
76
  def start_server
76
77
  return unless @options[:server]
77
78
  dir = @options[:dir]
78
- config = Above::Config.new.read_config(dir:)
79
- config.each_pair do |server_name, server_hash|
79
+ Above::Config.init_dir unless dir
80
+ domains = Above::Config.read_config(dir:)
81
+ domains.each_pair do |server_name, server_hash|
80
82
  puts "Starting #{server_name}"
81
83
  server = Above::Server.new(config: server_hash)
82
84
  server.start
data/lib/above/config.rb CHANGED
@@ -7,21 +7,20 @@ require_relative "utils"
7
7
 
8
8
  module Above
9
9
  # Persist & use configuration
10
- class Config
11
- attr_reader :domains
12
-
13
- def self.config_dir
10
+ module Config
11
+ def config_dir
14
12
  File.join(Utils.home_dir, ".config/above")
15
13
  end
16
14
 
17
- def self.domains_dir
15
+ def domains_dir
18
16
  File.join(Config.config_dir, "domains")
19
17
  end
20
18
 
21
- def self.exemplar
19
+ def exemplar
22
20
  {
23
21
  "server" => {
24
22
  "domain" => "localhost",
23
+ "ip" => "0.0.0.0",
25
24
  "max_fibers" => 20,
26
25
  "port" => 1965,
27
26
  "tls_cert" => "/home/above/localhost.crt",
@@ -56,12 +55,8 @@ module Above
56
55
  }
57
56
  end
58
57
 
59
- def initialize
60
- init_dir
61
- end
62
-
63
58
  def init_dir
64
- if !File.exist?(Config.domains_dir)
59
+ unless File.exist?(Config.domains_dir)
65
60
  FileUtils.mkdir_p(Config.domains_dir)
66
61
  File.write(File.join(Config.config_dir, "example.yml"), Config.exemplar.to_yaml)
67
62
  puts "Configuration directory created"
@@ -74,7 +69,7 @@ module Above
74
69
 
75
70
  def read_config(dir: nil)
76
71
  dir ||= Config.domains_dir
77
- files = Dir[File.join(dir, "**/*.yml")]
72
+ files = Dir[File.join(dir, "*.yml")] # not subfolders
78
73
  domains = {}
79
74
  files.each do |file|
80
75
  hash = YAML.safe_load_file(file, permitted_classes: [Hash])
@@ -89,5 +84,7 @@ module Above
89
84
  end
90
85
  domains
91
86
  end
87
+
88
+ module_function :config_dir, :domains_dir, :exemplar, :init_dir, :read_config
92
89
  end
93
90
  end
@@ -60,7 +60,7 @@ module Above
60
60
  end
61
61
 
62
62
  def write(msg)
63
- # Standard library logger doesn't support write but it supports << which actually
63
+ # Standard library logger (to be removed in 3.4) doesn't support write but it supports << which actually
64
64
  # calls to write on the log device without formatting
65
65
  if @logger.respond_to?(:write)
66
66
  @logger.write(msg)
data/lib/above/server.rb CHANGED
@@ -128,7 +128,7 @@ module Above
128
128
  end
129
129
 
130
130
  def tls_server
131
- tcp_server = TCPServer.new(@server_config["domain"], @server_config["port"])
131
+ tcp_server = TCPServer.new(@server_config["ip"], @server_config["port"])
132
132
  ssl_ctx = OpenSSL::SSL::SSLContext.new.tap do |ctx|
133
133
  ctx.key = OpenSSL::PKey::EC.new(
134
134
  File.read(
data/lib/above/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Above
4
- VERSION = "0.2.0"
4
+ VERSION = "0.4.0"
5
5
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: above
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Kreuzer
@@ -35,7 +35,7 @@ cert_chain:
35
35
  YgqTixCwts6cQYIdYNFtJbzKvRNqyviKKxPaum7UWAv6Uy80gxgJ8p+fG81FsxbZ
36
36
  0ULnXrHlhf/CHs550TxRlXalgxBCImGdHzWjhdJeC1dZP3olgNtjO23ywtw=
37
37
  -----END CERTIFICATE-----
38
- date: 2024-08-24 00:00:00.000000000 Z
38
+ date: 2024-09-06 00:00:00.000000000 Z
39
39
  dependencies:
40
40
  - !ruby/object:Gem::Dependency
41
41
  name: async
@@ -51,6 +51,26 @@ dependencies:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
53
  version: '2.15'
54
+ - !ruby/object:Gem::Dependency
55
+ name: logger
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.6'
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: 1.6.1
64
+ type: :runtime
65
+ prerelease: false
66
+ version_requirements: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '1.6'
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 1.6.1
54
74
  - !ruby/object:Gem::Dependency
55
75
  name: marcel
56
76
  requirement: !ruby/object:Gem::Requirement
@@ -110,14 +130,14 @@ files:
110
130
  - lib/above/status.rb
111
131
  - lib/above/utils.rb
112
132
  - lib/above/version.rb
113
- homepage: https://codeberg.org/kreuzer/kreuzer/above
133
+ homepage: https://codeberg.org/kreuzer/above
114
134
  licenses:
115
135
  - AGPL-3.0-or-later
116
136
  metadata:
117
- changelog_uri: https://codeberg.org/kreuzer/kreuzer/above/src/branch/main/CHANGELOG.md
118
- homepage_uri: https://codeberg.org/kreuzer/kreuzer/above
137
+ changelog_uri: https://codeberg.org/kreuzer/above/src/branch/main/CHANGELOG.md
138
+ homepage_uri: https://codeberg.org/kreuzer/above
119
139
  rubygems_mfa_required: 'true'
120
- source_code_uri: https://codeberg.org/kreuzer/kreuzer/above
140
+ source_code_uri: https://codeberg.org/kreuzer/above
121
141
  post_install_message:
122
142
  rdoc_options: []
123
143
  require_paths:
metadata.gz.sig CHANGED
Binary file