password_genie 0.0.6 → 0.0.7
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 +4 -4
- data/lib/password_genie_cl.rb +126 -0
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7b626829d334391bdb6cbc8dfbb21bc717670ca
|
4
|
+
data.tar.gz: 34409954b8324e375b05a35ac58810bbb13da917
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b6a0bd36d745ac245508fa5b0abbcf889be82e7d40500e454ecaa38ea6df0c14dc8c9f9171ef66e56afcb9f3d4fc05ce0246a222028b00014f1439302c7de74
|
7
|
+
data.tar.gz: f3aa6f5691e642b4d9bd6e63fa373871e19ff88eb4cb301d6f237b31acf79ddaf38f674962959cbe8f419745c8a2ee5e6f7b994ec1a24c9715393161e17beac0
|
@@ -0,0 +1,126 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
#password_genie_cl.rb
|
3
|
+
|
4
|
+
require 'sqlite3'
|
5
|
+
|
6
|
+
class WordBank
|
7
|
+
attr_reader :word_bank, :number, :special_chars
|
8
|
+
|
9
|
+
def word_bank=(words)
|
10
|
+
if words == ""
|
11
|
+
raise "can't be empty."
|
12
|
+
end
|
13
|
+
word_bank= words.split("").to_a
|
14
|
+
word_bank.delete(" ")
|
15
|
+
unless word_bank.is_a?(Array)
|
16
|
+
raise "word bank must contain letters"
|
17
|
+
end
|
18
|
+
@word_bank= word_bank
|
19
|
+
end
|
20
|
+
|
21
|
+
def number=(number)
|
22
|
+
unless number.is_a?(Fixnum)
|
23
|
+
raise "whole numbers only, please"
|
24
|
+
end
|
25
|
+
if number<=0
|
26
|
+
raise ">= 0 only, please"
|
27
|
+
end
|
28
|
+
@number=number
|
29
|
+
end
|
30
|
+
|
31
|
+
def special_chars=(special_chars)
|
32
|
+
@special_chars=[".",",","$"]
|
33
|
+
end
|
34
|
+
|
35
|
+
def initialize(words,number=8)
|
36
|
+
self.word_bank = words
|
37
|
+
self.number = number
|
38
|
+
self.special_chars = special_chars.to_a
|
39
|
+
@password_ary = []
|
40
|
+
@numbers= (0..9).to_a
|
41
|
+
end
|
42
|
+
|
43
|
+
def add_special_chars
|
44
|
+
word_bank.concat(@special_chars)
|
45
|
+
@word_bank
|
46
|
+
end
|
47
|
+
|
48
|
+
def add_numbers
|
49
|
+
word_bank.concat(@numbers)
|
50
|
+
@word_bank
|
51
|
+
end
|
52
|
+
|
53
|
+
def create
|
54
|
+
i = number
|
55
|
+
until i == 0
|
56
|
+
puts " i is #{i}"
|
57
|
+
if i == 2 && (@password_ary.include?(@special_chars) == false && @word_bank.include?(@special_chars))
|
58
|
+
@password_ary << @special_chars[rand(0..@special_chars.size)]
|
59
|
+
end
|
60
|
+
if i == 1 && (@password_ary.include?(@numbers) == false && @word_bank.include?(@numbers))
|
61
|
+
@password_ary << @numbers[rand(0..@numbers.size)]
|
62
|
+
end
|
63
|
+
letter = rand(0..word_bank.size)
|
64
|
+
@password_ary << word_bank[letter]
|
65
|
+
word_bank.delete_at(letter)
|
66
|
+
i -= 1
|
67
|
+
end
|
68
|
+
@password = @password_ary.join()
|
69
|
+
puts @password
|
70
|
+
@password
|
71
|
+
end
|
72
|
+
|
73
|
+
def save_info(site,username,password=@password)
|
74
|
+
begin
|
75
|
+
db = SQLite3::Database.open('genie.db')
|
76
|
+
puts db.get_first_value "select SQLite_VERSION()"
|
77
|
+
db.results_as_hash = true
|
78
|
+
site_in = site; username_in = username; pw_in = password
|
79
|
+
db.transaction
|
80
|
+
db.execute "create table if not exists site_info(Id INTEGER PRIMARY KEY, Site TEXT, Username TEXT, Password TEXT)"
|
81
|
+
db_in = db.prepare "insert into site_info(Site, Username, Password) values(:site_in, :username_in, :pw_in)"
|
82
|
+
db_in.execute site_in, username_in, pw_in
|
83
|
+
db.commit
|
84
|
+
rescue SQLite3::Exception => e
|
85
|
+
puts "something went wrong: #{e}"
|
86
|
+
db.rollback
|
87
|
+
ensure
|
88
|
+
db_in.close if db_in
|
89
|
+
db.close if db
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
def find_info(info)
|
94
|
+
begin
|
95
|
+
db = SQLite3::Database.open('genie.db')
|
96
|
+
puts db.get_first_value "select SQLite_VERSION()"
|
97
|
+
return "please create a directory first" unless File.exist?('genie.db')
|
98
|
+
print_out = db.execute2 "SELECT * FROM site_info WHERE Site= :info OR Username = :info", info
|
99
|
+
return "no match" unless print_out != nil
|
100
|
+
print_out.each do |line|
|
101
|
+
puts "[%5s] %8s | %s" % [line[1], line[2], line[3]]
|
102
|
+
end
|
103
|
+
rescue SQLite3::Exception => e
|
104
|
+
puts e
|
105
|
+
ensure
|
106
|
+
db.close if db
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
def add_or_replace_info(site, username, password)
|
111
|
+
begin
|
112
|
+
db = SQLite3::Database.open('genie.db')
|
113
|
+
return "please set up database by restarting and choosing [1]" unless File.file?('genie.db')
|
114
|
+
puts db.get_first_value "select SQLite_VERSION()"
|
115
|
+
db.transaction
|
116
|
+
db.execute2 "UPDATE site_info SET Password = :password WHERE Site = :site AND Username = :username", password, site, username
|
117
|
+
db.commit
|
118
|
+
puts "you made #{db.changes} changes."
|
119
|
+
rescue SQLite3::Exception => e
|
120
|
+
puts e
|
121
|
+
db.rollback
|
122
|
+
ensure
|
123
|
+
db.close if db
|
124
|
+
end
|
125
|
+
end
|
126
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: password_genie
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- fookh
|
@@ -10,15 +10,16 @@ bindir: bin
|
|
10
10
|
cert_chain: []
|
11
11
|
date: 2019-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description: a simple tool to build a password repository based on user defined
|
14
|
-
2. archive passwords, usernames, and corresponding site data 3. search
|
15
|
-
|
13
|
+
description: a simple tool to build a password sqlite repository based on user defined
|
14
|
+
parameters 2. archive passwords, usernames, and corresponding site data 3. and search
|
15
|
+
data
|
16
16
|
email: foo@yetispeak.com
|
17
17
|
executables: []
|
18
18
|
extensions: []
|
19
19
|
extra_rdoc_files: []
|
20
20
|
files:
|
21
21
|
- lib/password_genie.rb
|
22
|
+
- lib/password_genie_cl.rb
|
22
23
|
homepage: http://rubygems.org/gems/password_genie
|
23
24
|
licenses:
|
24
25
|
- MIT
|