# encoding: UTF-8 LIB_DIR = File.expand_path(File.join(File.dirname(__FILE__), '..')) ROOT_DIR = File.expand_path(File.join(LIB_DIR, '..')) # expand_path is used to get "wpscan/" instead of "wpscan/lib/../" DATA_DIR = File.join(ROOT_DIR, 'data') CONF_DIR = File.join(ROOT_DIR, 'conf') CACHE_DIR = File.join(ROOT_DIR, 'cache') WPSCAN_LIB_DIR = File.join(LIB_DIR, 'wpscan') WPSTOOLS_LIB_DIR = File.join(LIB_DIR, 'wpstools') UPDATER_LIB_DIR = File.join(LIB_DIR, 'updater') COMMON_LIB_DIR = File.join(LIB_DIR, 'common') MODELS_LIB_DIR = File.join(COMMON_LIB_DIR, 'models') COLLECTIONS_LIB_DIR = File.join(COMMON_LIB_DIR, 'collections') LOG_FILE = File.join(ROOT_DIR, 'log.txt') # Plugins directories COMMON_PLUGINS_DIR = File.join(COMMON_LIB_DIR, 'plugins') WPSCAN_PLUGINS_DIR = File.join(WPSCAN_LIB_DIR, 'plugins') # Not used ATM WPSTOOLS_PLUGINS_DIR = File.join(WPSTOOLS_LIB_DIR, 'plugins') # Data files PLUGINS_FILE = File.join(DATA_DIR, 'plugins.txt') PLUGINS_FULL_FILE = File.join(DATA_DIR, 'plugins_full.txt') PLUGINS_VULNS_FILE = File.join(DATA_DIR, 'plugin_vulns.json') THEMES_FILE = File.join(DATA_DIR, 'themes.txt') THEMES_FULL_FILE = File.join(DATA_DIR, 'themes_full.txt') THEMES_VULNS_FILE = File.join(DATA_DIR, 'theme_vulns.json') WP_VULNS_FILE = File.join(DATA_DIR, 'wp_vulns.json') WP_VERSIONS_FILE = File.join(DATA_DIR, 'wp_versions.xml') LOCAL_FILES_FILE = File.join(DATA_DIR, 'local_vulnerable_files.xml') # VULNS_XSD = File.join(DATA_DIR, 'vuln.xsd') WP_VERSIONS_XSD = File.join(DATA_DIR, 'wp_versions.xsd') LOCAL_FILES_XSD = File.join(DATA_DIR, 'local_vulnerable_files.xsd') USER_AGENTS_FILE = File.join(DATA_DIR, 'user-agents.txt') WPSCAN_VERSION = '2.4.1' $LOAD_PATH.unshift(LIB_DIR) $LOAD_PATH.unshift(WPSCAN_LIB_DIR) $LOAD_PATH.unshift(MODELS_LIB_DIR) def kali_linux? begin File.readlines("/etc/debian_version").grep(/^kali/i).any? rescue false end end require 'environment' # TODO : add an exclude pattern ? def require_files_from_directory(absolute_dir_path, files_pattern = '*.rb') files = Dir[File.join(absolute_dir_path, files_pattern)] # Files in the root dir are loaded first, then those in the subdirectories files.sort_by { |file| [file.count("/"), file] }.each do |f| f = File.expand_path(f) #puts "require #{f}" # Used for debug require f end end require_files_from_directory(COMMON_LIB_DIR, '**/*.rb') # Add protocol def add_http_protocol(url) url =~ /^https?:/ ? url : "http://#{url}" end def add_trailing_slash(url) url =~ /\/$/ ? url : "#{url}/" end def remove_conditional_comments(text) text.gsub(/