/** * Adds the node reference in the resources as a friend to the node this plugin is loaded. * * @return the corresponding PeerAdditionReturnCode indicating whether the bridge was added * successfully as a friend */ private PeerAdditionReturnCodes addFriendBridge() { SimpleFieldSet bridgeNodeFS; try { bridgeNodeFS = nodeRefHelper.getBridgeNodeRefFS(); } catch (IOException e) { Logger.error(this, "IO Exception while parsing bridge reference resource file"); return PeerAdditionReturnCodes.INTERNAL_ERROR; } PeerNode pn; try { pn = node.createNewDarknetNode(bridgeNodeFS, FRIEND_TRUST.HIGH, FRIEND_VISIBILITY.NO); ((DarknetPeerNode) pn).setPrivateDarknetCommentNote("Master Bridge"); } catch (FSParseException e) { return PeerAdditionReturnCodes.CANT_PARSE; } catch (PeerParseException e) { return PeerAdditionReturnCodes.CANT_PARSE; } catch (ReferenceSignatureVerificationException e) { return PeerAdditionReturnCodes.INVALID_SIGNATURE; } catch (Throwable t) { Logger.error(this, "Internal error adding reference :" + t.getMessage(), t); return PeerAdditionReturnCodes.INTERNAL_ERROR; } if (Arrays.equals(pn.getPubKeyHash(), node.getDarknetPubKeyHash())) { Logger.warning(this, "The bridge node reference file belongs to this node."); return PeerAdditionReturnCodes.TRY_TO_ADD_SELF; } if (!node.addPeerConnection(pn)) { return PeerAdditionReturnCodes.ALREADY_IN_REFERENCE; } return PeerAdditionReturnCodes.OK; }