cacertreq 0.0.1
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.
- data/Gemfile +5 -0
- data/Gemfile.lock +20 -0
- data/README +19 -0
- data/Rakefile +16 -0
- data/VERSION +1 -0
- data/bin/cacertreq +40 -0
- data/lib/cacert-rq.rb +76 -0
- metadata +86 -0
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
columnize (0.3.4)
|
5
|
+
getopt (1.4.0)
|
6
|
+
linecache (0.46)
|
7
|
+
rbx-require-relative (> 0.0.4)
|
8
|
+
rbx-require-relative (0.0.5)
|
9
|
+
ruby-debug (0.10.4)
|
10
|
+
columnize (>= 0.1)
|
11
|
+
ruby-debug-base (~> 0.10.4.0)
|
12
|
+
ruby-debug-base (0.10.4)
|
13
|
+
linecache (>= 0.3)
|
14
|
+
|
15
|
+
PLATFORMS
|
16
|
+
ruby
|
17
|
+
|
18
|
+
DEPENDENCIES
|
19
|
+
getopt
|
20
|
+
ruby-debug
|
data/README
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
# Install guide
|
2
|
+
|
3
|
+
You need some dependancies like ruby1.8 or rubygems to install cacert-requester
|
4
|
+
You can install cacert-requester from
|
5
|
+
* github
|
6
|
+
* rubygems system
|
7
|
+
|
8
|
+
## From github
|
9
|
+
|
10
|
+
$ git clone blabla
|
11
|
+
$ cd cacert_requester
|
12
|
+
$ sudo gem install bundler
|
13
|
+
$ sudo bundle install
|
14
|
+
$ ./cacert-requester -s -u user@domain.com
|
15
|
+
|
16
|
+
## From rubygems
|
17
|
+
|
18
|
+
$ sudo gem install cacert-requester
|
19
|
+
|
data/Rakefile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
begin
|
2
|
+
require 'jeweler'
|
3
|
+
Jeweler::Tasks.new do |gemspec|
|
4
|
+
gemspec.name = "cacertreq"
|
5
|
+
gemspec.summary = "Use cacert API for CSR or check an existing account"
|
6
|
+
gemspec.description = "Use cacert API for CSR or check an existing account"
|
7
|
+
gemspec.email = "thibaut.deloffre@gmail.com"
|
8
|
+
gemspec.homepage = "http://github.com/TibshoOT"
|
9
|
+
gemspec.authors = ["Thibaut Deloffre"]
|
10
|
+
end
|
11
|
+
Jeweler::GemcutterTasks.new
|
12
|
+
rescue LoadError
|
13
|
+
puts "Jeweler not available. Install it with: sudo gem install jeweler -s http://gemcutter.org"
|
14
|
+
end
|
15
|
+
|
16
|
+
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
data/bin/cacertreq
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
#!/usr/bin/ruby
|
2
|
+
|
3
|
+
require "rubygems"
|
4
|
+
require 'cgi'
|
5
|
+
require 'net/http'
|
6
|
+
require 'net/https'
|
7
|
+
require 'getopt/std'
|
8
|
+
require 'cacert-rq'
|
9
|
+
|
10
|
+
informations = {}
|
11
|
+
|
12
|
+
begin
|
13
|
+
opt = Getopt::Std.getopts("siu:f:e:n:cr:")
|
14
|
+
rescue Getopt::Std::Error => e
|
15
|
+
puts "Error: #{e}"
|
16
|
+
puts CacertApiRequester.usage
|
17
|
+
exit
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
if opt["i"] and !opt["s"]
|
22
|
+
informations[:action] = "issue"
|
23
|
+
elsif opt["s"] and !opt["i"]
|
24
|
+
informations[:action] = "status"
|
25
|
+
else
|
26
|
+
puts "Error: Which type of action do you like to do ?"
|
27
|
+
puts CacertApiRequester.usage
|
28
|
+
exit
|
29
|
+
end
|
30
|
+
|
31
|
+
informations[:username] = opt["u"]
|
32
|
+
informations[:password] = CacertApiRequester.ask_passwd
|
33
|
+
informations[:ca_file] = opt["f"]
|
34
|
+
informations[:email] = opt["e"]
|
35
|
+
informations[:name] = opt["n"]
|
36
|
+
informations[:codesign] = opt["c"]
|
37
|
+
informations[:csr] = opt["r"]
|
38
|
+
|
39
|
+
cacert_instance = CacertApiRequester.new(informations)
|
40
|
+
cacert_instance.request
|
data/lib/cacert-rq.rb
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
class CacertApiRequester
|
2
|
+
def initialize(informations)
|
3
|
+
@username = informations[:username]
|
4
|
+
@password = informations[:password]
|
5
|
+
@ca_file = informations[:ca_file]
|
6
|
+
@email = email_to_str(informations[:email])
|
7
|
+
@name = CGI::escape(informations[:name])
|
8
|
+
@codesign = informations[:codesign] ? 1 : 0
|
9
|
+
@action = which_action(informations[:action])
|
10
|
+
@csr = informations[:csr] ? CGI::escapte(informations[:csr]) : ""
|
11
|
+
end
|
12
|
+
|
13
|
+
def request
|
14
|
+
http = Net::HTTP.new("www.cacert.org", 443)
|
15
|
+
req = Net::HTTP::Get.new(@action)
|
16
|
+
http.use_ssl = true
|
17
|
+
if !@ca_file.nil? and !@ca_file.empty? # Force SSL peer verification
|
18
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
19
|
+
http.ca_file = @ca_file
|
20
|
+
end
|
21
|
+
reponse = http.request(req)
|
22
|
+
p reponse.body
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def self.usage
|
28
|
+
puts "To check account status: cacert -s -u user@test.com"
|
29
|
+
puts "To make new issue: cacert -i -u user@test.com -e email@lulz.com,email2@lulz.com,emailN@lulz.com -n name1,name2,nameN -c 1|0 [-f ca_file]"
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.ask_passwd
|
33
|
+
password = ""
|
34
|
+
password_check = ""
|
35
|
+
while (password.empty? and password_check.empty?) or password != password_check
|
36
|
+
begin
|
37
|
+
puts "Password: (no echo)"
|
38
|
+
system "stty -echo"
|
39
|
+
password = gets.chomp!
|
40
|
+
puts "Password checking: (no echo)"
|
41
|
+
password_check = gets.chomp!
|
42
|
+
ensure
|
43
|
+
system "stty echo"
|
44
|
+
end
|
45
|
+
if password != password_check
|
46
|
+
puts "Error: fail to check password, retry."
|
47
|
+
end
|
48
|
+
end
|
49
|
+
password
|
50
|
+
end
|
51
|
+
|
52
|
+
def which_action(action)
|
53
|
+
if action == "status"
|
54
|
+
ac = "/api/cemails.php?username=#{@username}&password=#{@password}"
|
55
|
+
else
|
56
|
+
ac = "/api/ccsr.php?username=#{@username}&password=#{@password}#{@email}&name=#{@name}&codesign=#{@codesign}"
|
57
|
+
if @csr and !@csr.empty?
|
58
|
+
ac.concat("&optionalCSR=#{@csr}")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
ac
|
62
|
+
end
|
63
|
+
|
64
|
+
def email_to_str(mails)
|
65
|
+
if !mails.nil?
|
66
|
+
i = 0
|
67
|
+
m = mails
|
68
|
+
mails = ""
|
69
|
+
m.strip.split(',').each{ |mail|
|
70
|
+
mails << "&email[#{i}]=".concat(mail)
|
71
|
+
i += 1
|
72
|
+
}
|
73
|
+
end
|
74
|
+
return mails
|
75
|
+
end
|
76
|
+
end
|
metadata
ADDED
@@ -0,0 +1,86 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cacertreq
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 29
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 1
|
10
|
+
version: 0.0.1
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Thibaut Deloffre
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2011-10-18 00:00:00 Z
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
21
|
+
name: getopt
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
hash: 3
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
version: "0"
|
32
|
+
type: :runtime
|
33
|
+
version_requirements: *id001
|
34
|
+
description: Use cacert API for CSR or check an existing account
|
35
|
+
email: thibaut.deloffre@gmail.com
|
36
|
+
executables:
|
37
|
+
- cacertreq
|
38
|
+
extensions: []
|
39
|
+
|
40
|
+
extra_rdoc_files: []
|
41
|
+
|
42
|
+
files:
|
43
|
+
- lib/cacert-rq.rb
|
44
|
+
- bin/cacertreq
|
45
|
+
- Gemfile
|
46
|
+
- Gemfile.lock
|
47
|
+
- Rakefile
|
48
|
+
- README
|
49
|
+
- VERSION
|
50
|
+
homepage: http://github.com/TibshoOT
|
51
|
+
licenses: []
|
52
|
+
|
53
|
+
post_install_message:
|
54
|
+
rdoc_options: []
|
55
|
+
|
56
|
+
require_paths:
|
57
|
+
- lib
|
58
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
59
|
+
none: false
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
hash: 3
|
64
|
+
segments:
|
65
|
+
- 0
|
66
|
+
version: "0"
|
67
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
hash: 33
|
73
|
+
segments:
|
74
|
+
- 1
|
75
|
+
- 8
|
76
|
+
- 11
|
77
|
+
version: 1.8.11
|
78
|
+
requirements: []
|
79
|
+
|
80
|
+
rubyforge_project: cacertreq
|
81
|
+
rubygems_version: 1.8.11
|
82
|
+
signing_key:
|
83
|
+
specification_version: 3
|
84
|
+
summary: Use cacert API for CSR or check an existing account
|
85
|
+
test_files: []
|
86
|
+
|