07e46714f0
* Protobufs and adapters * Added basic anon metric service and config init * Added fibonacci interval incrementer * Added basic Client.Start func and integrated interval incrementer * Added new processed field to app metrics table * Added id column to app metrics table * Added migration clean up * Added appmetrics GetUnprocessed and SetToProcessedByIDs and tests There was a wierd bug where metrics in the db that did not explicitly insert a value would be NULL, so could not be found by . In addition I've added a new primary id field to the app_metrics table so that updates could be done against very specific metric rows. * Updated adaptors and db to handle proto_id I need a way to distinguish individual metric items from each other so that I can ignore the ones that have been seen before. * Moved incrementer into dedicated file * Resolve incrementer test fail * Finalised the main loop functionality * Implemented delete loop framework * Updated adaptors file name * Added delete loop delay and quit, and tweak on RawMessage gen * Completed delete loop logic * Added DBLock to prevent deletion during mainLoop * Added postgres DB connection, integrated into anonmetrics.Server * Removed proto_id from SQL migration and model * Integrated postgres with Server and updated adaptors * Function name update * Added sample config files for client and server * Fixes and testing for low level e2e * make generate * Fix lint * Fix for receiving an anonMetricBatch not in server mode * Postgres test fixes * Tidy up, make vendor and make generate * delinting * Fixing database tests * Attempted fix of does: cannot open `does' (No such file or directory) not: cannot open `not' (No such file or directory) exist: cannot open `exist' (No such file or directory) error on sql resource loas * Moved all anon metric postgres migration logic and sources into a the protocol/anonmetrics package or sub packages. I don't know if this will fix the does: cannot open `does' (No such file or directory) not: cannot open `not' (No such file or directory) exist: cannot open `exist' (No such file or directory) error that happens in Jenkins but this could work * Lint for the lint god * Why doesn't the linter list all its problems at once? * test tweaks * Fix for wakuV2 change * DB reset change * Fix for postgres db migrations fails * More robust implementation of postgres test setup and teardown * Added block for anon metrics functionality * Version Bump to 0.84.0 * Added test to check anon metrics broadcast is deactivated * Protobufs and adapters * Added basic anon metric service and config init * Added new processed field to app metrics table * Added id column to app metrics table * Added migration clean up * Added appmetrics GetUnprocessed and SetToProcessedByIDs and tests There was a wierd bug where metrics in the db that did not explicitly insert a value would be NULL, so could not be found by . In addition I've added a new primary id field to the app_metrics table so that updates could be done against very specific metric rows. * Updated adaptors and db to handle proto_id I need a way to distinguish individual metric items from each other so that I can ignore the ones that have been seen before. * Added postgres DB connection, integrated into anonmetrics.Server * Removed proto_id from SQL migration and model * Integrated postgres with Server and updated adaptors * Added sample config files for client and server * Fix lint * Fix for receiving an anonMetricBatch not in server mode * Postgres test fixes * Tidy up, make vendor and make generate * Moved all anon metric postgres migration logic and sources into a the protocol/anonmetrics package or sub packages. I don't know if this will fix the does: cannot open `does' (No such file or directory) not: cannot open `not' (No such file or directory) exist: cannot open `exist' (No such file or directory) error that happens in Jenkins but this could work |
||
---|---|---|
.. | ||
anonmetrics | ||
audio | ||
common | ||
communities | ||
datasync | ||
encryption | ||
ens | ||
identity | ||
images | ||
internal/sqlite | ||
migrations | ||
protobuf | ||
pushnotificationclient | ||
pushnotificationserver | ||
requests | ||
sqlite | ||
subscription | ||
transport | ||
tt | ||
urls | ||
v1 | ||
zaputil | ||
LICENSE | ||
README.md | ||
activity_center.go | ||
activity_center_persistence.go | ||
anon_metrics_test.go | ||
chat.go | ||
chat_group_proxy.go | ||
chat_test.go | ||
communities_messenger_test.go | ||
contact.go | ||
delete_message.go | ||
edit_message.go | ||
emoji_reaction.go | ||
errors.go | ||
group_chat_invitation.go | ||
group_chat_system_messages.go | ||
local_notifications.go | ||
message_builder.go | ||
message_persistence.go | ||
message_validator.go | ||
message_validator_test.go | ||
messenger.go | ||
messenger_activity_center.go | ||
messenger_activity_center_test.go | ||
messenger_chats.go | ||
messenger_communities.go | ||
messenger_config.go | ||
messenger_contact_update_test.go | ||
messenger_contacts.go | ||
messenger_delete_message_test.go | ||
messenger_edit_message_test.go | ||
messenger_emoji_test.go | ||
messenger_ens.go | ||
messenger_handler.go | ||
messenger_handler_test.go | ||
messenger_installations_test.go | ||
messenger_mailserver.go | ||
messenger_maps.go | ||
messenger_messages.go | ||
messenger_mute_test.go | ||
messenger_pin_message_test.go | ||
messenger_pin_messages.go | ||
messenger_response.go | ||
messenger_response_test.go | ||
messenger_status_updates.go | ||
messenger_test.go | ||
persistence.go | ||
persistence_test.go | ||
push_notification_test.go | ||
status_update.go | ||
transaction_validator.go | ||
transaction_validator_test.go |
README.md
status-go/protocol
This is an implementation of the secure transport and payloads which are a part of the Status Client specification.
This implementation uses SQLite and SQLCipher for persistent storage.
The payloads are encoded using protocol-buffers.
Content
messenger.go
is the main file which exportsMessenger
struct. This is a public API to interact with this implementation of the Status Chat Protocol.protobuf/
contains protobuf files implementing payloads described in the Payloads spec.encryption/
implements the Secure Transport spec.transport/
connects the Status Chat Protocol with a wire-protocol which in our case is either Whisper or Waku.datasync/
is an adapter for MVDS.applicationmetadata/
is an outer layer wrapping a payload with an app-specific metadata like a signature.identity/
implements details related to creating a three-word name and identicon.migrations/
contains implementation specific migrations for the sqlite database which is used byMessenger
as a persistent data store.
History
Originally this package was a dedicated repo called status-protocol-go
and was migrated into status-go
. The new status-go/protocol
package maintained its own dependencies until sub modules were removed and the root go.mod file managed all dependencies for the entire status-go
repo.