Compare commits

...

20 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
Jonathan Zernik
cb0598cbe5 Release version 0.3.1 2022-05-16 18:04:49 -07:00
Jonathan Zernik
163837a7bc
Use real port for peer get offer request (#2213)
* Use real port number for peer in saved sent offer

* Fix get remote client port
2022-05-11 22:30:52 -07:00
Jonathan Zernik
0c0ce30006
Fix macaroon path in readme example config (#2211) 2022-05-11 18:47:23 -07:00
38 changed files with 5730 additions and 26230 deletions

View file

@ -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

View file

@ -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
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]
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

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>

View file

@ -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

View file

@ -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

View file

@ -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:

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_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.

View file

@ -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

File diff suppressed because it is too large Load diff

View file

@ -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",

View file

@ -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>

File diff suppressed because it is too large Load diff

View file

@ -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

View file

@ -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

View file

@ -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
)

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):
send_coins_request = lnd_pb2.SendCoinsRequest(
addr=addr,

View file

@ -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'

View file

@ -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"
]
}

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_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)

View file

@ -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,

View file

@ -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.

View file

@ -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,
))

View file

@ -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)

View file

@ -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,
)

View file

@ -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)

View file

@ -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({

View file

@ -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,

View file

@ -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

View file

@ -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,
)

View file

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