From 53307696cb3f7b095f7295eb3e372b497cbfb12d Mon Sep 17 00:00:00 2001 From: Peter Steenbergen Date: Tue, 7 Jan 2020 14:36:28 +0100 Subject: [PATCH] MycroftOS: Update mycroftos-enclosure skill --- .../mycroftos-enclosure-skill/__init__.py | 48 ++++++++++++------- .../dialog/en-us/DisableSSH.dialog | 1 + .../dialog/en-us/EnableSSH.dialog | 1 + .../settingsmeta.json | 32 +++++++++++++ .../vocab/en-us/DisableAirPlay.intent | 6 +++ .../vocab/en-us/DisableAirPlay.voc | 1 - .../vocab/en-us/DisableSSH.intent | 4 ++ .../vocab/en-us/EnableAirPlay.intent | 7 +++ .../vocab/en-us/EnableAirPlay.voc | 1 - .../vocab/en-us/EnableSSH.intent | 4 ++ 10 files changed, 86 insertions(+), 19 deletions(-) create mode 100644 buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/DisableSSH.dialog create mode 100644 buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/EnableSSH.dialog create mode 100644 buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/DisableAirPlay.intent delete mode 100644 buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/DisableAirPlay.voc create mode 100644 buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/DisableSSH.intent create mode 100644 buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/EnableAirPlay.intent delete mode 100644 buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/EnableAirPlay.voc create mode 100644 buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/EnableSSH.intent diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/__init__.py b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/__init__.py index 57948659..83d143cf 100644 --- a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/__init__.py +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/__init__.py @@ -40,6 +40,10 @@ class MycroftOS(MycroftSkill): """ try: + # Handle settings change + self.settings.set_changed_callback(self.on_websettings_changed) + self.on_websettings_changed() + # Handle the 'waking' visual self.add_event('recognizer_loop:wakeword', self.handle_listener_started) @@ -76,7 +80,11 @@ class MycroftOS(MycroftSkill): except Exception: LOG.exception('In MycroftOS Skill') - self.settings.set_changed_callback(self.on_websettings_changed) + def on_websettings_changed(self): + if self.settings.get("sshd") is True: + self.enable_ssh() + if self.settings.get("airplay") is True: + self.enable_airplay() # System volume #def on_volume_set(self, message): @@ -165,31 +173,37 @@ class MycroftOS(MycroftSkill): def on_shutdown(self, message): self.speak("Till next time") sleep(5) - os.system("sudo shutdown --poweroff now") + os.system("sudo halt") def on_reboot(self, message): self.speak("I'll be right back") sleep(5) - os.system("sudo shutdown --reboot now") - - def enable_airplay(self, message): - os.system("sudo systemctl enable shairport-sync.service") - os.system("sudo systemctl start shairport-sync.service") - - def disable_airplay(self, message): - os.system("sudo systemctl disable shairport-sync.service") - os.system("sudo systemctl stop shairport-sync.service") + os.system("sudo reboot") # Intent handlers - @intent_handler(IntentBuilder("").require("EnableAirPlay")) - def handle_enable_airplay_intent(self, message): - self.enable_airplay() + @intent_file_handler("EnableSSH.intent") + def enable_ssh(self, message): + os.system("sudo systemctl enable sshd.service") + os.system("sudo systemctl start sshd.service") + self.speak_dialog("EnableSSH") + + @intent_file_handler("DisableSSH.intent") + def disable_ssh(self, message): + os.system("sudo systemctl disable sshd.service") + os.system("sudo systemctl stop sshd.service") + self.speak_dialog("DisableSSH") + + @intent_file_handler("EnableAirPlay.intent") + def enable_airplay(self, message): + os.system("sudo systemctl enable shairport-sync.service") + os.system("sudo systemctl start shairport-sync.service") self.speak_dialog("EnableAirPlay") - @intent_handler(IntentBuilder("").require("DisableAirPlay")) - def handle_disable_airplay_intent(self, message): - self.disable_airplay() + @intent_file_handler("DisableAirPlay.intent") + def disable_airplay(self, message): + os.system("sudo systemctl disable shairport-sync.service") + os.system("sudo systemctl stop shairport-sync.service") self.speak_dialog("DisableAirPlay") diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/DisableSSH.dialog b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/DisableSSH.dialog new file mode 100644 index 00000000..593c1e6d --- /dev/null +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/DisableSSH.dialog @@ -0,0 +1 @@ +Secure shell is stopped and disabled diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/EnableSSH.dialog b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/EnableSSH.dialog new file mode 100644 index 00000000..ffc8c00a --- /dev/null +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/dialog/en-us/EnableSSH.dialog @@ -0,0 +1 @@ +Secure shell is enabled and started diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/settingsmeta.json b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/settingsmeta.json index e69de29b..d10f4972 100644 --- a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/settingsmeta.json +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/settingsmeta.json @@ -0,0 +1,32 @@ +{ + "name": "MycroftOS System", + "skillMetadata": { + "sections": [ + { + "name": "Enabled services", + "fields": [ + { + "type": "label", + "label": "Secure Shell (SSH)." + }, + { + "name": "sshd", + "type": "checkbox", + "label": "Enabled", + "value": "true" + }, + { + "type": "label", + "label": "AirPlay audio player (v1)." + }, + { + "name": "airplay", + "type": "checkbox", + "label": "Enabled", + "value": "false" + } + ] + } + ] + } +} diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/DisableAirPlay.intent b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/DisableAirPlay.intent new file mode 100644 index 00000000..9a40c158 --- /dev/null +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/DisableAirPlay.intent @@ -0,0 +1,6 @@ +Disable airplay +Disable air play +Disable shareport sync +Disable share port sync +Disable shareport +Disable share port diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/DisableAirPlay.voc b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/DisableAirPlay.voc deleted file mode 100644 index f00b5e0b..00000000 --- a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/DisableAirPlay.voc +++ /dev/null @@ -1 +0,0 @@ -Disable airplay diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/DisableSSH.intent b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/DisableSSH.intent new file mode 100644 index 00000000..89136ade --- /dev/null +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/DisableSSH.intent @@ -0,0 +1,4 @@ +Disable S S H +Disable S.S.H. +Disable SSH +Disable secure shell diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/EnableAirPlay.intent b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/EnableAirPlay.intent new file mode 100644 index 00000000..69f4e24e --- /dev/null +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/EnableAirPlay.intent @@ -0,0 +1,7 @@ +Enable airplay +Enable air play +Enable shareport sync +Enable share port sync +Enable shareport +Enable share port + diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/EnableAirPlay.voc b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/EnableAirPlay.voc deleted file mode 100644 index c660774e..00000000 --- a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/EnableAirPlay.voc +++ /dev/null @@ -1 +0,0 @@ -Enable airplay diff --git a/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/EnableSSH.intent b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/EnableSSH.intent new file mode 100644 index 00000000..e294914f --- /dev/null +++ b/buildroot-external/rootfs-overlay/opt/mycroft/skills/mycroftos-enclosure-skill/vocab/en-us/EnableSSH.intent @@ -0,0 +1,4 @@ +Enable S S H +Enable S.S.H. +Enable SSH +Enable secure shell