Giter Club home page Giter Club logo

tcpevents's Introduction

TCPEvents

EventGhost plugin for sending and receiving events and data over a network. TCPEvents was created as a replacement for the very limited Network Event Sender and Receiver plugins and adds many enhancements. It is fully compatible with the original Network Event Sender/Receiver plugins. This is a fork of the original TCPEvents which appears to have been abandoned. It fixes a security vulnerability and adds some useful features.

Installation

Usage

You can use {} in most configuration fields to have TCPEvents replace the content with the corresponding variable.

  • Plugin Configuration:

    • TCP/IP Port - The port used for receiving.
    • Password - The password must match the password used by the sender. Leave the password field blank to disable authentication. Unauthenticated operation is not supported by the Network Event Sender/Receiver plugin.
    • Default Event Prefix - The prefix to use on received events unless a prefix is specified by the sender.
    • Add source IP to the payload - If checked the sender's IP address will be included with the payload of received events.
    • Connection Timeout(seconds) - Maximum number of seconds to attempt to connect to the server before the event send fails. Any other operation in EventGhost will be blocked until the send is completed or times out so it is important to find the smallest value that still allows for reliable communication.
    • Communication Timeout(seconds) - Maximum number of seconds to attempt communication with the server before the event send fails.
  • Send an Event

    • Address - The IP address to send the event to.
    • TCP/IP port - The port to send the event to. This should match the port setting in the plugin configuration of the receiver.
    • Password - Leave blank to disable authentication.
    • Prefix - Prefix of the sent event. If the prefix is not specified then the default prefix specified in the plugin configuration of the receiver will be used. Custom prefix is not supported by the Network Event Sender/Receiver plugin.
    • Suffix - Suffix of the sent event.
    • Payload(Python expr.) - If you want to send a plain text string write it between quotes. You can send/receive payload of various types(strings, numbers, lists, dicts, tuples, datetime, etc.).
  • Send Data - When sending data, the server won't produce any event. It will only store it with the provided name. The stored data can be retrieved at any time using the data name. This action is not supported by the Network Event Sender/Receiver plugins. See the Send an Event section for documentation of duplicate fields.

    • Name - The name is used to retrieve received data.
    • Data(Python expression) - Data to send.
  • Retrieve Received Data - The retrieved data stored under the name is returned as eg.result. This action is not supported by the Network Event Sender/Receiver plugins.

    • Name of the data to retrieve - Use the data name specified in the Send Data action.
  • Request Data from a remote host - The response is returned as eg.result. No event is created. This action is not supported by the Network Event Sender/Receiver plugins. See the Send an Event section for documentation of duplicate fields.

    • Python expression - This expression is evaluated on the receiver and the result is sent back

Authentication process

TCPEvents uses MD5 encrypted APOP style authentication to avoid sending passwords in plaintext.

  • sender: Connect to receiver. Send quintessence\n\r.
  • receiver: Send cookie.
  • sender: The password is appended to the cookie and the MD5 digest is calculated and sent back to the receiver.
  • receiver: If the received MD5 digest is correct then it sends accept.
  • sender: Send payload {payload string}\n{event}\nclose\n to the receiver.
  • receiver: Close the connection to the sender.

Acknowledgements

  • TCPEvents is based on the Network Event Sender and Receiver plugins by bitmonster, the creator of EventGhost.
  • TCPEvents was written by EventGhost forum member miljbee.

Changelog

Compatible Software

Contributing

Pull requests or issue reports are welcome! Please see the contribution rules for instructions.

tcpevents's People

Contributors

per1234 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

tcpevents's Issues

Change name?

I reported the cookie bug on the EventGhost forum TCPEvents thread June 2015 and still haven't received a response so it seems unlikely my changes will ever be merged. Since this fork will only continue to diverge from the original It may be less confusing to change the name.

Incompatible with timhoeck Android App : invalid password"

Hello,

There seem to be an incompatibility with this Android Plugin :
https://github.com/timhoeck/eventghost-android

Whenever I try to send an event from EventGhost to this Android app, I get this error on the app "invalid password", it receives the event but can't go further because of the password problem. Now if I do the exact same test with the same settings but this time with the original "Event Network Sender" included in EventGhost it works right away, so there must be something broken. Maybe the problem comes from the Android App itself, but the awkward thing is that it works flawlessly with "Event Network Sender"... Any hints on this ? Does anybody have noticed this as well ?

thanks.

Add timeout parameters to SendEvent()

Allow the connection and communication timeout values to be set as an argument of SendEvent(). This would probably not be needed frequently enough to warrant adding to the configuration dialog. Currently there is a global setting in the plugin configuration and this should be used as default but there may be applications where different values are suitable for different receivers. Currently the user would just need to set the values to the highest required value.

.egplugin releases

Renaming the zipped plugin with the .egplugin extension will allow the automatic installation by double clicking the file. The drawback is that this will require me to add the file to the release which doesn't give the same level of security for the users as GitHub's automatically generated release files which you can examine the contents of before downloading.

Functionalize authentication

Essentially the same authentication code in Send() is repeated 3 times(SendEvent(), SendData(), and RequestData()). It would be much easier to make changes to this code if it was made into a single function.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.