public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Rick Farina" <zerochaos@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: app-eselect/eselect-metasploit/, app-eselect/eselect-metasploit/files/
Date: Wed, 12 Jun 2019 20:10:54 +0000 (UTC)	[thread overview]
Message-ID: <1560370252.3002c3d0893c0c0f333d60eeb6d4a41e5fcb127a.zerochaos@gentoo> (raw)

commit:     3002c3d0893c0c0f333d60eeb6d4a41e5fcb127a
Author:     Rick Farina <zerochaos <AT> gentoo <DOT> org>
AuthorDate: Wed Jun 12 20:10:40 2019 +0000
Commit:     Rick Farina <zerochaos <AT> gentoo <DOT> org>
CommitDate: Wed Jun 12 20:10:52 2019 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=3002c3d0

app-eselect/eselect-metasploit: fix lib dir

get_libdir and other hacks were being used despite the ebuild installing
to /usr/lib and not /usr/$(get_libdir) now.  This was hidden by profile
17.0 but found by a user on 17.1

Package-Manager: Portage-2.3.67, Repoman-2.3.14
Signed-off-by: Rick Farina <zerochaos <AT> gentoo.org>

 .../eselect-metasploit-0.17.ebuild                 |  40 +++++
 .../files/metasploit.eselect-0.17                  | 197 +++++++++++++++++++++
 2 files changed, 237 insertions(+)

diff --git a/app-eselect/eselect-metasploit/eselect-metasploit-0.17.ebuild b/app-eselect/eselect-metasploit/eselect-metasploit-0.17.ebuild
new file mode 100644
index 00000000000..1d5193b5460
--- /dev/null
+++ b/app-eselect/eselect-metasploit/eselect-metasploit-0.17.ebuild
@@ -0,0 +1,40 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+
+inherit multilib
+
+DESCRIPTION="eselect module for metasploit"
+HOMEPAGE="https://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.17" metasploit.eselect
+
+	newbin "${FILESDIR}"/msfloader-0.16 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/metasploit.eselect-0.17 b/app-eselect/eselect-metasploit/files/metasploit.eselect-0.17
new file mode 100644
index 00000000000..f27023354b5
--- /dev/null
+++ b/app-eselect/eselect-metasploit/files/metasploit.eselect-0.17
@@ -0,0 +1,197 @@
+# -*-eselect-*-  vim: ft=eselect
+# Copyright 2005-2019 Gentoo Authors
+# 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 with --use-old from opencl.eselect
+#all modified randomly until it worked, entropy is wonderful
+###/WARNING
+
+
+MSFPATH="/usr/lib/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/lib/${target} ]]; then
+		ln -s "${target}" "${EROOT}${MSFPATH}"
+		for i in $(qlist metasploit | grep /usr/lib/${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/lib/${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
+}


             reply	other threads:[~2019-06-12 20:11 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-06-12 20:10 Rick Farina [this message]
  -- strict thread matches above, loose matches on Subject: below --
2020-07-02 10:24 [gentoo-commits] repo/gentoo:master commit in: app-eselect/eselect-metasploit/, app-eselect/eselect-metasploit/files/ Mikle Kolyada

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1560370252.3002c3d0893c0c0f333d60eeb6d4a41e5fcb127a.zerochaos@gentoo \
    --to=zerochaos@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox