def _openSocket(): global s s = socket.socket() s.bind(('',60020)) s.listen(10) # Accept max. 10 connections print "File socket ready, listening for incoming file connections..." while True: sc, address = s.accept() print "TCP CLIENT CONNECTED: ", address dataSizeBytes = sc.recv(4) dataSize, remaining = readInt(bytearray(dataSizeBytes)) print "Receiving %d Bytes" % (dataSize) buff = '' while len(buff) < dataSize: buff += sc.recv(1024) print "Closing TCP Client connection..." sc.close() print "Data read to buffer, processing bytearray..." data = bytearray(buff) # read number of files #numFilesBytes = sc.recv(4) numFiles, data = readInt(data) print "READING %d FILES" % numFiles for i in range(numFiles): # read file name #nameSizeBytes = sc.recv(4) #nameSize, data = readInt(data) #name = sc.recv(nameSize) name, data = readString(data) #print "READING FILE: ", name openPath = os.getcwd() + '/media/' + name #fileSizeBytes = sc.recv(4) fileSize, data = readInt(data) #print "FILESIZE: ", fileSize if not os.path.isdir(openPath): f = open(openPath, 'w+') #open in binary #l='' #while len(l)< fileSize: # l += sc.recv(1024) l = data[:fileSize] data = data[fileSize:] f.write(l) #print 'Bytes written to file: ', fileSize f.close() #print "File saved!" print "FILES SAVED!" if mediaplayer.playerState == PLAYER_STARTED: mediaplayer.stop() time.sleep(3) mediaplayer.play()
def _openSocket(): # create temp directory for received data if os.path.isdir(TCP_TEMP): shutil.rmtree(TCP_TEMP) os.mkdir(TCP_TEMP) global s s = socket.socket() s.bind(('',60020)) s.listen(10) # Accept max. 10 connections print "File socket ready, listening for incoming file connections..." while True: sc, address = s.accept() print "TCP CLIENT CONNECTED: ", address dataSizeBytes = sc.recv(4) dataSize, remaining = readInt(bytearray(dataSizeBytes)) print "Receiving %d Bytes" % (dataSize) bytesRead = 0 tmpFile = "tmp_" + str(int(round(time.time()))) with open(TCP_TEMP + "/" + tmpFile, 'w') as tmp: while bytesRead < dataSize: data = sc.recv(1024) bytesRead += len(data) tmp.write(data) print "Closing TCP Client connection..." sc.close() print "Data read to buffer, processing..." interpret(TCP_TEMP + "/" + tmpFile) print "FILES SAVED!" if mediaplayer.playerState == PLAYER_STARTED: mediaplayer.stop() time.sleep(5) mediaplayer.play()
def _openSocket(): # create temp directory for received data if os.path.isdir(TCP_TEMP): shutil.rmtree(TCP_TEMP) os.mkdir(TCP_TEMP) global s s = socket.socket() s.bind(('', 60020)) s.listen(10) # Accept max. 10 connections print "File socket ready, listening for incoming file connections..." while True: sc, address = s.accept() print "TCP CLIENT CONNECTED: ", address dataSizeBytes = sc.recv(4) dataSize, remaining = readInt(bytearray(dataSizeBytes)) print "Receiving %d Bytes" % (dataSize) bytesRead = 0 tmpFile = "tmp_" + str(int(round(time.time()))) with open(TCP_TEMP + "/" + tmpFile, 'w') as tmp: while bytesRead < dataSize: data = sc.recv(1024) bytesRead += len(data) tmp.write(data) print "Closing TCP Client connection..." sc.close() print "Data read to buffer, processing..." interpret(TCP_TEMP + "/" + tmpFile) print "FILES SAVED!" if mediaplayer.playerState == PLAYER_STARTED: mediaplayer.stop() time.sleep(5) mediaplayer.play()
def interpret(msg_data): print "Interpreting incoming data..." # initialize with error state result = INTERPRETER_ERROR data = bytearray(msg_data) size, data = readInt(data) print "Size: " + str(size) flag, data = readShort(data) msg = None print "Flag: " + str(flag) if flag == CONFIG_UPDATE: data = readConfigUpdate(data) result = INTERPRETER_SUCCESS elif flag == PLAYER_START: print 'UDP COMMAND Mediaplayer start...' mediaplayer.playerState = PLAYER_STARTED mediaplayer.play() result = INTERPRETER_SUCCESS elif flag == PLAYER_STOP: print 'UDP COMMAND Mediaplayer stop...' mediaplayer.playerState = PLAYER_STOPPED mediaplayer.stop() result = INTERPRETER_SUCCESS elif flag == PLAYER_RESTART: print 'UDP COMMAND Mediaplayer restart...' mediaplayer.playerState = PLAYER_STOPPED mediaplayer.stop() time.sleep(2) mediaplayer.playerState = PLAYER_STARTED mediaplayer.play() elif flag == SERVER_REQUEST: data = None result = SERVER_REQUEST elif flag == FILELIST_REQUEST: result = FILELIST_REQUEST elif flag == FILELIST_RESPONSE: readFileList(data) result = FILELIST_REQUEST elif flag == CONFIG_REQUEST: result = CONFIG_REQUEST elif flag == DELETE_FILE: numFiles, data = readInt(data) files = [] for i in range(numFiles): msg, data = readString(data) if msg: files.append(msg) mediaplayer.deleteFiles(files) elif flag == DELETE_ALL_IMAGES: files = mediaplayer.getImageFilelist() mediaplayer.deleteFiles(files) elif flag == PLAYER_IDENTIFY: print 'Showing identify image...' mediaplayer.identifySelf() elif flag == PLAYER_IDENTIFY_DONE: print 'Identifying done...' mediaplayer.identifyDone() elif flag == PLAYER_REBOOT: os.system("sudo reboot") elif flag == PLAYER_UPDATE: if is_connected(): os.system("/home/pi/raspmedia/Raspberry/scripts/update.sh") else: result = PLAYER_UPDATE_ERROR msg = "Player is not connected to the internet." elif flag == WIFI_CONFIG: setupWifi(data) #print "Remaining data: " + data.decode("utf-8") return result, msg
def interpret(msg_data, sender_ip=None): #print "Interpreting incoming data..." if str(msg_data).startswith("rm"): # string interpretation result = INTERPRETER_SUCCESS msg = None values = str(msg_data).split(":") cmd = values[1] if cmd == "state": val = values[2] # switch state mediaplayer.setState(int(val)) elif cmd == "number": val = values[2] mediaplayer.setMediaFileNumber(int(val)) elif cmd == "next": mediaplayer.nextFile() elif cmd == "prev": mediaplayer.prevFile() elif cmd == "config": # config must be sent as key/value pair if len(values) == 4: key = values[2] value = values[3] print "New Key/Value Pair:" print "KEY: ", key print "VALUE: ", value configtool.setConfigValue(key, value) elif cmd == "hdmi": val = values[2] os.system(os.getcwd() + "/scripts/rpi-hdmi.sh " + val) else: result = INTERPRETER_ERROR msg = "Unknown UDP string command" else: data = bytearray(msg_data) size, data = readInt(data) #print "Size: " + str(size) flag, data = readShort(data) result = flag msg = None #print "Flag: " + str(flag) if flag == CONFIG_UPDATE: data = readConfigUpdate(data) elif flag == PLAYER_START: print 'UDP COMMAND Mediaplayer start...' mediaplayer.setState(1) elif flag == PLAYER_STOP: print 'UDP COMMAND Mediaplayer stop...' mediaplayer.setState(0) elif flag == PLAYER_PAUSE: mediaplayer.setState(3) elif flag == PLAYER_RESTART: print 'UDP COMMAND Mediaplayer restart...' mediaplayer.playerState = PLAYER_STOPPED mediaplayer.stop() time.sleep(2) mediaplayer.playerState = PLAYER_STARTED mediaplayer.play() elif flag == SERVER_REQUEST: data = None result = SERVER_REQUEST elif flag == FILELIST_REQUEST: result = FILELIST_REQUEST elif flag == FILELIST_RESPONSE: readFileList(data) result = FILELIST_REQUEST elif flag == CONFIG_REQUEST: result = CONFIG_REQUEST elif flag == DELETE_FILE: numFiles, data = readInt(data) files = [] for i in range(numFiles): msg, data = readString(data) if msg: files.append(msg) mediaplayer.deleteFiles(files) elif flag == DELETE_ALL_IMAGES: files = mediaplayer.getImageFilelist() mediaplayer.deleteFiles(files) elif flag == PLAYER_IDENTIFY: print 'Showing identify image...' mediaplayer.identifySelf() elif flag == PLAYER_IDENTIFY_DONE: print 'Identifying done...' mediaplayer.identifyDone() elif flag == PLAYER_REBOOT: os.system("sudo reboot") elif flag == PLAYER_UPDATE: if is_connected(): os.system("/home/pi/raspmedia/Raspberry/scripts/update.sh") else: result = PLAYER_UPDATE_ERROR msg = "Player is not connected to the internet." elif flag == WIFI_CONFIG: setupWifi(data) ### GROUP AND ACTION MESSAGE FLAGS ### elif flag == GROUP_CONFIG_REQUEST: result = flag elif flag == GROUP_MEMBER_REQUEST: group, data = readString(data) GroupManager.MemberRequest(group, sender_ip) elif flag == GROUP_MEMBER_ACKNOWLEDGE: group, data = readString(data) byRequest, data = readInt(data) GroupManager.MemberAcknowledge(group, sender_ip, byRequest) elif flag == GROUP_CONFIG: result = flag readGroupConfig(data) elif flag == GROUP_DELETE: result = flag groupName, data = readString(data) if configtool.readGroupConfig()['group'] == groupName: configtool.resetGroupConfig() gConf = configtool.readGroupConfig() GroupManager.ReInitGroupManager(gConf) elif flag == GROUP_CONFIG_ADD_ACTION: result = flag msg, data = readString(data) elif flag == GROUP_CONFIG_ACTION_DELETE: result = flag msg, data = readString(data) elif flag == FILE_DATA_REQUEST: result = flag elif flag == PLAYER_START_FILENUMBER: print "UDP COMMAND Start Filenumber..." number, data = readInt(data) mediaplayer.startFileNumber(number) elif flag == DISK_INFO_REQUEST: result = flag else: result = INTERPRETER_ERROR msg = "Unknown command flag" #print "Remaining data: " + data.decode("utf-8") return result, msg
def interpret(msg_data, sender_ip=None): #print "Interpreting incoming data..." if str(msg_data).startswith("rm"): # string interpretation result = INTERPRETER_SUCCESS msg = None values = str(msg_data).split(":") cmd = values[1] if cmd == "state": val = values[2] # switch state mediaplayer.setState(int(val)) elif cmd == "number": val = values[2] mediaplayer.setMediaFileNumber(int(val)) elif cmd == "next": mediaplayer.nextFile() elif cmd == "prev": mediaplayer.prevFile() elif cmd == "config": # config must be sent as key/value pair if len(values) == 4: key = values[2] value = values[3] print "New Key/Value Pair:" print "KEY: ", key print "VALUE: ", value configtool.setConfigValue(key, value) elif cmd == "hdmi": val = values[2] os.system(os.getcwd()+"/scripts/rpi-hdmi.sh "+val) else: result = INTERPRETER_ERROR msg = "Unknown UDP string command" else: data = bytearray(msg_data) size, data = readInt(data) #print "Size: " + str(size) flag, data = readShort(data) result = flag; msg = None #print "Flag: " + str(flag) if flag == CONFIG_UPDATE: data = readConfigUpdate(data) elif flag == PLAYER_START: print 'UDP COMMAND Mediaplayer start...' mediaplayer.setState(1) elif flag == PLAYER_STOP: print 'UDP COMMAND Mediaplayer stop...' mediaplayer.setState(0) elif flag == PLAYER_PAUSE: mediaplayer.setState(3) elif flag == PLAYER_RESTART: print 'UDP COMMAND Mediaplayer restart...' mediaplayer.playerState = PLAYER_STOPPED mediaplayer.stop() time.sleep(2) mediaplayer.playerState = PLAYER_STARTED mediaplayer.play() elif flag == SERVER_REQUEST: data = None result = SERVER_REQUEST elif flag == FILELIST_REQUEST: result = FILELIST_REQUEST elif flag == FILELIST_RESPONSE: readFileList(data) result = FILELIST_REQUEST elif flag == CONFIG_REQUEST: result = CONFIG_REQUEST elif flag == DELETE_FILE: numFiles, data = readInt(data) files = [] for i in range(numFiles): msg, data = readString(data) if msg: files.append(msg) mediaplayer.deleteFiles(files) elif flag == DELETE_ALL_IMAGES: files = mediaplayer.getImageFilelist() mediaplayer.deleteFiles(files) elif flag == PLAYER_IDENTIFY: print 'Showing identify image...' mediaplayer.identifySelf() elif flag == PLAYER_IDENTIFY_DONE: print 'Identifying done...' mediaplayer.identifyDone() elif flag == PLAYER_REBOOT: os.system("sudo reboot") elif flag == PLAYER_UPDATE: if is_connected(): os.system("/home/pi/raspmedia/Raspberry/scripts/update.sh") else: result = PLAYER_UPDATE_ERROR msg = "Player is not connected to the internet." elif flag == WIFI_CONFIG: setupWifi(data) ### GROUP AND ACTION MESSAGE FLAGS ### elif flag == GROUP_CONFIG_REQUEST: result = flag elif flag == GROUP_MEMBER_REQUEST: group, data = readString(data) GroupManager.MemberRequest(group, sender_ip) elif flag == GROUP_MEMBER_ACKNOWLEDGE: group, data = readString(data) byRequest , data = readInt(data) GroupManager.MemberAcknowledge(group, sender_ip, byRequest) elif flag == GROUP_CONFIG: result = flag readGroupConfig(data) elif flag == GROUP_DELETE: result = flag groupName, data = readString(data) if configtool.readGroupConfig()['group'] == groupName: configtool.resetGroupConfig() gConf = configtool.readGroupConfig() GroupManager.ReInitGroupManager(gConf) elif flag == GROUP_CONFIG_ADD_ACTION: result = flag msg, data = readString(data) elif flag == GROUP_CONFIG_ACTION_DELETE: result = flag msg, data = readString(data) elif flag == FILE_DATA_REQUEST: result = flag elif flag == PLAYER_START_FILENUMBER: print "UDP COMMAND Start Filenumber..." number, data = readInt(data) mediaplayer.startFileNumber(number) elif flag == DISK_INFO_REQUEST: result = flag else: result = INTERPRETER_ERROR msg = "Unknown command flag" #print "Remaining data: " + data.decode("utf-8") return result, msg