Compare commits

...

17 commits

Author SHA1 Message Date
dependabot[bot]
6af6126c39
Bump decode-uri-component from 0.2.0 to 0.2.2 in /frontend (#2245)
Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2.
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-07 17:19:58 -08:00
dependabot[bot]
7fdb9d996c
Bump loader-utils from 2.0.2 to 2.0.3 in /frontend (#2242)
Bumps [loader-utils](https://github.com/webpack/loader-utils) from 2.0.2 to 2.0.3.
- [Release notes](https://github.com/webpack/loader-utils/releases)
- [Changelog](https://github.com/webpack/loader-utils/blob/v2.0.3/CHANGELOG.md)
- [Commits](https://github.com/webpack/loader-utils/compare/v2.0.2...v2.0.3)

---
updated-dependencies:
- dependency-name: loader-utils
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-11-08 13:06:50 -08:00
Jonathan Zernik
bfc746ce0d
Run dev mode with polar (#2239)
* Run in dev mode with polar

* Revert change to sleep in pay offer method
2022-08-26 14:20:25 -07:00
dependabot[bot]
90c0b93a90
Bump terser from 5.12.1 to 5.14.2 in /frontend (#2237)
Bumps [terser](https://github.com/terser/terser) from 5.12.1 to 5.14.2.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-20 19:13:55 -07:00
dependabot[bot]
0181eafe74
Bump moment from 2.29.2 to 2.29.4 in /frontend (#2235)
Bumps [moment](https://github.com/moment/moment) from 2.29.2 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.2...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-13 15:03:57 -07:00
Jonathan Zernik
7c67145f61 Release version 0.3.5 2022-07-10 19:40:51 -07:00
Jonathan Zernik
a92ad92042
Change text of tooltip for copy external address (#2234)
* Change text of tooltip for copy external address

* Update frontend build
2022-07-10 19:31:48 -07:00
Jonathan Zernik
a024057f1b Release version 0.3.4 2022-06-17 19:05:44 -07:00
Jonathan Zernik
93da9c0c97
Fix handling of p2p server port config (#2232) 2022-06-17 19:04:31 -07:00
Jonathan Zernik
e805751bdc
Fix mypy for alembic env script (#2231) 2022-06-11 13:52:19 -07:00
Jonathan Zernik
2cabb8197a
Use only named volumes in docker-compose (#2221)
* Use only named volumes in docker-compose

* Try fixing itest with new docker compose

* Update development doc
2022-06-09 17:58:18 -07:00
Jonathan Zernik
e66377a3c9 Release version 0.3.3 2022-05-25 16:15:20 -07:00
Jonathan Zernik
6ff3f3c4c9
Start settle index from zero on app startup (#2220) 2022-05-25 16:00:44 -07:00
Jonathan Zernik
aef32d9417
Remove zqm hash block config (#2219) 2022-05-24 22:06:23 -07:00
Jonathan Zernik
2d55668af0 Release version 0.3.2 2022-05-24 21:46:59 -07:00
Jonathan Zernik
afd3af091a
Use default peer port config when port not specified (#2218) 2022-05-24 21:41:56 -07:00
Jonathan Zernik
a8ebf8e9e9
Show external address as host:port string (#2216)
* Show external address in peers page as host:port string

* Add peer with host:port string

* Update frontend build
2022-05-24 17:57:33 -07:00
35 changed files with 5725 additions and 26226 deletions

View file

@ -9,7 +9,6 @@ rpc_host=localhost
rpc_port=18332 rpc_port=18332
rpc_user=devuser rpc_user=devuser
rpc_pass=devpass rpc_pass=devpass
zeromq_hashblock_port=28334
[tor] [tor]
proxy_ip=localhost proxy_ip=localhost

29
config-other.ini Normal file
View file

@ -0,0 +1,29 @@
[node]
network=testnet
sqk_dir_path=/home/yzernik/.sqk-other
[lightning]
external_host=localhost
lnd_rpc_host=localhost
lnd_rpc_port=10003
lnd_tls_cert_path=/home/yzernik/.polar/networks/1/volumes/lnd/alice/tls.cert
lnd_macaroon_path=/home/yzernik/.polar/networks/1/volumes/lnd/alice/data/chain/bitcoin/regtest/admin.macaroon
[bitcoin]
rpc_host=localhost
rpc_port=18445
rpc_user=polaruser
rpc_pass=polarpass
[tor]
proxy_ip=localhost
proxy_port=9150
[webadmin]
enabled=true
username=devuser
password=devpass
port=12995
[server]
port=18558

View file

@ -3,15 +3,16 @@ network=testnet
[lightning] [lightning]
external_host=localhost external_host=localhost
lnd_tls_cert_path=~/.lnd/tls.cert lnd_rpc_host=localhost
lnd_macaroon_path=~/.lnd/data/chain/bitcoin/testnet/admin.macaroon lnd_rpc_port=10004
lnd_tls_cert_path=/home/yzernik/.polar/networks/1/volumes/lnd/bob/tls.cert
lnd_macaroon_path=/home/yzernik/.polar/networks/1/volumes/lnd/bob/data/chain/bitcoin/regtest/admin.macaroon
[bitcoin] [bitcoin]
rpc_host=localhost rpc_host=localhost
rpc_port=18332 rpc_port=18445
rpc_user=devuser rpc_user=polaruser
rpc_pass=devpass rpc_pass=polarpass
zeromq_hashblock_port=28334
[tor] [tor]
proxy_ip=localhost proxy_ip=localhost

View file

@ -1,4 +1,4 @@
FROM golang:1.12-alpine as builder FROM golang:1.18-alpine as builder
MAINTAINER Olaoluwa Osuntokun <laolu@lightning.network> MAINTAINER Olaoluwa Osuntokun <laolu@lightning.network>

View file

@ -14,7 +14,6 @@ rpc_host=bitcoin-core
rpc_port=18332 rpc_port=18332
rpc_user=devuser rpc_user=devuser
rpc_pass=devpass rpc_pass=devpass
zeromq_hashblock_port=28334
[tor] [tor]
proxy_ip=tor-node proxy_ip=tor-node

View file

@ -12,7 +12,6 @@ rpc_host=bitcoin-core
rpc_port=18332 rpc_port=18332
rpc_user=devuser rpc_user=devuser
rpc_pass=devpass rpc_pass=devpass
zeromq_hashblock_port=28334
[tor] [tor]
proxy_ip=tor-node proxy_ip=tor-node

View file

@ -5,7 +5,7 @@ services:
image: ruimarinho/bitcoin-core:0.21.1 image: ruimarinho/bitcoin-core:0.21.1
container_name: bitcoin-core container_name: bitcoin-core
volumes: volumes:
- ~/.bitcoin:/home/bitcoin/.bitcoin - bitcoin:/home/bitcoin/.bitcoin
ports: ports:
- 8332:8332 - 8332:8332
- 18332:18332 - 18332:18332
@ -25,7 +25,7 @@ services:
depends_on: depends_on:
- "tor-node" - "tor-node"
volumes: volumes:
- ~/.lnd:/root/.lnd - lnd_client_dir:/root/.lnd
- tor-dir:/var/lib/tor - tor-dir:/var/lib/tor
ports: ports:
- 10009:10009 - 10009:10009
@ -69,7 +69,7 @@ services:
- 10010:10009 - 10010:10009
- 9835:9835 - 9835:9835
volumes: volumes:
- ~/.lightning:/root/.lightning - clightning_client_dir:/root/.lightning
- tor-dir:/var/lib/tor - tor-dir:/var/lib/tor
links: links:
- "bitcoin-core:bitcoin-core" - "bitcoin-core:bitcoin-core"
@ -151,8 +151,14 @@ services:
entrypoint: ["./entrypoint.sh"] entrypoint: ["./entrypoint.sh"]
volumes: volumes:
bitcoin:
driver: local
lnd_client_dir:
driver: local
lnd_server_dir: lnd_server_dir:
driver: local driver: local
clightning_client_dir:
driver: local
clightning_server_dir: clightning_server_dir:
driver: local driver: local
squeaknode_dir: squeaknode_dir:

View file

@ -26,7 +26,6 @@ bitcoin.rpc_user | string | | yes | "" | SQUEAKNODE_BITCOIN_RPC_USER | The usern
bitcoin.rpc_pass | string | | yes | "" | SQUEAKNODE_BITCOIN_RPC_PASS | The password to use for authentication on the bitcoin node. bitcoin.rpc_pass | string | | yes | "" | SQUEAKNODE_BITCOIN_RPC_PASS | The password to use for authentication on the bitcoin node.
bitcoin.rpc_use_ssl | boolean | [true, false] | yes | false | SQUEAKNODE_BITCOIN_USE_SSL | Use SSL for the connection to the bitcoin node. bitcoin.rpc_use_ssl | boolean | [true, false] | yes | false | SQUEAKNODE_BITCOIN_USE_SSL | Use SSL for the connection to the bitcoin node.
bitcoin.rpc_ssl_cert | str | | yes | "" | SQUEAKNODE_BITCOIN_SSL_CERT | The path to the SSL cert to use for connection to the bitcoin node, if one is used. bitcoin.rpc_ssl_cert | str | | yes | "" | SQUEAKNODE_BITCOIN_SSL_CERT | The path to the SSL cert to use for connection to the bitcoin node, if one is used.
bitcoin.zeromq_hashblock_port | int | | yes | 28334 | SQUEAKNODE_BITCOIN_ZEROMQ_HASHBLOCK_PORT | The port to use to subscribe with zeromq to new block hashes on the bitcoin node.
lightning.backend | string | | yes | "lnd" | SQUEAKNODE_LIGHTNING_BACKEND | The Lightning Network node implementation to use. lightning.backend | string | | yes | "lnd" | SQUEAKNODE_LIGHTNING_BACKEND | The Lightning Network node implementation to use.
lightning.external_host | string | | yes | "" | SQUEAKNODE_LIGHTNING_EXTERNAL_HOST | The host of the lightning node to share with other peers. lightning.external_host | string | | yes | "" | SQUEAKNODE_LIGHTNING_EXTERNAL_HOST | The host of the lightning node to share with other peers.
lightning.external_port | int | | yes | | SQUEAKNODE_LIGHTNING_EXTERNAL_PORT | The port of the lightning node to share with other peers. lightning.external_port | int | | yes | | SQUEAKNODE_LIGHTNING_EXTERNAL_PORT | The port of the lightning node to share with other peers.

View file

@ -32,9 +32,9 @@ You can also run your own squeaknode on your host machine.
pip install . pip install .
``` ```
- Make sure that `~/.lnd` directory (created by docker container) has read permissions. You may need to change the permissions: - Copy the `~/.lnd` directory from the docker container to your host machine.
``` ```
sudo chmod -R 755 ~/.lnd/ docker cp lnd_client:/root/.lnd/ ~/.lnd
``` ```
- Run squeaknode with authentication disabled: - Run squeaknode with authentication disabled:

19371
frontend/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -12,7 +12,7 @@
"google-protobuf": "^3.12.4", "google-protobuf": "^3.12.4",
"informed": "^4.6.1", "informed": "^4.6.1",
"jwt-decode": "^2.2.0", "jwt-decode": "^2.2.0",
"moment": "^2.29.2", "moment": "^2.29.4",
"react": "^16.13.1", "react": "^16.13.1",
"react-contenteditable": "^3.3.4", "react-contenteditable": "^3.3.4",
"react-copy-to-clipboard": "^5.1.0", "react-copy-to-clipboard": "^5.1.0",

View file

@ -61,17 +61,26 @@ const Peers = (props) => {
return 'IPV4'; return 'IPV4';
}; };
const getExternalAddressStr = () => {
if (externalAddress) {
return `${externalAddress.getHost()}:${externalAddress.getPort()}`;
} else {
return '';
}
};
function removeHttp(url) { function removeHttp(url) {
return url.replace(/^https?:\/\//, ''); return url.replace(/^https?:\/\//, '');
} }
const savePeer = ({values}) => { const savePeer = ({values}) => {
const network = getNetwork(values.useTor); const network = getNetwork(values.useTor);
const strippedHost = removeHttp(values.host); const strippedAddress = removeHttp(values.address);
const url = new URL(`http://${strippedAddress}`);
dispatch(setSavePeer({ dispatch(setSavePeer({
name: values.name, name: values.name,
host: strippedHost, host: url.hostname,
port: values.port, port: url.port,
network: network, network: network,
})); }));
toggleSavePeerModal(); toggleSavePeerModal();
@ -92,8 +101,7 @@ const Peers = (props) => {
</div> </div>
<div className="edit-input-wrap"> <div className="edit-input-wrap">
<Input class="informed-input" name="name" label="Peer Name (not required)" /> <Input class="informed-input" name="name" label="Peer Name (not required)" />
<Input class="informed-input" name="host" label="Host" /> <Input class="informed-input" name="address" label="Address (host:port)" />
<Input class="informed-input" name="port" type="number" label="Port" />
<Checkbox class="informed-input" name="useTor" label="Connect With Tor: " /> <Checkbox class="informed-input" name="useTor" label="Connect With Tor: " />
</div> </div>
@ -119,32 +127,14 @@ const Peers = (props) => {
<div class="float-container"> <div class="float-container">
<div class="float-child"> <div class="float-child">
<div className="edit-input-wrap"> <div className="edit-input-wrap">
<Input class="informed-input" name="host" label="Host" initialValue={externalAddress && externalAddress.getHost()} readOnly /> <Input class="informed-input" name="external-address" label="External Address" initialValue={externalAddress && `${getExternalAddressStr()}`} readOnly />
</div> </div>
</div> </div>
<div class="float-child"> <div class="float-child">
<CopyToClipboard <CopyToClipboard
text={externalAddress && externalAddress.getHost()} text={externalAddress && `${getExternalAddressStr()}`}
> >
<a data-tip="Copy host"> <a data-tip="Copy address">
<button fullWidth={false}>
<ICON_CLIPBOARD />
</button>
</a>
</CopyToClipboard>
</div>
</div>
<div class="float-container">
<div class="float-child">
<div className="edit-input-wrap">
<Input class="informed-input" name="port" label="Port" initialValue={externalAddress && externalAddress.getPort()} readOnly/>
</div>
</div>
<div class="float-child">
<CopyToClipboard
text={externalAddress && externalAddress.getPort()}
>
<a data-tip="Copy port">
<button fullWidth={false}> <button fullWidth={false}>
<ICON_CLIPBOARD /> <ICON_CLIPBOARD />
</button> </button>

File diff suppressed because it is too large Load diff

View file

@ -3,8 +3,8 @@
while true; do while true; do
client_address=$(docker exec -it test_lnd_client lncli --network=simnet newaddress np2wkh | jq .address -r) client_address=$(docker exec -it test_lnd_client lncli --network=simnet newaddress np2wkh | jq .address -r)
MINING_ADDRESS=$client_address docker-compose up -d btcd MINING_ADDRESS=$client_address docker compose up -d btcd
echo "Mining 1 blocks to address: $client_address ..." echo "Mining 1 blocks to address: $client_address ..."
docker-compose run btcctl generate 400 docker compose run btcctl generate 400
sleep 10 sleep 10
done done

View file

@ -6,16 +6,16 @@ trap "kill 0" EXIT
function mine_blocks { function mine_blocks {
while true; do while true; do
printf "Mining 1 block to address: $MINING_ADDRESS ..." printf "Mining 1 block to address: $MINING_ADDRESS ..."
docker-compose run btcctl generate 1 docker compose run btcctl generate 1
sleep 1 sleep 1
done done
} }
cd itests cd itests
docker-compose down --volumes --remove-orphans docker compose down --volumes --remove-orphans
docker-compose build docker compose build
docker-compose up -d docker compose up -d
# Initialize the blockchain with miner rewards going to the test client. # Initialize the blockchain with miner rewards going to the test client.
@ -29,9 +29,9 @@ do
sleep 2 sleep 2
done done
MINING_ADDRESS=$client_address docker-compose up -d btcd export MINING_ADDRESS="$client_address docker compose up -d btcd"
echo "Mining 400 blocks to address: $client_address ..." echo "Mining 400 blocks to address: $client_address ..."
docker-compose run btcctl generate 400 docker compose run btcctl generate 400
echo "Finished mining blocks." echo "Finished mining blocks."
sleep 30 sleep 30
@ -40,7 +40,7 @@ mine_blocks &
echo "Background mining task is in background..." echo "Background mining task is in background..."
echo "Running test.sh...." echo "Running test.sh...."
docker-compose run test ./test.sh docker compose run test ./test.sh
echo "Shutting down itest..." echo "Shutting down itest..."
# docker-compose down # docker compose down

View file

@ -40,6 +40,7 @@ from tests.util import delete_squeak
from tests.util import download_squeak from tests.util import download_squeak
from tests.util import download_squeak_secret_key from tests.util import download_squeak_secret_key
from tests.util import free_price from tests.util import free_price
from tests.util import get_balance
from tests.util import get_external_address from tests.util import get_external_address
from tests.util import get_hash from tests.util import get_hash
from tests.util import get_network from tests.util import get_network
@ -607,6 +608,18 @@ def test_delete_peer(admin_stub, peer_id):
def test_send_coins(admin_stub, other_admin_stub): def test_send_coins(admin_stub, other_admin_stub):
new_address_response = admin_stub.LndNewAddress(ln.NewAddressRequest()) new_address_response = admin_stub.LndNewAddress(ln.NewAddressRequest())
get_balance_response = get_balance(
other_admin_stub,
)
print("Get balance: {}".format(get_balance_response))
print("--------------------")
print("--------------------")
print("--------------------")
print("--------------------")
print("--------------------")
print("--------------------")
print("--------------------")
print("--------------------", flush=True)
send_coins_response = send_coins( send_coins_response = send_coins(
other_admin_stub, new_address_response.address, 55555555 other_admin_stub, new_address_response.address, 55555555
) )

View file

@ -437,6 +437,13 @@ def disconnect_peer(node_stub, pubkey):
) )
def get_balance(node_stub):
get_balance_request = lnd_pb2.WalletBalanceRequest()
return node_stub.LndWalletBalance(
get_balance_request,
)
def send_coins(node_stub, addr, amount): def send_coins(node_stub, addr, amount):
send_coins_request = lnd_pb2.SendCoinsRequest( send_coins_request = lnd_pb2.SendCoinsRequest(
addr=addr, addr=addr,

View file

@ -20,4 +20,4 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
__version__ = '0.3.1' __version__ = '0.3.5'

View file

@ -1,7 +1,7 @@
{ {
"files": { "files": {
"main.css": "/static/css/main.fe6c5463.css", "main.css": "/static/css/main.fe6c5463.css",
"main.js": "/static/js/main.e69a9816.js", "main.js": "/static/js/main.f8361353.js",
"static/css/306.7f7715a0.chunk.css": "/static/css/306.7f7715a0.chunk.css", "static/css/306.7f7715a0.chunk.css": "/static/css/306.7f7715a0.chunk.css",
"static/js/306.90b2a66c.chunk.js": "/static/js/306.90b2a66c.chunk.js", "static/js/306.90b2a66c.chunk.js": "/static/js/306.90b2a66c.chunk.js",
"static/css/900.5027b0a1.chunk.css": "/static/css/900.5027b0a1.chunk.css", "static/css/900.5027b0a1.chunk.css": "/static/css/900.5027b0a1.chunk.css",
@ -11,7 +11,7 @@
"static/media/icon.svg": "/static/media/icon.982210ec9275956e4d3cc77fa90167fd.svg", "static/media/icon.svg": "/static/media/icon.982210ec9275956e4d3cc77fa90167fd.svg",
"index.html": "/index.html", "index.html": "/index.html",
"main.fe6c5463.css.map": "/static/css/main.fe6c5463.css.map", "main.fe6c5463.css.map": "/static/css/main.fe6c5463.css.map",
"main.e69a9816.js.map": "/static/js/main.e69a9816.js.map", "main.f8361353.js.map": "/static/js/main.f8361353.js.map",
"306.7f7715a0.chunk.css.map": "/static/css/306.7f7715a0.chunk.css.map", "306.7f7715a0.chunk.css.map": "/static/css/306.7f7715a0.chunk.css.map",
"306.90b2a66c.chunk.js.map": "/static/js/306.90b2a66c.chunk.js.map", "306.90b2a66c.chunk.js.map": "/static/js/306.90b2a66c.chunk.js.map",
"900.5027b0a1.chunk.css.map": "/static/css/900.5027b0a1.chunk.css.map", "900.5027b0a1.chunk.css.map": "/static/css/900.5027b0a1.chunk.css.map",
@ -21,6 +21,6 @@
}, },
"entrypoints": [ "entrypoints": [
"static/css/main.fe6c5463.css", "static/css/main.fe6c5463.css",
"static/js/main.e69a9816.js" "static/js/main.f8361353.js"
] ]
} }

View file

@ -1 +1 @@
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#1da1f2"/><meta nam="description" content="Squeaknode!"/><meta name="og:title" content="Squeaknode"/><meta name="og:description" content="check out my the Squeaknode I made"/><link href="https://fonts.googleapis.com/css2?family=Assistant&display=swap" rel="stylesheet"><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>Squeaknode</title><script defer="defer" src="/static/js/main.e69a9816.js"></script><link href="/static/css/main.fe6c5463.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html> <!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,initial-scale=1"/><meta name="theme-color" content="#1da1f2"/><meta nam="description" content="Squeaknode!"/><meta name="og:title" content="Squeaknode"/><meta name="og:description" content="check out my the Squeaknode I made"/><link href="https://fonts.googleapis.com/css2?family=Assistant&display=swap" rel="stylesheet"><link rel="apple-touch-icon" href="/logo192.png"/><link rel="manifest" href="/manifest.json"/><title>Squeaknode</title><script defer="defer" src="/static/js/main.f8361353.js"></script><link href="/static/css/main.fe6c5463.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div></body></html>

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

View file

@ -40,7 +40,7 @@ DEFAULT_LOG_LEVEL = "INFO"
DEFAULT_MAX_SQUEAKS = 10000 DEFAULT_MAX_SQUEAKS = 10000
DEFAULT_MAX_SQUEAKS_PER_PUBLIC_KEY_PER_BLOCK = 100 DEFAULT_MAX_SQUEAKS_PER_PUBLIC_KEY_PER_BLOCK = 100
DEFAULT_SERVER_RPC_HOST = "0.0.0.0" DEFAULT_SERVER_RPC_HOST = "0.0.0.0"
DEFAULT_SERVER_RPC_PORT = None DEFAULT_SERVER_RPC_PORT = 8555
DEFAULT_EXTERNAL_PORT = 8555 DEFAULT_EXTERNAL_PORT = 8555
DEFAULT_ADMIN_RPC_HOST = "0.0.0.0" DEFAULT_ADMIN_RPC_HOST = "0.0.0.0"
DEFAULT_ADMIN_RPC_PORT = 8994 DEFAULT_ADMIN_RPC_PORT = 8994
@ -48,7 +48,6 @@ DEFAULT_WEBADMIN_HOST = "0.0.0.0"
DEFAULT_WEBADMIN_PORT = 12994 DEFAULT_WEBADMIN_PORT = 12994
DEFAULT_BITCOIN_RPC_HOST = "localhost" DEFAULT_BITCOIN_RPC_HOST = "localhost"
DEFAULT_BITCOIN_RPC_PORT = 18334 DEFAULT_BITCOIN_RPC_PORT = 18334
DEFAULT_BITCOIN_ZEROMQ_HASHBLOCK_PORT = 28334
BITCOIN_RPC_PORT = { BITCOIN_RPC_PORT = {
"mainnet": 8332, "mainnet": 8332,
"testnet": 18332, "testnet": 18332,
@ -82,8 +81,6 @@ class BitcoinConfig(Config):
rpc_pass = key(cast=str, required=False, default="") rpc_pass = key(cast=str, required=False, default="")
rpc_use_ssl = key(cast=bool, required=False, default=False) rpc_use_ssl = key(cast=bool, required=False, default=False)
rpc_ssl_cert = key(cast=str, required=False, default="") rpc_ssl_cert = key(cast=str, required=False, default="")
zeromq_hashblock_port = key(cast=int, required=False,
default=DEFAULT_BITCOIN_ZEROMQ_HASHBLOCK_PORT)
@section('lightning') @section('lightning')
@ -109,7 +106,7 @@ class TorConfig(Config):
class ServerConfig(Config): class ServerConfig(Config):
enabled = key(cast=bool, required=False, default=True) enabled = key(cast=bool, required=False, default=True)
host = key(cast=str, required=False, default=DEFAULT_SERVER_RPC_HOST) host = key(cast=str, required=False, default=DEFAULT_SERVER_RPC_HOST)
port = key(cast=int, required=False, default=DEFAULT_SERVER_RPC_PORT) port = key(cast=int, required=False, default=0)
external_address = key(cast=str, required=False, default="") external_address = key(cast=str, required=False, default="")
external_port = key(cast=int, required=False, external_port = key(cast=int, required=False,
default=DEFAULT_EXTERNAL_PORT) default=DEFAULT_EXTERNAL_PORT)

View file

@ -26,8 +26,13 @@ from squeaknode.core.squeak_peer import SqueakPeer
def create_saved_peer( def create_saved_peer(
peer_name: str, peer_name: str,
peer_address: PeerAddress, peer_address: PeerAddress,
default_peer_port: int,
) -> SqueakPeer: ) -> SqueakPeer:
validate_saved_peer_name(peer_name) validate_saved_peer_name(peer_name)
if peer_address.port == 0:
peer_address = peer_address._replace(
port=default_peer_port,
)
return SqueakPeer( return SqueakPeer(
peer_id=None, peer_id=None,
peer_name=peer_name, peer_name=peer_name,

View file

@ -29,7 +29,7 @@ from squeaknode.db.models import Models
# this is the Alembic Config object, which provides # this is the Alembic Config object, which provides
# access to the values within the .ini file in use. # access to the values within the .ini file in use.
config = context.config config = context.config # type: ignore
# Interpret the config file for Python logging. # Interpret the config file for Python logging.
# This line sets up loggers basically. # This line sets up loggers basically.

View file

@ -91,7 +91,9 @@ class PaymentProcessorTask:
def process_subscribed_invoices(self): def process_subscribed_invoices(self):
while not self.stopped.is_set(): while not self.stopped.is_set():
try: try:
latest_settle_index = self.get_latest_settle_index() # Use zero as starting settle index, so that no invoices are skipped.
# latest_settle_index = self.get_latest_settle_index()
latest_settle_index = 0
logger.info("Starting payment subscription with settle index: {}".format( logger.info("Starting payment subscription with settle index: {}".format(
latest_settle_index, latest_settle_index,
)) ))

View file

@ -187,7 +187,11 @@ class SqueakController:
return self.squeak_store.get_squeak_profile_private_key(profile_id) return self.squeak_store.get_squeak_profile_private_key(profile_id)
def create_peer(self, peer_name: str, peer_address: PeerAddress): def create_peer(self, peer_name: str, peer_address: PeerAddress):
return self.squeak_store.create_peer(peer_name, peer_address) return self.squeak_store.create_peer(
peer_name,
peer_address,
self.config.server.port or 0,
)
def get_peer(self, peer_id: int) -> Optional[SqueakPeer]: def get_peer(self, peer_id: int) -> Optional[SqueakPeer]:
return self.squeak_store.get_peer(peer_id) return self.squeak_store.get_peer(peer_id)

View file

@ -228,7 +228,7 @@ class SqueakNode:
def create_peer_web_server(self): def create_peer_web_server(self):
self.peer_web_server = SqueakPeerWebServer( self.peer_web_server = SqueakPeerWebServer(
self.config.server.host, self.config.server.host,
squeak.params.params.DEFAULT_PORT, self.config.server.port or squeak.params.params.DEFAULT_PORT,
self.peer_handler, self.peer_handler,
) )

View file

@ -389,10 +389,11 @@ class SqueakStore:
)) ))
return get_profile_private_key(profile) return get_profile_private_key(profile)
def create_peer(self, peer_name: str, peer_address: PeerAddress): def create_peer(self, peer_name: str, peer_address: PeerAddress, default_peer_port):
squeak_peer = create_saved_peer( squeak_peer = create_saved_peer(
peer_name, peer_name,
peer_address, peer_address,
default_peer_port,
) )
return self.squeak_db.insert_peer(squeak_peer) return self.squeak_db.insert_peer(squeak_peer)

View file

@ -31,6 +31,11 @@ def peer_name():
yield "fake_peer_name" yield "fake_peer_name"
@pytest.fixture
def default_peer_port():
yield 9999
@pytest.fixture @pytest.fixture
def peer_address(): def peer_address():
yield PeerAddress( yield PeerAddress(
@ -58,24 +63,37 @@ def peer_address_with_no_port():
) )
def test_create_saved_peer(peer_name, peer_address): def test_create_saved_peer(peer_name, peer_address, default_peer_port):
peer = create_saved_peer( peer = create_saved_peer(
peer_name, peer_name,
peer_address, peer_address,
default_peer_port,
) )
assert peer.peer_name == peer_name assert peer.peer_name == peer_name
assert peer.address == peer_address assert peer.address == peer_address
def test_create_saved_peer_empty_name(peer_address): def test_create_saved_peer_empty_name(peer_address, default_peer_port):
create_saved_peer("", peer_address) create_saved_peer("", peer_address, default_peer_port)
def test_create_saved_peer_use_tor(peer_name, peer_address_with_tor): def test_create_saved_peer_no_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.port == default_peer_port
def test_create_saved_peer_use_tor(peer_name, peer_address_with_tor, default_peer_port):
peer = create_saved_peer( peer = create_saved_peer(
peer_name, peer_name,
peer_address_with_tor, peer_address_with_tor,
default_peer_port,
) )
assert peer.peer_name == peer_name assert peer.peer_name == peer_name

View file

@ -167,4 +167,5 @@ def test_create_peer(squeak_store, squeak_controller, peer_address):
squeak_store.create_peer.assert_called_with( squeak_store.create_peer.assert_called_with(
"fake_peer_name", "fake_peer_name",
peer_address, peer_address,
0,
) )

View file

@ -121,6 +121,7 @@ def gen_squeak_peer(peer_name):
return create_saved_peer( return create_saved_peer(
peer_name, peer_name,
peer_address, peer_address,
0,
) )