-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprocComm.py
More file actions
73 lines (66 loc) · 2.73 KB
/
Copy pathprocComm.py
File metadata and controls
73 lines (66 loc) · 2.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/python # This is server.py file
import os
import sys
from threading import Thread
import multiprocessing
import socket # Import socket module
from slackclient import SlackClient
from botMap import *
IS_SLACK= True
#s = socket.socket() # Create a socket object
#host = socket.gethostname() # Get local machine name
#port = 50000 # Reserve a port for your service.
#SocketServer server
class procComm:
HOST = 0; #ocket.gethostbyname(socket.gethostname())
port = 0
server = 0
IS_DATA = 0
IS_CMD = 1
def __init__(self,token,port):
if(IS_SLACK == True):
self.server = SlackClient(token)
else:
self.port = port
self.server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM, socket.IPPROTO_UDP)
self.server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
self.server.bind((self.HOST, self.port))
sys.stderr.write('Msg Bind: '+str(self.port)+'\n')
def procMsgEx(self,data):
for AT_BOT in BOT_MSG_HEAD:
if data.startswith(AT_BOT):
sys.stderr.write('[*] msgEx:'+str(BOT_MAP[AT_BOT][0]))
self.procMsgSend(channel = BOT_MAP[AT_BOT][0],text = data,dataType = 0)
ret = self.procMsgRecv()
ret[0]['channel'] = BOT_MAP[AT_BOT][0]
return ret[0]['text'],ret[0]['channel']
return '',0
def procMsgConn(self):
if(IS_SLACK == True):
return self.server.rtm_connect()
else:
return True
def procMsgRecv(self):
#print('Msg Recv')
if(IS_SLACK == True):
return self.server.rtm_read()
else:
output_list = []
# self.request is the UDP socket connected to the client
data = self.server.recv(1024).strip()
sys.stderr.write('Msg Recv Data on '+str(self.server.getsockname())+' data: '+data +'\n')
output_list.append({'text':data,'channel':IS_MSG_HANDLER_PORT})
return output_list
def procMsgSend(self,channel,text,dataType):
port = channel
if(IS_SLACK == True):
self.server.api_call("chat.postMessage", channel=channel,text=text, as_user=True)
else:
sys.stderr.write('Msg Send on '+str(self.server.getsockname())+ ' to ' + str(port)+'\n')
server_address = (self.HOST, port)
self.server.sendto(bytes(text + '\n'),server_address)
#print("Sent: {}".format(data))
def procMsgInit(token,port):
sys.stderr.write('Msg init\n')
obj = procComm(token,port)
return obj