def install_firewall(): firewall = config['firewall'] if firewall['enable']: switch_user(install_user, install_password) packages = ['ufw', 'GUFW'] install_native(packages) cmd = 'ufw default deny incoming' sudo(cmd) cmd = 'ufw default allow outgoing' sudo(cmd) for app in firewall['allowed']: cmd = 'ufw allow %s' % (app) sudo(cmd) cmd = """echo "y" | sudo ufw enable""" run(cmd)
def install_mqtt(): user_info = config['user'] admin_user = get_admin_user(user_info) mos_srv_user = get_mosquitto_user(user_info) mqtt = config['mqtt'] app_dir = mqtt['dir'] system_libs = mqtt['system_libs'] users = mqtt['users'] switch_user(admin_user.name, admin_user.password) app_path = os.path.join('/opt', app_dir) cmd = 'mkdir -p {}'.format(app_path) sudo(cmd) with cd(app_path): run("wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key") sudo("apt-key add mosquitto-repo.gpg.key") with cd("/etc/apt/sources.list.d/"): sudo("wget http://repo.mosquitto.org/debian/mosquitto-jessie.list") install_native(system_libs) with cd("/etc/mosquitto"): put("./files/mosquitto.conf", "mosquitto.conf", use_sudo=True) sudo('chown root:root mosquitto.conf') sudo("touch pwfile") cmd = 'chown {}:{} pwfile'.format(mos_srv_user.name, mos_srv_user.name) sudo(cmd) sudo("chmod 0600 pwfile") switch_user(mos_srv_user.name, mos_srv_user.password) for user in users: cmd = 'sudo mosquitto_passwd -b pwfile {} {}'.format(user.name, user.password) sudo(cmd) cmd = 'chown -R {}:{} {}'.format(mos_srv_user.name, mos_srv_user.name, app_path) sudo(cmd)
def install_micro_httpd(): user_info = config['user'] home_assistant = config['home_assistant'] root_path = home_assistant['root_dir'] admin_user = get_admin_user(user_info) libmicrohttpd = config['libmicrohttpd'] install_dir = libmicrohttpd['install_dir'] lib = libmicrohttpd['lib'] ftp_site = libmicrohttpd['ftp_site'] system_libs = libmicrohttpd['system_libs'] switch_user(install_user, install_password) install_native(system_libs) install_path = os.path.join('/opt', install_dir) cmd = 'mkdir -p {}'.format(install_path) sudo(cmd) cmd = 'chown -R {}:{} {}'.format(admin_user.name, admin_user.name, install_path) sudo(cmd) switch_user(admin_user.name, admin_user.password) with cd(install_path): ftp_path = os.path.join(ftp_site, lib) cmd = 'wget {}'.format(ftp_path) run(cmd) cmd = 'tar zxvf {}'.format(lib) run(cmd) lib_dir = '.'.join(lib.split('.')[:-2]) with cd(lib_dir): run('./configure') run('make') sudo('make install')
def install_python_libs(): python_system_libs = config['python_system_libs'] switch_user(install_user, install_password) install_native(python_system_libs)
def install_system_apps(): system_apps = config['system_apps'] switch_user(install_user, install_password) install_native(system_apps)
def install_openzwave(): user_info = config['user'] openzwave = config['openzwave'] openzwave_system_libs = openzwave['system_libs'] openzwave_python_libs = openzwave['python_libs'] openzwave_git_url = openzwave['git_url'] openzwave_dir = openzwave['dir'] home_assistant = config['home_assistant'] venv_dir = home_assistant['venv_dir'] root_path = home_assistant['root_dir'] ha_user = get_ha_user(user_info) ha_path = os.path.join('/srv', root_path) home_path = get_user_home_dir(ha_user.name) pyenv_path = os.path.join(home_path, '.pyenv') switch_user(install_user, install_password) install_native(openzwave_system_libs) openzwave_path = os.path.join('/srv', openzwave_dir) cmd = 'mkdir -p {}'.format(openzwave_path) sudo(cmd) cmd = 'chown -R {}:{} {}'.format(ha_user.name, ha_user.name, openzwave_path) sudo(cmd) sudo('service home-assistant stop') switch_user(ha_user.name, ha_user.password) cmd1 = 'PYENV_ROOT="{}"'.format(pyenv_path) cmd2 = 'PATH="$PYENV_ROOT/bin:$PATH"' cmd3 = 'eval "$(pyenv init -)"' cmd_str = '{}; {}; {}'.format(cmd1, cmd2, cmd3) with prefix(cmd_str): cmd = 'cd {}'.format(ha_path) run(cmd) venv_path = os.path.join(ha_path, venv_dir) venv_activate = os.path.join(venv_path, 'bin', 'activate') cmd = '. {}'.format(venv_activate) with prefix(cmd): libs = ' '.join(openzwave_python_libs) cmd = 'pip install {}'.format(libs) run(cmd) py_openzwave_path = os.path.join(openzwave_path, 'python_openzwave') cmd = 'rm -rf {}'.format(py_openzwave_path) run(cmd) cmd = 'git clone {} {}'.format(openzwave_git_url, py_openzwave_path) run(cmd) with cd(py_openzwave_path): cmd = 'git checkout --track origin/python3' run(cmd) cmd = 'make build' run(cmd) cmd = 'make install' run(cmd) switch_user(install_user, install_password) sudo('service home-assistant start')