rucaptcha 3.0.0.beta1-arm64-darwin → 3.0.2-arm64-darwin

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: 1bb669f6c9742142d809d1e88fd21f9281e3d05e33c5ff0987c648f48408a4ed
4
- data.tar.gz: 306b98fa6a56802657185bd1008a44cec0a087540b27ec318ecf162e053f1ac7
3
+ metadata.gz: befc27505a478e583a83cff44657905ce6cb4f46c71313158b910685cf723da9
4
+ data.tar.gz: 4d136a44c8da6fb77c9ac3715fa6565037343d93cdc66bbc87f4d3c78b238714
5
5
  SHA512:
6
- metadata.gz: 49391ef1edf9cf6daac8a21ddf2dfbc17d6c16cb90461723109fc7cedd327bb00c51b4df92e265e2bb525963099b00506cf7cbee812063f6952387d80158cd58
7
- data.tar.gz: 9d7896c26762c4383ef19e8c10a00099c6beda32387faa9046c30263e3c87a87b4e6fc9b7936da86107c3da729ea754ac7a0401cd43137c3a1f974b4d4724ccd
6
+ metadata.gz: e2d346c98f7eaa970009655b6cbf647178011327974611deaa4123c8c49fa6703b010552e4dc40198ccf3a113bd33d25bfb4a70c9a24e3c2c1fe6e5c779ec313
7
+ data.tar.gz: ef65ce28b8575f8a99627069a9c3eeb572340af2d5d1fa4ea0fe2124ee5d91f311ab0c55801537ba5bf383522f05b0081a124738001ac4b5677cc289755ca032
data/README.md CHANGED
@@ -14,7 +14,7 @@ Captcha Gem for Rails, which generates captcha image by Rust.
14
14
 
15
15
  ## Example
16
16
 
