Skip to content

Commit

Permalink
Merge pull request #16 from GhostofGoes/wip
Browse files Browse the repository at this point in the history
1.4.0
  • Loading branch information
GhostofGoes authored Sep 5, 2019
2 parents 130b3e0 + 7804018 commit 5bae69a
Show file tree
Hide file tree
Showing 73 changed files with 2,237 additions and 2,044 deletions.
27 changes: 0 additions & 27 deletions .codeclimate.yml

This file was deleted.

33 changes: 33 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# https://editorconfig.org/
root = true

[*]
indent_style = space
indent_size = 4
end_of_line = lf
charset = utf-8

# Docstrings and comments use max_line_length = 79
[*.py]
max_line_length = 99
insert_final_newline = true
trim_trailing_whitespace = true

# Use 2 spaces for the HTML files
[*.{yml,yaml}]
indent_size = 2

# The JSON files contain newlines inconsistently
[*.json]
indent_size = 2
insert_final_newline = unset

# Makefiles always use tabs for indentation
[Makefile]
indent_style = tab

[*.ps1]
end_of_line = crlf

[Vagrantfile]
indent_size = 2
56 changes: 56 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Source: https://github.com/alexkaratarakis/gitattributes

* text=auto

*.py text eol=lf
*.md text eol=lf
*.yaml text eol=lf
*.yml text eol=lf
*.json text eol=lf
*.rst text eol=lf

# Windows
*.ps1 text eol=crlf
*.bat text eol=crlf

# POSIX
*.sh text eol=lf
*.bash text eol=lf
.travis-osx text eol=lf
*.1 text eol=lf
Makefile text eol=lf

# Documents
*.doc diff=astextplain
*.DOC diff=astextplain
*.docx diff=astextplain
*.DOCX diff=astextplain
*.dot diff=astextplain
*.DOT diff=astextplain
*.pdf diff=astextplain
*.PDF diff=astextplain
*.rtf diff=astextplain
*.RTF diff=astextplain
*.vsdx diff=astextplain

*.adoc text
*.textile text
*.mustache text
*.csv text
*.tab text
*.tsv text
*.sql text

