public DarknetPeerNode createNewDarknetNode(SimpleFieldSet fs, FRIEND_TRUST trust, FRIEND_VISIBILITY visibility) throws FSParseException, PeerParseException, ReferenceSignatureVerificationException, PeerTooOldException { return new DarknetPeerNode(fs, this, darknetCrypto, false, trust, visibility); }
@Override public void onDismiss() { DarknetPeerNode pn = (DarknetPeerNode) peerRef.get(); if(pn != null) pn.deleteExtraPeerDataFile(fileNumber); }
@Override protected void sendInitialMessages() { super.sendInitialMessages(); try { sendVisibility(); } catch(NotConnectedException e) { Logger.error(this, "Completed handshake with " + getPeer() + " but disconnected: "+e, e); } if(!dontKeepFullFieldSet()) { try { sendAsync(DMT.createFNPGetYourFullNoderef(), null, node.nodeStats.foafCounter); } catch (NotConnectedException e) { // Ignore } } }
public DownloadFeedUserAlert(DarknetPeerNode sourcePeerNode, String description, int fileNumber, FreenetURI uri, long composed, long sent, long received) { super(true, null, null, null, null, UserAlert.MINOR, true, null, true, null); this.description = description; this.uri = uri; this.fileNumber = fileNumber; this.composed = composed; this.sent = sent; this.received = received; peerRef = sourcePeerNode.getWeakRef(); sourceNodeName = sourcePeerNode.getName(); }
public DarknetPeerNodeStatus(DarknetPeerNode peerNode, boolean noHeavy) { super(peerNode, noHeavy); this.name = peerNode.getName(); this.burstOnly = peerNode.isBurstOnly(); this.listening = peerNode.isListenOnly(); this.disabled = peerNode.isDisabled(); this.privateDarknetCommentNote = peerNode.getPrivateDarknetCommentNote(); this.trustLevel = peerNode.getTrustLevel(); this.ourVisibility = peerNode.getOurVisibility(); this.theirVisibility = peerNode.getTheirVisibility(); if(ourVisibility.isStricterThan(theirVisibility)) this.overallVisibility = ourVisibility; else this.overallVisibility = theirVisibility; }
HashMap<String, String> peers = new HashMap<String, String>(); for(DarknetPeerNode pn : peerNodes) { if (request.isPartSet("node_"+pn.hashCode())) { String peer_name = pn.getName(); String peer_hash = String.valueOf(pn.hashCode()); if(!peers.containsKey(peer_hash)) { peers.put(peer_hash, peer_name); if (request.isPartSet("peerPrivateNote_"+pn.hashCode())) { if(!request.getPartAsStringFailsafe("peerPrivateNote_"+pn.hashCode(),250).equals(pn.getPrivateDarknetCommentNote())) { pn.setPrivateDarknetCommentNote(request.getPartAsStringFailsafe("peerPrivateNote_"+pn.hashCode(),250)); if (request.isPartSet("node_"+pn.hashCode())) { pn.enablePeer(); if (request.isPartSet("node_"+pn.hashCode())) { pn.disablePeer(); if (request.isPartSet("node_"+pn.hashCode())) { pn.setBurstOnly(true); if (request.isPartSet("node_"+pn.hashCode())) { pn.setBurstOnly(false); if (request.isPartSet("node_"+pn.hashCode())) { pn.setIgnoreSourcePort(true); if (request.isPartSet("node_"+pn.hashCode())) { pn.setIgnoreSourcePort(false);
if(!isDisabledString.equals("")) { if(Fields.stringToBool(isDisabledString, false)) { dpn.disablePeer(); } else { dpn.enablePeer(); if(isListenOnlyString != null) { if(!isListenOnlyString.equals("")) { dpn.setListenOnly(Fields.stringToBool(isListenOnlyString, false)); if(isBurstOnlyString != null) { if(!isBurstOnlyString.equals("")) { dpn.setBurstOnly(Fields.stringToBool(isBurstOnlyString, false)); if(ignoreSourcePortString != null) { if(!ignoreSourcePortString.equals("")) { dpn.setIgnoreSourcePort(Fields.stringToBool(ignoreSourcePortString, false)); if(allowLocalAddressesString != null) { if(!allowLocalAddressesString.equals("")) { dpn.setAllowLocalAddresses(Fields.stringToBool(allowLocalAddressesString, false));
public void disablePeer() { synchronized(this) { isDisabled = true; } if(isConnected()) { forceDisconnect(); } stopARKFetcher(); setPeerNodeStatus(System.currentTimeMillis()); node.peers.writePeersDarknetUrgent(); }
boolean sendSuccess = false; int type = fs.getInt("n2nType"); if(isConnected()) { Message n2nm; if(fs.get("extraPeerDataType") != null) { synchronized(queuedToSendN2NMExtraPeerDataFileNumbers) { node.usm.send(this, n2nm, null); Logger.normal(this, "Sent queued ("+fileNumber+") N2NM to '"+getName()+"': "+n2nm); sendSuccess = true; queuedToSendN2NMExtraPeerDataFileNumbers.remove(fileNumber); deleteExtraPeerDataFile(fileNumber); } catch (NotConnectedException e) { sendSuccess = false; // redundant, but clear handleFproxyBookmarkFeed(fs, fileNumber); return true; handleFproxyDownloadFeed(fs, fileNumber); return true;
@Override public void fatalTimeout() { if(node.isStopping()) return; Logger.error(this, "Disconnecting from darknet node "+this+" because of fatal timeout", new Exception("error")); System.err.println("Your friend node \""+getName()+"\" ("+getPeer()+" version "+getVersion()+") is having severe problems. We have disconnected to try to limit the effect on us. It will reconnect soon."); // FIXME post a useralert // Disconnect. forceDisconnect(); }
peerTableHeaderRow.addChild("th", l10n("sendStatus")); for (DarknetPeerNode pn: peerNodes) { if (request.isPartSet("node_" + pn.hashCode())) { int status; status = pn.sendFileOffer(filename, message); } catch (IOException e) { peerTableInfobox.addChild("#", l10n("noSuchFileOrCannotRead")); status = pn.sendFileOffer(request.getUploadedFile("n2nm-upload"), message); status = pn.sendTextFeed(message); sendStatusClass = "n2ntm-send-delayed"; Logger.normal(this, "Sent N2NTM to '" + pn.getName() + "': " + message); } else if(status == PeerManager.PEER_NODE_STATUS_CONNECTED) { sendStatusShort = l10n("sentTitle"); sendStatusClass = "n2ntm-send-sent"; Logger.normal(this, "Sent N2NTM to '" + pn.getName() + "': " + message); } else { sendStatusShort = l10n("queuedTitle"); sendStatusClass = "n2ntm-send-queued"; Logger.normal(this, "Queued N2NTM to '" + pn.getName() + "': " + message);
public N2NTMUserAlert(DarknetPeerNode sourcePeerNode, String message, int fileNumber, long composedTime, long sentTime, long receivedTime) { super(true, null, null, null, null, UserAlert.MINOR, true, null, true, null); this.messageText = message; this.fileNumber = fileNumber; this.composedTime = composedTime; this.sentTime = sentTime; this.receivedTime = receivedTime; peerRef = sourcePeerNode.getWeakRef(); sourceNodeName = sourcePeerNode.getName(); sourcePeer = sourcePeerNode.getPeer().toString(); }
@Override public String getText() { String header = l10n("succeededReceiveHeader", new String[] { "filename", "node" }, new String[] { filename, getName() }); return describeFileText(header); }
@Override public HTMLNode getHTMLText() { HTMLNode div = new HTMLNode("div"); div.addChild("p", l10n("offeredFileHeader", "name", getName())); // Descriptive table describeFile(div); // Accept/reject form // Hopefully we will have a container when this function is called! HTMLNode form = node.clientCore.getToadletContainer().addFormChild(div, "/friends/", "f2fFileOfferAcceptForm"); // FIXME node_ is inefficient form.addChild("input", new String[] { "type", "name" }, new String[] { "hidden", "node_"+DarknetPeerNode.this.hashCode() }); form.addChild("input", new String[] { "type", "name", "value" }, new String[] { "hidden", "id", Long.toString(uid) }); form.addChild("input", new String[] { "type", "name", "value" }, new String[] { "submit", "acceptTransfer", l10n("acceptTransferButton") }); form.addChild("input", new String[] { "type", "name", "value" }, new String[] { "submit", "rejectTransfer", l10n("rejectTransferButton") }); return div; } @Override
/** * Disable connecting to a peer given its ip and port, name or identity, as a String * Report peer success as boolean */ private boolean disablePeer(String nodeIdentifier) { for(DarknetPeerNode pn: n.peers.getDarknetPeers()) { Peer peer = pn.getPeer(); String nodeIpAndPort = ""; if(peer != null) { nodeIpAndPort = peer.toString(); } String name = pn.myName; String identity = pn.getIdentityString(); if(identity.equals(nodeIdentifier) || nodeIpAndPort.equals(nodeIdentifier) || name.equals(nodeIdentifier)) { pn.disablePeer(); return true; } } return false; }
/** * Enable connecting to a peer given its ip and port, name or identity, as a String * Report peer success as boolean */ private boolean enablePeer(String nodeIdentifier) { for(DarknetPeerNode pn: n.peers.getDarknetPeers()) { Peer peer = pn.getPeer(); String nodeIpAndPort = ""; if(peer != null) { nodeIpAndPort = peer.toString(); } String name = pn.myName; String identity = pn.getIdentityString(); if(identity.equals(nodeIdentifier) || nodeIpAndPort.equals(nodeIdentifier) || name.equals(nodeIdentifier)) { pn.enablePeer(); return true; } } return false; }
public boolean rereadExtraPeerDataFile(int fileNumber) { if(logMINOR) Logger.minor(this, "Rereading peer data file "+fileNumber+" for "+shortToString()); String extraPeerDataDirPath = node.getExtraPeerDataDir(); File extraPeerDataPeerDir = new File(extraPeerDataDirPath+File.separator+getIdentityString()); if(!extraPeerDataPeerDir.exists()) { Logger.error(this, "Extra peer data directory for peer does not exist: "+extraPeerDataPeerDir.getPath()); return false; } if(!extraPeerDataPeerDir.isDirectory()) { Logger.error(this, "Extra peer data directory for peer not a directory: "+extraPeerDataPeerDir.getPath()); return false; } File extraPeerDataFile = new File(extraPeerDataDirPath+File.separator+getIdentityString()+File.separator+fileNumber); if(!extraPeerDataFile.exists()) { Logger.error(this, "Extra peer data file for peer does not exist: "+extraPeerDataFile.getPath()); return false; } return readExtraPeerDataFile(extraPeerDataFile, fileNumber); }
/** * Check for a peer of the node given its ip and port, name or identity, as a String * Report peer existence as boolean */ private boolean havePeer(String nodeIdentifier) { for(DarknetPeerNode pn: n.peers.getDarknetPeers()) { Peer peer = pn.getPeer(); String nodeIpAndPort = ""; if(peer != null) { nodeIpAndPort = peer.toString(); } String name = pn.myName; String identity = pn.getIdentityString(); if(identity.equals(nodeIdentifier) || nodeIpAndPort.equals(nodeIdentifier) || name.equals(nodeIdentifier)) { return true; } } return false; }
DarknetPeerNode[] peerNodes = node.getDarknetConnections(); for(DarknetPeerNode pn: peerNodes) { int peer_hashcode = pn.hashCode(); if (peer_hashcode == input_hashcode) { peernode_name = pn.getName(); fs = pn.getFullNoderef(); break;