Compare commits
	
		
			2 Commits
		
	
	
		
			040bd08503
			...
			6bedd576be
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					6bedd576be | ||
| 
						 | 
					fbfc7d9992 | 
							
								
								
									
										71
									
								
								server/src/notifier.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								server/src/notifier.py
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,71 @@
 | 
				
			|||||||
 | 
					#!/bin/env python3
 | 
				
			||||||
 | 
					import websocket
 | 
				
			||||||
 | 
					import json
 | 
				
			||||||
 | 
					import random
 | 
				
			||||||
 | 
					import zmq
 | 
				
			||||||
 | 
					from pprint import pprint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					__version__ = "2.0.0b2"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					ws = None
 | 
				
			||||||
 | 
					uri = "ws://localhost:5080"
 | 
				
			||||||
 | 
					ws = websocket.create_connection(uri)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					context = zmq.Context()
 | 
				
			||||||
 | 
					socket = context.socket(zmq.REP)
 | 
				
			||||||
 | 
					socket.bind("tcp://*:5555")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def sendsmpmessage(target, message):
 | 
				
			||||||
 | 
					    global ws
 | 
				
			||||||
 | 
					    print("Sendmessage %s called to %s" % (message, target))
 | 
				
			||||||
 | 
					    msg = ("%s %s" % (target, message))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    # Create a unique correlation ID
 | 
				
			||||||
 | 
					    command = {
 | 
				
			||||||
 | 
					        "corrId": f"id{random.randint(0, 999999)}",
 | 
				
			||||||
 | 
					        "cmd": msg,
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    json_command = json.dumps(command)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    """ Connects to WebSocket server, sends a message, and returns the response """
 | 
				
			||||||
 | 
					    if ws is None:
 | 
				
			||||||
 | 
					        uri = "ws://localhost:5080"
 | 
				
			||||||
 | 
					        ws = websocket.create_connection(uri)  # Blocking WebSocket connection
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ws.send(json_command)  # Send message to WebSocket
 | 
				
			||||||
 | 
					    responsejson = ws.recv()  # Receive response
 | 
				
			||||||
 | 
					    response = json.loads(responsejson)
 | 
				
			||||||
 | 
					    # ws.close()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    for chatitem in response['resp']['chatItems']:
 | 
				
			||||||
 | 
					        statusdict = chatitem['chatItem']['meta']['itemStatus']
 | 
				
			||||||
 | 
					        try:
 | 
				
			||||||
 | 
					            status = statusdict['sndProgress']
 | 
				
			||||||
 | 
					        except KeyError:
 | 
				
			||||||
 | 
					            print("FAILED")
 | 
				
			||||||
 | 
					            status = 'FAILED'
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            smessage = chatitem['chatItem']['meta']['itemText']
 | 
				
			||||||
 | 
					            print("Message '%s' sent over websocket to %s, status was %s" % (smessage, target, status))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if status == 'complete':
 | 
				
			||||||
 | 
					            return True
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            return False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					if __name__ == '__main__':
 | 
				
			||||||
 | 
					    while True:
 | 
				
			||||||
 | 
					        zmq = socket.recv_string()
 | 
				
			||||||
 | 
					        print(f"Received request: {zmqmessage}")
 | 
				
			||||||
 | 
					        result = True
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        decoded = json.loads(zmqmessage)
 | 
				
			||||||
 | 
					        pprint(decoded)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        result = sendmessage(decoded.get('target'), decoded.get('message'))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if result is True:
 | 
				
			||||||
 | 
					            socket.send_string("sent")
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            socket.send_string("failed")
 | 
				
			||||||
@ -4,57 +4,33 @@ import websocket
 | 
				
			|||||||
import json
 | 
					import json
 | 
				
			||||||
import yaml
 | 
					import yaml
 | 
				
			||||||
import random
 | 
					import random
 | 
				
			||||||
import threading
 | 
					 | 
				
			||||||
from pprint import pprint
 | 
					from pprint import pprint
 | 
				
			||||||
 | 
					
 | 
				
			||||||
__version__ = "2.0.0b2"
 | 
					__version__ = "2.0.0b2"
 | 
				
			||||||
versionstring='Taurix TellMe server v' + __version__
 | 
					versionstring='Taurix TellMe server v' + __version__
 | 
				
			||||||
 | 
					
 | 
				
			||||||
app = Flask(__name__)
 | 
					app = Flask(__name__)
 | 
				
			||||||
lock = threading.Lock()
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
ws = None
 | 
					socket = context.socket(zmq.REQ)
 | 
				
			||||||
uri = "ws://localhost:5080"
 | 
					socket.connect("tcp://localhost:5555")
 | 
				
			||||||
ws = websocket.create_connection(uri)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
hooks = {}
 | 
					hooks = {}
 | 
				
			||||||
with open(r'/etc/tellme/hooks.yml') as hooksfile:
 | 
					with open(r'/etc/tellme/hooks.yml') as hooksfile:
 | 
				
			||||||
    hooks = yaml.load(hooksfile, Loader=yaml.FullLoader)
 | 
					    hooks = yaml.load(hooksfile, Loader=yaml.FullLoader)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def sendmessage(target, message):
 | 
					def sendmessage(target, message):
 | 
				
			||||||
    global ws
 | 
					    global socket
 | 
				
			||||||
    print("Sendmessage %s called to %s" % (message, target))
 | 
					    jsonmessage = {}
 | 
				
			||||||
    msg = ("%s %s" % (target, message))
 | 
					    jsonmessage['target'] = target
 | 
				
			||||||
 | 
					    jsonmessage['message'] = message
 | 
				
			||||||
 | 
					    socket.send_string(json.dumps(jsonmessage))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # Create a unique correlation ID
 | 
					    # Wait for a reply
 | 
				
			||||||
    command = {
 | 
					    reply = socket.recv_string()
 | 
				
			||||||
        "corrId": f"id{random.randint(0, 999999)}",
 | 
					    print(f"Received reply: {reply}")
 | 
				
			||||||
        "cmd": msg,
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
    json_command = json.dumps(command)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    """ Connects to WebSocket server, sends a message, and returns the response """
 | 
					    if reply == 'sent':
 | 
				
			||||||
    if ws is None:
 | 
					 | 
				
			||||||
        uri = "ws://localhost:5080"
 | 
					 | 
				
			||||||
        ws = websocket.create_connection(uri)  # Blocking WebSocket connection
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    ws.send(json_command)  # Send message to WebSocket
 | 
					 | 
				
			||||||
    responsejson = ws.recv()  # Receive response
 | 
					 | 
				
			||||||
    response = json.loads(responsejson)
 | 
					 | 
				
			||||||
    # ws.close()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    for chatitem in response['resp']['chatItems']:
 | 
					 | 
				
			||||||
        statusdict = chatitem['chatItem']['meta']['itemStatus']
 | 
					 | 
				
			||||||
        try:
 | 
					 | 
				
			||||||
            status = statusdict['sndProgress']
 | 
					 | 
				
			||||||
        except KeyError:
 | 
					 | 
				
			||||||
            print("FAILED")
 | 
					 | 
				
			||||||
            status = 'FAILED'
 | 
					 | 
				
			||||||
        else:
 | 
					 | 
				
			||||||
            smessage = chatitem['chatItem']['meta']['itemText']
 | 
					 | 
				
			||||||
            print("Message '%s' sent over websocket to %s, status was %s" % (smessage, target, status))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if status == 'complete':
 | 
					 | 
				
			||||||
        return True
 | 
					        return True
 | 
				
			||||||
    else:
 | 
					    else:
 | 
				
			||||||
        return False
 | 
					        return False
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										12
									
								
								server/tellme_notifier.service
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								server/tellme_notifier.service
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
				
			|||||||
 | 
					[Unit]
 | 
				
			||||||
 | 
					Description=Tellme Notifier
 | 
				
			||||||
 | 
					After=network.target
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Service]
 | 
				
			||||||
 | 
					User=tellme
 | 
				
			||||||
 | 
					WorkingDirectory=/opt/tellme
 | 
				
			||||||
 | 
					ExecStart=notifier.py
 | 
				
			||||||
 | 
					Restart=always
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					[Install]
 | 
				
			||||||
 | 
					WantedBy=multi-user.target
 | 
				
			||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user