From 06e642b19c454666357ac651f34bbfc3fffa337c Mon Sep 17 00:00:00 2001 From: Jonathan Zernik Date: Tue, 28 Jul 2020 02:05:33 -0700 Subject: [PATCH] Add profile whitelist (#160) * Add whitelisted field to profile table * Fix adding whitelisted field to profile, itest passes now --- init.sql | 3 ++- proto/squeak_admin.proto | 3 +++ squeakserver/admin/squeak_admin_server_servicer.py | 1 + squeakserver/node/squeak_node.py | 2 ++ squeakserver/server/postgres_db.py | 6 ++++-- squeakserver/server/squeak_profile.py | 2 +- 6 files changed, 13 insertions(+), 4 deletions(-) diff --git a/init.sql b/init.sql index a0dc89ac..f5287cca 100644 --- a/init.sql +++ b/init.sql @@ -29,5 +29,6 @@ CREATE TABLE IF NOT EXISTS profile ( private_key bytea, address VARCHAR(35) UNIQUE NOT NULL, -- Maximum length of a bitcoin address is 35. sharing BOOLEAN NOT NULL, - following BOOLEAN NOT NULL + following BOOLEAN NOT NULL, + whitelisted BOOLEAN NOT NULL ); diff --git a/proto/squeak_admin.proto b/proto/squeak_admin.proto index d95b60d7..60c75ac3 100644 --- a/proto/squeak_admin.proto +++ b/proto/squeak_admin.proto @@ -153,6 +153,9 @@ message SqueakProfile { /// Following bool following = 6; + + /// Whitelisted + bool whitelisted = 7; } message MakeSqueakRequest { diff --git a/squeakserver/admin/squeak_admin_server_servicer.py b/squeakserver/admin/squeak_admin_server_servicer.py index d8790886..cc292565 100644 --- a/squeakserver/admin/squeak_admin_server_servicer.py +++ b/squeakserver/admin/squeak_admin_server_servicer.py @@ -184,6 +184,7 @@ class SqueakAdminServerServicer(squeak_admin_pb2_grpc.SqueakAdminServicer): address=squeak_profile.address, sharing=squeak_profile.sharing, following=squeak_profile.following, + whitelisted=squeak_profile.whitelisted, ) def serve(self): diff --git a/squeakserver/node/squeak_node.py b/squeakserver/node/squeak_node.py index 9dd0f61d..14cf07f2 100644 --- a/squeakserver/node/squeak_node.py +++ b/squeakserver/node/squeak_node.py @@ -128,6 +128,7 @@ class SqueakNode: address=str(address), sharing=False, following=False, + whitelisted=False, ) return self.postgres_db.insert_profile(squeak_profile) @@ -142,6 +143,7 @@ class SqueakNode: address=squeak_address, sharing=False, following=False, + whitelisted=False, ) return self.postgres_db.insert_profile(squeak_profile) diff --git a/squeakserver/server/postgres_db.py b/squeakserver/server/postgres_db.py index ed42dbab..f4c72b9f 100644 --- a/squeakserver/server/postgres_db.py +++ b/squeakserver/server/postgres_db.py @@ -189,8 +189,8 @@ class PostgresDb: def insert_profile(self, squeak_profile): """ Insert a new squeak profile. """ sql = """ - INSERT INTO profile(profile_name, private_key, address, sharing, following) - VALUES(%s, %s, %s, %s, %s) + INSERT INTO profile(profile_name, private_key, address, sharing, following, whitelisted) + VALUES(%s, %s, %s, %s, %s, %s) RETURNING profile_id; """ with self.get_cursor() as curs: @@ -203,6 +203,7 @@ class PostgresDb: squeak_profile.address, squeak_profile.sharing, squeak_profile.following, + squeak_profile.whitelisted, ), ) # get the new profile id back @@ -325,6 +326,7 @@ class PostgresDb: address=row["address"], sharing=row["sharing"], following=row["following"], + whitelisted=row["whitelisted"], ) def _parse_squeak_entry_with_profile(self, row): diff --git a/squeakserver/server/squeak_profile.py b/squeakserver/server/squeak_profile.py index 05b5adf6..ed9b597b 100644 --- a/squeakserver/server/squeak_profile.py +++ b/squeakserver/server/squeak_profile.py @@ -2,5 +2,5 @@ from collections import namedtuple SqueakProfile = namedtuple( "SqueakProfile", - "profile_id, profile_name, private_key, address, sharing, following", + "profile_id, profile_name, private_key, address, sharing, following, whitelisted", )