|
| 1 | +# 3proxy |
| 2 | + |
| 3 | +In our hard time everyone needs a bit more security. This role helps you |
| 4 | +install fast and powerful 3proxy proxy server |
| 5 | + |
| 6 | +**NB**: If some of your servers use iptables (without ufw/firewalld) — you should put role [iptables\_raw](https://github.com/Nordeus/ansible_iptables_raw) into library folder next to your playbook |
| 7 | + |
| 8 | +## Supported OSes |
| 9 | + |
| 10 | +<table> |
| 11 | +<colgroup> |
| 12 | +<col style="width: 50%" /> |
| 13 | +<col style="width: 50%" /> |
| 14 | +</colgroup> |
| 15 | +<thead> |
| 16 | +<tr class="header"> |
| 17 | +<th>name</th> |
| 18 | +<th>version</th> |
| 19 | +</tr> |
| 20 | +</thead> |
| 21 | +<tbody> |
| 22 | +<tr class="odd"> |
| 23 | +<td rowspan=2><p>CentOS</p></td> |
| 24 | +<td><p>6</p></td> |
| 25 | +</tr> |
| 26 | +<tr class="even"> |
| 27 | +<td><p>7</p></td> |
| 28 | +<td></td> |
| 29 | +</tr> |
| 30 | +<tr class="odd"> |
| 31 | +<td rowspan=2><p>Ubuntu</p></td> |
| 32 | +<td><p>xenial</p></td> |
| 33 | +</tr> |
| 34 | +<tr class="even"> |
| 35 | +<td><p>bionic</p></td> |
| 36 | +<td></td> |
| 37 | +</tr> |
| 38 | +<tr class="odd"> |
| 39 | +<td rowspan=3><p>Fedora</p></td> |
| 40 | +<td><p>26</p></td> |
| 41 | +</tr> |
| 42 | +<tr class="even"> |
| 43 | +<td><p>27</p></td> |
| 44 | +<td></td> |
| 45 | +</tr> |
| 46 | +<tr class="odd"> |
| 47 | +<td><p>28</p></td> |
| 48 | +<td></td> |
| 49 | +</tr> |
| 50 | +</tbody> |
| 51 | +</table> |
| 52 | + |
| 53 | +## Role Variables |
| 54 | + |
| 55 | +<table> |
| 56 | +<colgroup> |
| 57 | +<col style="width: 50%" /> |
| 58 | +<col style="width: 50%" /> |
| 59 | +</colgroup> |
| 60 | +<thead> |
| 61 | +<tr class="header"> |
| 62 | +<th>name</th> |
| 63 | +<th>description</th> |
| 64 | +</tr> |
| 65 | +</thead> |
| 66 | +<tbody> |
| 67 | +<tr class="odd"> |
| 68 | +<td><p>proxy_users</p></td> |
| 69 | +<td><p>array of users whch shold have access to proxy (otherwise anybody can)</p></td> |
| 70 | +</tr> |
| 71 | +<tr class="even"> |
| 72 | +<td><p>proxy_socks</p></td> |
| 73 | +<td><p>enable socks proxy (true by default)</p></td> |
| 74 | +</tr> |
| 75 | +<tr class="odd"> |
| 76 | +<td><p>proxy_socks_port</p></td> |
| 77 | +<td><p>socks proxy port (1080 be default)</p></td> |
| 78 | +</tr> |
| 79 | +<tr class="even"> |
| 80 | +<td><p>proxy_socks_options</p></td> |
| 81 | +<td><p>additional socks proxy options</p></td> |
| 82 | +</tr> |
| 83 | +<tr class="odd"> |
| 84 | +<td><p>proxy_http</p></td> |
| 85 | +<td><p>enable http proxy (true by default)</p></td> |
| 86 | +</tr> |
| 87 | +<tr class="even"> |
| 88 | +<td><p>proxy_http_port</p></td> |
| 89 | +<td><p>http proxy port (3128 be default)</p></td> |
| 90 | +</tr> |
| 91 | +<tr class="odd"> |
| 92 | +<td><p>proxy_http_options</p></td> |
| 93 | +<td><p>additional http proxy options</p></td> |
| 94 | +</tr> |
| 95 | +<tr class="even"> |
| 96 | +<td><p>manage_firewall</p></td> |
| 97 | +<td><p>If role should try to allow incoming connections to proxy on firewall</p></td> |
| 98 | +</tr> |
| 99 | +</tbody> |
| 100 | +</table> |
| 101 | + |
| 102 | +## Proxy users |
| 103 | + |
| 104 | +Proxy user is an object, which consists of 2 fields: |
| 105 | + |
| 106 | +<table> |
| 107 | +<colgroup> |
| 108 | +<col style="width: 50%" /> |
| 109 | +<col style="width: 50%" /> |
| 110 | +</colgroup> |
| 111 | +<thead> |
| 112 | +<tr class="header"> |
| 113 | +<th>name</th> |
| 114 | +<th>description</th> |
| 115 | +</tr> |
| 116 | +</thead> |
| 117 | +<tbody> |
| 118 | +<tr class="odd"> |
| 119 | +<td><p>name</p></td> |
| 120 | +<td><p>username</p></td> |
| 121 | +</tr> |
| 122 | +<tr class="even"> |
| 123 | +<td><p>hash</p></td> |
| 124 | +<td><p>hash of the password</p></td> |
| 125 | +</tr> |
| 126 | +</tbody> |
| 127 | +</table> |
| 128 | + |
| 129 | +Hash can be obtained from command |
| 130 | +`openssl passwd -1 'yourcomplexpasswordHere'` |
| 131 | + |
| 132 | +## Example Playbook |
| 133 | + |
| 134 | +```yaml |
| 135 | + - hosts: all |
| 136 | + roles: |
| 137 | + - role: 3proxy |
| 138 | + proxy_users: |
| 139 | + - { name: "asm0dey", hash: "$1$pL3Ho94u$2.wCxrLfacj82UMPJSy/6/" } |
| 140 | + - { name: "asm0dey2", hash: "$1$pL3Ho94u$2.wCxrLfacj82UMPJSy/6/" } |
| 141 | +``` |
| 142 | +
|
| 143 | +## Development |
| 144 | +
|
| 145 | +You need to have vagrant, docker, ansible and molecule installed to be able to run tests. Of course you can just implemet what you need without tests, but having tests is always better |
| 146 | +
|
| 147 | +## License |
| 148 | +
|
| 149 | +MIT |
0 commit comments