mirror of
https://github.com/yzernik/squeaknode.git
synced 2026-08-13 12:33:25 +02:00
Add rpc to get default peer port (#1556)
* Added get default peer port rpc command * Use default port in connect peer dialog * Got default port working on create peer dialog * Got default port working in both connect peer and create peer. * Remove default peer usage in create peer backend * Remove default peer handling for connect peer in backend * Reset port back to empty when use custom is checked or unchecked.
This commit is contained in:
parent
25c8669991
commit
9f6307cbb3
14 changed files with 114 additions and 89 deletions
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState } from 'react';
|
||||
import React, { useState, useMemo } from 'react';
|
||||
import {
|
||||
Button,
|
||||
Dialog,
|
||||
|
|
@ -12,13 +12,13 @@ import {
|
|||
} from '@material-ui/core';
|
||||
|
||||
import {
|
||||
getDefaultPeerPortRequest,
|
||||
connectSqueakPeerRequest,
|
||||
} from '../../squeakclient/requests';
|
||||
|
||||
// styles
|
||||
import useStyles from './styles';
|
||||
|
||||
const portDefaultValue = '0';
|
||||
|
||||
export default function ConnectPeerDialog({
|
||||
open,
|
||||
|
|
@ -28,28 +28,40 @@ export default function ConnectPeerDialog({
|
|||
}) {
|
||||
const classes = useStyles();
|
||||
|
||||
const [defaultPeerPort, setDefaultPeerPort] = useState(null);
|
||||
const [peerName, setPeerName] = useState('');
|
||||
const [host, setHost] = useState('');
|
||||
const [port, setPort] = useState('');
|
||||
const [customPortChecked, setCustomPortChecked] = useState(false);
|
||||
const [useTorChecked, setUseTorChecked] = useState(false);
|
||||
const [loading, setLoading] = useState(false);
|
||||
const portToUse = useMemo(() => customPortChecked ? port : defaultPeerPort, [customPortChecked, port, defaultPeerPort]);
|
||||
|
||||
const getDefaultPeerPort = () => {
|
||||
getDefaultPeerPortRequest(setDefaultPeerPort);
|
||||
};
|
||||
|
||||
const resetFields = () => {
|
||||
setPeerName('');
|
||||
setHost('');
|
||||
setPort(portDefaultValue);
|
||||
setPort('');
|
||||
setCustomPortChecked(false);
|
||||
};
|
||||
|
||||
function load(event) {
|
||||
getDefaultPeerPort();
|
||||
resetFields();
|
||||
}
|
||||
|
||||
const handleChangeHost = (event) => {
|
||||
setHost(event.target.value);
|
||||
};
|
||||
|
||||
const handleChangeCustomPortChecked = (event) => {
|
||||
setPort(
|
||||
event.target.checked ? '' : portDefaultValue,
|
||||
);
|
||||
// setPort(
|
||||
// event.target.checked ? '' : defaultPeerPort,
|
||||
// );
|
||||
setPort('');
|
||||
setCustomPortChecked(event.target.checked);
|
||||
};
|
||||
|
||||
|
|
@ -62,6 +74,9 @@ export default function ConnectPeerDialog({
|
|||
};
|
||||
|
||||
const connectPeer = (peerName, host, port) => {
|
||||
// const portToUse = customPortChecked ? port : defaultPeerPort;
|
||||
// console.log('Calling connectSqueakPeerRequest with: ', host, portToUse, useTorChecked);
|
||||
// console.log('portToUse: ', portToUse);
|
||||
setLoading(true);
|
||||
connectSqueakPeerRequest(host, port, useTorChecked, (response) => {
|
||||
// goToPeerPage(history, response.getPeerId());
|
||||
|
|
@ -86,16 +101,16 @@ export default function ConnectPeerDialog({
|
|||
function handleSubmit(event) {
|
||||
event.preventDefault();
|
||||
console.log('host:', host);
|
||||
console.log('port:', port);
|
||||
console.log('portToUse:', portToUse);
|
||||
if (!host) {
|
||||
alert('Host cannot be empty.');
|
||||
return;
|
||||
}
|
||||
if (!port) {
|
||||
alert('Port cannot be empty.');
|
||||
if (!portToUse) {
|
||||
alert('portToUse cannot be empty.');
|
||||
return;
|
||||
}
|
||||
connectPeer(peerName, host, port);
|
||||
connectPeer(peerName, host, portToUse);
|
||||
// handleClose();
|
||||
}
|
||||
|
||||
|
|
@ -120,7 +135,7 @@ export default function ConnectPeerDialog({
|
|||
required={customPortChecked}
|
||||
variant="outlined"
|
||||
label="Port"
|
||||
value={customPortChecked ? port : ''}
|
||||
value={portToUse}
|
||||
onChange={handleChangePort}
|
||||
inputProps={{ maxLength: 8 }}
|
||||
disabled={!customPortChecked}
|
||||
|
|
@ -194,7 +209,7 @@ export default function ConnectPeerDialog({
|
|||
return (
|
||||
<Dialog
|
||||
open={open}
|
||||
onEnter={resetFields}
|
||||
onEnter={load}
|
||||
onClose={handleClose}
|
||||
aria-labelledby="form-dialog-title"
|
||||
maxWidth="sm"
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
import React, { useState } from 'react';
|
||||
import React, { useState, useMemo } from 'react';
|
||||
import {
|
||||
Button,
|
||||
Dialog,
|
||||
|
|
@ -15,6 +15,7 @@ import { useHistory } from 'react-router-dom';
|
|||
import { makeStyles } from '@material-ui/core/styles';
|
||||
|
||||
import {
|
||||
getDefaultPeerPortRequest,
|
||||
createPeerRequest,
|
||||
} from '../../squeakclient/requests';
|
||||
import {
|
||||
|
|
@ -41,7 +42,6 @@ const useStyles = makeStyles((theme) => ({
|
|||
},
|
||||
}));
|
||||
|
||||
const portDefaultValue = '0';
|
||||
|
||||
export default function CreatePeerDialog({
|
||||
open,
|
||||
|
|
@ -53,11 +53,17 @@ export default function CreatePeerDialog({
|
|||
const classes = useStyles();
|
||||
const history = useHistory();
|
||||
|
||||
const [defaultPeerPort, setDefaultPeerPort] = useState(null);
|
||||
const [peerName, setPeerName] = useState('');
|
||||
const [host, setHost] = useState('');
|
||||
const [port, setPort] = useState('');
|
||||
const [customPortChecked, setCustomPortChecked] = useState(false);
|
||||
const [useTorChecked, setUseTorChecked] = useState(false);
|
||||
const portToUse = useMemo(() => customPortChecked ? port : defaultPeerPort, [customPortChecked, port, defaultPeerPort]);
|
||||
|
||||
const getDefaultPeerPort = () => {
|
||||
getDefaultPeerPortRequest(setDefaultPeerPort);
|
||||
};
|
||||
|
||||
const resetFields = () => {
|
||||
setPeerName('');
|
||||
|
|
@ -65,7 +71,7 @@ export default function CreatePeerDialog({
|
|||
if (initialHost) {
|
||||
setHost(initialHost);
|
||||
}
|
||||
setPort(portDefaultValue);
|
||||
setPort('');
|
||||
setCustomPortChecked(false);
|
||||
if (initialPort) {
|
||||
setPort(initialPort);
|
||||
|
|
@ -73,6 +79,11 @@ export default function CreatePeerDialog({
|
|||
}
|
||||
};
|
||||
|
||||
function load(event) {
|
||||
getDefaultPeerPort();
|
||||
resetFields();
|
||||
}
|
||||
|
||||
const handleChangePeerName = (event) => {
|
||||
setPeerName(event.target.value);
|
||||
};
|
||||
|
|
@ -82,9 +93,10 @@ export default function CreatePeerDialog({
|
|||
};
|
||||
|
||||
const handleChangeCustomPortChecked = (event) => {
|
||||
setPort(
|
||||
event.target.checked ? '' : portDefaultValue,
|
||||
);
|
||||
// setPort(
|
||||
// event.target.checked ? '' : portDefaultValue,
|
||||
// );
|
||||
setPort('');
|
||||
setCustomPortChecked(event.target.checked);
|
||||
};
|
||||
|
||||
|
|
@ -111,11 +123,11 @@ export default function CreatePeerDialog({
|
|||
alert('Host cannot be empty.');
|
||||
return;
|
||||
}
|
||||
if (!port) {
|
||||
alert('Port cannot be empty.');
|
||||
if (!portToUse) {
|
||||
alert('portToUse cannot be empty.');
|
||||
return;
|
||||
}
|
||||
createPeer(peerName, host, port);
|
||||
createPeer(peerName, host, portToUse);
|
||||
handleClose();
|
||||
}
|
||||
|
||||
|
|
@ -155,7 +167,7 @@ export default function CreatePeerDialog({
|
|||
required={customPortChecked}
|
||||
variant="outlined"
|
||||
label="Port"
|
||||
value={customPortChecked ? port : ''}
|
||||
value={portToUse}
|
||||
onChange={handleChangePort}
|
||||
inputProps={{ maxLength: 8 }}
|
||||
disabled={!customPortChecked}
|
||||
|
|
@ -226,7 +238,7 @@ export default function CreatePeerDialog({
|
|||
return (
|
||||
<Dialog
|
||||
open={open}
|
||||
onEnter={resetFields}
|
||||
onEnter={load}
|
||||
onClose={handleClose}
|
||||
aria-labelledby="form-dialog-title"
|
||||
maxWidth="sm"
|
||||
|
|
|
|||
|
|
@ -129,6 +129,8 @@ import {
|
|||
GetSearchSqueakDisplaysReply,
|
||||
GetPeerByAddressRequest,
|
||||
GetPeerByAddressReply,
|
||||
GetDefaultPeerPortRequest,
|
||||
GetDefaultPeerPortReply,
|
||||
} from '../proto/squeak_admin_pb';
|
||||
|
||||
console.log('The value of REACT_APP_DEV_MODE_ENABLED is:', Boolean(process.env.REACT_APP_DEV_MODE_ENABLED));
|
||||
|
|
@ -1165,6 +1167,18 @@ export function getExternalAddressRequest(handleResponse) {
|
|||
// });
|
||||
}
|
||||
|
||||
export function getDefaultPeerPortRequest(handleResponse) {
|
||||
const request = new GetDefaultPeerPortRequest();
|
||||
makeRequest(
|
||||
'getdefaultpeerport',
|
||||
request,
|
||||
GetDefaultPeerPortReply.deserializeBinary,
|
||||
(response) => {
|
||||
handleResponse(response.getPort());
|
||||
},
|
||||
);
|
||||
}
|
||||
|
||||
// export function subscribeConnectedPeersRequest(handleResponse) {
|
||||
// const request = new SubscribeConnectedPeersRequest();
|
||||
// const stream = client.subscribeConnectedPeers(request);
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ from tests.util import download_squeaks
|
|||
from tests.util import download_squeaks_for_address
|
||||
from tests.util import get_connected_peer
|
||||
from tests.util import get_connected_peers
|
||||
from tests.util import get_default_peer_port
|
||||
from tests.util import get_external_address
|
||||
from tests.util import get_hash
|
||||
from tests.util import get_network
|
||||
|
|
@ -75,6 +76,14 @@ def test_get_external_address(admin_stub):
|
|||
assert external_address.port > 0
|
||||
|
||||
|
||||
def test_get_default_peer_port(admin_stub):
|
||||
# Get the default peer port
|
||||
default_peer_port = get_default_peer_port(admin_stub)
|
||||
|
||||
print(default_peer_port)
|
||||
assert default_peer_port == 18777
|
||||
|
||||
|
||||
def test_reprocess_received_payments(admin_stub):
|
||||
# Reprocess received payments
|
||||
reprocess_received_payments_response = admin_stub.ReprocessReceivedPayments(
|
||||
|
|
|
|||
|
|
@ -306,6 +306,13 @@ def get_external_address(node_stub):
|
|||
return get_external_address_response.peer_address
|
||||
|
||||
|
||||
def get_default_peer_port(node_stub):
|
||||
get_default_peer_port_response = node_stub.GetDefaultPeerPort(
|
||||
squeak_admin_pb2.GetDefaultPeerPortRequest()
|
||||
)
|
||||
return get_default_peer_port_response.port
|
||||
|
||||
|
||||
def make_squeak(node_stub, profile_id, squeak_content, reply_to_hash=None):
|
||||
make_squeak_response = node_stub.MakeSqueak(
|
||||
squeak_admin_pb2.MakeSqueakRequest(
|
||||
|
|
|
|||
|
|
@ -328,6 +328,10 @@ service SqueakAdmin {
|
|||
*/
|
||||
rpc GetExternalAddress (GetExternalAddressRequest) returns (GetExternalAddressReply) {}
|
||||
|
||||
/** sqkadmin: `getdefaultpeerport`
|
||||
*/
|
||||
rpc GetDefaultPeerPort (GetDefaultPeerPortRequest) returns (GetDefaultPeerPortReply) {}
|
||||
|
||||
}
|
||||
|
||||
message CreateSigningProfileRequest {
|
||||
|
|
@ -1188,3 +1192,11 @@ message GetExternalAddressReply {
|
|||
PeerAddress peer_address = 1;
|
||||
}
|
||||
|
||||
message GetDefaultPeerPortRequest {
|
||||
}
|
||||
|
||||
message GetDefaultPeerPortReply {
|
||||
/// The port.
|
||||
int32 port = 1;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1086,3 +1086,10 @@ class SqueakAdminServerHandler(object):
|
|||
return squeak_admin_pb2.GetExternalAddressReply(
|
||||
peer_address=external_address_msg,
|
||||
)
|
||||
|
||||
def handle_get_default_peer_port(self, request):
|
||||
logger.info("Handle get default peer port")
|
||||
default_peer_port = self.squeak_controller.get_default_peer_port()
|
||||
return squeak_admin_pb2.GetDefaultPeerPortReply(
|
||||
port=default_peer_port,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -379,3 +379,6 @@ class SqueakAdminServerServicer(squeak_admin_pb2_grpc.SqueakAdminServicer):
|
|||
|
||||
def GetExternalAddress(self, request, context):
|
||||
return self.handler.handle_get_external_address(request)
|
||||
|
||||
def GetDefaultPeerPort(self, request, context):
|
||||
return self.handler.handle_get_default_peer_port(request)
|
||||
|
|
|
|||
|
|
@ -518,6 +518,12 @@ def create_app(handler, username, password):
|
|||
def getexternaladdress(msg):
|
||||
return handler.handle_get_external_address(msg)
|
||||
|
||||
@app.route("/getdefaultpeerport", methods=["POST"])
|
||||
@login_required
|
||||
@protobuf_serialized(squeak_admin_pb2.GetDefaultPeerPortRequest())
|
||||
def getdefaultpeerport(msg):
|
||||
return handler.handle_get_default_peer_port(msg)
|
||||
|
||||
return app
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -26,12 +26,8 @@ from squeaknode.core.squeak_peer import SqueakPeer
|
|||
def create_saved_peer(
|
||||
peer_name: str,
|
||||
peer_address: PeerAddress,
|
||||
default_port: int,
|
||||
) -> SqueakPeer:
|
||||
validate_saved_peer_name(peer_name)
|
||||
port = peer_address.port or default_port
|
||||
peer_address = peer_address._replace(
|
||||
port=port)
|
||||
return SqueakPeer(
|
||||
peer_id=None,
|
||||
peer_name=peer_name,
|
||||
|
|
|
|||
|
|
@ -81,17 +81,11 @@ class NetworkManager(object):
|
|||
self.connection_manager.stop_all_connections()
|
||||
|
||||
def connect_peer_sync(self, peer_address: PeerAddress) -> None:
|
||||
port = peer_address.port or squeak.params.params.DEFAULT_PORT
|
||||
peer_address = peer_address._replace(
|
||||
port=port)
|
||||
if self.connection_manager.has_connection(peer_address):
|
||||
raise Exception("Already connected to: {}".format(peer_address))
|
||||
self.peer_client.connect_address(peer_address)
|
||||
|
||||
def connect_peer_async(self, peer_address: PeerAddress) -> None:
|
||||
port = peer_address.port or squeak.params.params.DEFAULT_PORT
|
||||
peer_address = peer_address._replace(
|
||||
port=port)
|
||||
if self.connection_manager.has_connection(peer_address):
|
||||
return
|
||||
self.peer_client.connect_address_async(peer_address)
|
||||
|
|
|
|||
|
|
@ -332,7 +332,6 @@ class SqueakController:
|
|||
squeak_peer = create_saved_peer(
|
||||
peer_name,
|
||||
peer_address,
|
||||
squeak.params.params.DEFAULT_PORT,
|
||||
)
|
||||
return self.squeak_db.insert_peer(squeak_peer)
|
||||
|
||||
|
|
@ -840,3 +839,6 @@ class SqueakController:
|
|||
|
||||
def get_external_address(self) -> PeerAddress:
|
||||
return self.network_manager.external_address
|
||||
|
||||
def get_default_peer_port(self) -> int:
|
||||
return squeak.params.params.DEFAULT_PORT
|
||||
|
|
|
|||
|
|
@ -57,58 +57,27 @@ def peer_address_with_no_port():
|
|||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def default_peer_port():
|
||||
yield 55555
|
||||
|
||||
|
||||
def test_create_saved_peer(peer_name, peer_address, default_peer_port):
|
||||
def test_create_saved_peer(peer_name, peer_address):
|
||||
peer = create_saved_peer(
|
||||
peer_name,
|
||||
peer_address,
|
||||
default_peer_port,
|
||||
)
|
||||
|
||||
assert peer.peer_name == peer_name
|
||||
# assert peer.address == PeerAddress(
|
||||
# host=peer_address.host,
|
||||
# port=peer_address.port,
|
||||
# )
|
||||
assert peer.address == peer_address
|
||||
|
||||
|
||||
def test_create_saved_peer_empty_name(peer_address, default_peer_port):
|
||||
def test_create_saved_peer_empty_name(peer_address):
|
||||
with pytest.raises(Exception) as excinfo:
|
||||
create_saved_peer("", peer_address, default_peer_port)
|
||||
create_saved_peer("", peer_address)
|
||||
assert "Peer name cannot be empty." in str(excinfo.value)
|
||||
|
||||
|
||||
def test_create_saved_peer_default_port(peer_name, peer_address_with_no_port, default_peer_port):
|
||||
peer = create_saved_peer(
|
||||
peer_name,
|
||||
peer_address_with_no_port,
|
||||
default_peer_port,
|
||||
)
|
||||
|
||||
assert peer.peer_name == peer_name
|
||||
assert peer.address == PeerAddress(
|
||||
host=peer_address_with_no_port.host,
|
||||
port=default_peer_port,
|
||||
use_tor=False,
|
||||
)
|
||||
|
||||
|
||||
def test_create_saved_peer_use_tor(peer_name, peer_address_with_tor):
|
||||
peer = create_saved_peer(
|
||||
peer_name,
|
||||
peer_address_with_tor,
|
||||
default_peer_port,
|
||||
)
|
||||
|
||||
assert peer.peer_name == peer_name
|
||||
# assert peer.address == PeerAddress(
|
||||
# host=peer_address_with_tor.host,
|
||||
# port=peer_address_with_tor.port,
|
||||
# use_tor=peer_address_with_tor.use_tor,
|
||||
# )
|
||||
assert peer.address == peer_address_with_tor
|
||||
|
|
|
|||
|
|
@ -21,7 +21,6 @@
|
|||
# SOFTWARE.
|
||||
import mock
|
||||
import pytest
|
||||
import squeak.params
|
||||
|
||||
from squeaknode.config.config import SqueaknodeConfig
|
||||
from squeaknode.core.lightning_address import LightningAddressHostPort
|
||||
|
|
@ -164,23 +163,3 @@ def test_create_peer(squeak_db, squeak_controller, peer_address):
|
|||
autoconnect=False,
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
def test_create_peer_default_port(config, squeak_db, squeak_controller, peer_address_with_zero):
|
||||
squeak_controller.create_peer(
|
||||
"fake_peer_name",
|
||||
peer_address_with_zero,
|
||||
)
|
||||
|
||||
squeak_db.insert_peer.assert_called_with(
|
||||
SqueakPeer(
|
||||
peer_id=None,
|
||||
peer_name="fake_peer_name",
|
||||
address=PeerAddress(
|
||||
host=peer_address_with_zero.host,
|
||||
port=squeak.params.params.DEFAULT_PORT,
|
||||
use_tor=peer_address_with_zero.use_tor,
|
||||
),
|
||||
autoconnect=False,
|
||||
)
|
||||
)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue