itsi 0.2.25 → 0.2.27.rc1

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.
Files changed (111) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +6 -3
  3. data/Cargo.lock +940 -988
  4. data/Cargo.toml +0 -1
  5. data/Dockerfile +2 -2
  6. data/Rakefile +24 -7
  7. data/crates/itsi_acme/Cargo.toml +2 -1
  8. data/crates/itsi_acme/src/acceptor.rs +1 -1
  9. data/crates/itsi_acme/src/acme.rs +31 -3
  10. data/crates/itsi_acme/src/http_challenge.rs +81 -0
  11. data/crates/itsi_acme/src/https_helper.rs +3 -1
  12. data/crates/itsi_acme/src/jose.rs +6 -2
  13. data/crates/itsi_acme/src/lib.rs +2 -0
  14. data/crates/itsi_acme/src/resolver.rs +27 -4
  15. data/crates/itsi_acme/src/state.rs +183 -22
  16. data/crates/itsi_scheduler/Cargo.toml +1 -1
  17. data/crates/itsi_scheduler/src/itsi_scheduler.rs +115 -64
  18. data/crates/itsi_scheduler/src/lib.rs +2 -1
  19. data/crates/itsi_server/Cargo.lock +2 -2
  20. data/crates/itsi_server/Cargo.toml +2 -1
  21. data/crates/itsi_server/src/lib.rs +15 -0
  22. data/crates/itsi_server/src/ruby_types/itsi_http_request.rs +9 -0
  23. data/crates/itsi_server/src/ruby_types/itsi_http_response.rs +95 -0
  24. data/crates/itsi_server/src/ruby_types/itsi_server/itsi_server_config.rs +22 -1
  25. data/crates/itsi_server/src/ruby_types/itsi_server.rs +100 -0
  26. data/crates/itsi_server/src/server/binds/listener.rs +9 -24
  27. data/crates/itsi_server/src/server/binds/tls.rs +372 -67
  28. data/crates/itsi_server/src/services/itsi_http_service.rs +46 -2
  29. data/gems/scheduler/Cargo.lock +940 -988
  30. data/gems/scheduler/Cargo.toml +0 -1
  31. data/gems/scheduler/Gemfile +8 -2
  32. data/gems/scheduler/Gemfile.lock +107 -0
  33. data/gems/scheduler/Rakefile +33 -9
  34. data/gems/scheduler/itsi-scheduler.gemspec +0 -2
  35. data/gems/scheduler/lib/itsi/scheduler/version.rb +1 -1
  36. data/gems/scheduler/lib/itsi/scheduler.rb +121 -6
  37. data/gems/scheduler/test/helpers/test_helper.rb +2 -0
  38. data/gems/scheduler/test/test_address_resolve.rb +8 -2
  39. data/gems/scheduler/test/test_itsi_scheduler.rb +80 -0
  40. data/gems/scheduler/test/test_timeout_after.rb +102 -0
  41. data/gems/server/Cargo.lock +940 -988
  42. data/gems/server/Cargo.toml +0 -1
  43. data/gems/server/Gemfile +2 -0
  44. data/gems/server/Gemfile.lock +123 -0
  45. data/gems/server/Rakefile +18 -5
  46. data/gems/server/itsi-server.gemspec +0 -2
  47. data/gems/server/lib/itsi/http_request.rb +10 -0
  48. data/gems/server/lib/itsi/server/rack_interface.rb +45 -2
  49. data/gems/server/lib/itsi/server/version.rb +1 -1
  50. data/gems/server/lib/itsi/server.rb +24 -0
  51. data/gems/server/test/acme/local_acme_challenges.rb +190 -0
  52. data/gems/server/test/helpers/local_acme.rb +218 -0
  53. data/gems/server/test/helpers/test_helper.rb +7 -11
  54. data/gems/server/test/middleware/endpoint.rb +9 -6
  55. data/gems/server/test/rack/test_rack_server.rb +79 -0
  56. data/lib/itsi/version.rb +1 -1
  57. metadata +11 -59
  58. data/gems/scheduler/vendor/rb-sys-build/.cargo-ok +0 -1
  59. data/gems/scheduler/vendor/rb-sys-build/.cargo_vcs_info.json +0 -6
  60. data/gems/scheduler/vendor/rb-sys-build/Cargo.lock +0 -294
  61. data/gems/scheduler/vendor/rb-sys-build/Cargo.toml +0 -71
  62. data/gems/scheduler/vendor/rb-sys-build/Cargo.toml.orig +0 -32
  63. data/gems/scheduler/vendor/rb-sys-build/LICENSE-APACHE +0 -190
  64. data/gems/scheduler/vendor/rb-sys-build/LICENSE-MIT +0 -21
  65. data/gems/scheduler/vendor/rb-sys-build/src/bindings/sanitizer.rs +0 -185
  66. data/gems/scheduler/vendor/rb-sys-build/src/bindings/stable_api.rs +0 -247
  67. data/gems/scheduler/vendor/rb-sys-build/src/bindings/wrapper.h +0 -71
  68. data/gems/scheduler/vendor/rb-sys-build/src/bindings.rs +0 -280
  69. data/gems/scheduler/vendor/rb-sys-build/src/cc.rs +0 -421
  70. data/gems/scheduler/vendor/rb-sys-build/src/lib.rs +0 -12
  71. data/gems/scheduler/vendor/rb-sys-build/src/rb_config/flags.rs +0 -101
  72. data/gems/scheduler/vendor/rb-sys-build/src/rb_config/library.rs +0 -132
  73. data/gems/scheduler/vendor/rb-sys-build/src/rb_config/search_path.rs +0 -57
  74. data/gems/scheduler/vendor/rb-sys-build/src/rb_config.rs +0 -906
  75. data/gems/scheduler/vendor/rb-sys-build/src/utils.rs +0 -53
  76. data/gems/server/vendor/rb-sys-build/.cargo-ok +0 -1
  77. data/gems/server/vendor/rb-sys-build/.cargo_vcs_info.json +0 -6
  78. data/gems/server/vendor/rb-sys-build/Cargo.lock +0 -294
  79. data/gems/server/vendor/rb-sys-build/Cargo.toml +0 -71
  80. data/gems/server/vendor/rb-sys-build/Cargo.toml.orig +0 -32
  81. data/gems/server/vendor/rb-sys-build/LICENSE-APACHE +0 -190
  82. data/gems/server/vendor/rb-sys-build/LICENSE-MIT +0 -21
  83. data/gems/server/vendor/rb-sys-build/src/bindings/sanitizer.rs +0 -185
  84. data/gems/server/vendor/rb-sys-build/src/bindings/stable_api.rs +0 -247
  85. data/gems/server/vendor/rb-sys-build/src/bindings/wrapper.h +0 -71
  86. data/gems/server/vendor/rb-sys-build/src/bindings.rs +0 -280
  87. data/gems/server/vendor/rb-sys-build/src/cc.rs +0 -421
  88. data/gems/server/vendor/rb-sys-build/src/lib.rs +0 -12
  89. data/gems/server/vendor/rb-sys-build/src/rb_config/flags.rs +0 -101
  90. data/gems/server/vendor/rb-sys-build/src/rb_config/library.rs +0 -132
  91. data/gems/server/vendor/rb-sys-build/src/rb_config/search_path.rs +0 -57
  92. data/gems/server/vendor/rb-sys-build/src/rb_config.rs +0 -906
  93. data/gems/server/vendor/rb-sys-build/src/utils.rs +0 -53
  94. data/vendor/rb-sys-build/.cargo-ok +0 -1
  95. data/vendor/rb-sys-build/.cargo_vcs_info.json +0 -6
  96. data/vendor/rb-sys-build/Cargo.lock +0 -294
  97. data/vendor/rb-sys-build/Cargo.toml +0 -71
  98. data/vendor/rb-sys-build/Cargo.toml.orig +0 -32
  99. data/vendor/rb-sys-build/LICENSE-APACHE +0 -190
  100. data/vendor/rb-sys-build/LICENSE-MIT +0 -21
  101. data/vendor/rb-sys-build/src/bindings/sanitizer.rs +0 -185
  102. data/vendor/rb-sys-build/src/bindings/stable_api.rs +0 -247
  103. data/vendor/rb-sys-build/src/bindings/wrapper.h +0 -71
  104. data/vendor/rb-sys-build/src/bindings.rs +0 -280
  105. data/vendor/rb-sys-build/src/cc.rs +0 -421
  106. data/vendor/rb-sys-build/src/lib.rs +0 -12
  107. data/vendor/rb-sys-build/src/rb_config/flags.rs +0 -101
  108. data/vendor/rb-sys-build/src/rb_config/library.rs +0 -132
  109. data/vendor/rb-sys-build/src/rb_config/search_path.rs +0 -57
  110. data/vendor/rb-sys-build/src/rb_config.rs +0 -906
  111. data/vendor/rb-sys-build/src/utils.rs +0 -53
