Files
metasploit-gs/tools/dev/verify_encoding.rb
T
2026-03-25 19:01:57 +00:00

53 lines
1.5 KiB
Ruby
Executable File

#!/usr/bin/env ruby
require 'find'
def report_non_ascii(file_path)
has_errors = false
File.foreach(file_path).with_index(1) do |line, line_number|
line_utf8 = line.force_encoding('UTF-8')
next unless line_utf8.valid_encoding?
line_utf8.chars.each_with_index do |char, index|
unless char.ascii_only?
has_errors = true
puts "Error - non-ascii character found. #{file_path}: line #{line_number}, char #{index+1} => #{char.inspect}"
end
end
end
has_errors
end
path_to_search = File.expand_path(File.join(__FILE__, '..', '..', '..'))
puts "Verifying binary encoding files in '#{path_to_search}' do not contain non-ASCII characters..."
has_errors = false
ran_at_least_once = false
# Walk all files
Find.find(path_to_search) do |path|
next unless File.file?(path)
next if path.include?('/vendor/')
next unless path.end_with?('.rb')
# Only check files that declare binary encoding
first_two_lines = File.open(path, "r") { |f| f.each_line.take(2).join }
next unless first_two_lines =~ /coding:\s*binary/
ran_at_least_once = true
has_errors |= report_non_ascii(path)
end
if !ran_at_least_once
puts "Did not run on any files, did not find any files with binary encoding declaration. Please check the script and ensure it is looking for the correct encoding declaration."
exit(1)
end
if has_errors
puts "Finished with errors. Please fix the above issues and run again."
exit(1)
end
puts "Finished without errors"