Had to change 'md5' mentions to 'hash' since depending on the version of puppet they will either be using MD5 or SHA256

This commit is contained in:
Tristan Ancelet 2024-05-18 18:07:50 -05:00
parent 76f04b44ac
commit 2125a2f9d5
2 changed files with 16 additions and 16 deletions

View File

@ -14,7 +14,7 @@ This project is meant to handle & query the filebucket locally on the device of
This will search for a file by a substring (or full path) of the file you are attempting to view or restore.
### List
This will simply list out every file that has been backed up to the bucket in `<TIME> : <MD5> : <FILEPATH>` format.
This will simply list out every file that has been backed up to the bucket in `<TIME> : <HASH> : <FILEPATH>` format.
### List-Files
This will allow you to just list the specific (unique) files/paths that were backed up to the bucket during puppet runs before they get changed on disk.

View File

@ -17,7 +17,7 @@ Actions:
search <term> : Search for bucket entries matching a portion of the filepath
list : List all Bucket entries
list-files : List all files/paths that have been backed up to the bucket
get <entry-md5> : Get the content of a specific entry (by md5)
get <entry-hash> : Get the content of a specific entry (by hash)
Global Flags:
-d | --debug : Set debug flag
@ -174,14 +174,14 @@ end
# BEGIN: Classes
class BucketEntry
attr_reader :md5, :filepaths, :mtime
attr_reader :hash, :filepaths, :mtime
def initialize (entry_dir)
@entry_dir = entry_dir
@md5 = File.basename(entry_dir)
@hash = File.basename(entry_dir)
@filepaths = Array.new
File.open("#{entry_dir}/paths") do |file|
file.read().split(/\n/).each do |path|
log "BucketEntry[#{@md5}] adding #{path} to @filepaths"
log "BucketEntry[#{@hash}] adding #{path} to @filepaths"
@filepaths.push(path)
end
end
@ -190,12 +190,12 @@ class BucketEntry
end
def path_include? (path_string)
log "BucketEntry[#{md5}] was called with #{path_string}"
log "BucketEntry[#{hash}] was called with #{path_string}"
@filepaths.each.any? {|path| path.include? path_string}
end
def infostring
"Entry [#{@md5}]:
"Entry [#{@hash}]:
Paths: #{@filepaths.join(',')}
MTIME: #{@mtime}
@ -203,11 +203,11 @@ class BucketEntry
end
def inline_info
"#{@mtime} : #{@md5} : #{@filepaths.join(',')}"
"#{@mtime} : #{@hash} : #{@filepaths.join(',')}"
end
def content
log "BucketEntry[#{@md5}] getting contents"
log "BucketEntry[#{@hash}] getting contents"
File.open("#{@entry_dir}/contents",'r') do |file|
file.read()
end
@ -230,7 +230,7 @@ class Bucket
log "\"#{directory}\" was grabbed from bucket directory. Making new BucketEntry"
entry = BucketEntry.new(directory)
@entries.push(entry)
log "BucketEntry[#{entry.md5}] was added to @entries Size=#{@entries.count()}"
log "BucketEntry[#{entry.hash}] was added to @entries Size=#{@entries.count()}"
end
log "Bucket[#{@bucketdir}] was loaded"
end
@ -245,19 +245,19 @@ end
def search_entries_paths (bucket)
log "user entered"
bucket.entries.each do |entry|
log "checking Entry[#{entry.md5}]"
log "checking Entry[#{entry.hash}]"
if entry.path_include? $CONFIG[:search_term]
puts entry.inline_info
end
end
end
def get_content_of_entry_md5 (bucket)
def get_content_of_entry_hash (bucket)
log "user entered"
bucket.entries.each do |entry|
log "checking Entry[#{entry.md5}]"
if entry.md5 == $CONFIG[:search_term]
log "BucketEntry[#{entry.md5}] Matched. Getting contents"
log "checking Entry[#{entry.hash}]"
if entry.hash == $CONFIG[:search_term]
log "BucketEntry[#{entry.hash}] Matched. Getting contents"
puts entry.content
exit
end
@ -293,7 +293,7 @@ if __FILE__ == $0
search_entries_paths bucket
when 'get'
get_content_of_entry_md5 bucket
get_content_of_entry_hash bucket
when 'list'
list_all_entries bucket