mirror of
https://github.com/yzernik/squeaknode.git
synced 2026-08-13 12:33:25 +02:00
Compare commits
20 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6af6126c39 | ||
|
|
7fdb9d996c | ||
|
|
bfc746ce0d | ||
|
|
90c0b93a90 | ||
|
|
0181eafe74 | ||
|
|
7c67145f61 | ||
|
|
a92ad92042 | ||
|
|
a024057f1b | ||
|
|
93da9c0c97 | ||
|
|
e805751bdc | ||
|
|
2cabb8197a | ||
|
|
e66377a3c9 | ||
|
|
6ff3f3c4c9 | ||
|
|
aef32d9417 | ||
|
|
2d55668af0 | ||
|
|
afd3af091a | ||
|
|
a8ebf8e9e9 | ||
|
|
cb0598cbe5 | ||
|
|
163837a7bc | ||
|
|
0c0ce30006 |
38 changed files with 5730 additions and 26230 deletions
|
|
@ -42,7 +42,7 @@ network=mainnet
|
|||
[lightning]
|
||||
backend=lnd
|
||||
lnd_tls_cert_path=~/.lnd/tls.cert
|
||||
lnd_macaroon_path=~/.lnd/data/chain/bitcoin/testnet/admin.macaroon
|
||||
lnd_macaroon_path=~/.lnd/data/chain/bitcoin/mainnet/admin.macaroon
|
||||
|
||||
[bitcoin]
|
||||
rpc_host=localhost
|
||||
|
|
|
|||
|
|
@ -9,7 +9,6 @@ rpc_host=localhost
|
|||
rpc_port=18332
|
||||
rpc_user=devuser
|
||||
rpc_pass=devpass
|
||||
zeromq_hashblock_port=28334
|
||||
|
||||
[tor]
|
||||
proxy_ip=localhost
|
||||
|
|
|
|||
29
config-other.ini
Normal file
29
config-other.ini
Normal 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
|
||||
13
config.ini
13
config.ini
|
|
@ -3,15 +3,16 @@ network=testnet
|
|||
|
||||
[lightning]
|
||||
external_host=localhost
|
||||
lnd_tls_cert_path=~/.lnd/tls.cert
|
||||
lnd_macaroon_path=~/.lnd/data/chain/bitcoin/testnet/admin.macaroon
|
||||
lnd_rpc_host=localhost
|
||||
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]
|
||||
rpc_host=localhost
|
||||
rpc_port=18332
|
||||
rpc_user=devuser
|
||||
rpc_pass=devpass
|
||||
zeromq_hashblock_port=28334
|
||||
rpc_port=18445
|
||||
rpc_user=polaruser
|
||||
rpc_pass=polarpass
|
||||
|
||||
[tor]
|
||||
proxy_ip=localhost
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
FROM golang:1.12-alpine as builder
|
||||
FROM golang:1.18-alpine as builder
|
||||
|
||||
MAINTAINER Olaoluwa Osuntokun <laolu@lightning.network>
|
||||
|
||||
|
|
|
|||
|
|
@ -14,7 +14,6 @@ rpc_host=bitcoin-core
|
|||
rpc_port=18332
|
||||
rpc_user=devuser
|
||||
rpc_pass=devpass
|
||||
zeromq_hashblock_port=28334
|
||||
|
||||
[tor]
|
||||
proxy_ip=tor-node
|
||||
|
|
|
|||
|
|
@ -12,7 +12,6 @@ rpc_host=bitcoin-core
|
|||
rpc_port=18332
|
||||
rpc_user=devuser
|
||||
rpc_pass=devpass
|
||||
zeromq_hashblock_port=28334
|
||||
|
||||
[tor]
|
||||
proxy_ip=tor-node
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@ services:
|
|||
image: ruimarinho/bitcoin-core:0.21.1
|
||||
container_name: bitcoin-core
|
||||
volumes:
|
||||
- ~/.bitcoin:/home/bitcoin/.bitcoin
|
||||
- bitcoin:/home/bitcoin/.bitcoin
|
||||
ports:
|
||||
- 8332:8332
|
||||
- 18332:18332
|
||||
|
|
@ -25,7 +25,7 @@ services:
|
|||
depends_on:
|
||||
- "tor-node"
|
||||
volumes:
|
||||
- ~/.lnd:/root/.lnd
|
||||
- lnd_client_dir:/root/.lnd
|
||||
- tor-dir:/var/lib/tor
|
||||
ports:
|
||||
- 10009:10009
|
||||
|
|
@ -69,7 +69,7 @@ services:
|
|||
- 10010:10009
|
||||
- 9835:9835
|
||||
volumes:
|
||||
- ~/.lightning:/root/.lightning
|
||||
- clightning_client_dir:/root/.lightning
|
||||
- tor-dir:/var/lib/tor
|
||||
links:
|
||||
- "bitcoin-core:bitcoin-core"
|
||||
|
|
@ -151,8 +151,14 @@ services:
|
|||
entrypoint: ["./entrypoint.sh"]
|
||||
|
||||
volumes:
|
||||
bitcoin:
|
||||
driver: local
|
||||
lnd_client_dir:
|
||||
driver: local
|
||||
lnd_server_dir:
|
||||
driver: local
|
||||
clightning_client_dir:
|
||||
driver: local
|
||||
clightning_server_dir:
|
||||
driver: local
|
||||
squeaknode_dir:
|
||||
|
|
|
|||
|
|
@ -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_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.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.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.
|
||||
|
|
|
|||
|
|
@ -32,9 +32,9 @@ You can also run your own squeaknode on your host machine.
|
|||
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:
|
||||
|
|
|
|||
19371
frontend/package-lock.json
generated
19371
frontend/package-lock.json
generated
File diff suppressed because it is too large
Load diff
|
|
@ -12,7 +12,7 @@
|
|||
"google-protobuf": "^3.12.4",
|
||||
"informed": "^4.6.1",
|
||||
"jwt-decode": "^2.2.0",
|
||||
"moment": "^2.29.2",
|
||||
"moment": "^2.29.4",
|
||||
"react": "^16.13.1",
|
||||
"react-contenteditable": "^3.3.4",
|
||||
"react-copy-to-clipboard": "^5.1.0",
|
||||
|
|
|
|||
|
|
@ -61,17 +61,26 @@ const Peers = (props) => {
|
|||
return 'IPV4';
|
||||
};
|
||||
|
||||
const getExternalAddressStr = () => {
|
||||
if (externalAddress) {
|
||||
return `${externalAddress.getHost()}:${externalAddress.getPort()}`;
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
};
|
||||
|
||||
function removeHttp(url) {
|
||||
return url.replace(/^https?:\/\//, '');
|
||||
}
|
||||
|
||||
const savePeer = ({values}) => {
|
||||
const network = getNetwork(values.useTor);
|
||||
const strippedHost = removeHttp(values.host);
|
||||
const strippedAddress = removeHttp(values.address);
|
||||
const url = new URL(`http://${strippedAddress}`);
|
||||
dispatch(setSavePeer({
|
||||
name: values.name,
|
||||
host: strippedHost,
|
||||
port: values.port,
|
||||
host: url.hostname,
|
||||
port: url.port,
|
||||
network: network,
|
||||
}));
|
||||
toggleSavePeerModal();
|
||||
|
|
@ -92,8 +101,7 @@ const Peers = (props) => {
|
|||
</div>
|
||||
<div className="edit-input-wrap">
|
||||
<Input class="informed-input" name="name" label="Peer Name (not required)" />
|
||||
<Input class="informed-input" name="host" label="Host" />
|
||||
<Input class="informed-input" name="port" type="number" label="Port" />
|
||||
<Input class="informed-input" name="address" label="Address (host:port)" />
|
||||
<Checkbox class="informed-input" name="useTor" label="Connect With Tor: " />
|
||||
</div>
|
||||
|
||||
|
|
@ -119,32 +127,14 @@ const Peers = (props) => {
|
|||
<div class="float-container">
|
||||
<div class="float-child">
|
||||
<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 class="float-child">
|
||||
<CopyToClipboard
|
||||
text={externalAddress && externalAddress.getHost()}
|
||||
text={externalAddress && `${getExternalAddressStr()}`}
|
||||
>
|
||||
<a data-tip="Copy host">
|
||||
<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">
|
||||
<a data-tip="Copy address">
|
||||
<button fullWidth={false}>
|
||||
<ICON_CLIPBOARD />
|
||||
</button>
|
||||
|
|
|
|||
12357
frontend/yarn.lock
12357
frontend/yarn.lock
File diff suppressed because it is too large
Load diff
|
|
@ -3,8 +3,8 @@
|
|||
|
||||
while true; do
|
||||
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 ..."
|
||||
docker-compose run btcctl generate 400
|
||||
docker compose run btcctl generate 400
|
||||
sleep 10
|
||||
done
|
||||
|
|
|
|||
|
|
@ -6,16 +6,16 @@ trap "kill 0" EXIT
|
|||
function mine_blocks {
|
||||
while true; do
|
||||
printf "Mining 1 block to address: $MINING_ADDRESS ..."
|
||||
docker-compose run btcctl generate 1
|
||||
docker compose run btcctl generate 1
|
||||
sleep 1
|
||||
done
|
||||
}
|
||||
|
||||
|
||||
cd itests
|
||||
docker-compose down --volumes --remove-orphans
|
||||
docker-compose build
|
||||
docker-compose up -d
|
||||
docker compose down --volumes --remove-orphans
|
||||
docker compose build
|
||||
docker compose up -d
|
||||
|
||||
# Initialize the blockchain with miner rewards going to the test client.
|
||||
|
||||
|
|
@ -29,9 +29,9 @@ do
|
|||
sleep 2
|
||||
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 ..."
|
||||
docker-compose run btcctl generate 400
|
||||
docker compose run btcctl generate 400
|
||||
echo "Finished mining blocks."
|
||||
sleep 30
|
||||
|
||||
|
|
@ -40,7 +40,7 @@ mine_blocks &
|
|||
echo "Background mining task is in background..."
|
||||
|
||||
echo "Running test.sh...."
|
||||
docker-compose run test ./test.sh
|
||||
docker compose run test ./test.sh
|
||||
|
||||
echo "Shutting down itest..."
|
||||
# docker-compose down
|
||||
# docker compose down
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ from tests.util import delete_squeak
|
|||
from tests.util import download_squeak
|
||||
from tests.util import download_squeak_secret_key
|
||||
from tests.util import free_price
|
||||
from tests.util import get_balance
|
||||
from tests.util import get_external_address
|
||||
from tests.util import get_hash
|
||||
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):
|
||||
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(
|
||||
other_admin_stub, new_address_response.address, 55555555
|
||||
)
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
send_coins_request = lnd_pb2.SendCoinsRequest(
|
||||
addr=addr,
|
||||
|
|
|
|||
|
|
@ -20,4 +20,4 @@
|
|||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
|
||||
__version__ = '0.3.0'
|
||||
__version__ = '0.3.5'
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"files": {
|
||||
"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/js/306.90b2a66c.chunk.js": "/static/js/306.90b2a66c.chunk.js",
|
||||
"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",
|
||||
"index.html": "/index.html",
|
||||
"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.90b2a66c.chunk.js.map": "/static/js/306.90b2a66c.chunk.js.map",
|
||||
"900.5027b0a1.chunk.css.map": "/static/css/900.5027b0a1.chunk.css.map",
|
||||
|
|
@ -21,6 +21,6 @@
|
|||
},
|
||||
"entrypoints": [
|
||||
"static/css/main.fe6c5463.css",
|
||||
"static/js/main.e69a9816.js"
|
||||
"static/js/main.f8361353.js"
|
||||
]
|
||||
}
|
||||
|
|
@ -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
|
|
@ -40,7 +40,7 @@ DEFAULT_LOG_LEVEL = "INFO"
|
|||
DEFAULT_MAX_SQUEAKS = 10000
|
||||
DEFAULT_MAX_SQUEAKS_PER_PUBLIC_KEY_PER_BLOCK = 100
|
||||
DEFAULT_SERVER_RPC_HOST = "0.0.0.0"
|
||||
DEFAULT_SERVER_RPC_PORT = None
|
||||
DEFAULT_SERVER_RPC_PORT = 8555
|
||||
DEFAULT_EXTERNAL_PORT = 8555
|
||||
DEFAULT_ADMIN_RPC_HOST = "0.0.0.0"
|
||||
DEFAULT_ADMIN_RPC_PORT = 8994
|
||||
|
|
@ -48,7 +48,6 @@ DEFAULT_WEBADMIN_HOST = "0.0.0.0"
|
|||
DEFAULT_WEBADMIN_PORT = 12994
|
||||
DEFAULT_BITCOIN_RPC_HOST = "localhost"
|
||||
DEFAULT_BITCOIN_RPC_PORT = 18334
|
||||
DEFAULT_BITCOIN_ZEROMQ_HASHBLOCK_PORT = 28334
|
||||
BITCOIN_RPC_PORT = {
|
||||
"mainnet": 8332,
|
||||
"testnet": 18332,
|
||||
|
|
@ -82,8 +81,6 @@ class BitcoinConfig(Config):
|
|||
rpc_pass = key(cast=str, required=False, default="")
|
||||
rpc_use_ssl = key(cast=bool, required=False, default=False)
|
||||
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')
|
||||
|
|
@ -109,7 +106,7 @@ class TorConfig(Config):
|
|||
class ServerConfig(Config):
|
||||
enabled = key(cast=bool, required=False, default=True)
|
||||
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_port = key(cast=int, required=False,
|
||||
default=DEFAULT_EXTERNAL_PORT)
|
||||
|
|
|
|||
|
|
@ -26,8 +26,13 @@ from squeaknode.core.squeak_peer import SqueakPeer
|
|||
def create_saved_peer(
|
||||
peer_name: str,
|
||||
peer_address: PeerAddress,
|
||||
default_peer_port: int,
|
||||
) -> SqueakPeer:
|
||||
validate_saved_peer_name(peer_name)
|
||||
if peer_address.port == 0:
|
||||
peer_address = peer_address._replace(
|
||||
port=default_peer_port,
|
||||
)
|
||||
return SqueakPeer(
|
||||
peer_id=None,
|
||||
peer_name=peer_name,
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ from squeaknode.db.models import Models
|
|||
|
||||
# this is the Alembic Config object, which provides
|
||||
# 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.
|
||||
# This line sets up loggers basically.
|
||||
|
|
|
|||
|
|
@ -91,7 +91,9 @@ class PaymentProcessorTask:
|
|||
def process_subscribed_invoices(self):
|
||||
while not self.stopped.is_set():
|
||||
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(
|
||||
latest_settle_index,
|
||||
))
|
||||
|
|
|
|||
|
|
@ -187,7 +187,11 @@ class SqueakController:
|
|||
return self.squeak_store.get_squeak_profile_private_key(profile_id)
|
||||
|
||||
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]:
|
||||
return self.squeak_store.get_peer(peer_id)
|
||||
|
|
|
|||
|
|
@ -228,7 +228,7 @@ class SqueakNode:
|
|||
def create_peer_web_server(self):
|
||||
self.peer_web_server = SqueakPeerWebServer(
|
||||
self.config.server.host,
|
||||
squeak.params.params.DEFAULT_PORT,
|
||||
self.config.server.port or squeak.params.params.DEFAULT_PORT,
|
||||
self.peer_handler,
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -389,10 +389,11 @@ class SqueakStore:
|
|||
))
|
||||
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(
|
||||
peer_name,
|
||||
peer_address,
|
||||
default_peer_port,
|
||||
)
|
||||
return self.squeak_db.insert_peer(squeak_peer)
|
||||
|
||||
|
|
|
|||
|
|
@ -77,8 +77,9 @@ def create_app(handler):
|
|||
@app.route('/offer/<hash>')
|
||||
def offer(hash):
|
||||
client_host = request.remote_addr
|
||||
client_port = request.environ.get('REMOTE_PORT') or 0
|
||||
try:
|
||||
offer = handler.handle_get_offer(hash, client_host)
|
||||
offer = handler.handle_get_offer(hash, client_host, client_port)
|
||||
except NotFoundError:
|
||||
return "Not found", 404
|
||||
return jsonify({
|
||||
|
|
|
|||
|
|
@ -75,12 +75,12 @@ class SqueakPeerServerHandler(object):
|
|||
raise NotFoundError()
|
||||
return secret_key
|
||||
|
||||
def handle_get_offer(self, squeak_hash_str, client_host) -> Offer:
|
||||
def handle_get_offer(self, squeak_hash_str, client_host, client_port) -> Offer:
|
||||
squeak_hash = bytes.fromhex(squeak_hash_str)
|
||||
client_addr = PeerAddress(
|
||||
network=Network.IPV4,
|
||||
host=client_host,
|
||||
port=0,
|
||||
port=client_port,
|
||||
)
|
||||
offer = self.squeak_controller.get_packaged_offer(
|
||||
squeak_hash,
|
||||
|
|
|
|||
|
|
@ -31,6 +31,11 @@ def peer_name():
|
|||
yield "fake_peer_name"
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def default_peer_port():
|
||||
yield 9999
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def peer_address():
|
||||
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_name,
|
||||
peer_address,
|
||||
default_peer_port,
|
||||
)
|
||||
|
||||
assert peer.peer_name == peer_name
|
||||
assert peer.address == peer_address
|
||||
|
||||
|
||||
def test_create_saved_peer_empty_name(peer_address):
|
||||
create_saved_peer("", peer_address)
|
||||
def test_create_saved_peer_empty_name(peer_address, default_peer_port):
|
||||
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_name,
|
||||
peer_address_with_tor,
|
||||
default_peer_port,
|
||||
)
|
||||
|
||||
assert peer.peer_name == peer_name
|
||||
|
|
|
|||
|
|
@ -167,4 +167,5 @@ def test_create_peer(squeak_store, squeak_controller, peer_address):
|
|||
squeak_store.create_peer.assert_called_with(
|
||||
"fake_peer_name",
|
||||
peer_address,
|
||||
0,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -121,6 +121,7 @@ def gen_squeak_peer(peer_name):
|
|||
return create_saved_peer(
|
||||
peer_name,
|
||||
peer_address,
|
||||
0,
|
||||
)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue