2 changed files with 124 additions and 0 deletions
@ -0,0 +1,8 @@ |
|||
### Example Plugin Configuration for EasyEngine |
|||
|
|||
[secure] |
|||
|
|||
### If enabled, load a plugin named `example` either from the Python module |
|||
### `ee.cli.plugins.example` or from the file path |
|||
### `/var/lib/ee/plugins/example.py` |
|||
enable_plugin = true |
@ -0,0 +1,116 @@ |
|||
from cement.core.controller import CementBaseController, expose |
|||
from cement.core import handler, hook |
|||
from ee.core.shellexec import EEShellExec |
|||
from ee.core.variables import EEVariables |
|||
import string |
|||
import random |
|||
import sys |
|||
import hashlib |
|||
import getpass |
|||
|
|||
|
|||
def secure_plugin_hook(app): |
|||
# do something with the ``app`` object here. |
|||
pass |
|||
|
|||
|
|||
class EEsecureController(CementBaseController): |
|||
class Meta: |
|||
label = 'secure' |
|||
stacked_on = 'base' |
|||
stacked_type = 'nested' |
|||
description = 'clean command cleans different cache with following \ |
|||
options' |
|||
arguments = [ |
|||
(['--auth'], |
|||
dict(help='secure auth', action='store_true')), |
|||
(['--port'], |
|||
dict(help='secure port', action='store_true')), |
|||
(['--ip'], |
|||
dict(help='secure ip', action='store_true')) |
|||
] |
|||
|
|||
@expose(hide=True) |
|||
def default(self): |
|||
# TODO Default action for ee clean command here |
|||
if self.app.pargs.auth: |
|||
self.secure_auth() |
|||
if self.app.pargs.port: |
|||
self.secure_port() |
|||
if self.app.pargs.ip: |
|||
self.secure_ip() |
|||
|
|||
@expose(hide=True) |
|||
def secure_auth(self): |
|||
print("Securing auth.....") |
|||
passwd = ''.join([random.choice |
|||
(string.ascii_letters + string.digits) |
|||
for n in range(6)]) |
|||
username = input("Provide HTTP authentication user " |
|||
"name [{0}] :".format(EEVariables.ee_user)) |
|||
password = input("Provide HTTP authentication " |
|||
"password [{0}]".format(passwd)) |
|||
if password == "": |
|||
password = passwd |
|||
print(password) |
|||
if username == "": |
|||
username = EEVariables.ee_user |
|||
print(username) |
|||
EEShellExec.cmd_exec(self, "printf \"{username}:" |
|||
"$(openssl passwd -crypt " |
|||
"{password} 2> /dev/null)\n\"" |
|||
"> /etc/nginx/htpasswd-ee 2>/dev/null" |
|||
.format(username=username, |
|||
password=password)) |
|||
|
|||
@expose(hide=True) |
|||
def secure_port(self): |
|||
#TODO:remaining with ee.conf updation in file |
|||
port = input("EasyEngine admin port [22222]:") |
|||
if port == "": |
|||
port = 22222 |
|||
if EEVariables.ee_platform_distro == 'Ubuntu': |
|||
EEShellExec.cmd_exec(self, "sed -i \"s/listen.*/listen " |
|||
"{port} default_server ssl spdy;/\" " |
|||
"/etc/nginx/sites-available/22222" |
|||
.format(port=port)) |
|||
elif EEVariables.ee_platform_distro == 'Debian': |
|||
EEShellExec.cmd_exec(self, "sed -i \"s/listen.*/listen " |
|||
"{port} default_server ssl;/\" " |
|||
"/etc/nginx/sites-available/22222" |
|||
.format(port=port)) |
|||
|
|||
@expose(hide=True) |
|||
def secure_ip(self): |
|||
newlist = [] |
|||
ip = input("Enter the comma separated IP addresses " |
|||
"to white list [127.0.0.1]:") |
|||
ip_found = False |
|||
try: |
|||
user_list_ip = ip.split(',') |
|||
except Exception as e: |
|||
ip = ['127.0.0.1'] |
|||
self.app.config.set('mysql', 'grant-host', "hello") |
|||
exist_ip_list = self.app.config.get('stack', 'ip-address').split() |
|||
print(exist_ip_list) |
|||
for check_ip in user_list_ip: |
|||
if check_ip not in exist_ip_list: |
|||
newlist.extend(exist_ip_list) |
|||
else: |
|||
print("IP found") |
|||
# changes in acl.conf file |
|||
if len(newlist) != 0: |
|||
EEShellExec.cmd_exec(self, "sed -i \"/allow.*/d\" /etc/nginx" |
|||
"/common/acl.conf") |
|||
for whitelist_adre in newlist: |
|||
EEShellExec.cmd_exec(self, "sed -i \"/deny/i " |
|||
"echo allow {whitelist_adre}\\;\" " |
|||
"/etc/nginx/common/acl.conf" |
|||
.format(whitelist_adre=whitelist_adre)) |
|||
|
|||
|
|||
def load(app): |
|||
# register the plugin class.. this only happens if the plugin is enabled |
|||
handler.register(EEsecureController) |
|||
# register a hook (function) to run after arguments are parsed. |
|||
hook.register('post_argument_parsing', secure_plugin_hook) |
Loading…
Reference in new issue