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
113 lines
3.5 KiB
Python
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',
|
|
])
|