fix test cleanup and install firefox dependencies
This commit is contained in:
@@ -78,9 +78,17 @@ RUN adduser --home /beef --gecos beef --disabled-password beef \
|
|||||||
zlib1g \
|
zlib1g \
|
||||||
bison \
|
bison \
|
||||||
nodejs \
|
nodejs \
|
||||||
|
firefox-esr \
|
||||||
&& apt-get -y clean \
|
&& apt-get -y clean \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Install geckodriver for Selenium tests
|
||||||
|
RUN GECKODRIVER_VERSION=$(curl -sL https://api.github.com/repos/mozilla/geckodriver/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")') \
|
||||||
|
&& wget -q "https://github.com/mozilla/geckodriver/releases/download/${GECKODRIVER_VERSION}/geckodriver-${GECKODRIVER_VERSION}-linux64.tar.gz" \
|
||||||
|
&& tar -xzf "geckodriver-${GECKODRIVER_VERSION}-linux64.tar.gz" -C /usr/local/bin \
|
||||||
|
&& chmod +x /usr/local/bin/geckodriver \
|
||||||
|
&& rm "geckodriver-${GECKODRIVER_VERSION}-linux64.tar.gz"
|
||||||
|
|
||||||
# Use gemset created by the builder above
|
# Use gemset created by the builder above
|
||||||
COPY --chown=beef:beef . /beef
|
COPY --chown=beef:beef . /beef
|
||||||
COPY --from=builder /usr/local/bundle /usr/local/bundle
|
COPY --from=builder /usr/local/bundle /usr/local/bundle
|
||||||
|
|||||||
@@ -229,8 +229,7 @@ require 'socket'
|
|||||||
@host = '127.0.0.1'
|
@host = '127.0.0.1'
|
||||||
|
|
||||||
unless port_available?
|
unless port_available?
|
||||||
print_error "Port #{@port} is already in use. Exiting."
|
raise "Port #{@port} is already in use. Cannot start BeEF server."
|
||||||
exit
|
|
||||||
end
|
end
|
||||||
load_beef_extensions_and_modules
|
load_beef_extensions_and_modules
|
||||||
|
|
||||||
@@ -317,11 +316,9 @@ require 'socket'
|
|||||||
end
|
end
|
||||||
|
|
||||||
def stop_beef_server(pid)
|
def stop_beef_server(pid)
|
||||||
exit if pid.nil?
|
return if pid.nil?
|
||||||
# Shutting down server
|
|
||||||
Process.kill("KILL", pid) unless pid.nil?
|
Process.kill("KILL", pid) unless pid.nil?
|
||||||
Process.wait(pid) unless pid.nil? # Ensure the process has exited and the port is released
|
Process.wait(pid) unless pid.nil? # Ensure the process has exited and the port is released
|
||||||
pid = nil
|
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -10,6 +10,8 @@ require 'spec/support/constants.rb'
|
|||||||
def start_beef_and_hook_browser()
|
def start_beef_and_hook_browser()
|
||||||
reset_beef_db
|
reset_beef_db
|
||||||
pid = start_beef_server_and_wait
|
pid = start_beef_server_and_wait
|
||||||
|
|
||||||
|
begin
|
||||||
beef_session = BeefTest.login
|
beef_session = BeefTest.login
|
||||||
hooked_browser = BeefTest.new_victim
|
hooked_browser = BeefTest.new_victim
|
||||||
|
|
||||||
@@ -27,12 +29,17 @@ def start_beef_and_hook_browser()
|
|||||||
beef_session.click_on('Commands')
|
beef_session.click_on('Commands')
|
||||||
|
|
||||||
return pid, beef_session, hooked_browser
|
return pid, beef_session, hooked_browser
|
||||||
|
rescue => e
|
||||||
|
# If setup fails, cleanup the server before re-raising
|
||||||
|
stop_beef_server(pid)
|
||||||
|
raise e
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def stop_beef_and_unhook_browser(pid, beef_session, hooked_browser)
|
def stop_beef_and_unhook_browser(pid, beef_session, hooked_browser)
|
||||||
stop_beef_server(pid)
|
stop_beef_server(pid)
|
||||||
beef_session.driver.browser.close
|
beef_session.driver.browser.close if beef_session
|
||||||
hooked_browser.driver.browser.close
|
hooked_browser.driver.browser.close if hooked_browser
|
||||||
end
|
end
|
||||||
|
|
||||||
def navigate_to_hooked_browser(session, hooked_browser_text = nil)
|
def navigate_to_hooked_browser(session, hooked_browser_text = nil)
|
||||||
|
|||||||
Reference in New Issue
Block a user