17
- ![1](https://user-images.githubusercontent.com/5518/195587367-6b579046-1d75-4a64-8e8f-4475da8932fa.png) ![2](https://user-images.githubusercontent.com/5518/195587377-08065df4-80ad-4c3f-baf4-2da7f9919b19.png) ![3](https://user-images.githubusercontent.com/5518/195587383-de8f73ea-e934-4c9d-b278-c78fb69cad58.png) ![4](https://user-images.githubusercontent.com/5518/195587381-a67e586d-0b54-4d6f-89c8-a431b085e16c.png)
17
+ <img src="https://user-images.githubusercontent.com/5518/196329734-fee49f62-050b-44c8-a5a8-7ffdd3c5a3f6.png" height="50" alt="0"> <img src="https://user-images.githubusercontent.com/5518/196329738-64b264a1-e3fb-4804-ac46-0df18fb31d1e.png" height="50" alt="1"> <img src="https://user-images.githubusercontent.com/5518/196329740-e10ded26-ba46-4e9b-93b8-ce30c198f880.png" height="50" alt="2"> <img src="https://user-images.githubusercontent.com/5518/196329743-c7b055b8-b309-4554-8c95-66c5caf4437d.png" height="50" alt="3"> <img src="https://user-images.githubusercontent.com/5518/196329745-eb68f0c3-ccac-4fa3-aa7a-cc4c2caeb41e.png" height="50" alt="4"> <img src="https://user-images.githubusercontent.com/5518/196329746-b15a9f71-262e-4699-87c7-a5561c6caf2c.png" height="50" alt="5"> <img src="https://user-images.githubusercontent.com/5518/196329747-d111a5d3-89a1-487b-989e-5be8059488c2.png" height="50" alt="6"> <img src="https://user-images.githubusercontent.com/5518/196329749-2cb44aa3-8b59-427c-91f3-59566d6de8a5.png" height="50" alt="7"> <img src="https://user-images.githubusercontent.com/5518/196329754-ae64374b-f2e5-44b8-a7f4-3aee1405c193.png" height="50" alt="8"> <img src="https://user-images.githubusercontent.com/5518/196329755-26b88705-bf34-4d32-a4dc-076530582a90.png" height="50" alt="9">
18
18
 
19
19
  ## Feature
20
20
 
data/Rakefile CHANGED
@@ -29,6 +29,6 @@ task default: :spec
29
29
  task :preview do
30
30
  require "rucaptcha"
31
31
  res = RuCaptchaCore.create(5, 5)
32
- warn res[0]
32
+ warn "-------------------------\n#{res[0]}"
33
33
  puts res[1].pack("c*")
34
34
  end
@@ -0,0 +1,14 @@
1
+ module RuCaptcha
2
+ class CaptchaController < ActionController::Base
3
+ def index
4
+ return head :ok if request.head?
5
+
6
+ headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
7
+ headers["Pragma"] = "no-cache"
8
+ data = generate_rucaptcha
9
+
10
+ opts = { disposition: "inline", type: "image/png" }
11
+ send_data data, opts
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,3 @@
1
+ en:
2
+ rucaptcha:
3
+ invalid: "The captcha code is incorrect (if you can't read, you can click image to refresh it)"
@@ -0,0 +1,3 @@
1
+ 'pt-BR':
2
+ rucaptcha:
3
+ invalid: "Código inválido!"
@@ -0,0 +1,3 @@
1
+ 'zh-CN':
2
+ rucaptcha:
3
+ invalid: "验证码不正确(如无法识别,可以点击刷新验证码)"
@@ -0,0 +1,3 @@
1
+ 'zh-TW':
2
+ rucaptcha:
3
+ invalid: "驗證碼不正確(如無法識別,可以點擊刷新驗證碼)"
data/config/routes.rb ADDED
@@ -0,0 +1,3 @@
1
+ RuCaptcha::Engine.routes.draw do
2
+ root to: "captcha#index"
3
+ end
@@ -1,5 +1,5 @@
1
1
  use image::{ImageBuffer, Rgb};
2
- use imageproc::drawing::{draw_cubic_bezier_curve_mut, draw_hollow_ellipse_mut, draw_text_mut};
2
+ use imageproc::drawing::{draw_cubic_bezier_curve_mut, draw_text_mut};
3
3
  use imageproc::noise::{gaussian_noise_mut, salt_and_pepper_noise_mut};
4
4
  use rand::{thread_rng, Rng};
5
5
  use rusttype::{Font, Scale};
@@ -14,7 +14,12 @@ static BASIC_CHAR: [char; 54] = [
14
14
  static FONT_BYTES1: &[u8; 145008] = include_bytes!("../fonts/FuzzyBubbles-Regular.ttf");
15
15
  static FONT_BYTES2: &[u8; 37792] = include_bytes!("../fonts/Handlee-Regular.ttf");
16
16
 
17
- static COLORS: [(u8, u8, u8); 10] = [
17
+ // https://coolors.co/cc0b8f-7c0abe-5700c8-3c2ea4-3d56a8-3fa67e-45bb30-69d003-a0d003-d8db02
18
+ static COLORS: [(u8, u8, u8); 14] = [
19
+ (197, 166, 3),
20
+ (187, 87, 5),
21
+ (176, 7, 7),
22
+ (186, 9, 56),
18
23
  (204, 11, 143),
19
24
  (124, 10, 190),
20
25
  (87, 0, 200),
@@ -47,7 +52,7 @@ fn get_captcha(len: usize) -> Vec<String> {
47
52
 
48
53
  #[allow(unused)]
49
54
  fn get_color() -> Rgb<u8> {
50
- let rnd = rand_num(COLORS.len());
55
+ let rnd = rand_num(COLORS.len() - 1);
51
56
  let c = COLORS[rnd];
52
57
  Rgb([c.0, c.1, c.2])
53
58
  }
@@ -94,19 +99,28 @@ fn cyclic_write_character(res: &[String], image: &mut ImageBuffer<Rgb<u8>, Vec<u
94
99
  } as f32;
95
100
 
96
101
  let colors = get_colors(res.len());
102
+ let line_colors = get_colors(res.len());
97
103
 
98
104
  let xscale = scale - rand_num((scale * 0.2) as usize) as f32;
99
105
  let yscale = h as f32 - rand_num((h * 0.2) as usize) as f32;
100
106
 
107
+ // Draw line, ellipse first as background
108
+ for (i, _) in res.iter().enumerate() {
109
+ let line_color = line_colors[i];
110
+ draw_interference_line(1, image, line_color);
111
+ draw_interference_ellipse(1, image, line_color);
112
+ }
113
+
114
+ // Draw text
101
115
  for (i, _) in res.iter().enumerate() {
102
116
  let text = &res[i];
103
117
 
104
118
  let color = colors[i];
105
119
  let font = get_font();
106
- let line_color = colors[rand_num(colors.len() - 1)];
107
120
 
108
- for j in 0..(rand_num(2) + 1) as i32 {
109
- let offset = j * (rand_num(3) as i32 + 1);
121
+ for j in 0..(rand_num(3) + 1) as i32 {
122
+ // Draw text again with offset
123
+ let offset = j * (rand_num(2) as i32);
110
124
  draw_text_mut(
111
125
  image,
112
126
  color,
@@ -120,9 +134,6 @@ fn cyclic_write_character(res: &[String], image: &mut ImageBuffer<Rgb<u8>, Vec<u
120
134
  text,
121
135
  );
122
136
  }
123
-
124
- draw_interference_line(1, image, line_color);
125
- draw_interference_ellipse(1, image, line_color);
126
137
  }
127
138
  }
128
139
 
@@ -139,7 +150,7 @@ fn draw_interference_line(num: usize, image: &mut ImageBuffer<Rgb<u8>, Vec<u8>>,
139
150
  let ctrl_x = get_next((width / 6) as f32, width / 4 * 3);
140
151
  let ctrl_y = get_next(x1, height - 5);
141
152
 
142
- let ctrl_x2 = get_next((width / 4) as f32, width / 4 * 3);
153
+ let ctrl_x2 = get_next((width / 12) as f32, width / 12 * 3);
143
154
  let ctrl_y2 = get_next(x1, height - 5);
144
155
  // Randomly draw bezier curves
145
156
  draw_cubic_bezier_curve_mut(
@@ -159,10 +170,12 @@ fn draw_interference_ellipse(
159
170
  color: Rgb<u8>,
160
171
  ) {
161
172
  for _ in 0..num {
173
+ // max cycle width 20px
162
174
  let w = (10 + rand_num(10)) as i32;
163
175
  let x = rand_num((image.width() - 25) as usize) as i32;
164
176
  let y = rand_num((image.height() - 15) as usize) as i32;
165
- draw_hollow_ellipse_mut(image, (x, y), w, w, color);
177
+
178
+ imageproc::drawing::draw_filled_ellipse_mut(image, (x, y), w, w, color);
166
179
  }
167
180
  }
168
181
 
@@ -182,8 +195,8 @@ impl CaptchaBuilder {
182
195
  pub fn new() -> Self {
183
196
  CaptchaBuilder {
184
197
  length: 4,
185
- width: 240,
186
- height: 64,
198
+ width: 300,
199
+ height: 100,
187
200
  complexity: 5,
188
201
  }
189
202
  }
Binary file
Binary file
Binary file
@@ -1,3 +1,3 @@
1
1
  module RuCaptcha
2
- VERSION = "3.0.0.beta1"
2
+ VERSION = "3.0.2"
3
3
  end
data/lib/rucaptcha.rb CHANGED
@@ -48,7 +48,7 @@ module RuCaptcha
48
48
  raise RuCaptcha::Errors::Configuration, "length config error, value must in 3..7" unless length.in?(3..7)
49
49
 
50
50
  result = RuCaptchaCore.create(length, config.difficulty || 5)
51
- [result[0], result[1].pack("c*")]
51
+ [result[0].downcase, result[1].pack("c*")]
52
52
  end
53
53
 
54
54
  def check_cache_store!
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rucaptcha
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta1
4
+ version: 3.0.2
5
5
  platform: arm64-darwin
6
6
  authors:
7
7
  - Jason Lee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-10-13 00:00:00.000000000 Z
11
+ date: 2022-10-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: railties
@@ -46,9 +46,17 @@ extra_rdoc_files: []
46
46
  files:
47
47
  - README.md
48
48
  - Rakefile
49
+ - app/controllers/ru_captcha/captcha_controller.rb
50
+ - config/locales/rucaptcha.en.yml
51
+ - config/locales/rucaptcha.pt-BR.yml
52
+ - config/locales/rucaptcha.zh-CN.yml
53
+ - config/locales/rucaptcha.zh-TW.yml
54
+ - config/routes.rb
49
55
  - ext/rucaptcha/Cargo.lock
50
56
  - ext/rucaptcha/Cargo.toml
51
57
  - ext/rucaptcha/extconf.rb
58
+ - ext/rucaptcha/fonts/FuzzyBubbles-Regular.ttf
59
+ - ext/rucaptcha/fonts/Handlee-Regular.ttf
52
60
  - ext/rucaptcha/src/captcha.rs
53
61
  - ext/rucaptcha/src/lib.rs
54
62
  - lib/rucaptcha.rb
@@ -80,9 +88,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
80
88
  version: 3.2.dev
81
89
  required_rubygems_version: !ruby/object:Gem::Requirement
82
90
  requirements:
83
- - - ">"
91
+ - - ">="
84
92
  - !ruby/object:Gem::Version
85
- version: 1.3.1
93
+ version: '0'
86
94
  requirements: []
87
95
  rubygems_version: 3.4.0.dev
88
96
  signing_key: