rubeepass 0.2.0 → 0.2.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 46705ef9bef7799846f434283b6e7856dea540d4
4
- data.tar.gz: fc21cc8636d4e1a871fd7eaff58c517ac20b563f
3
+ metadata.gz: 1244eae333d927767643b37d6d6612800fc12a5d
4
+ data.tar.gz: 3818c6ae675fa05c04df6d62466809b02eccac27
5
5
  SHA512:
6
- metadata.gz: c0b2b619726ac9f62455e9740a544ffb86301d6215ccd9c5d2227f2e69711edc25ad427231c8783e8a49465ddd2e733a4896ecc175814c7ce7a80acb12eff698
7
- data.tar.gz: 7e96d550b350b80d3822db5d1713f07ed77be9dc841639f2eaaaca351ff9ecb7b776ed020f9fcf0df69e7983be969d56760a9eebac684578915101c72d7b8a0c
6
+ metadata.gz: eba9bb74e5da41f1aa2c49ac4672a7c23e459cfe31cb2ef9b1bd29e8d0fc2b8ebb32f4bf15eaf03588016768e4cd85d9b5b56d1db4db8ea4ac785d97060f697f
7
+ data.tar.gz: 9bfd779dcf88b6a38358162aeb01762e6a9144a3db92771d562a5b94795a44385aa57f1b92f77ce84707df9f09be8c755baa4fc268a6c20ea9aa7e6792fbe196
data/lib/rubeepass.rb CHANGED
@@ -311,19 +311,16 @@ class RubeePass
311
311
  end
312
312
  private :parse_gzip
313
313
 
314
+ # Horrible attempt at parsing xml. Someday I might use a library
314
315
  def parse_xml
315
- curr = Group.new(
316
- {
317
- "Keepass" => self,
318
- "Name" => "/"
319
- }
320
- )
316
+ curr = Group.new({"Keepass" => self, "Name" => "/"})
321
317
  entry_params = Hash.new
322
318
  group_params = Hash.new
323
319
  ignore = true
320
+ inside_value = false
324
321
  status = nil
325
322
 
326
- @xml.each_line do |line|
323
+ @xml.gsub("<", "\n<").each_line do |line|
327
324
  line.strip!
328
325
 
329
326
  case line
@@ -338,20 +335,37 @@ class RubeePass
338
335
  next
339
336
  when "</Root>"
340
337
  break
338
+ when %r{^.*</Value>}
339
+ line.gsub!(%r{</Value>$}, "")
340
+ entry_params[status] += line if (line && !line.empty?)
341
+ if (line && !line.empty?)
342
+ entry_params[status] += "\n#{line}"
343
+ end
344
+
345
+ status = nil
346
+ inside_value = false
347
+ next
348
+ when ""
349
+ next if (!inside_value)
341
350
  end
342
351
 
343
352
  line = CGI::unescapeHTML(line)
344
353
  line = URI::unescape(line)
345
354
 
355
+ # Handle values with newlines
356
+ if (inside_value && !ignore)
357
+ entry_params[status] += "\n#{line}"
358
+ next
359
+ end
360
+
346
361
  # Always handle protected data
347
362
  case line
