mirror of
https://github.com/yzernik/squeaknode.git
synced 2026-08-13 12:33:25 +02:00
Use peer address struct in requests (#1004)
* Update connect peer and disconnect peer rpc to use peer addrss struct * Update get connected peer rpc to use peer addrss struct * Use peer address struct in create saved peer rpc * Use peer address struct in squeak peer struct * Use peer address for requests functions in frontend * Update frontend build
This commit is contained in:
parent
a9c66be62c
commit
b9ac4b86b4
21 changed files with 159 additions and 171 deletions
|
|
@ -63,7 +63,7 @@ export default function SavedPeerListItem({
|
|||
<CardHeader
|
||||
avatar={<ComputerIcon/>}
|
||||
title={`Name: ${peer.getPeerName()}`}
|
||||
subheader={`Address: ${peer.getHost()}:${peer.getPort()}`}
|
||||
subheader={`Address: ${peer.getPeerAddress().getHost()}:${peer.getPeerAddress().getPort()}`}
|
||||
// action={<Button size="small">View Peer</Button>}
|
||||
/>
|
||||
</Card>
|
||||
|
|
|
|||
|
|
@ -75,7 +75,7 @@ export default function PeerPage() {
|
|||
Peer name: {peer.getPeerName()}
|
||||
</p>
|
||||
<p>
|
||||
Address: {peer.getHost()}:{peer.getPort()}
|
||||
Address: {peer.getPeerAddress().getHost()}:{peer.getPeerAddress().getPort()}
|
||||
</p>
|
||||
{PeerSettingsForm()}
|
||||
{DeletePeerButton()}
|
||||
|
|
|
|||
|
|
@ -117,6 +117,7 @@ import {
|
|||
DownloadRepliesRequest,
|
||||
DownloadRepliesReply,
|
||||
SubscribeConnectedPeersRequest,
|
||||
PeerAddress,
|
||||
} from "../proto/squeak_admin_pb"
|
||||
|
||||
import { SqueakAdminClient } from "../proto/squeak_admin_grpc_web_pb"
|
||||
|
|
@ -676,15 +677,11 @@ export function importSigningProfileRequest(profileName, privateKey, handleRespo
|
|||
|
||||
export function createPeerRequest(peerName, host, port, handleResponse) {
|
||||
var request = new CreatePeerRequest();
|
||||
var peerAddress = new PeerAddress();
|
||||
peerAddress.setHost(host);
|
||||
peerAddress.setPort(port);
|
||||
request.setPeerName(peerName);
|
||||
request.setHost(host);
|
||||
request.setPort(port);
|
||||
// makeRequest(
|
||||
// 'createpeer',
|
||||
// request,
|
||||
// CreatePeerReply.deserializeBinary,
|
||||
// handleResponse,
|
||||
// );
|
||||
request.setPeerAddress(peerAddress);
|
||||
client.createPeer(request, {}, (err, response) => {
|
||||
handleResponse(response);
|
||||
});
|
||||
|
|
@ -976,16 +973,10 @@ export function getConnectedPeersRequest(handleResponse) {
|
|||
|
||||
export function getConnectedPeerRequest(host, port, handleResponse) {
|
||||
var request = new GetConnectedPeerRequest();
|
||||
request.setHost(host);
|
||||
request.setPort(port);
|
||||
// makeRequest(
|
||||
// 'getconnectedpeer',
|
||||
// request,
|
||||
// GetConnectedPeerReply.deserializeBinary,
|
||||
// (response) => {
|
||||
// handleResponse(response.getConnectedPeer());
|
||||
// }
|
||||
// );
|
||||
var peerAddress = new PeerAddress();
|
||||
peerAddress.setHost(host);
|
||||
peerAddress.setPort(port);
|
||||
request.setPeerAddress(peerAddress);
|
||||
client.getConnectedPeer(request, {}, (err, response) => {
|
||||
handleResponse(response.getConnectedPeer());
|
||||
});
|
||||
|
|
@ -993,14 +984,10 @@ export function getConnectedPeerRequest(host, port, handleResponse) {
|
|||
|
||||
export function connectSqueakPeerRequest(host, port, handleResponse) {
|
||||
var request = new ConnectSqueakPeerRequest();
|
||||
request.setHost(host);
|
||||
request.setPort(port);
|
||||
// makeRequest(
|
||||
// 'connectpeer',
|
||||
// request,
|
||||
// ConnectSqueakPeerReply.deserializeBinary,
|
||||
// handleResponse,
|
||||
// );
|
||||
var peerAddress = new PeerAddress();
|
||||
peerAddress.setHost(host);
|
||||
peerAddress.setPort(port);
|
||||
request.setPeerAddress(peerAddress);
|
||||
client.connectPeer(request, {}, (err, response) => {
|
||||
handleResponse(response);
|
||||
});
|
||||
|
|
@ -1008,14 +995,10 @@ export function connectSqueakPeerRequest(host, port, handleResponse) {
|
|||
|
||||
export function disconnectSqueakPeerRequest(host, port, handleResponse) {
|
||||
var request = new DisconnectSqueakPeerRequest();
|
||||
request.setHost(host);
|
||||
request.setPort(port);
|
||||
// makeRequest(
|
||||
// 'disconnectpeer',
|
||||
// request,
|
||||
// DisconnectSqueakPeerReply.deserializeBinary,
|
||||
// handleResponse,
|
||||
// );
|
||||
var peerAddress = new PeerAddress();
|
||||
peerAddress.setHost(host);
|
||||
peerAddress.setPort(port);
|
||||
request.setPeerAddress(peerAddress);
|
||||
client.disconnectPeer(request, {}, (err, response) => {
|
||||
handleResponse(response);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ from squeak.params import SelectParams
|
|||
from proto import squeak_admin_pb2
|
||||
from proto import squeak_admin_pb2_grpc
|
||||
from tests.util import bytes_to_base64_string
|
||||
from tests.util import create_saved_peer
|
||||
from tests.util import generate_signing_key
|
||||
from tests.util import get_address
|
||||
from tests.util import load_lightning_client
|
||||
|
|
@ -113,14 +114,12 @@ def saved_squeak_hash(admin_stub, signing_profile_id):
|
|||
@pytest.fixture
|
||||
def peer_id(admin_stub, random_name):
|
||||
# Create a new peer
|
||||
create_peer_response = admin_stub.CreatePeer(
|
||||
squeak_admin_pb2.CreatePeerRequest(
|
||||
peer_name=random_name,
|
||||
host=random_name,
|
||||
port=1234,
|
||||
)
|
||||
peer_id = create_saved_peer(
|
||||
admin_stub,
|
||||
random_name,
|
||||
random_name,
|
||||
1234,
|
||||
)
|
||||
peer_id = create_peer_response.peer_id
|
||||
yield peer_id
|
||||
# Delete the peer
|
||||
admin_stub.DeletePeer(
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ from squeak.core import CSqueak
|
|||
from proto import lnd_pb2 as ln
|
||||
from proto import squeak_admin_pb2
|
||||
from tests.util import connect_peer
|
||||
from tests.util import create_saved_peer
|
||||
from tests.util import get_connected_peer
|
||||
from tests.util import get_connected_peers
|
||||
from tests.util import get_hash
|
||||
|
|
@ -477,14 +478,12 @@ def test_delete_squeak(admin_stub, saved_squeak_hash):
|
|||
|
||||
def test_create_peer(admin_stub):
|
||||
# Add a new peer
|
||||
create_peer_response = admin_stub.CreatePeer(
|
||||
squeak_admin_pb2.CreatePeerRequest(
|
||||
peer_name="fake_peer_name",
|
||||
host="fake_host",
|
||||
port=1234,
|
||||
)
|
||||
peer_id = create_saved_peer(
|
||||
admin_stub,
|
||||
"fake_peer_name",
|
||||
"fake_host",
|
||||
1234,
|
||||
)
|
||||
peer_id = create_peer_response.peer_id
|
||||
|
||||
# Get the new peer
|
||||
get_peer_response = admin_stub.GetPeer(
|
||||
|
|
@ -492,26 +491,27 @@ def test_create_peer(admin_stub):
|
|||
peer_id=peer_id,
|
||||
)
|
||||
)
|
||||
assert get_peer_response.squeak_peer.host == "fake_host"
|
||||
assert get_peer_response.squeak_peer.port == 1234
|
||||
assert get_peer_response.squeak_peer.peer_address.host == "fake_host"
|
||||
assert get_peer_response.squeak_peer.peer_address.port == 1234
|
||||
|
||||
# Get all peers
|
||||
get_peers_response = admin_stub.GetPeers(
|
||||
squeak_admin_pb2.GetPeersRequest())
|
||||
peer_hosts = [
|
||||
squeak_peer.host for squeak_peer in get_peers_response.squeak_peers]
|
||||
squeak_peer.peer_address.host
|
||||
for squeak_peer in get_peers_response.squeak_peers
|
||||
]
|
||||
assert "fake_host" in peer_hosts
|
||||
|
||||
|
||||
def test_create_peer_empty_name(admin_stub):
|
||||
# Try to create a new signing profile with an empty name
|
||||
with pytest.raises(Exception) as excinfo:
|
||||
admin_stub.CreatePeer(
|
||||
squeak_admin_pb2.CreatePeerRequest(
|
||||
peer_name="",
|
||||
host="another_fake_host",
|
||||
port=1234,
|
||||
)
|
||||
create_saved_peer(
|
||||
admin_stub,
|
||||
"",
|
||||
"another_fake_host",
|
||||
1234,
|
||||
)
|
||||
assert "Peer name cannot be empty." in str(excinfo.value)
|
||||
|
||||
|
|
|
|||
|
|
@ -132,20 +132,20 @@ def open_channel(lightning_client, remote_pubkey, amount):
|
|||
@contextmanager
|
||||
def open_peer_connection(node_stub, peer_name, peer_host, peer_port):
|
||||
# Add the main node as a peer
|
||||
create_peer_response = node_stub.CreatePeer(
|
||||
squeak_admin_pb2.CreatePeerRequest(
|
||||
peer_name=peer_name,
|
||||
host=peer_host,
|
||||
port=peer_port,
|
||||
)
|
||||
peer_id = create_saved_peer(
|
||||
node_stub,
|
||||
peer_name,
|
||||
peer_host,
|
||||
peer_port,
|
||||
)
|
||||
peer_id = create_peer_response.peer_id
|
||||
try:
|
||||
# Connect the peer
|
||||
node_stub.ConnectPeer(
|
||||
squeak_admin_pb2.ConnectPeerRequest(
|
||||
host=peer_host,
|
||||
port=peer_port,
|
||||
peer_address=squeak_admin_pb2.PeerAddress(
|
||||
host=peer_host,
|
||||
port=peer_port,
|
||||
)
|
||||
)
|
||||
)
|
||||
yield peer_id
|
||||
|
|
@ -157,8 +157,10 @@ def open_peer_connection(node_stub, peer_name, peer_host, peer_port):
|
|||
# Disconnect the peer
|
||||
node_stub.DisconnectPeer(
|
||||
squeak_admin_pb2.DisconnectPeerRequest(
|
||||
host=peer_host,
|
||||
port=peer_port,
|
||||
peer_address=squeak_admin_pb2.PeerAddress(
|
||||
host=peer_host,
|
||||
port=peer_port,
|
||||
)
|
||||
)
|
||||
)
|
||||
# Delete the peer
|
||||
|
|
@ -179,13 +181,28 @@ def get_connected_peers(node_stub):
|
|||
def get_connected_peer(node_stub, host, port):
|
||||
get_connected_peer_response = node_stub.GetConnectedPeer(
|
||||
squeak_admin_pb2.GetConnectedPeerRequest(
|
||||
host=host,
|
||||
port=port,
|
||||
peer_address=squeak_admin_pb2.PeerAddress(
|
||||
host=host,
|
||||
port=port,
|
||||
)
|
||||
)
|
||||
)
|
||||
return get_connected_peer_response.connected_peer
|
||||
|
||||
|
||||
def create_saved_peer(node_stub, name, host, port):
|
||||
create_peer_response = node_stub.CreatePeer(
|
||||
squeak_admin_pb2.CreatePeerRequest(
|
||||
peer_name=name,
|
||||
peer_address=squeak_admin_pb2.PeerAddress(
|
||||
host=host,
|
||||
port=port,
|
||||
)
|
||||
)
|
||||
)
|
||||
return create_peer_response.peer_id
|
||||
|
||||
|
||||
@contextmanager
|
||||
def subscribe_connected_peers(node_stub):
|
||||
q = queue.Queue()
|
||||
|
|
|
|||
|
|
@ -548,11 +548,8 @@ message CreatePeerRequest {
|
|||
/// Name of the peer
|
||||
string peer_name = 1;
|
||||
|
||||
/// Host
|
||||
string host = 2;
|
||||
|
||||
/// Port
|
||||
int32 port = 3;
|
||||
/// Peer address
|
||||
PeerAddress peer_address = 2;
|
||||
}
|
||||
|
||||
message CreatePeerReply {
|
||||
|
|
@ -585,14 +582,11 @@ message SqueakPeer {
|
|||
/// The peer name
|
||||
string peer_name = 2;
|
||||
|
||||
/// Host
|
||||
string host = 3;
|
||||
|
||||
/// Port
|
||||
int32 port = 4;
|
||||
/// Peer address
|
||||
PeerAddress peer_address = 3;
|
||||
|
||||
/// Autoconnect
|
||||
bool autoconnect = 5;
|
||||
bool autoconnect = 4;
|
||||
}
|
||||
|
||||
message SetPeerAutoconnectRequest {
|
||||
|
|
@ -666,6 +660,7 @@ message OfferDisplayEntry {
|
|||
/// The seller node pubkey
|
||||
string node_pubkey = 4;
|
||||
|
||||
// TODO: replace with LightningAddress from lnd.proto
|
||||
/// The host of the seller lightning node
|
||||
string node_host = 5;
|
||||
|
||||
|
|
@ -897,11 +892,8 @@ message GetLikedSqueakDisplaysReply {
|
|||
}
|
||||
|
||||
message ConnectPeerRequest {
|
||||
/// Host
|
||||
string host = 1;
|
||||
|
||||
/// Port
|
||||
int32 port = 2;
|
||||
/// Peer address
|
||||
PeerAddress peer_address = 1;
|
||||
}
|
||||
|
||||
message ConnectPeerReply {
|
||||
|
|
@ -932,11 +924,8 @@ message GetConnectedPeersReply {
|
|||
}
|
||||
|
||||
message GetConnectedPeerRequest {
|
||||
/// Host
|
||||
string host = 1;
|
||||
|
||||
/// Port
|
||||
int32 port = 2;
|
||||
/// Peer address
|
||||
PeerAddress peer_address = 1;
|
||||
}
|
||||
|
||||
message GetConnectedPeerReply {
|
||||
|
|
@ -944,11 +933,8 @@ message GetConnectedPeerReply {
|
|||
}
|
||||
|
||||
message DisconnectPeerRequest {
|
||||
/// Host
|
||||
string host = 1;
|
||||
|
||||
/// Port
|
||||
int32 port = 2;
|
||||
/// Peer address
|
||||
PeerAddress peer_address = 1;
|
||||
}
|
||||
|
||||
message DisconnectPeerReply {
|
||||
|
|
|
|||
|
|
@ -78,8 +78,7 @@ def squeak_peer_to_message(squeak_peer: SqueakPeer) -> squeak_admin_pb2.SqueakPe
|
|||
return squeak_admin_pb2.SqueakPeer(
|
||||
peer_id=squeak_peer.peer_id,
|
||||
peer_name=squeak_peer.peer_name,
|
||||
host=squeak_peer.address.host,
|
||||
port=squeak_peer.address.port,
|
||||
peer_address=peer_address_to_message(squeak_peer.address),
|
||||
autoconnect=squeak_peer.autoconnect,
|
||||
)
|
||||
|
||||
|
|
@ -179,3 +178,10 @@ def peer_address_to_message(peer_address: PeerAddress) -> squeak_admin_pb2.PeerA
|
|||
host=peer_address.host,
|
||||
port=peer_address.port,
|
||||
)
|
||||
|
||||
|
||||
def message_to_peer_address(peer_address: squeak_admin_pb2.PeerAddress) -> PeerAddress:
|
||||
return PeerAddress(
|
||||
host=peer_address.host,
|
||||
port=peer_address.port,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@ import sys
|
|||
|
||||
from proto import squeak_admin_pb2
|
||||
from squeaknode.admin.messages import connected_peer_to_message
|
||||
from squeaknode.admin.messages import message_to_peer_address
|
||||
from squeaknode.admin.messages import offer_entry_to_message
|
||||
from squeaknode.admin.messages import payment_summary_to_message
|
||||
from squeaknode.admin.messages import received_payments_to_message
|
||||
|
|
@ -385,19 +386,16 @@ class SqueakAdminServerHandler(object):
|
|||
|
||||
def handle_create_peer(self, request):
|
||||
peer_name = request.peer_name
|
||||
host = request.host
|
||||
port = request.port
|
||||
peer_address = message_to_peer_address(request.peer_address)
|
||||
logger.info(
|
||||
"Handle create peer with name: {}, host: {}, port: {}".format(
|
||||
"Handle create peer with name: {}, address: {}".format(
|
||||
peer_name,
|
||||
host,
|
||||
port,
|
||||
peer_address,
|
||||
)
|
||||
)
|
||||
peer_id = self.squeak_controller.create_peer(
|
||||
peer_name,
|
||||
host,
|
||||
port,
|
||||
peer_address,
|
||||
)
|
||||
return squeak_admin_pb2.CreatePeerReply(
|
||||
peer_id=peer_id,
|
||||
|
|
@ -666,11 +664,10 @@ class SqueakAdminServerHandler(object):
|
|||
)
|
||||
|
||||
def handle_connect_peer(self, request):
|
||||
host = request.host
|
||||
port = request.port
|
||||
peer_address = message_to_peer_address(request.peer_address)
|
||||
logger.info(
|
||||
"Handle connect peer with host: {}, port: {}".format(host, port))
|
||||
self.squeak_controller.connect_peer(host, port)
|
||||
"Handle connect peer with peer address: {}".format(peer_address))
|
||||
self.squeak_controller.connect_peer(peer_address)
|
||||
return squeak_admin_pb2.ConnectPeerReply()
|
||||
|
||||
def handle_get_connected_peers(self, request):
|
||||
|
|
@ -687,12 +684,12 @@ class SqueakAdminServerHandler(object):
|
|||
)
|
||||
|
||||
def handle_get_connected_peer(self, request):
|
||||
host = request.host
|
||||
port = request.port
|
||||
logger.info("Handle get connected peer host: {}, port: {}".format(
|
||||
host, port
|
||||
peer_address = message_to_peer_address(request.peer_address)
|
||||
logger.info("Handle get connected peer for address: {}".format(
|
||||
peer_address,
|
||||
))
|
||||
connected_peer = self.squeak_controller.get_connected_peer(host, port)
|
||||
connected_peer = self.squeak_controller.get_connected_peer(
|
||||
peer_address)
|
||||
logger.info("Connected peer: {}".format(
|
||||
connected_peer,
|
||||
))
|
||||
|
|
@ -706,11 +703,10 @@ class SqueakAdminServerHandler(object):
|
|||
)
|
||||
|
||||
def handle_disconnect_peer(self, request):
|
||||
host = request.host
|
||||
port = request.port
|
||||
peer_address = message_to_peer_address(request.peer_address)
|
||||
logger.info(
|
||||
"Handle connect peer with host: {}, port: {}".format(host, port))
|
||||
self.squeak_controller.disconnect_peer(host, port)
|
||||
"Handle connect peer with peer address: {}".format(peer_address))
|
||||
self.squeak_controller.disconnect_peer(peer_address)
|
||||
return squeak_admin_pb2.DisconnectPeerReply()
|
||||
|
||||
def handle_subscribe_connected_peers(self, request, stopped):
|
||||
|
|
|
|||
|
|
@ -1,14 +1,14 @@
|
|||
{
|
||||
"files": {
|
||||
"main.js": "/static/js/main.dd078910.chunk.js",
|
||||
"main.js.map": "/static/js/main.dd078910.chunk.js.map",
|
||||
"main.js": "/static/js/main.a66175b6.chunk.js",
|
||||
"main.js.map": "/static/js/main.a66175b6.chunk.js.map",
|
||||
"runtime-main.js": "/static/js/runtime-main.9f0ba400.js",
|
||||
"runtime-main.js.map": "/static/js/runtime-main.9f0ba400.js.map",
|
||||
"static/css/2.ea4ba2f0.chunk.css": "/static/css/2.ea4ba2f0.chunk.css",
|
||||
"static/js/2.ec475cb5.chunk.js": "/static/js/2.ec475cb5.chunk.js",
|
||||
"static/js/2.ec475cb5.chunk.js.map": "/static/js/2.ec475cb5.chunk.js.map",
|
||||
"index.html": "/index.html",
|
||||
"precache-manifest.a14377ec9407125fe4225bde0608031b.js": "/precache-manifest.a14377ec9407125fe4225bde0608031b.js",
|
||||
"precache-manifest.db471457a58ceabe0d2bb86037634907.js": "/precache-manifest.db471457a58ceabe0d2bb86037634907.js",
|
||||
"service-worker.js": "/service-worker.js",
|
||||
"static/css/2.ea4ba2f0.chunk.css.map": "/static/css/2.ea4ba2f0.chunk.css.map",
|
||||
"static/js/2.ec475cb5.chunk.js.LICENSE.txt": "/static/js/2.ec475cb5.chunk.js.LICENSE.txt",
|
||||
|
|
@ -20,6 +20,6 @@
|
|||
"static/js/runtime-main.9f0ba400.js",
|
||||
"static/css/2.ea4ba2f0.chunk.css",
|
||||
"static/js/2.ec475cb5.chunk.js",
|
||||
"static/js/main.dd078910.chunk.js"
|
||||
"static/js/main.a66175b6.chunk.js"
|
||||
]
|
||||
}
|
||||
|
|
@ -1 +1 @@
|
|||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="/manifest.json"/><title>Squeak Node</title><meta name="description" content="Squeak Node is a frontend for accessing a squeak node"><meta name="keywords" content="squeak, bitcoin, lightning"><meta name="author" content="Flatlogic LLC."><link href="/static/css/2.ea4ba2f0.chunk.css" rel="stylesheet"></head><body style="font-family:Roboto,sans-serif"><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,f,l=r[0],a=r[1],i=r[2],c=0,s=[];c<l.length;c++)f=l[c],Object.prototype.hasOwnProperty.call(o,f)&&o[f]&&s.push(o[f][0]),o[f]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,i||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,l=1;l<t.length;l++){var a=t[l];0!==o[a]&&(n=!1)}n&&(u.splice(r--,1),e=f(f.s=t[0]))}return e}var n={},o={1:0},u=[];function f(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,f),t.l=!0,t.exports}f.m=e,f.c=n,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,r){if(1&r&&(e=f(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)f.d(t,n,function(r){return e[r]}.bind(null,n));return t},f.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(r,"a",r),r},f.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},f.p="/";var l=this["webpackJsonpsqueak-node-frontend"]=this["webpackJsonpsqueak-node-frontend"]||[],a=l.push.bind(l);l.push=r,l=l.slice();for(var i=0;i<l.length;i++)r(l[i]);var p=a;t()}([])</script><script src="/static/js/2.ec475cb5.chunk.js"></script><script src="/static/js/main.dd078910.chunk.js"></script></body></html>
|
||||
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="shortcut icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no"/><meta name="theme-color" content="#000000"/><link rel="manifest" href="/manifest.json"/><title>Squeak Node</title><meta name="description" content="Squeak Node is a frontend for accessing a squeak node"><meta name="keywords" content="squeak, bitcoin, lightning"><meta name="author" content="Flatlogic LLC."><link href="/static/css/2.ea4ba2f0.chunk.css" rel="stylesheet"></head><body style="font-family:Roboto,sans-serif"><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>!function(e){function r(r){for(var n,f,l=r[0],a=r[1],i=r[2],c=0,s=[];c<l.length;c++)f=l[c],Object.prototype.hasOwnProperty.call(o,f)&&o[f]&&s.push(o[f][0]),o[f]=0;for(n in a)Object.prototype.hasOwnProperty.call(a,n)&&(e[n]=a[n]);for(p&&p(r);s.length;)s.shift()();return u.push.apply(u,i||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,l=1;l<t.length;l++){var a=t[l];0!==o[a]&&(n=!1)}n&&(u.splice(r--,1),e=f(f.s=t[0]))}return e}var n={},o={1:0},u=[];function f(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,f),t.l=!0,t.exports}f.m=e,f.c=n,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,r){if(1&r&&(e=f(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)f.d(t,n,function(r){return e[r]}.bind(null,n));return t},f.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(r,"a",r),r},f.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},f.p="/";var l=this["webpackJsonpsqueak-node-frontend"]=this["webpackJsonpsqueak-node-frontend"]||[],a=l.push.bind(l);l.push=r,l=l.slice();for(var i=0;i<l.length;i++)r(l[i]);var p=a;t()}([])</script><script src="/static/js/2.ec475cb5.chunk.js"></script><script src="/static/js/main.a66175b6.chunk.js"></script></body></html>
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
self.__precacheManifest = (self.__precacheManifest || []).concat([
|
||||
{
|
||||
"revision": "6c5cdfcab1c01b37639fdea4d28f88c9",
|
||||
"revision": "435e086eedd6c0b852dbb8c637e6d6ac",
|
||||
"url": "/index.html"
|
||||
},
|
||||
{
|
||||
|
|
@ -16,8 +16,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([
|
|||
"url": "/static/js/2.ec475cb5.chunk.js.LICENSE.txt"
|
||||
},
|
||||
{
|
||||
"revision": "c3ddd076bf622825d31c",
|
||||
"url": "/static/js/main.dd078910.chunk.js"
|
||||
"revision": "d6aa29a315dca0b5c494",
|
||||
"url": "/static/js/main.a66175b6.chunk.js"
|
||||
},
|
||||
{
|
||||
"revision": "cc9816de5a8639d377ea",
|
||||
|
|
@ -14,7 +14,7 @@
|
|||
importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js");
|
||||
|
||||
importScripts(
|
||||
"/precache-manifest.a14377ec9407125fe4225bde0608031b.js"
|
||||
"/precache-manifest.db471457a58ceabe0d2bb86037634907.js"
|
||||
);
|
||||
|
||||
self.addEventListener('message', (event) => {
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -49,19 +49,20 @@ class NetworkManager(object):
|
|||
self.peer_server.stop()
|
||||
self.connection_manager.stop_all_connections()
|
||||
|
||||
def connect_peer(self, host: str, port: int) -> None:
|
||||
port = port or squeak.params.params.DEFAULT_PORT
|
||||
peer_address = PeerAddress(host=host, port=port)
|
||||
def connect_peer(self, peer_address: PeerAddress) -> None:
|
||||
port = peer_address.port or squeak.params.params.DEFAULT_PORT
|
||||
peer_address = PeerAddress(
|
||||
host=peer_address.host,
|
||||
port=port,
|
||||
)
|
||||
# TODO: check if address is already connected.
|
||||
self.peer_client.connect_address(peer_address)
|
||||
|
||||
def disconnect_peer(self, host: str, port: int) -> None:
|
||||
peer_address = PeerAddress(host=host, port=port)
|
||||
def disconnect_peer(self, peer_address: PeerAddress) -> None:
|
||||
self.connection_manager.stop_connection(peer_address)
|
||||
|
||||
def get_connected_peer(self, host, port):
|
||||
address = (host, port)
|
||||
return self.connection_manager.get_peer(address)
|
||||
def get_connected_peer(self, peer_address: PeerAddress):
|
||||
return self.connection_manager.get_peer(peer_address)
|
||||
|
||||
def get_connected_peers(self):
|
||||
return self.connection_manager.peers
|
||||
|
|
|
|||
|
|
@ -17,11 +17,10 @@ class PeerClient(object):
|
|||
self.peer_handler = peer_handler
|
||||
|
||||
def make_connection(self, address):
|
||||
logger.debug('Making connection to {}'.format(address))
|
||||
logger.info('Making connection to {}'.format(address))
|
||||
try:
|
||||
peer_socket = socket.socket()
|
||||
logger.info('Got socket to {}'.format(address))
|
||||
logger.info('Trying to connect socket to {}'.format(address))
|
||||
peer_socket.settimeout(SOCKET_CONNECT_TIMEOUT)
|
||||
peer_socket.connect(address)
|
||||
peer_socket.setblocking(True)
|
||||
|
|
@ -32,7 +31,6 @@ class PeerClient(object):
|
|||
|
||||
def connect_address(self, address):
|
||||
"""Connect to new address."""
|
||||
logger.debug('Connecting to peer with address {}'.format(address))
|
||||
logger.info('Connecting to peer with address {}'.format(address))
|
||||
threading.Thread(
|
||||
target=self.make_connection,
|
||||
|
|
|
|||
|
|
@ -232,14 +232,14 @@ class SqueakController:
|
|||
logger.info("Deleted number of offers : {}".format(num_deleted_offers))
|
||||
self.squeak_db.delete_squeak(squeak_hash)
|
||||
|
||||
def create_peer(self, peer_name: str, host: str, port: int):
|
||||
def create_peer(self, peer_name: str, peer_address: PeerAddress):
|
||||
if len(peer_name) == 0:
|
||||
raise Exception(
|
||||
"Peer name cannot be empty.",
|
||||
)
|
||||
port = port or squeak.params.params.DEFAULT_PORT
|
||||
port = peer_address.port or squeak.params.params.DEFAULT_PORT
|
||||
peer_address = PeerAddress(
|
||||
host=host,
|
||||
host=peer_address.host,
|
||||
port=port,
|
||||
)
|
||||
squeak_peer = SqueakPeer(
|
||||
|
|
@ -459,19 +459,17 @@ class SqueakController:
|
|||
squeak_hash,
|
||||
)
|
||||
|
||||
def connect_peer(self, host: str, port: int) -> None:
|
||||
logger.info("Connect to peer: {}:{}".format(
|
||||
host,
|
||||
port,
|
||||
def connect_peer(self, peer_address: PeerAddress) -> None:
|
||||
logger.info("Connect to peer: {}".format(
|
||||
peer_address,
|
||||
))
|
||||
self.network_manager.connect_peer(host, port)
|
||||
self.network_manager.connect_peer(peer_address)
|
||||
|
||||
def connect_saved_peers(self) -> None:
|
||||
peers = self.get_autoconnect_peers()
|
||||
for peer in peers:
|
||||
self.network_manager.connect_peer(
|
||||
peer.address.host,
|
||||
peer.address.port,
|
||||
peer.address,
|
||||
)
|
||||
|
||||
def get_address(self):
|
||||
|
|
@ -480,8 +478,8 @@ class SqueakController:
|
|||
def get_remote_address(self, address):
|
||||
return self.network_manager.get_remote_address(address)
|
||||
|
||||
def get_connected_peer(self, host, port):
|
||||
return self.network_manager.get_connected_peer(host, port)
|
||||
def get_connected_peer(self, peer_address: PeerAddress):
|
||||
return self.network_manager.get_connected_peer(peer_address)
|
||||
|
||||
def get_connected_peers(self):
|
||||
return self.network_manager.get_connected_peers()
|
||||
|
|
@ -606,12 +604,11 @@ class SqueakController:
|
|||
def broadcast_msg(self, msg: MsgSerializable) -> None:
|
||||
self.network_manager.broadcast_msg(msg)
|
||||
|
||||
def disconnect_peer(self, host: str, port: int) -> None:
|
||||
logger.info("Disconnect to peer: {}:{}".format(
|
||||
host,
|
||||
port,
|
||||
def disconnect_peer(self, peer_address: PeerAddress) -> None:
|
||||
logger.info("Disconnect to peer: {}".format(
|
||||
peer_address,
|
||||
))
|
||||
self.network_manager.disconnect_peer(host, port)
|
||||
self.network_manager.disconnect_peer(peer_address)
|
||||
|
||||
def subscribe_connected_peers(self, stopped: threading.Event):
|
||||
# with ReceivedPaymentsSubscriptionClient(
|
||||
|
|
|
|||
|
|
@ -51,6 +51,16 @@ def lightning_host_port():
|
|||
return LightningAddressHostPort(host="my_lightning_host", port=8765)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def peer_address():
|
||||
return PeerAddress(host="fake_host", port=5678)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def peer_address_with_zero():
|
||||
return PeerAddress(host="fake_host", port=0)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def price_msat():
|
||||
return 777
|
||||
|
|
@ -129,31 +139,26 @@ def test_get_network_regtest(regtest_squeak_controller):
|
|||
# assert squeak_controller.get_network() == "regtest"
|
||||
|
||||
|
||||
def test_create_peer(squeak_db, squeak_controller):
|
||||
def test_create_peer(squeak_db, squeak_controller, peer_address):
|
||||
squeak_controller.create_peer(
|
||||
"fake_peer_name",
|
||||
"fake_host",
|
||||
5678,
|
||||
peer_address,
|
||||
)
|
||||
|
||||
squeak_db.insert_peer.assert_called_with(
|
||||
SqueakPeer(
|
||||
peer_id=None,
|
||||
peer_name="fake_peer_name",
|
||||
address=PeerAddress(
|
||||
host="fake_host",
|
||||
port=5678,
|
||||
),
|
||||
address=peer_address,
|
||||
autoconnect=False,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def test_create_peer_default_port(config, squeak_db, squeak_controller):
|
||||
def test_create_peer_default_port(config, squeak_db, squeak_controller, peer_address_with_zero):
|
||||
squeak_controller.create_peer(
|
||||
"fake_peer_name",
|
||||
"fake_host",
|
||||
0,
|
||||
peer_address_with_zero,
|
||||
)
|
||||
|
||||
squeak_db.insert_peer.assert_called_with(
|
||||
|
|
@ -161,7 +166,7 @@ def test_create_peer_default_port(config, squeak_db, squeak_controller):
|
|||
peer_id=None,
|
||||
peer_name="fake_peer_name",
|
||||
address=PeerAddress(
|
||||
host="fake_host",
|
||||
host=peer_address_with_zero.host,
|
||||
port=squeak.params.params.DEFAULT_PORT,
|
||||
),
|
||||
autoconnect=False,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue