Metadata-Version: 1.1
Name: kaoru
Version: 0.5.0
Summary: A Telegram Bot as your personal IoT assistant
Home-page: https://github.com/axltxl/kaoru
Author: Alejandro Ricoveri
Author-email: alejandroricoveri@gmail.com
License: MIT
Download-URL: https://github.com/axltxl/kaoru/tarball/0.5.0
Description: kaoru
        =====
        
        .. image:: https://badge.fury.io/py/kaoru.svg
            :target: http://badge.fury.io/py/kaoru
        
        A Telegram Bot as your personal IoT assistant
        ---------------------------------------------------
        
        **kaoru** can be defined as a Telegram Bot whose roles are much alike
        to those related to IoT personal assistant.
        
        OK, I think I get the idea, but what is it good for?
        ----------------------------------------------------
        
        **kaoru**'s purpose in life is to make your life a little bit easier by
        allowing you remote control of certain things on your host(s), the rationale
        behind this is that there could be moments in which you would need to perform
        administrative tasks on either your office or home laptop, things that you
        maybe forgot to do, or things you could only do by getting in front of them.
        An IoT-like approach would be ideal on this scenario, namely, talk to your
        machines and tell them to do stuff for you while you're walking streets,
        or having a dinner with your friend, or when you're just too sleepy/lazy
        to get up from your couch/bed.
        
        For the moment, **kaoru** is capable of:
        
        -  Rebooting your host(s)
        -  Shutting down your host(s)
        -  Locking the screen on your host(s)
        -  Send screen shots from your host(s)
        -  Suspending your host(s) to either RAM or disk
        
        Things I feel tempted to implement:
        
        -  Send alerts/warnings on certain things happening in your host(s)
        -  Tell your host(s) to send you a file in their file system.
        -  Perform a ``tail`` on a file and send messages as new content is appended to that file.
        
        Wait, what?, bots are sort-of public domain, you know?
        ------------------------------------------------------
        
        While that's true, the fact is that having your host running **kaoru**
        means that you have control over *her*, including (but not limited) to
        control which people she's going to listen to, as explained in `Security <#security>`_.
        
        OK, I get it, how do I use this?, I just wanna get hands-on this "thing" ...
        ----------------------------------------------------------------------------
        
        Well, the most essential thing you will need is to tell `@BotFather <http://telegram.me/botfather>`_ to
        make a new bot for you, as specified in `Telegram Bots Documentation <https://core.telegram.org/bots>`_
        
        On the other hand, you gotta install **kaoru**, of course.
        
        .. code-block:: bash
        
            # First of all, you need to install
            pip3 install kaoru
        
        A Telegram Bot is a just a dummy client with no cell phone attached to it,
        you need something to control this bot so it can become active, and that's when
        **kaoru** comes into play.
        
        Make sure you have properly set up your brand new Telegram Bot, `@BotFather <http://telegram.me/botfather>`_
        should have given you an **API access token** (a bunch of characters and numbers),
        **kaoru** needs this token in order for her to do her magic.
        
        Moreover, you can edit your `configuration file <#configuration-file>`_ from this point
        
        .. code-block:: bash
        
            $ vi /path/to/your/kaoru.conf
        
        **NOTE**: A configuration file is *not mandatory* for **kaoru** to run, she can do
        it using her defaults, however, you will need at least to set the API token
        through the environment variable ``TG_TOKEN``
        
        **Now you are done setting up kaoru, now is time to run it!**
        
        .. code-block:: bash
        
            $ kaoru --config /path/to/you/kaoru.conf
        
            kaoru [version] - https://github.com/axltxl/kaoru
            -------------------------------------------------
            --- Reading configuration file at: asd.conf
            (!) Strict mode has been enforced!
            (!) You will need to register my commands with my @BotFather
            (!) Ask him to /setcommands and after you
            (!) have mentioned me, you can paste the following:
            ---
            about - Information for nerds
            start - Start me up
            hello - See if I "live"
            help - Get list of available commands
            screenlock - See if I "live"
            screenshot - Get a screen shot from your host(s)
            dryrun - Toggle "dry run" mode
            cancel - Cancel any pending operation(s)
            reboot - Reboot your host(s)
            poweroff - Shut down your host(s)
            suspend - Suspend your host(s) to RAM
            hibernate - Suspend your host(s) to disk
            ---
            --- Waiting for updates ...
        
        **NOTE**: bear in mind that **you have to register kaoru's commands for your bot**
        with the `@BotFather <http://telegram.me/botfather>`_, **kaoru** will tell you how.
        
        **So, I have everything set up. What commands are available on this bot?**
        
        Good question indeed!, the following is the current set of commands
        supported by **kaoru**, more are planned to come:
        
        
        -  ``/hello`` A simple ping just to see if your bot is *alive*
        -  ``/help`` How to use **kaoru**
        -  ``/screenlock`` Lock screens on your host(s)
        -  ``/screenshot`` Get a screen shot from your host(s)
        -  ``/poweroff`` Tell your host(s) to shut down
        -  ``/reboot`` Tell your host(s) to reboot
        -  ``/cancel`` Cancel any pending operations
        -  ``/dryrun`` don't do a thing, but pretend
        -  ``/about`` information, mostly for nerds
        -  ``/suspend`` Suspend your host(s) to RAM
        -  ``/hibernate`` Suspend your host(s) to disk
        
        
        Are there any sort of requirements for kaoru in order to work properly?
        -----------------------------------------------------------------------
        
        Yes indeed. For the moment, **kaoru** is only working under certain
        conditions. Hosts running **kaoru** must:
        
        
        -  Be Linux-based at least (though conceptually speaking, ``*nix`` should be supported)
        -  Have ``sudo``. Since commands like ``shutdown`` need to be run as ``root``.
        -  Have either `scrot <http://freecode.com/projects/scrot>`_ or `imagemagick <http://imagemagick.org>`_ installed (if you want ``/screenshot`` command to work)
        -  Run kaoru on behalf on an user whose ``sudo`` privileges cover at least the execution of ``shutdown`` with no password requirement.
        -  Have `pm-utils <http://pm-utils.freedesktop.org/wiki/>`_ installed on your system. This is necessary for ``/suspend`` and ``/hibernate`` to work properly.
        
        Configuration file
        ==================
        
        **kaoru** lists all sorts of configuration directives inside a YAML
        configuration file. These directives range from essentials like
        a Telegram Bot API token to those related with blablabla. Please refer
        to the `example configuration file <https://github.com/axltxl/kaoru/blob/develop/example.conf>`_
        for more details on how to configure **kaoru**.
        
        .. code-block:: yaml
        
            ---
            ############################
            # Example configuration file
            ############################
        
            # Telegram Bot API access token
            token: 1XXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXX
        
            # shutdown the host 2 minutes after a /poweroff command has been received
            poweroff_delay: 2
        
            # command to execute when a /screenlock command has been received
            screenlock_cmd: xscreensaver
        
        
        **NOTE**: Configuration files can be read by **kaoru** using the ``--config``
        argument, by default, **kaoru** will look up for a configuration file on
        ``~/.config/kaoru/kaoru.conf``
        
        
        Security
        ========
        
        By default, **kaoru** runs openly, namely, it will listen to *any incoming
        updates from any user* wanting to communicate with her, while this would allow you
        to quickly see her working, **it is inherently and by all means INSECURE!!!!**
        
        Once you feel happy with your configuration, it is strongly advised
        that you **enforce strict mode** on your configuration file, like so:
        
        .. code-block:: yaml
        
            ---
            # .. other options are behind
        
            # enforce strict mode
            strict: true
        
            # The following are the users who can talk
            # to kaoru. Requests coming from users outside
            # this list are simply IGNORED.
            masters:
                - <your Telegram user name>
                - betty # your friend betty can also talk to kaoru
        
        
        Once you're done, you can proceed to re-execute **kaoru**.
        With ``strict`` directive set to ``true``, **kaoru** will only
        listen and react to commands and messages coming from users set in ``masters``.
        
        
        Options
        =======
        .. code-block:: bash
        
            kaoru [options]
        
        
        -  ``--version`` show version number and exit
        -  ``-i | --interactive`` enter CLI mode
        -  ``-c FILE | --config FILE`` configuration file to use
        -  ``-h | --help`` show a help message and exit
        -  ``-d | --dry-run`` don't actually do anything
        -  ``L NUM | --log-level NUM`` set logging output level
        -  ``-l FILE | --log-file LOG_FILE`` set log file
        
        
        Contributing
        ============
        
        There are many ways in which you can contribute to kaoru.
        Code patches are just one thing amongst others that you can submit to help the project.
        We also welcome feedback, bug reports, feature requests, documentation improvements,
        advertisement and testing.
        
        Feedback contributions
        ----------------------
        
        This is by far the easiest way to contribute something.
        If you’re using kaoru for your own benefit, don’t hesitate sharing.
        Feel free to `submit issues and enhancement requests. <https://github.com/axltxl/kaoru/issues>`_
        
        Copyright and Licensing
        =======================
        
        Copyright (c) Alejandro Ricoveri
        
        Permission is hereby granted, free of charge, to any person obtaining a
        copy of this software and associated documentation files (the
        "Software"), to deal in the Software without restriction, including
        without limitation the rights to use, copy, modify, merge, publish,
        distribute, sublicense, and/or sell copies of the Software, and to
        permit persons to whom the Software is furnished to do so, subject to
        the following conditions:
        
        The above copyright notice and this permission notice shall be included
        in all copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
        OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
        MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
        IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
        CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
        TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
        SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
        
Keywords: telegram,iot
Platform: UNKNOWN
Classifier: Development Status :: 4 - Beta
Classifier: Environment :: Console	
Classifier: Natural Language :: English
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: POSIX
Classifier: Operating System :: POSIX :: Linux
Classifier: Topic :: Utilities
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.3