348
- when %r{<Value Protected}
349
- line.gsub!(%r{<?Value( Protected=\"True\")?>}, "")
363
+ when %r{^<Value Protected="True">.+}
364
+ line.gsub!(%r{^<Value Protected="True">}, "")
350
365
  if (ignore)
351
366
  handle_protected(line)
352
367
  else
353
368
  entry_params[status] = handle_protected(line)
354
- status = nil
355
369
  end
356
370
  next
357
371
  else
@@ -369,26 +383,27 @@ class RubeePass
369
383
  when "</Group>"
370
384
  curr = curr.group
371
385
  break if (curr.nil?)
372
- when %r{<Key>.+</Key>}
373
- status = line.gsub(%r{^<Key>|</Key>$}, "")
374
- when %r{<Name>}
375
- line.gsub!(%r{^<Name>|</Name>$}, "")
386
+ when %r{^<Key>.+}
387
+ status = line.gsub(%r{^<Key>}, "")
388
+ when %r{^<Name>.+}
389
+ line.gsub!(%r{^<Name>}, "")
376
390
  group_params["Name"] = line
377
391
 
378
392
  group = Group.new(group_params)
379
393
  curr.groups[group.name] = group
380
394
  curr = group
381
- when %r{<UUID>.+</UUID>}
382
- uuid = line.gsub(%r{^<UUID>|</UUID>$}, "")
395
+ when %r{^<UUID>.+}
396
+ uuid = line.gsub(%r{^<UUID>}, "")
383
397
  if (group_params["UUID"].nil?)
384
398
  group_params["UUID"] = uuid
385
399
  else
386
400
  entry_params["UUID"] = uuid
387
401
  end
388
- when %r{<Value>}
389
- line.gsub!(%r{</?Value( /)?>}, "")
402
+ when %r{^<Value>.*}
403
+ line.gsub!(%r{<Value>}, "")
404
+ line = "" if (line.nil?)
390
405
  entry_params[status] = line
391
- status = nil
406
+ inside_value = true
392
407
  end
393
408
  end
394
409
 
@@ -20,23 +20,33 @@ class RubeePass::Entry
20
20
  return (self.title.downcase <=> other.title.downcase)
21
21
  end
22
22
 
23
- def details(level = 0)
23
+ def details(level = 0, show_passwd = false)
24
24
  lvl = Array.new(level, " ").join
25
25
 
26
- return [
27
- "#{lvl}Title : #{@title}".green,
28
- # "#{lvl}UUID : #{@uuid}",
29
- "#{lvl}Username : #{@username}",
30
- # "#{lvl}Password : #{password}".red,
31
- "#{lvl}Url : #{@url}",
32
- "#{lvl}Notes : #{@notes}"
33
- ].join("\n")
26
+ ret = Array.new
27
+ ret.push("#{lvl}Title : #{@title}".green)
28
+ # ret.push("#{lvl}UUID : #{@uuid}")
29
+ ret.push("#{lvl}Username : #{@username}")
30
+ ret.push("#{lvl}Password : #{password}".red) if (show_passwd)
31
+ ret.push("#{lvl}Url : #{@url}")
32
+
33
+ first = true
34
+ @notes.each_line do |line|
35
+ if (first)
36
+ ret.push("#{lvl}Notes : #{line.strip}")
37
+ first = false
38
+ else
39
+ ret.push("#{lvl} #{line.strip}")
40
+ end
41
+ end
42
+
43
+ return ret.join("\n")
34
44
  end
35
45
 
36
46
  def initialize(params)
37
47
  @group = params.fetch("Group", nil)
38
48
  @keepass = params.fetch("Keepass", nil)
39
- @password = params.fetch("Notes", "")
49
+ @notes = params.fetch("Notes", "")
40
50
  @password = params.fetch("Password", "")
41
51
  @title = params.fetch("Title", "")
42
52
  @url = params.fetch("URL", "")
@@ -19,7 +19,7 @@ class RubeePass::Group
19
19
  return (self.name.downcase <=> other.name.downcase)
20
20
  end
21
21
 
22
- def details(level = 0)
22
+ def details(level = 0, show_passwd = false)
23
23
  out = Array.new
24
24
  lvl = Array.new(level, " ").join
25
25
 
@@ -31,11 +31,11 @@ class RubeePass::Group
31
31
  end
32
32
 
33
33
  @groups.values.each do |group|
34
- out.push(group.details(level + 1))
34
+ out.push(group.details(level + 1, show_passwd))
35
35
  end
36
36
 
37
37
  @entries.values.each do |entry|
38
- out.push(entry.details(level + 1))
38
+ out.push(entry.details(level + 1, show_passwd))
39
39
  end
40
40
 
41
41
  return out.join("\n")
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rubeepass
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Miles Whittaker