diff options
author | Ulrich Müller <ulm@gentoo.org> | 2015-03-31 16:51:15 +0000 |
---|---|---|
committer | Ulrich Müller <ulm@gentoo.org> | 2015-03-31 16:51:15 +0000 |
commit | acc442fe42f73223c58b705e03507bc1f8c1607d (patch) | |
tree | ac608b1d8d92187c8eab21d466b6feaffb5eece6 /app-eselect/eselect-metasploit | |
parent | Move package from app-admin to app-eselect category. (diff) | |
download | gentoo-2-acc442fe42f73223c58b705e03507bc1f8c1607d.tar.gz gentoo-2-acc442fe42f73223c58b705e03507bc1f8c1607d.tar.bz2 gentoo-2-acc442fe42f73223c58b705e03507bc1f8c1607d.zip |
Move package from app-admin to app-eselect category.
(Portage version: 2.2.18/cvs/Linux x86_64, RepoMan options: --force, signed Manifest commit with key 9433907D693FB5B8!)
Diffstat (limited to 'app-eselect/eselect-metasploit')
-rw-r--r-- | app-eselect/eselect-metasploit/ChangeLog | 66 | ||||
-rw-r--r-- | app-eselect/eselect-metasploit/eselect-metasploit-0.16.ebuild | 41 | ||||
-rw-r--r-- | app-eselect/eselect-metasploit/files/91metasploit | 8 | ||||
-rw-r--r-- | app-eselect/eselect-metasploit/files/metasploit.eselect-0.13 | 207 | ||||
-rwxr-xr-x | app-eselect/eselect-metasploit/files/msfloader-0.16 | 41 | ||||
-rw-r--r-- | app-eselect/eselect-metasploit/files/msfrpcd.confd | 16 | ||||
-rw-r--r-- | app-eselect/eselect-metasploit/files/msfrpcd.initd | 22 | ||||
-rw-r--r-- | app-eselect/eselect-metasploit/metadata.xml | 10 |
8 files changed, 411 insertions, 0 deletions
diff --git a/app-eselect/eselect-metasploit/ChangeLog b/app-eselect/eselect-metasploit/ChangeLog new file mode 100644 index 000000000000..4f7981ae6a17 --- /dev/null +++ b/app-eselect/eselect-metasploit/ChangeLog @@ -0,0 +1,66 @@ +# ChangeLog for app-eselect/eselect-metasploit +# Copyright 1999-2015 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/app-eselect/eselect-metasploit/ChangeLog,v 1.1 2015/03/31 16:51:15 ulm Exp $ + + 31 Mar 2015; Ulrich Müller <ulm@gentoo.org> +eselect-metasploit-0.16.ebuild, + +files/91metasploit, +files/metasploit.eselect-0.13, +files/msfloader-0.16, + +files/msfrpcd.confd, +files/msfrpcd.initd, +metadata.xml: + Move package from app-admin to app-eselect category. + +*eselect-metasploit-0.16 (02 Jan 2015) + + 02 Jan 2015; Rick Farina <zerochaos@gentoo.org> +eselect-metasploit-0.16.ebuild, + +files/msfloader-0.16, -eselect-metasploit-0.15.ebuild, -files/msfloader-0.15: + fix loader script to use desired version of ruby + +*eselect-metasploit-0.15 (09 Oct 2014) + + 09 Oct 2014; Rick Farina <zerochaos@gentoo.org> + +eselect-metasploit-0.15.ebuild, +files/msfloader-0.15, + -eselect-metasploit-0.13.ebuild, -eselect-metasploit-0.14.ebuild, + -files/msfloader-0.13, -files/msfloader-0.14: + update to resolve issue trying to copy non-existant gemspec (older metasploit + versions) + + 03 Oct 2014; Rick Farina <zerochaos@gentoo.org> files/91metasploit, + files/msfloader-0.14: + move env to proper place + +*eselect-metasploit-0.14 (03 Oct 2014) + + 03 Oct 2014; Rick Farina <zerochaos@gentoo.org> + +eselect-metasploit-0.14.ebuild, +files/msfloader-0.14: + update loader based on upstream metasploit changes + + 28 Jun 2014; Rick Farina <zerochaos@gentoo.org> + -eselect-metasploit-0.11.ebuild, -eselect-metasploit-0.12.ebuild, + -files/metasploit.eselect-0.11, -files/metasploit.eselect-0.12, + -files/msfconsole-0.12: + cleanup old + +*eselect-metasploit-0.13 (25 Apr 2014) + + 25 Apr 2014; Rick Farina <zerochaos@gentoo.org> + +eselect-metasploit-0.13.ebuild, +files/metasploit.eselect-0.13, + +files/msfloader-0.13: + improvements to the new method of handling Gemfile.lock + + 25 Apr 2014; Rick Farina <zerochaos@gentoo.org> files/metasploit.eselect-0.12: + missed a debug line, removing + +*eselect-metasploit-0.12 (25 Apr 2014) + + 25 Apr 2014; Rick Farina <zerochaos@gentoo.org> + +eselect-metasploit-0.12.ebuild, +files/metasploit.eselect-0.12, + +files/msfconsole-0.12: + create a loader script for msfconsole to handle the bundler Gemfile hacks, + minor cleanup for added safety + +*eselect-metasploit-0.11 (15 Dec 2013) + + 15 Dec 2013; Rick Farina <zerochaos@gentoo.org> + +eselect-metasploit-0.11.ebuild, +files/91metasploit, + +files/metasploit.eselect-0.11, +files/msfrpcd.confd, +files/msfrpcd.initd, + +metadata.xml: + initial commit of eselect-metasploit for slotted metasploit support, imported + from the pentoo overlay diff --git a/app-eselect/eselect-metasploit/eselect-metasploit-0.16.ebuild b/app-eselect/eselect-metasploit/eselect-metasploit-0.16.ebuild new file mode 100644 index 000000000000..36493abad088 --- /dev/null +++ b/app-eselect/eselect-metasploit/eselect-metasploit-0.16.ebuild @@ -0,0 +1,41 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-eselect/eselect-metasploit/eselect-metasploit-0.16.ebuild,v 1.1 2015/03/31 16:51:15 ulm Exp $ + +EAPI=5 + +inherit multilib + +DESCRIPTION="eselect module for metasploit" +HOMEPAGE="http://www.pentoo.ch/" +SRC_URI="" + +LICENSE="GPL-2" +SLOT="0" +KEYWORDS="~amd64 ~arm ~x86" +IUSE="" + +DEPEND="app-admin/eselect + !<net-analyzer/metasploit-4.6" +RDEPEND="${DEPEND}" + +S=${WORKDIR} + +src_install() { + #force to use the outdated bundled version of metasm + doenvd "${FILESDIR}"/91metasploit + + newinitd "${FILESDIR}"/msfrpcd.initd msfrpcd + newconfd "${FILESDIR}"/msfrpcd.confd msfrpcd + + insinto /usr/share/eselect/modules + newins "${FILESDIR}/metasploit.eselect-0.13" metasploit.eselect + + newbin "${FILESDIR}"/msfloader-${PV} msfloader +} + +pkg_postinst() { + "${EROOT}"/usr/bin/eselect metasploit set --use-old 1 + elog "To switch between installed slots, execute as root:" + elog " # eselect metasploit set [slot number]" +} diff --git a/app-eselect/eselect-metasploit/files/91metasploit b/app-eselect/eselect-metasploit/files/91metasploit new file mode 100644 index 000000000000..ce58b5043ddd --- /dev/null +++ b/app-eselect/eselect-metasploit/files/91metasploit @@ -0,0 +1,8 @@ +MSF_DATABASE_CONFIG=/usr/lib/metasploit/config/database.yml + +# needed because MSF ships an old version of metasm +# which isn't compatible with the new one +MSF_LOCAL_LIB="/usr/lib/metasploit/lib/metasm" + +# needed because MSF doesn't know where it is since the alzheimer's +MSF_ROOT=/usr/lib/metasploit diff --git a/app-eselect/eselect-metasploit/files/metasploit.eselect-0.13 b/app-eselect/eselect-metasploit/files/metasploit.eselect-0.13 new file mode 100644 index 000000000000..be4f780e935d --- /dev/null +++ b/app-eselect/eselect-metasploit/files/metasploit.eselect-0.13 @@ -0,0 +1,207 @@ +# -*-eselect-*- vim: ft=eselect +# Copyright 2005-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 or later +# $ + +DESCRIPTION="Control which metaploit version is active" +MAINTAINER="zerochaos@pentoo.ch" + +###WARNING: don't even think of using this insanity for a reference (but it works,mostly) +#base idea from kernel.eselect, get_libdir from php.eselect with --use-old from opencl.eselect +#all modified randomly until it worked, entropy is wonderful +###/WARNING + +inherit multilib + +get_libdir() { + local dir + if has lib64 $(list_libdirs); then + echo lib64 + return + fi + echo lib +} + +MSFPATH="/usr/$(get_libdir)/metasploit" + +# find a list of metasploit symlink targets and sort them +find_targets() { + local f + for f in "${EROOT}${MSFPATH}"[[:digit:]]*; do + [[ -d ${f} ]] && basename "${f}" + done | LC_ALL=C sort +} + +# remove the metasploit symlink +remove_symlink() { + for i in $(qlist metasploit | grep $(canonicalise "${EROOT}${MSFPATH}")/msf) + do + if [ -L /usr/bin/$(echo ${i} | awk -F'/' '{print $5}') ]; then + unlink /usr/bin/$(echo ${i} | awk -F'/' '{print $5}') || die -q "failed to unlink ${i}" + fi + done + if [ -L ${EROOT}${MSFPATH} ]; then + unlink "${EROOT}${MSFPATH}" || die -q "failed to unlink ${EROOT}${MSFPATH}" + elif [ -e ${EROOT}${MSFPATH} ]; then + die -q "${EROOT}${MSFPATH} exists but is not a symlink" + fi +} + +# set the metasploit symlink +set_symlink() { + local target=$1 + + if is_number "${target}"; then + local targets=( $(find_targets) ) + target=${targets[target-1]} + fi + + if [[ -z ${target} ]]; then + die -q "Target \"$1\" doesn't appear to be valid!" + elif [[ -d ${EROOT}/usr/$(get_libdir)/${target} ]]; then + ln -s "${target}" "${EROOT}${MSFPATH}" + for i in $(qlist metasploit | grep /usr/$(get_libdir)/${target}/msf) + do + ln -s /usr/bin/msfloader /usr/bin/$(echo ${i} | awk -F'/' '{print $5}') + done + #this elif looks like it is trying to support setting by slot only, + #but that isn't supported by the rest of the script... fix or remove? + elif [[ -d ${EROOT}${MSFPATH}${target} ]]; then + ln -s "metasploit${target}" "${EROOT}${MSFPATH}" + for i in $(qlist metasploit | grep /usr/$(get_libdir)/${target}/msf) + do + ln -s /usr/bin/msfloader /usr/bin/$(echo ${i} | awk -F'/' '{print $5}') + done + else + die -q "Target \"$1\" doesn't appear to be valid!" + fi +} + +# wrapper to safely set the symlink +set_symlink_safe() { + if [[ -L ${EROOT}${MSFPATH} ]]; then + # existing symlink + remove_symlink || die -q "Couldn't remove existing symlink" + set_symlink "$1" || die -q "Couldn't set a new symlink" + #um, why is there an env-update here? + env-update + elif [[ -e ${EROOT}${MSFPATH} ]]; then + # we have something strange + die -q "${EROOT}${MSFPATH} exists but is not a symlink" + else + set_symlink "$1" || die -q "Couldn't set a new symlink" + fi +} + +### show action ### + +describe_show() { + echo "Show the current metasploit symlink" +} + +do_show() { + write_list_start "Current metasploit symlink:" + if [[ -L ${EROOT}${MSFPATH} ]]; then + local metasploit=$(canonicalise "${EROOT}${MSFPATH}") + write_kv_list_entry "${metasploit%/}" "" + else + write_kv_list_entry "(unset)" "" + fi +} + +### list action ### + +describe_list() { + echo "List available metasploit symlink targets" +} + +do_list() { + local i targets=( $(find_targets) ) + + write_list_start "Available metasploit symlink targets:" + for (( i = 0; i < ${#targets[@]}; i++ )); do + [[ ${targets[i]} = \ + $(basename "$(canonicalise "${EROOT}${MSFPATH}")") ]] \ + && targets[i]=$(highlight_marker "${targets[i]}") + done + write_numbered_list -m "(none found)" "${targets[@]}" +} + +### set action ### + +describe_set() { + echo "Set a new metasploit symlink target" +} + +describe_set_parameters() { + echo "<target>" +} + +describe_set_options() { + echo "<target> : Target name or number (from 'list' action)" + echo "--use-old : If an implementation is already set, use that one instead" +} + +do_set() { + local action="error" + local current=$(basename "$(canonicalise "${EROOT}${MSFPATH}")") + local available=( $(find_targets) ) + local new + local opt + + while [[ ${#@} -gt 0 ]] ; do + opt=$1 + shift + case ${opt} in + --use-old) + if [[ -n "${current}" ]] && has "${current}" "${available[@]}"; then + action="old-implementation" + fi + ;; + metasploit*) + if [[ "${action}" != "old-implementation" ]] ; then + action="set-implementation" + fi + + if has ${opt} ${available[@]}; then + new="${opt}" + else + echo "You need to emerge ${opt} before you try to eselect it" + fi + ;; + *) + if [[ "${action}" != "old-implementation" ]] ; then + action="set-implementation" + fi + + if is_number ${opt} ; then + #targets=( $(get_implementations) ) + new=${available[opt - 1]} + if [[ -z ${new} ]] ; then + die -q "Unrecognized option: ${opt}" + fi + else + die -q "Unrecognized option: ${opt}" + fi + ;; + esac + done + + case ${action} in + old-implementation) + set_symlink_safe ${current} + return $? + ;; + set-implementation) + if [[ -n ${new} ]] ; then + set_symlink_safe ${new} + return $? + else + die -q "Please specify an implementation to set" + fi + ;; + *) + die -q "Invalid usage of set action." + ;; + esac +} diff --git a/app-eselect/eselect-metasploit/files/msfloader-0.16 b/app-eselect/eselect-metasploit/files/msfloader-0.16 new file mode 100755 index 000000000000..231275a9b1f6 --- /dev/null +++ b/app-eselect/eselect-metasploit/files/msfloader-0.16 @@ -0,0 +1,41 @@ +#!/bin/sh + +#todo: +#add in optional auto starting/stopping of postgres + +#read the desired version of ruby from the eselected version of msf +header="$(head -n1 /usr/lib/metasploit/msfconsole)" +ruby="${header:2}" + +#normally msf makes this dir, however, this script runs first +if [ ! -d ~/.msf4 ]; then + mkdir ~/.msf4 +fi + +#we cannot control if msf* exits normally so always start with cleanup +if [ -f ~/.msf4/Gemfile ]; then + rm ~/.msf4/Gemfile +fi +if ls -A ~/.msf4/*.gemspec > /dev/zero 2>&1; then + rm ~/.msf4/*.gemspec +fi + +#fetch the latest Gemfile and gemspecsfrom the selected version of msf +cp /usr/lib/metasploit/Gemfile ~/.msf4/ +if ls -A /usr/lib/metasploit/*.gemspec > /dev/zero 2>&1; then + cp /usr/lib/metasploit/*.gemspec ~/.msf4/ +fi + +#ensure Gemfile.lock is up to date +BUNDLE_GEMFILE=~/.msf4/Gemfile ${ruby} -S bundle check > /dev/null 2>&1 +if [ "$?" != "0" ]; then + if [ -f ~/.msf4/Gemfile.lock ]; then + rm ~/.msf4/Gemfile.lock + else + echo "Something went wrong, please open a bug for metasploit on https://bugs.gentoo.org" + fi +fi + +#ready to go +BUNDLE_GEMFILE=~/.msf4/Gemfile ${ruby} -S bundle exec /usr/lib/metasploit/$(basename $0) "$@" +#profit diff --git a/app-eselect/eselect-metasploit/files/msfrpcd.confd b/app-eselect/eselect-metasploit/files/msfrpcd.confd new file mode 100644 index 000000000000..d097e6cdfb71 --- /dev/null +++ b/app-eselect/eselect-metasploit/files/msfrpcd.confd @@ -0,0 +1,16 @@ +# Config file for /etc/init.d/metasploit + +# Bind to the following IP instead of the loopback address +IPADDR=127.0.0.1 + +# Bind to the following TCP port instead of default 55555 +PORT=55553 + +# Use the following username instead of msf +USER="msf" + +# Use the following password instead of msf +PASS="secure" + +# All options +MSF_OPTS="-U $USER -P $PASS -S -a $IPADDR -p $PORT" diff --git a/app-eselect/eselect-metasploit/files/msfrpcd.initd b/app-eselect/eselect-metasploit/files/msfrpcd.initd new file mode 100644 index 000000000000..e3f59de590a7 --- /dev/null +++ b/app-eselect/eselect-metasploit/files/msfrpcd.initd @@ -0,0 +1,22 @@ +#!/sbin/runscript +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/app-eselect/eselect-metasploit/files/msfrpcd.initd,v 1.1 2015/03/31 16:51:15 ulm Exp $ + +VERSION= +PIDFILE=/var/run/msfrpcd${VERSION}.pid + +start() { + ebegin "Starting msfrpcd" + start-stop-daemon --start --quiet --background \ + --exec /usr/bin/msfrpcd \ + --pidfile ${PIDFILE} \ + --make-pidfile -- -f ${MSF_OPTS} + eend $? +} + +stop() { + ebegin "Stopping msfrpcd" + start-stop-daemon --stop --quiet -s 9 --pidfile ${PIDFILE} + eend $? +} diff --git a/app-eselect/eselect-metasploit/metadata.xml b/app-eselect/eselect-metasploit/metadata.xml new file mode 100644 index 000000000000..4b6b68191d89 --- /dev/null +++ b/app-eselect/eselect-metasploit/metadata.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> +<maintainer> +<email>zerochaos@gentoo.org</email> +<name>Rick Farina</name> +</maintainer> +<longdescription lang="en"> +</longdescription> +</pkgmetadata> |