@@ -1,101 +0,0 @@
1
- /// Some helper functionality around shell flags
2
- pub struct Flags<'a> {
3
- inner: &'a str,
4
- }
5
-
6
- impl<'a> Flags<'a> {
7
- /// Creates a new `Flags` instance
8
- pub fn new(inner: &'a str) -> Self {
9
- Self { inner }
10
- }
11
- }
12
-
13
- /// Iterates over a string of flags
14
- impl<'a> Iterator for Flags<'a> {
15
- type Item = &'a str;
16
-
17
- fn next(&mut self) -> Option<Self::Item> {
18
- let mut last_was_space = false;
19
-
20
- let last_idx = self
21
- .inner
22
- .chars()
23
- .by_ref()
24
- .take_while(|c| match c {
25
- '-' => {
26
- if last_was_space {
27
- false
28
- } else {
29
- last_was_space = false;
30
- true
31
- }
32
- }
33
- ' ' => {
34
- last_was_space = true;
35
-
36
- true
37
- }
38
- _ => {
39
- last_was_space = false;
40
- true
41
- }
42
- })
43
- .count();
44
-
45
- let buf = &self.inner[..last_idx].trim();
46
-
47
- if buf.is_empty() {
48
- None
49
- } else {
50
- self.inner = self.inner[last_idx..].trim();
51
- Some(buf)
52
- }
53
- }
54
- }
55
-
56
- #[cfg(test)]
57
- mod tests {
58
- use super::*;
59
-
60
- #[test]
61
- fn test_basic_flags() {
62
- let mut flags = Flags::new("--foo --bar -baz");
63
-
64
- assert_eq!(flags.next(), Some("--foo"));
65
- assert_eq!(flags.next(), Some("--bar"));
66
- assert_eq!(flags.next(), Some("-baz"));
67
- assert_eq!(flags.next(), None);
68
- }
69
-
70
- #[test]
71
- fn test_flag_variations() {
72
- let mut flags = Flags::new("-ltest --library test");
73
-
74
- assert_eq!(flags.next(), Some("-ltest"));
75
- assert_eq!(flags.next(), Some("--library test"));
76
- assert_eq!(flags.next(), None);
77
- }
78
-
79
- #[test]
80
- fn test_real_ldflags() {
81
- let mut flags = Flags::new("-L. -L/Users/ianks/.asdf/installs/ruby/3.1.1/lib -L/opt/homebrew/opt/openssl@1.1/lib -fstack-protector-strong");
82
-
83
- assert_eq!(flags.next(), Some("-L."));
84
- assert_eq!(
85
- flags.next(),
86
- Some("-L/Users/ianks/.asdf/installs/ruby/3.1.1/lib")
87
- );
88
- assert_eq!(flags.next(), Some("-L/opt/homebrew/opt/openssl@1.1/lib"));
89
- assert_eq!(flags.next(), Some("-fstack-protector-strong"));
90
- assert_eq!(flags.next(), None);
91
- }
92
-
93
- #[test]
94
- fn test_dashed_flag_with_dashed_val() {
95
- let mut flags = Flags::new("-ltest -fsomething-foo bar-val");
96
-
97
- assert_eq!(flags.next(), Some("-ltest"));
98
- assert_eq!(flags.next(), Some("-fsomething-foo bar-val"));
99
- assert_eq!(flags.next(), None);
100
- }
101
- }
@@ -1,132 +0,0 @@
1
- /// Represents the kind of library.
2
- #[derive(Debug, PartialEq, Eq, Clone, Copy)]
3
- pub enum LibraryKind {
4
- Framework,
5
- Dylib,
6
- Static,
7
- None,
8
- }
9
-
10
- /// Represents a search path that can be linked with Cargo.
11
- #[derive(Debug, PartialEq, Eq)]
12
- pub struct Library {
13
- pub kind: LibraryKind,
14
- pub name: String,
15
- }
16
-
17
- impl Library {
18
- pub fn is_static(&self) -> bool {
19
- self.kind == LibraryKind::Static
20
- }
21
- }
22
-
23
- impl From<&str> for LibraryKind {
24
- fn from(s: &str) -> Self {
25
- match s {
26
- "framework" => LibraryKind::Framework,
27
- "dylib" => LibraryKind::Dylib,
28
- "static" => LibraryKind::Static,
29
- _ => LibraryKind::None,
30
- }
31
- }
32
- }
33
-
34
- impl From<&str> for Library {
35
- fn from(s: &str) -> Self {
36
- let parts: Vec<_> = s.splitn(2, '=').collect();
37
-
38
- match parts.len() {
39
- 1 => (LibraryKind::None, parts[0]).into(),
40
- 2 => (parts[0], parts[1]).into(),
41
- _ => panic!("Invalid library specification: {}", s),
42
- }
43
- }
44
- }
45
-
46
- impl From<String> for Library {
47
- fn from(s: String) -> Self {
48
- s.as_str().into()
49
- }
50
- }
51
-
52
- fn sanitize_library_name(name: &str) -> &str {
53
- name.trim_end_matches(".lib").trim_start_matches("-l")
54
- }
55
-
56
- impl<K, L> From<(K, L)> for Library
57
- where
58
- K: Into<LibraryKind>,
59
- L: Into<String>,
60
- {
61
- fn from((kind, name): (K, L)) -> Self {
62
- Self {
63
- kind: kind.into(),
64
- name: sanitize_library_name(&name.into()).into(),
65
- }
66
- }
67
- }
68
-
69
- impl std::fmt::Display for Library {
70
- fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
71
- match self.kind {
72
- LibraryKind::Framework => write!(f, "framework={}", self.name),
73
- LibraryKind::Dylib => write!(f, "dylib={}", self.name),
74
- LibraryKind::Static => write!(f, "static={}", self.name),
75
- LibraryKind::None => write!(f, "{}", self.name),
76
- }
77
- }
78
- }
79
-
80
- #[cfg(test)]
81
- mod tests {
82
- use super::*;
83
-
84
- #[test]
85
- fn test_trim_leading_link_flag() {
86
- let result: Library = "-lfoo".to_string().into();
87
-
88
- assert_eq!(result.name, "foo");
89
- }
90
-
91
- #[test]
92
- fn test_trim_trailing_lib_extension() {
93
- let result: Library = "foo.lib".to_string().into();
94
-
95
- assert_eq!(result.name, "foo");
96
- }
97
-
98
- #[test]
99
- fn test_trim_leading_link_flag_and_trailing_lib_extension() {
100
- let result: Library = "-lfoo.lib".to_string().into();
101
-
102
- assert_eq!(result.name, "foo");
103
- }
104
-
105
- #[test]
106
- fn test_display_framework() {
107
- let result: Library = "framework=foo".to_string().into();
108
-
109
- assert_eq!(result.to_string(), "framework=foo");
110
- }
111
-
112
- #[test]
113
- fn test_display_dylib() {
114
- let result: Library = "dylib=foo".to_string().into();
115
-
116
- assert_eq!(result.to_string(), "dylib=foo");
117
- }
118
-
119
- #[test]
120
- fn test_display_static() {
121
- let result: Library = "static=-lfoo".to_string().into();
122
-
123
- assert_eq!(result.to_string(), "static=foo");
124
- }
125
-
126
- #[test]
127
- fn test_display_none() {
128
- let result: Library = "foo".to_string().into();
129
-
130
- assert_eq!(result.to_string(), "foo");
131
- }
132
- }
@@ -1,57 +0,0 @@
1
- /// Represents the kind of search path.
2
- #[derive(Debug, PartialEq, Eq)]
3
- pub enum SearchPathKind {
4
- Native,
5
- Framework,
6
- }
7
-
8
- /// Represents a library taht can be linked with Cargo.
9
- #[derive(Debug, PartialEq, Eq)]
10
- pub struct SearchPath {
11
- pub kind: SearchPathKind,
12
- pub name: String,
13
- }
14
-
15
- impl From<&str> for SearchPathKind {
16
- fn from(s: &str) -> Self {
17
- match s {
18
- "framework" => SearchPathKind::Framework,
19
- "native" => SearchPathKind::Native,
20
- _ => panic!("Unknown lib kind: {}", s),
21
- }
22
- }
23
- }
24
-
25
- impl From<&str> for SearchPath {
26
- fn from(s: &str) -> Self {
27
- let parts: Vec<_> = s.split('=').collect();
28
-
29
- match parts.len() {
30
- 1 => (SearchPathKind::Native, parts[0]).into(),
31
- 2 => (parts[0], parts[1]).into(),
32
- _ => panic!("Invalid library specification: {}", s),
33
- }
34
- }
35
- }
36
-
37
- impl<K, T> From<(K, T)> for SearchPath
38
- where
39
- K: Into<SearchPathKind>,
40
- T: Into<String>,
41
- {
42
- fn from((kind, name): (K, T)) -> Self {
43
- Self {
44
- kind: kind.into(),
45
- name: name.into(),
46
- }
47
- }
48
- }
49
-
50
- impl std::fmt::Display for SearchPath {
51
- fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
52
- match self.kind {
53
- SearchPathKind::Framework => write!(f, "framework={}", self.name),
54
- SearchPathKind::Native => write!(f, "native={}", self.name),
55
- }
56
- }
57
- }