def _upload(self, button, lfview): fname = self._local.get_selected_filename() if not fname: return fn = os.path.join(self._config.get("prefs", "download_dir"), fname) fnl = fn.lower() if fnl.endswith(".jpg") or \ fnl.endswith(".jpeg") or \ fnl.endswith(".png") or \ fnl.endswith(".gif"): fn = image.send_image(fn) if not fn: return ssel, psel = self._get_ssel() port = psel.get_active_text() if self._remote: station = self._remote.get_path() self._remote.outstanding[fname] = os.stat(fn).st_size else: station = ssel.get_active_text().upper() if not station or station.upper() == REMOTE_HINT.upper(): return self.emit("user-send-file", station, port, fn, fname)
def _mh(self, _action, station, port): action = _action.get_name() model = self.__view.get_model() iter = model.get_iter_first() while iter: _station, = model.get(iter, 0) if _station == station: break iter = model.iter_next(iter) if action == "ping": # FIXME: Use the port we saw the user on self.emit("ping-station", station, port) elif action == "conntest": ct = conntest.ConnTestAssistant(station, port) ct.connect("ping-echo-station", lambda a, *v: self.emit("ping-station-echo", *v)) ct.run() elif action == "remove": self.__calls.remove(station) self._update_station_count() model.remove(iter) elif action == "reset": model.set(iter, 1, time.time()) elif action == "reqpos": job = rpc.RPCPositionReport(station, "Position Request") def log_result(job, state, result): msg = result.get("rc", "(Error)") if msg != "OK": event = main_events.Event( None, "%s %s: %s" % (station, _("says"), msg)) self.emit("event", event) print(("Result: %s" % str(result))) job.set_station(station) job.connect("state-change", log_result) # FIXME: Send on the port where we saw this user self.emit("submit-rpc-job", job, port) elif action == "clearall": model.clear() self.__calls = [] self._update_station_count() elif action == "pingall": stationlist = self.emit("get-station-list") for port in list(stationlist.keys()): print(("Doing CQCQCQ ping on port %s" % port)) self.emit("ping-station", "CQCQCQ", port) elif action == "reqposall": job = rpc.RPCPositionReport("CQCQCQ", "Position Request") job.set_station(".") stationlist = self.emit("get-station-list") for port in list(stationlist.keys()): self.emit("submit-rpc-job", job, port) elif action == "sendfile": fn = self._config.platform.gui_open_file() if not fn: return fnl = fn.lower() if fnl.endswith(".jpg") or fnl.endswith(".jpeg") or \ fnl.endswith(".png") or fnl.endswith(".gif"): fn = image.send_image(fn) if not fn: return name = os.path.basename(fn) self.emit("user-send-file", station, port, fn, name) elif action == "version": def log_result(job, state, result): if state == "complete": msg = "Station %s running D-RATS %s on %s" % (\ job.get_dest(), result.get("version", "Unknown"), result.get("os", "Unknown")) print(("Station %s reports version info: %s" % (\ job.get_dest(), result))) else: msg = "No version response from %s" % job.get_dest() event = main_events.Event(None, msg) self.emit("event", event) job = rpc.RPCGetVersion(station, "Version Request") job.connect("state-change", log_result) self.emit("submit-rpc-job", job, port) elif action == "mcheck": def log_result(job, state, result): msg = "Mail check via %s: %s" % ( job.get_dest(), result.get("msg", "No response")) event = main_events.Event(None, msg) self.emit("event", event) vals = prompt_for_account(self._config) if vals is None: return job = rpc.RPCCheckMail(station, "Mail Check") job.set_account(vals[0], vals[1], vals[2], vals[4], vals[3]) job.connect("state-change", log_result) self.emit("submit-rpc-job", job, port)
def _mh(self, _action, station, port): action = _action.get_name() model = self.__view.get_model() iter = model.get_iter_first() while iter: _station, = model.get(iter, 0) if _station == station: break iter = model.iter_next(iter) if action == "ping": # FIXME: Use the port we saw the user on self.emit("ping-station", station, port) elif action == "conntest": ct = conntest.ConnTestAssistant(station, port) ct.connect("ping-echo-station", lambda a, *v: self.emit("ping-station-echo", *v)) ct.run() elif action == "remove": self.__calls.remove(station) self._update_station_count() model.remove(iter) elif action == "reset": model.set(iter, 1, time.time()) elif action == "reqpos": job = rpc.RPCPositionReport(station, "Position Request") def log_result(job, state, result): msg = result.get("rc", "(Error)") if msg != "OK": event = main_events.Event(None, "%s %s: %s" % (station, _("says"), msg)) self.emit("event", event) print "Result: %s" % str(result) job.set_station(station) job.connect("state-change", log_result) # FIXME: Send on the port where we saw this user self.emit("submit-rpc-job", job, port) elif action == "clearall": model.clear() self.__calls = [] self._update_station_count() elif action == "pingall": stationlist = self.emit("get-station-list") for port in stationlist.keys(): print "Doing CQCQCQ ping on port %s" % port self.emit("ping-station", "CQCQCQ", port) elif action == "reqposall": job = rpc.RPCPositionReport("CQCQCQ", "Position Request") job.set_station(".") stationlist = self.emit("get-station-list") for port in stationlist.keys(): self.emit("submit-rpc-job", job, port) elif action == "sendfile": fn = self._config.platform.gui_open_file() if not fn: return fnl = fn.lower() if fnl.endswith(".jpg") or fnl.endswith(".jpeg") or \ fnl.endswith(".png") or fnl.endswith(".gif"): fn = image.send_image(fn) if not fn: return name = os.path.basename(fn) self.emit("user-send-file", station, port, fn, name) elif action == "version": def log_result(job, state, result): if state == "complete": msg = "Station %s running D-RATS %s on %s" % (\ job.get_dest(), result.get("version", "Unknown"), result.get("os", "Unknown")) print "Station %s reports version info: %s" % (\ job.get_dest(), result) else: msg = "No version response from %s" % job.get_dest() event = main_events.Event(None, msg) self.emit("event", event) job = rpc.RPCGetVersion(station, "Version Request") job.connect("state-change", log_result) self.emit("submit-rpc-job", job, port) elif action == "mcheck": def log_result(job, state, result): msg = "Mail check via %s: %s" % (job.get_dest(), result.get("msg", "No response")) event = main_events.Event(None, msg) self.emit("event", event) vals = prompt_for_account(self._config) if vals is None: return job = rpc.RPCCheckMail(station, "Mail Check") job.set_account(vals[0], vals[1], vals[2], vals[4], vals[3]) job.connect("state-change", log_result) self.emit("submit-rpc-job", job, port)