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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/password_genie_cl.rb +126 -0
  3. metadata +5 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1422ac7290328a091f4743ea9574a3cc39d2185f
4
- data.tar.gz: cd9cb56c803abbc5cb19df39fe89bf453da99fac
3
+ metadata.gz: d7b626829d334391bdb6cbc8dfbb21bc717670ca
4
+ data.tar.gz: 34409954b8324e375b05a35ac58810bbb13da917
5
5
  SHA512:
6
- metadata.gz: d2c4627786b72c0be3e89af42237d71c4ee08d8d2f921ca6c79f46f2c6f00e3e256e67a6998b897705653f7d5cd875de4b3608a2000cc09a2f4194f9adf1dc65
7
- data.tar.gz: 94dc4cc0c4d63f478059d89c14851bc89978bae5a0a18f3a8b4c57fe42ef393aacf803e25c263a62713ba7d360a8a98638bf621890eb609ee9490e8a1f04ff4d
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.6
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 parameters
14
- 2. archive passwords, usernames, and corresponding site data 3. search data and
15
- 4. push an existing password into sqlite
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