UNPKG

openhim-mediator-shell-script

Version:
74 lines (58 loc) 3.07 kB
[![OpenHIM Core](https://img.shields.io/badge/openhim--core-1.5%2B-brightgreen.svg)](http://openhim.readthedocs.org/en/latest/user-guide/versioning.html) # openhim-mediator-shell-script OpenHIM Mediator for executing shell scripts. ## Usage Install via npm ``` npm install -g openhim-mediator-shell-script ``` (note this will need root/sudo permission) Create an appropriate location for you scripts (only scripts in this location will be allowed to be executed) ``` mkdir /opt/openhim-shell-scripts ``` Next get a copy of the default config and place it in an appropriate location, e.g. ``` mkdir /etc/openhim wget https://raw.githubusercontent.com/jembi/openhim-mediator-shell-script/master/config/default.json mv default.json /etc/openhim/mediator-shell-script.json ``` Edit the values in this config according to your setup. Run the mediator: ``` openhim-mediator-shell-script --conf /etc/openhim/mediator-shell-script.json ``` Now you can setup your HIM channels and the mediator config via the console. ## Polling Channel Example Say we have a maintenance script `task.sh` that needs to execute on a daily basis. Copy the script into the mediator scripts directory and give it execute permission: ``` cp task.sh /opt/openhim-shell-scripts chmod +x /opt/openhim-shell-scripts/task.sh ``` Note that the mediator *process* needs execute permission for the script. With the script in place we can setup the channel and mediator in console. Go to *Mediators* and click on the *OpenHIM Shell Script Mediator* item. From there click on the blue *Configure Mediator* button. Add a new script and give it an endpoint on which to trigger execution. Enter the name of the script `task.sh`. Any required arguments or environment variables can be added as well. ![screen shot 2016-03-10 at 09 12 34](https://cloud.githubusercontent.com/assets/1872071/13662056/4ab49908-e6a0-11e5-90d3-bb10298bf95b.png) After you hit the *Save Changes* button, the mediator will automatically pick up on the new config. Now we can setup a new channel that will call the script on a daily basis. Add a new polling channel: ![channel-basic-info](https://cloud.githubusercontent.com/assets/1872071/13661621/f0066d2c-e69c-11e5-9e8c-b7b7ad5c15b8.png) Give it an access control permission such as `internal`. Add the script route by picking the *OpenHIM Shell Script Mediator* option in *Add Mediator Route*. Edit the route and set *Route Path* to `/task`: ![channel-route](https://cloud.githubusercontent.com/assets/1872071/13661539/0907ab20-e69c-11e5-807a-d82ac6339dc1.png) Click on *Save Changes* and then that's it. The polling channel will now execute the script daily. The script output (both `STDOUT` and `STDERR`) will be viewable in the response body for the transaction. ## Development Checkout from GitHub ``` git clone https://github.com/jembi/openhim-mediator-shell-script.git npm install ``` To run the mediator in development mode ``` grunt serve ``` or to run the tests ``` npm test ``` ## License This software is licensed under the Mozilla Public License Version 2.0.