# Graphics
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.tif binary
*.tiff binary
*.ico binary
# SVG treated as an asset (binary) by default. If you want to treat it as text,
# comment-out the following line and uncomment the line after.
*.svg binary
#*.svg text
*.eps binary
5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,11 @@ automation/vsphere.yaml
**/*-logins.json

# Packaging
/deb_dist
pip-packages/
*.zip
/*.zip
/*.tar.gz
/*.tgz

# Notepad++ backups
*.bak
Expand Down
68 changes: 30 additions & 38 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,54 +1,46 @@
language: python
sudo: false
cache: pip

python:
- '2.7'
- '3.4'
- '3.5'
- '3.6'
- '3.7'

install:
- 'python setup.py install'
- 'pip install -U tox setuptools wheel coveralls'
- 'tox --notest'
- 'pip install .'

script:
- adles
- tox
- adles -h
- adles --version
- adles -c examples/spoofing-tutorial.yaml
- adles --verbose --validate examples/spoofing-tutorial.yaml
- adles --no-color -v -c examples/spoofing-tutorial.yaml
- adles -v -c examples/competition.yaml
- adles -v -c examples/competition-with-docker.yaml
- adles -v -c examples/experiment.yaml
- adles -v -c examples/edurange_total-recon.yaml
- adles -v -c examples/pentest-tutorial.yaml
- adles -v -c examples/firewall-tutorial.yaml
- adles -v -t infra -c infra.yaml
- adles -v -t exercise -c examples/experiment.yaml
- adles validate examples/spoofing-tutorial.yaml
- adles --verbose validate examples/spoofing-tutorial.yaml
- adles --no-color -v validate examples/spoofing-tutorial.yaml
- adles -v validate examples/competition.yaml
- adles -v validate examples/competition-with-docker.yaml
- adles -v validate examples/experiment.yaml
- adles -v validate examples/edurange_total-recon.yaml
- adles -v validate examples/pentest-tutorial.yaml
- adles -v validate examples/firewall-tutorial.yaml
- adles -v validate -t infra examples/infra.yaml
- adles -v validate -t exercise examples/experiment.yaml
- adles --list-examples
- adles --print-example competition
- adles --print-spec exercise
- clone-vms
- clone-vms -h
- clone-vms --version
- cleanup-vms
- cleanup-vms --help
- cleanup-vms --version
- vm-power
- vm-power -h
- vm-power --version
- vsphere-info
- vsphere-info -h
- vsphere-info --version
- vm-snapshots
- vm-snapshots -h
- vm-snapshots --version
- vsphere clone -h
- vsphere clone --version
- vsphere cleanup --help
- vsphere cleanup --version
- vsphere power -h
- vsphere power --version
- vsphere info -h
- vsphere info --version
- vsphere snapshot -h
- vsphere snapshot --version

notifications:
email:
on_success: never
on_failure: change
deploy:
provider: pypi
user: ghostofgoes
password:
secure: i3QZMWKiv8hWCsXtAde9HkQNu7VVn5UpzP0LipalI5NvaWJxuXw4A7cZyepJN9y/2EfZ5wzF9CbpxwdfO6jIaabaxitr9bdhQXomkLlxfuJMW9EiMfMBZ9TuYSsCoffhu7UhNlSnPuoqJDxoqxZwli2h4M3JP/jx+CuIptQfyeiHhGzVjPPUqsZ1KaUWE6SHSeowxoK+LvqRv4iVe/WMy9dxGMpIUx62M76e8mOaLfngWcsWImS+8bs40uiRnFw0JXmUHHapLnPDUO7CloyBmb0gJFyQrTbIZZFAkRNcXw80hdwzoBrrum4SfeHPTJrWk0GLnENDJePWYyzym/OQ+gThrsa613+VSuv7nUe3B66ODTiCiVjjOUVxBB+dQQ0ZvbwMbq/DQ887ihUgh/zT3c27pugBb35Qc4yKZ1cH15xQceazA34njSXtl66pGvQ+ZlJjwR7pPCjJt2p8WS4lE4yGssiRqL/SlOKYfLRJgPUZcXywjPq5rC+7kJdBcfOPxlEPSjNWjfqlE2HdwH7Nmbi8IxTit4sSn7JwtJQz1+Ab5rGFVxwQjUsZR3mhxZ9aP2fsKo2+YOe057c7VU39aF9jV/Ay6ChWRI4wAwzuO573RS9LRO3fFJ6l8NWW6l4WGeLbUCJvlffVUPwp/QDJgmCeC/FjXyZuzfM7wxeH1SY=
on:
branch: master
113 changes: 113 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
# Changelog
All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

## [1.4.0] - 2019-09-04

**Notable changes**
- New CLI command syntax, run `adles --help` for details or checkout the Usage section in the README
- Consolidated the vSphere helper scripts (e.g. `vm-power`) into a single command, `vsphere` . For usage, run `vsphere --help`.
- **ADLES now requires Python 3.6+**. It is included or easily installable on any modern Linux distribution, Windows, and OSX.

### Added
- The CLI can now be invoked a Python module (e.g. `python -m adles`, `python -m adles.vsphere`)
- Added two new specification fields to all spec types: `spec-type` and `spec-version`
- New argument: `--syslog`. Configures saving of log output to the specified Syslog server.
- Added progress bars to the cloning, power, and snapshot vSphere helper commands
- Support the `NO_COLOR` environment variable (per [no-color.org](https://no-color.org/))
- New dependencies: [tqdm](https://github.com/tqdm/tqdm) and [humanfriendly](https://pypi.org/project/humanfriendly/)
- Debian package (See the [GitHub releases page](https://github.com/GhostofGoes/ADLES/releases))

### Changed
- Failing to import an optional dependency will now log an error instead
of raising an exception and terminating execution.
- Logs will not longer emit to a syslog server by default.
Syslog server will now only be used if the parameter is set.
- Behind the scenes changes to commandline argument parsing that will
make adding future functionality easier and enable usage of other
third-party libraries that use `argparse`.
- Lots of code cleanup and formatting
- Bumped dependency versions
- Various other minor changes, see the Git pull request diff for all the changes

### Removed
- Dropped support for Python < 3.6
- Removed `Libvirt` and `HyperV` interfaces
- Removed dependency: `netaddr`

### Dev
- Added Tox for test running and linting
- Added `.editorconfig`
- Added `.gitattributes`
- Reorganized some documentation
- Removed CodeClimate
- Moved the remaining examples in the project root into `examples/`
- Added unit tests to Travis CI

## [1.3.6] - 2017-12-19
### Fixed
- Fixed issue with any of the commandline scripts where just entering
the script name (e.g "adles") on the commandline would error,
instead of printing help as a user would expect.
- Fixed vm_snapshots script outputting to the wrong log file.

### Changed
- Under-the-hood improvements to how arguments are parsed
and keyboard interrupts are handled.


## [1.3.5] - 2017-12-13
### Changed
- Move package dependencies into setup.py from requirements.txt.


## [1.3.4] - 2017-12-13
### Added
- Man page on Linux systems!


## [1.3.3] - 2017-11-25
### Added
- The ability to relocate a VM to a new host and/or datastore to the VM class.
- The ability to change the mode of a VM HDD to the VM class.

### Changed
- Cleaned up docstrings in vm.py.


## [1.3.2] - 2017-11-25
### Added
- The ability to resize a HDD to the VM class.


## [1.3.1] - 2017-11-24
### Fixed
- Fixed bug where interfaces (and their dependencies) would be imported,
even if they were not being used. This caused the "pip install docker" error.

### Changed
- Minor improvements to logging.


## [1.3.0] - 2017-07-02
### Added
- An interface for libvirt (LibvirtInterface).
- LibcloudInterface that is inherited by LibvirtInterface and CloudInterface.
- Libvirt to infrastructure-specification.
- libvirt to optional-requirements.

### Changed
- Significant changes to class heirarachy. All interfaces now inherit from Interface and class its init method.
There is a separate PlatformInterface that has most of the functionality Interface did, and this is what is now called from main().
- Tweaked some boilerplate code in the interfaces.
- Updated parser.
- Formatting tweaks.
- Moved apache-libcloud to requirements.


## [1.2.0] - 2017-07-02
Initial stab at cloud interface using Apache libcloud
(quickly superseded by 1.3.0, so ignore this version).

6 changes: 3 additions & 3 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,14 +61,14 @@ and if it's relevant, the rationale (thinking) for the change.
* All methods must have type annotations
* Must work on Python 3.5+
* Must work on Windows 10+, Ubuntu 16.04+, and Kali Rolling 2017+
* Try to match the general code style (loosly PEP8)
* Try to match the general code style (loosely PEP8)
* Be respectful.
Memes, references, and jokes are ok.
Explicit language (cursing/swearing), NSFW text/content, or racism are NOT ok.
## Checklist before submitting a pull request
* [ ] Update the [CHANGELOG](CHANGELOG.md) (For non-trivial changes, e.g. changing functionality or adding tests)
* [ ] Add your name to the contributers list in the [README](README.md)
* [ ] Add your name to the contributors list in the [README](README.md)
* [ ] All tests pass locally
* [ ] Pylint is happy
Expand All @@ -90,4 +90,4 @@ Instead, email: ghostofgoes(at)gmail(dot)com
# Features and ideas
Ideas for features or other things are welcomed. Open an issue on GitHub
detailing the idea, and tag it appropriatly (e.g. "Feature" for a new feature).
detailing the idea, and tag it appropriately (e.g. "Feature" for a new feature).
24 changes: 16 additions & 8 deletions MANIFEST.in
Original file line number Diff line number Diff line change
@@ -1,9 +1,17 @@
include README.md
include requirements.txt
include LICENSE
include NOTICE
include infra.yaml
include users.json
include CHANGELOG.md CONTRIBUTING.md LICENSE NOTICE README.md setup.py tox.ini
include docs/adles.1
recursive-include examples *
recursive-include specifications *

graft adles
graft docs
graft test
graft examples
graft specifications

prune documentation
prune misc
prune .github
prune scripts

exclude .editorconfig .travis.yml

global-exclude *.py[cdo] __pycache__ *.so *.pyd .DS_Store
4 changes: 2 additions & 2 deletions NOTICE
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Cybersecurity Environment Automation
Copyright 2016-2017 Christopher Goes.
Copyright 2016-2019 Christopher Goes.

This software contains code derived from the pyvmomi-community-samples project, which is Copyright 2014 VMware Inc.
Contributers to those samples used include: Michael Rice, Chinmaya Bharadwaj, Dann Bohn, Jose Manuel Lopez, Nathan Prziborowski, nickcooper-zhangtonghao.
Contributors to those samples used include: Michael Rice, Chinmaya Bharadwaj, Dann Bohn, Jose Manuel Lopez, Nathan Prziborowski, nickcooper-zhangtonghao.
A good-faith effort has been made to include links to the original sources when used.
pyvmomi-community-samples can be found here: https://github.com/vmware/pyvmomi-community-samples
Loading

0 comments on commit 5bae69a

Please sign in to comment.