From 14a15b64442b964298e0ae1de8c474a694cf1498 Mon Sep 17 00:00:00 2001 From: duriancrepe Date: Thu, 10 Mar 2022 22:22:01 -0800 Subject: [PATCH] monero node api signature changes, still need to change logic --- src/HavenoDaemon.test.ts | 17 ++++++++--------- src/HavenoDaemon.ts | 34 +++++++++++++++++++++++----------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/src/HavenoDaemon.test.ts b/src/HavenoDaemon.test.ts index 3c726d84..e5723259 100644 --- a/src/HavenoDaemon.test.ts +++ b/src/HavenoDaemon.test.ts @@ -5,7 +5,7 @@ import {HavenoDaemon} from "./HavenoDaemon"; import {HavenoUtils} from "./utils/HavenoUtils"; import * as grpcWeb from 'grpc-web'; import {MarketPriceInfo, NotificationMessage, OfferInfo, TradeInfo, UrlConnection, XmrBalanceInfo} from './protobuf/grpc_pb'; // TODO (woodser): better names; haveno_grpc_pb, haveno_pb -import {Attachment, DisputeResult, PaymentMethod, PaymentAccount} from './protobuf/pb_pb'; +import {Attachment, DisputeResult, PaymentMethod, PaymentAccount, MoneroNodeSettings} from './protobuf/pb_pb'; import {XmrDestination, XmrTx, XmrIncomingTransfer, XmrOutgoingTransfer} from './protobuf/grpc_pb'; import AuthenticationStatus = UrlConnection.AuthenticationStatus; import OnlineStatus = UrlConnection.OnlineStatus; @@ -470,7 +470,7 @@ test("Can start and stop local Monero node", async() => { let err: any; try { // ensure stopped local Monero node - let isMoneroNodeStarted = await alice.isMoneroNodeStarted(); + let isMoneroNodeStarted = await alice.isMoneroNodeRunning(); if (isMoneroNodeStarted) { await alice.stopMoneroNode(); } @@ -481,15 +481,14 @@ test("Can start and stop local Monero node", async() => { assert(await alice.isConnectedToMonero()); testConnection(connection!, monerodUrl1, OnlineStatus.ONLINE, AuthenticationStatus.AUTHENTICATED, 1); - let username = "testuser"; - let password = "testpw123"; + let settings = new MoneroNodeSettings(); // check node start errors are handled srv = net.createServer(); await listenPort(srv, 58081); try { console.log("Starting node with error"); - await alice.startMoneroNode(username, password); + await alice.startMoneroNode(settings); throw new Error('should have thrown'); } catch (err) { if (!err.message.startsWith("Failed to start monerod:")) throw new Error("Unexpected error: " + err.message); @@ -498,17 +497,17 @@ test("Can start and stop local Monero node", async() => { // check successful node start console.log("Starting node with success"); - await alice.startMoneroNode(username, password); + await alice.startMoneroNode(settings); // expect already running error try { - await alice.startMoneroNode(username, password); + await alice.startMoneroNode(settings); throw new Error('should have thrown'); } catch (err) { if (err.message !== "Monero node already running") throw new Error("Unexpected error: " + err.message); } - isMoneroNodeStarted = await alice.isMoneroNodeStarted(); + isMoneroNodeStarted = await alice.isMoneroNodeRunning(); assert(isMoneroNodeStarted); // no longer using connection @@ -520,7 +519,7 @@ test("Can start and stop local Monero node", async() => { assert(balance); await alice.stopMoneroNode(); - isMoneroNodeStarted = await alice.isMoneroNodeStarted(); + isMoneroNodeStarted = await alice.isMoneroNodeRunning(); assert(!isMoneroNodeStarted); // check restored connection diff --git a/src/HavenoDaemon.ts b/src/HavenoDaemon.ts index 9ffd55a5..168c7e88 100644 --- a/src/HavenoDaemon.ts +++ b/src/HavenoDaemon.ts @@ -2,8 +2,8 @@ import {HavenoUtils} from "./utils/HavenoUtils"; import {TaskLooper} from "./utils/TaskLooper"; import * as grpcWeb from 'grpc-web'; import {GetVersionClient, AccountClient, MoneroConnectionsClient, DisputesClient, DisputeAgentsClient, NotificationsClient, WalletsClient, PriceClient, OffersClient, PaymentAccountsClient, TradesClient, ShutdownServerClient, MoneroNodeClient} from './protobuf/GrpcServiceClientPb'; -import {GetVersionRequest, GetVersionReply, IsAppInitializedRequest, IsAppInitializedReply, RegisterDisputeAgentRequest, MarketPriceRequest, MarketPriceReply, MarketPricesRequest, MarketPricesReply, MarketPriceInfo, MarketDepthRequest, MarketDepthReply, MarketDepthInfo, GetBalancesRequest, GetBalancesReply, XmrBalanceInfo, GetMyOfferRequest, GetMyOfferReply, GetOffersRequest, GetOffersReply, OfferInfo, GetPaymentMethodsRequest, GetPaymentMethodsReply, GetPaymentAccountFormRequest, CreatePaymentAccountRequest, CreatePaymentAccountReply, GetPaymentAccountFormReply, GetPaymentAccountsRequest, GetPaymentAccountsReply, CreateCryptoCurrencyPaymentAccountRequest, CreateCryptoCurrencyPaymentAccountReply, CreateOfferRequest, CreateOfferReply, CancelOfferRequest, TakeOfferRequest, TakeOfferReply, TradeInfo, GetTradeRequest, GetTradeReply, GetTradesRequest, GetTradesReply, GetNewDepositSubaddressRequest, GetNewDepositSubaddressReply, ConfirmPaymentStartedRequest, ConfirmPaymentReceivedRequest, XmrTx, GetXmrTxsRequest, GetXmrTxsReply, XmrDestination, CreateXmrTxRequest, CreateXmrTxReply, RelayXmrTxRequest, RelayXmrTxReply, CreateAccountRequest, AccountExistsRequest, AccountExistsReply, DeleteAccountRequest, OpenAccountRequest, IsAccountOpenRequest, IsAccountOpenReply, CloseAccountRequest, ChangePasswordRequest, BackupAccountRequest, BackupAccountReply, RestoreAccountRequest, StopRequest, NotificationMessage, RegisterNotificationListenerRequest, SendNotificationRequest, UrlConnection, AddConnectionRequest, RemoveConnectionRequest, GetConnectionRequest, GetConnectionsRequest, SetConnectionRequest, CheckConnectionRequest, CheckConnectionsReply, CheckConnectionsRequest, StartCheckingConnectionsRequest, StopCheckingConnectionsRequest, GetBestAvailableConnectionRequest, SetAutoSwitchRequest, CheckConnectionReply, GetConnectionsReply, GetConnectionReply, GetBestAvailableConnectionReply, GetDisputeRequest, GetDisputeReply, GetDisputesRequest, GetDisputesReply, OpenDisputeRequest, ResolveDisputeRequest, SendDisputeChatMessageRequest, SendChatMessageRequest, GetChatMessagesRequest, GetChatMessagesReply, StartMoneroNodeRequest, StopMoneroNodeRequest} from './protobuf/grpc_pb'; -import {PaymentMethod, PaymentAccount, AvailabilityResult, Attachment, DisputeResult, Dispute, ChatMessage} from './protobuf/pb_pb'; +import {GetVersionRequest, GetVersionReply, IsAppInitializedRequest, IsAppInitializedReply, RegisterDisputeAgentRequest, MarketPriceRequest, MarketPriceReply, MarketPricesRequest, MarketPricesReply, MarketPriceInfo, MarketDepthRequest, MarketDepthReply, MarketDepthInfo, GetBalancesRequest, GetBalancesReply, XmrBalanceInfo, GetMyOfferRequest, GetMyOfferReply, GetOffersRequest, GetOffersReply, OfferInfo, GetPaymentMethodsRequest, GetPaymentMethodsReply, GetPaymentAccountFormRequest, CreatePaymentAccountRequest, CreatePaymentAccountReply, GetPaymentAccountFormReply, GetPaymentAccountsRequest, GetPaymentAccountsReply, CreateCryptoCurrencyPaymentAccountRequest, CreateCryptoCurrencyPaymentAccountReply, CreateOfferRequest, CreateOfferReply, CancelOfferRequest, TakeOfferRequest, TakeOfferReply, TradeInfo, GetTradeRequest, GetTradeReply, GetTradesRequest, GetTradesReply, GetNewDepositSubaddressRequest, GetNewDepositSubaddressReply, ConfirmPaymentStartedRequest, ConfirmPaymentReceivedRequest, XmrTx, GetXmrTxsRequest, GetXmrTxsReply, XmrDestination, CreateXmrTxRequest, CreateXmrTxReply, RelayXmrTxRequest, RelayXmrTxReply, CreateAccountRequest, AccountExistsRequest, AccountExistsReply, DeleteAccountRequest, OpenAccountRequest, IsAccountOpenRequest, IsAccountOpenReply, CloseAccountRequest, ChangePasswordRequest, BackupAccountRequest, BackupAccountReply, RestoreAccountRequest, StopRequest, NotificationMessage, RegisterNotificationListenerRequest, SendNotificationRequest, UrlConnection, AddConnectionRequest, RemoveConnectionRequest, GetConnectionRequest, GetConnectionsRequest, SetConnectionRequest, CheckConnectionRequest, CheckConnectionsReply, CheckConnectionsRequest, StartCheckingConnectionsRequest, StopCheckingConnectionsRequest, GetBestAvailableConnectionRequest, SetAutoSwitchRequest, CheckConnectionReply, GetConnectionsReply, GetConnectionReply, GetBestAvailableConnectionReply, GetDisputeRequest, GetDisputeReply, GetDisputesRequest, GetDisputesReply, OpenDisputeRequest, ResolveDisputeRequest, SendDisputeChatMessageRequest, SendChatMessageRequest, GetChatMessagesRequest, GetChatMessagesReply, StartMoneroNodeRequest, StopMoneroNodeRequest, IsMoneroNodeRunningRequest, IsMoneroNodeRunningReply, GetMoneroNodeSettingsRequest, GetMoneroNodeSettingsReply} from './protobuf/grpc_pb'; +import {PaymentMethod, PaymentAccount, AvailabilityResult, Attachment, DisputeResult, Dispute, ChatMessage, MoneroNodeSettings} from './protobuf/pb_pb'; const console = require('console'); @@ -599,27 +599,39 @@ class HavenoDaemon { /** * Returns whether daemon is running a local monero node. */ - async isMoneroNodeStarted(): Promise { + async isMoneroNodeRunning(): Promise { let that = this; return new Promise(function(resolve, reject) { - that._moneroNodeClient.isMoneroNodeStarted(new StartMoneroNodeRequest(), {password: that._password}, function(err: grpcWeb.RpcError, reply: IsMoneroNodeStartedReply) { + that._moneroNodeClient.isMoneroNodeRunning(new IsMoneroNodeRunningRequest(), {password: that._password}, function(err: grpcWeb.RpcError, response: IsMoneroNodeRunningReply) { if (err) reject(err); - else resolve(reply.getIsRunning()); + else resolve(response.getIsRunning()); + }); + }); + } + + /** + * Gets the current local monero node settings. + */ + async getMoneroNodeSettings(): Promise { + let that = this; + return new Promise(function(resolve, reject) { + let request = new GetMoneroNodeSettingsRequest(); + that._moneroNodeClient.getMoneroNodeSettings(request, {password: that._password}, function(err: grpcWeb.RpcError, response: GetMoneroNodeSettingsReply) { + if (err) reject(err); + else resolve(response.getSettings()!); }); }); } /** * Starts the local monero node. - * @param {string} rcpUsername - rpc username - * @param {string} rcpPassword - rpc password + * + * @param {MoneroNodeSettings} settings - the settings to start the local node with */ - async startMoneroNode(rcpUsername: string, rcpPassword: string): Promise { + async startMoneroNode(settings: MoneroNodeSettings): Promise { let that = this; return new Promise(function(resolve, reject) { - let request = new StartMoneroNodeRequest() - .setRpcUsername(rcpUsername) - .setRpcPassword(rcpPassword); + let request = new StartMoneroNodeRequest().setSettings(settings); that._moneroNodeClient.startMoneroNode(request, {password: that._password}, function(err: grpcWeb.RpcError) { if (err) reject(err); else resolve();