def update(): """Updates system package index""" try: pacman.refresh() logger.success('ctl:pkg:update', 'Index updated') except Exception as e: raise CLIException(str(e))
def nslcd(): """Initialize distribution PAM integration of OpenLDAP.""" patchfiles = [ ("/etc/pam.d/system-auth", "001-add-ldap-to-system-auth.patch"), ("/etc/pam.d/su", "002-add-ldap-to-su.patch"), ("/etc/pam.d/su-l", "003-add-ldap-to-su-l.patch"), ("/etc/pam.d/passwd", "004-add-ldap-to-passwd.patch"), ("/etc/pam.d/system-login", "005-add-ldap-to-system-login.patch"), ("/etc/nsswitch.conf", "006-add-ldap-to-nsswitch.patch"), ("/etc/nslcd.conf", "007-add-ldap-to-nslcd.patch") ] for x in patchfiles: if not os.path.exists(os.path.join("/usr/share/arkos/nslcd", x[1])): raise CLIException( "Patch files could not be found. Your installation may " "be corrupted. Please reinstall the `arkos-configs` package.") logger.debug('ctl:init:nslcd', 'Stopping daemon: nslcd') s = shell("systemctl stop nslcd") if s["code"] != 0: raise click.ClickException(s["stderr"].decode()) logger.info('ctl:init:nslcd', 'Patching system files') for x in patchfiles: shell("patch -N {0} {1}".format( x[0], os.path.join("/usr/share/arkos/nslcd", x[1]))) logger.debug('ctl:init:nslcd', 'Starting daemon: nslcd') shell("systemctl enable nslcd") shell("systemctl start nslcd") logger.success('ctl:init:nslcd', 'Complete')
def drop_user(name): """Delete a database user.""" try: u = databases.get_user(name) u.remove() logger.success('ctl:dbusr:drop', 'Dropped {0}'.format(name)) except Exception as e: raise CLIException(str(e))
def drop(name): """Delete a database.""" try: db = databases.get(name) db.remove() logger.success('ctl:db:drop', 'Dropped {0}'.format(name)) except Exception as e: raise CLIException(str(e))
def chmod(user_name, db_name, grant): """Get or set database user permissions.""" try: u = databases.get_user(user_name) u.chperm("grant" if grant else "revoke", databases.get(db_name)) logger.success('ctl:dbusr:chmod', 'Permissions set') except Exception as e: raise CLIException(str(e))
def add_user(name, type_id): """Add a database user.""" try: manager = databases.get_managers("db-" + type_id) manager.add_user(name) logger.success('ctl:dbusr:add', 'Added user {0}'.format(name)) except Exception as e: raise CLIException(str(e))
def enable(id): """Enable connection to a network on boot""" try: n = network.get(id) n.enable() logger.success('ctl:net:enable', 'Enabled {0}'.format(id)) except Exception as e: raise CLIException(str(e))
def connect(id): """Connect to a network""" try: n = network.get(id) n.connect() logger.success('ctl:net:connect', 'Connected {0}'.format(id)) except Exception as e: raise CLIException(str(e))
def delete(id): """Remove a website""" try: site = websites.get(id) site.remove() logger.success('ctl:site:delete', 'Removed {0}'.format(id)) except Exception as e: raise CLIException(str(e))
def update(id): """Update a website""" try: site = websites.get(id) site.update() logger.success('ctl:site:update', 'Updated {0}'.format(id)) except Exception as e: raise CLIException(str(e))
def disable(id): """Disable a website""" try: site = websites.get(id) site.nginx_disable() logger.success('ctl:site:disable', 'Disabled {0}'.format(id)) except Exception as e: raise CLIException(str(e))
def umount(id): """Unmount a filesystem""" try: fs = filesystems.get(id) fs.umount() logger.success('ctl:fs:umount', 'Unmounted {0}'.format(id)) except Exception as e: raise CLIException(str(e))
def delete(id): """Delete a virtual disk""" try: fs = filesystems.get(id) fs.remove() logger.success('ctl:fs:delete', 'Deleted {0}'.format(id)) except Exception as e: raise CLIException(str(e))
def disable(id): """Disable mounting a filesystem on boot""" try: fs = filesystems.get(id) fs.disable() logger.success('ctl:fs:disable', 'Disabled {0}'.format(id)) except Exception as e: raise CLIException(str(e))
def enable(id): """Mount a filesystem on boot""" try: fs = filesystems.get(id) fs.enable() logger.success('ctl:fs:enable', 'Enabled {0}'.format(id)) except Exception as e: raise CLIException(str(e))
def delete(id): """Delete a network connection""" try: n = network.get(id) n.remove() logger.success('ctl:net:delete', 'Deleted {0}'.format(id)) except Exception as e: raise CLIException(str(e))
def stop(name): """Stop a service""" try: service = services.get(name) service.stop() logger.success('ctl:svc:stop', 'Stopped {0}'.format(name)) except Exception as e: raise CLIException(str(e))
def disconnect(id): """Disconnect from a network""" try: n = network.get(id) n.disconnect() logger.success('ctl:net:disconnect', 'Disconnected {0}'.format(id)) except Exception as e: raise CLIException(str(e))
def disable(name): """Disable a service on boot""" try: service = services.get(name) service.disable() logger.success('ctl:svc:disable', 'Disabled {0}'.format(name)) except Exception as e: raise CLIException(str(e))
def remove_share(id): """Disable a fileshare link.""" try: share = shared_files.get(id) share.delete() logger.success('ctl:links:delete', 'Deleted share {0}'.format(id)) except Exception as e: raise CLIException(str(e))
def create_db(name, type_id): """Add a database.""" try: manager = databases.get_managers("db-" + type_id) manager.add_db(name) logger.success('ctl:db:create', 'Added {0}'.format(name)) except Exception as e: raise CLIException(str(e))
def delete(id): """Delete a certificate.""" try: cert = certificates.get(id) cert.remove() logger.success('ctl:cert:delete', 'Deleted {0}'.format(id)) except Exception as e: raise CLIException(str(e))
def update_share(id, expires): """Update a fileshare link's expiration.""" try: share = shared_files.get(id) share.update_expiry(expires) logger.success('ctl:links:update', 'Updated share {0}'.format(id)) except Exception as e: raise CLIException(str(e))
def add_domain(name): """Add a domain to arkOS LDAP""" try: d = domains.Domain(name=name) d.add() logger.success('ctl:dom:add', 'Added {0}'.format(name)) except Exception as e: raise CLIException(str(e))
def delete_domain(name): """Delete an arkOS LDAP domain""" try: d = domains.get(name) d.remove() logger.success('ctl:dom:delete', 'Deleted {0}'.format(name)) except Exception as e: raise CLIException(str(e))
def delete_group(name): """Delete an arkOS LDAP group""" try: g = groups.get(name=name) g.delete() logger.success('ctl:grp:delete', 'Deleted {0}'.format(name)) except Exception as e: raise CLIException(str(e))
def add_group(name, users): """Add a group to arkOS LDAP""" try: g = groups.Group(name=name, users=users) g.add() logger.success('ctl:grp:add', 'Added {0}'.format(name)) except Exception as e: raise CLIException(str(e))
def delete_user(name): """Delete an arkOS LDAP user""" try: u = users.get(name=name) u.delete() logger.success('ctl:usr:delete', 'Deleted {0}'.format(name)) except Exception as e: raise CLIException(str(e))
def passwd(name, password): """Change an arkOS LDAP user password""" try: u = users.get(name=name) u.update(password) logger.success('ctl:usr:passwd', 'Password changed for {0}'.format(name)) except Exception as e: raise CLIException(str(e))
def block(id): """Block all network access to service""" try: svc = tracked_services.get(id) svc.policy = 0 svc.save() logger.success('ctl:sec:block', 'Access to {0} blocked'.format(id)) except Exception as e: raise CLIException(str(e))