source: code/trunk/README.md@ 140

Last change on this file since 140 was 140, checked in by Izuru Yakumo, 2 years ago

Incorporate most of the open pull requests found on GitHub

Signed-off-by: Izuru Yakumo <yakumo.izuru@…>

File size: 3.2 KB
Line 
1# Morty
2
3[![Build Status](https://travis-ci.org/asciimoo/morty.svg)](https://travis-ci.org/asciimoo/morty)
4[![License: AGPL v3](https://img.shields.io/badge/License-AGPL%20v3-blue.svg)](https://www.gnu.org/licenses/agpl-3.0)
5[![Docker Pulls](https://img.shields.io/docker/pulls/dalf/morty)](https://hub.docker.com/r/dalf/morty)
6
7Web content sanitizer proxy as a service
8
9Morty rewrites web pages to exclude malicious HTML tags and attributes. It also replaces external resource references to prevent third party information leaks.
10
11The main goal of morty is to provide a result proxy for [searx](https://asciimoo.github.com/searx/), but it can be used as a standalone sanitizer service too.
12
13Features:
14
15 - HTML sanitization
16 - Rewrites HTML/CSS external references to locals
17 - JavaScript blocking
18 - No Cookies forwarded
19 - No Referrers
20 - No Caching/Etag
21 - Supports GET/POST forms and IFrames
22 - Optional HMAC URL verifier key to prevent service abuse
23
24
25## Installation and setup
26Requirement: Go version 1.10 or higher.
27
28```
29$ go install github.com/asciimoo/morty@latest
30$ "$GOPATH/bin/morty" --help
31```
32
33### Usage
34
35```
36 -debug
37 Debug mode (default true)
38 -followredirect
39 Follow HTTP GET redirect
40 -hashparam string
41 User-defined requesting string HASH parameter name (ie: '/?hash=...' or '/?h=...') (default "mortyhash")
42 -ipv6
43 Allow IPv6 HTTP requests (default true)
44 -key string
45 HMAC url validation key (base64 encoded) - leave blank to disable validation
46 -listen string
47 Listen address (default "127.0.0.1:3000")
48 -proxy string
49 Use the specified HTTP proxy (ie: '[user:pass@]hostname:port'). Overrides -socks5, -ipv6.
50 -proxyenv
51 Use a HTTP proxy as set in the environment (HTTP_PROXY, HTTPS_PROXY and NO_PROXY). Overrides -proxy, -socks5, -ipv6.
52 -socks5 string
53 Use a SOCKS5 proxy (ie: 'hostname:port'). Overrides -ipv6.
54 -timeout uint
55 Request timeout (default 5)
56 -urlparam string
57 User-defined requesting string URL parameter name (ie: '/?url=...' or '/?u=...') (default "mortyurl")
58 -version
59 Show version
60```
61
62### Environment variables
63
64Morty can additionally be configured using the following environment variables:
65- `MORTY_ADDRESS`: Listen address (default to `127.0.0.1:3000`)
66- `MORTY_KEY`: HMAC url validation key (base64 encoded) to prevent direct URL opening. Leave blank to disable validation. Use `openssl rand -base64 33` to generate.
67- `MORTY_URL_PARAM`: User-defined requesting string URL parameter name (ie: `/?url=...` or `/?u=...`) (default `mortyurl`)
68- `MORTY_HASH_PARAM`: User-defined requesting string HASH parameter name (ie: `/?hash=...` or `/?h=...`) (default `mortyhash`)
69- `DEBUG`: Enable/disable proxy and redirection logs (default to `true`). Set to `false` to disable.
70
71### Docker
72
73```
74docker run -e DEBUG=false -e MORTY_ADDRESS=0.0.0.0:3000 dalf/morty
75```
76
77```
78docker run -e DEBUG=false dalf/morty -listen 0.0.0.0:3000
79```
80
81
82### Test
83
84```
85$ cd "$GOPATH/src/github.com/asciimoo/morty"
86$ go test
87```
88
89
90### Benchmark
91
92```
93$ cd "$GOPATH/src/github.com/asciimoo/morty"
94$ go test -benchmem -bench .
95```
96
97
98## Bugs
99
100Bugs or suggestions? Visit the [issue tracker](https://github.com/asciimoo/morty/issues).
Note: See TracBrowser for help on using the repository browser.