12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import socket
- from component_controler import *
- import time
- '''
- '{components_name:[gate1,gate2],' \
- 'action:"start/stop/sendcommand"'
- '''
- class SocketServer(object):
- def getmyipaddr(self,type):
- s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- if type == 'wan':
- s.connect(('114.114.114.114', 0))
- if type == 'lan':
- s.connect(('192.168.4.1', 0))
- myip = s.getsockname()[0]
- return myip
- def socketbase(self):
- self.sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
- myip = self.getmyipaddr('lan')
- self.sock.bind((myip,19166))
- self.sock.listen(5)
- while True:
- self.connection,address = self.sock.accept()
- try:
- self.connection.settimeout(5)
- self.data = self.connection.recv(1024)
- self.getcmd = self.getcommand()
- if not self.getcmd:
- self.result = 'not enough segments '
- else:
- self.execute_command()
- self.returndata()
- except Exception,e:
- print e
- pass
- def getcommand(self):
- self.data = eval(self.data)
- if self.data.get('components_name') and self.data.get('action'):
- self.components_name = self.data['components_name']
- self.action = self.data['action']
- return True
- else:
- return False
- def execute_command(self):
- for component_name in self.components_name:
- component = Action(component_name)
- if self.action == 'restart':
- self.result = component.stop()
- time.sleep(1)
- self.result += '\n'+ component.start()
- elif self.action == 'stop':
- self.result = component.stop()
- elif self.action == 'start':
- self.result = component.start()
- else:
- self.result = component.sendcmd(self.action)
- def returndata(self):
- self.connection.send(self.result)
- self.connection.close()
- if __name__ == '__main__':
- sockserver = SocketServer()
- sockserver.socketbase()
|