captcha3 1.1.0 → 1.1.5

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.
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: captcha3
3
3
  version: !ruby/object:Gem::Version
4
- hash: 19
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 1
9
- - 0
10
- version: 1.1.0
9
+ - 5
10
+ version: 1.1.5
11
11
  platform: ruby
12
12
  authors:
13
13
  - victordong
@@ -40,19 +40,8 @@ extensions: []
40
40
 
41
41
  extra_rdoc_files: []
42
42
 
43
- files:
44
- - .gitignore
45
- - Gemfile
46
- - Rakefile
47
- - captcha3.gemspec
48
- - lib/captcha3.rb
49
- - lib/captcha3/captcha_helper.rb
50
- - lib/captcha3/captcha_util.rb
51
- - lib/captcha3/image_generator.rb
52
- - lib/captcha3/railtie.rb
53
- - lib/captcha3/tasks.rb
54
- - lib/captcha3/validate_captcha.rb
55
- - lib/captcha3/version.rb
43
+ files: []
44
+
56
45
  homepage: ""
57
46
  licenses: []
58
47
 
data/.gitignore DELETED
@@ -1,4 +0,0 @@
1
- *.gem
2
- .bundle
3
- Gemfile.lock
4
- pkg/*
data/Gemfile DELETED
@@ -1,4 +0,0 @@
1
- source "http://rubygems.org"
2
- gem 'rmagick'
3
- # Specify your gem's dependencies in captcha3.gemspec
4
- #gemspec
data/Rakefile DELETED
@@ -1 +0,0 @@
1
- require "bundler/gem_tasks"
data/captcha3.gemspec DELETED
@@ -1,24 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- $:.push File.expand_path("../lib", __FILE__)
3
- require "captcha3/version"
4
-
5
- Gem::Specification.new do |s|
6
- s.name = "captcha3"
7
- s.version = Captcha3::VERSION
8
- s.authors = ["victordong"]
9
- s.email = ["dongshuxiang888@126.com"]
10
- s.homepage = ""
11
- s.summary = %q{批量生成图片}
12
- s.description = %q{dongsx}
13
-
14
- s.rubyforge_project = "captcha3"
15
-
16
- s.files = `git ls-files`.split("\n")
17
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
- s.require_paths = ["lib"]
20
-
21
- # specify any dependencies here; for example:
22
- # s.add_development_dependency "rspec"
23
- s.add_runtime_dependency "rmagick"
24
- end
data/lib/captcha3.rb DELETED
@@ -1,14 +0,0 @@
1
- require "captcha3/version"
2
- require "captcha3/validate_captcha"
3
- require "captcha3/captcha_helper"
4
- require "captcha3/image_generator"
5
- module Captcha3
6
- require 'captcha3/railtie' if defined?(Rails)
7
- ActionController::Base.send(:include, ValidateCaptcha)
8
- if defined?(Rails)
9
- environment = File.open("#{Rails.root}/config/environment.rb", "a")
10
- salt = SecureRandom.base64(32).tr("+/=", "xyz")
11
- environment.puts("CAPTCHA_SALT = #{salt}")
12
- environment.close
13
- end
14
- end
@@ -1,19 +0,0 @@
1
- module CaptchaHelper
2
- def captcha_image(options = {})
3
- @captcha_image ||= CaptchaUtil.random_image
4
- image_tag("/system/captcha3/" + @captcha_image, options)
5
- end
6
-
7
- def captcha_input_text(label, options = {})
8
- content_tag('label', label, :for => 'captcha') + text_field_tag(:captcha, nil, options)
9
- end
10
-
11
- def captcha_hidden_text
12
- @captcha_image ||= CaptchaUtil.random_image
13
- hidden_field_tag(:captcha_validation, @captcha_image.gsub(/\..+$/, ''))
14
- end
15
-
16
- def captcha_block(label='请输入验证码')
17
- content_tag("div", captcha_hidden_text + captcha_input_text(label) + captcha_image, {:class => 'captcha'})
18
- end
19
- end
@@ -1,20 +0,0 @@
1
- require 'digest/sha1'
2
- module CaptchaUtil
3
- extend self
4
-
5
- def random_image
6
- @@captcha_files = Dir.glob("#{Rails.root}/public/system/captcha3/*.*").map{ |f| File.basename(f)}
7
- @@captcha_files[rand(@@captcha_files.size)]
8
- end
9
-
10
- def encrypt_string(str)
11
-
12
- if defined?(CAPTCHA_SALT)
13
- salt = CAPTCHA_SALT
14
- else
15
- Rails.logger.warn("No Salt has given, Please add CAPACHA_SALT = 'something realy random' to environment.rb or application.rb")
16
- end
17
-
18
- Digest::SHA256.hexdigest("#{salt}#{str}")
19
- end
20
- end
@@ -1,57 +0,0 @@
1
- require 'RMagick'
2
- require 'captcha3/captcha_util'
3
- module ImageGenerator
4
- extend self
5
- BITS = ("A".."Z").to_a + (0..9).to_a
6
- BIT_LENGTH = BITS.length
7
- DEFAULT_PARAS = {
8
- :image_width => 150,
9
- :image_height => 50,
10
- :captcha_length => 5,
11
- :file_type => 'png'
12
- }
13
-
14
- def generate_captcha_image(params = {})
15
- params.reverse_merge!(DEFAULT_PARAS)
16
- file_type = %w(png gif).include?(params[:file_type]) ? ".#{params[:file_type]}" : ".png"
17
-
18
- text_img = Magick::Image.new(params[:image_width].to_i, params[:image_height].to_i)
19
- black_img = Magick::Image.new(params[:image_width].to_i, params[:image_height].to_i) do
20
- self.background_color = 'black'
21
- end
22
-
23
- random_string = params[:captcha_length].times.map{ BITS[rand(BIT_LENGTH)]}.join
24
-
25
- filename = CaptchaUtil.encrypt_string(random_string.downcase) + file_type
26
-
27
- # Render the text in the image
28
- text_img.annotate(Magick::Draw.new, 0,0,0,0, random_string) {
29
- self.gravity = Magick::WestGravity
30
- self.font_family = 'Courier-New'
31
- self.font_weight = Magick::BoldWeight
32
- self.fill = '#000000'
33
- self.stroke = 'black'
34
- self.stroke_width = 1
35
- self.pointsize = 44
36
- }
37
-
38
- # Apply a little blur and fuzzing
39
- text_img = text_img.gaussian_blur(1.2, 1.2)
40
- text_img = text_img.sketch(20, 30.0, 30.0)
41
- text_img = text_img.wave(3, 90)
42
-
43
- # Now we need to get the white out
44
- text_mask = text_img.negate
45
- text_mask.matte = false
46
-
47
- # Add cut-out our captcha from the black image with varying tranparency
48
- black_img.composite!(text_mask, Magick::CenterGravity, Magick::CopyOpacityCompositeOp)
49
-
50
- # Write the file to disk
51
- puts 'Writing image file ' + filename
52
- black_img.write(filename) # { self.depth = 8 }
53
-
54
- # Collect rmagick
55
- GC.start
56
- end
57
- end
@@ -1,8 +0,0 @@
1
- require 'rails'
2
- module Captcha3
3
- class Railtie < Rails::Railtie
4
- rake_tasks do
5
- load "captcha3/tasks.rb"
6
- end
7
- end
8
- end
@@ -1,23 +0,0 @@
1
- require "captcha3/image_generator"
2
- namespace :captcha3 do
3
- desc "generate code images"
4
- task :generate => :environment do
5
- FileUtils.mkdir_p('public/system/captcha3')
6
- Dir.chdir('public/system/captcha3') do
7
- image_count = (ENV["count"] || 200).to_i
8
- image_params = resolve_params
9
-
10
- image_count.times.each do
11
- ImageGenerator.generate_captcha_image(image_params)
12
- end
13
- end
14
- end
15
-
16
- def resolve_params
17
- params = {}
18
- ['image_width', 'image_height', 'captcha_length', 'file_type'].each do |origin|
19
- params[origin.downcase.to_sym] = ENV[origin] if ENV[origin]
20
- end
21
- params
22
- end
23
- end
@@ -1,18 +0,0 @@
1
- module ValidateCaptcha
2
- def self.included(base)
3
- base.extend(ClassMethods)
4
- end
5
-
6
- module ClassMethods
7
- def captcha_helper
8
- helper CaptchaHelper
9
- include ValidateCaptcha::InstanceMethods
10
- end
11
- end
12
-
13
- module InstanceMethods
14
- def captcha_validated?
15
- CaptchaUtil.encrypt_string(params[:captcha].to_s.downcase) == params[:captcha_validation]
16
- end
17
- end
18
- end
@@ -1,3 +0,0 @@
1
- module Captcha3
2
- VERSION = "1.1.0"
3
- end