pwnagotchi/setup.py
scifijunkie eb77f29135 Updated and coverted
Updated and coverted my fork from evilsocket/pwnagotchi master branch to aluminum-ice/pwnagotchi master branch

removed hannadiamond repository

changed pwnagotchi community plugin repository to my pwnagotchi community plugin repository

removed mastodon plugin

removed screenrc configuration

cloned pwnagotchi community plugin repository only once

removed configure pwnagotchi for the custom plugin directory from builder/pwnagotchi.yml

reconfigured auto-update to point to the scifijunkie repo

edited main.custom_plugins to point to /usr/local/share/pwnagotchi/custom-plugins in pwnagotchi/defaults.toml

removed mastodon configuration from defaults.toml

removed ntfy configuration from defaults.toml

removed handshakes-m.py from default plugin

removed mastodon.py from default plugin

removed ntfy.py from default plugin

addressed [ERROR] [update] 'tag_name'

addressed rate limit exceeded

addressed TypeError: Descriptors cannot not be created directly.

Reran pip-compile
2024-05-23 12:37:59 -05:00

113 lines
3.5 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
from setuptools import setup, find_packages
from setuptools.command.install import install
import glob
import logging
import os
import re
import shutil
import warnings
log = logging.getLogger(__name__)
def install_file(source_filename, dest_filename):
# do not overwrite network configuration if it exists already
# https://github.com/evilsocket/pwnagotchi/issues/483
if dest_filename.startswith('/etc/network/interfaces.d/') and os.path.exists(dest_filename):
log.info(f"{dest_filename} exists, skipping ...")
return
log.info(f"installing {source_filename} to {dest_filename} ...")
dest_folder = os.path.dirname(dest_filename)
if not os.path.isdir(dest_folder):
os.makedirs(dest_folder)
shutil.copyfile(source_filename, dest_filename)
if dest_filename.startswith("/usr/bin/"):
os.chmod(dest_filename, 0o755)
def install_system_files():
setup_path = os.path.dirname(__file__)
data_path = os.path.join(setup_path, "builder/data")
for source_filename in glob.glob("%s/**" % data_path, recursive=True):
if os.path.isfile(source_filename):
dest_filename = source_filename.replace(data_path, '')
install_file(source_filename, dest_filename)
def restart_services():
# reload systemd units
os.system("systemctl daemon-reload")
# for people updating https://github.com/evilsocket/pwnagotchi/pull/551/files
os.system("systemctl enable fstrim.timer")
class CustomInstall(install):
def run(self):
super().run()
if os.geteuid() != 0:
warnings.warn(
"Not running as root, can't install pwnagotchi system files!"
)
return
install_system_files()
restart_services()
def version(version_file):
#with open(version_file, 'rt') as vf:
#version_file_content = vf.read()
#version_match = re.search(r"__version__\s*=\s*[\"\']([^\"\']+)", version_file_content)
#if version_match:
#return version_match.groups()[0]
if "PWN_VERSION" in os.environ:
return os.environ["PWN_VERSION"]
else:
with open(version_file, 'rt') as vf:
version_file_content = vf.read()
version_match = re.search(r"__version__\s*=\s*[\"\']([^\"\']+)", version_file_content)
if version_match:
return version_match.groups()[0]
return None
with open('requirements.txt') as fp:
required = [
line.strip()
for line in fp
if line.strip() and not line.startswith("--")
]
VERSION_FILE = 'pwnagotchi/_version.py'
pwnagotchi_version = version(VERSION_FILE)
setup(name='pwnagotchi',
version=pwnagotchi_version,
description='(⌐■_■) - Deep Reinforcement Learning instrumenting bettercap for WiFI pwning.',
author='evilsocket && the dev team',
author_email='evilsocket@gmail.com',
url='https://pwnagotchi.ai/',
license='GPL',
install_requires=required,
cmdclass={
"install": CustomInstall,
},
scripts=['bin/pwnagotchi'],
package_data={'pwnagotchi': ['defaults.toml', 'pwnagotchi/defaults.toml', 'locale/*/LC_MESSAGES/*.mo']},
include_package_data=True,
packages=find_packages(),
classifiers=[
'Programming Language :: Python :: 3',
'Development Status :: 5 - Production/Stable',
'License :: OSI Approved :: GNU General Public License (GPL)',
'Environment :: Console',
])