From d60a6713fe2a0ed0fdf03a0777a8cfa7391d7c56 Mon Sep 17 00:00:00 2001 From: Andrea Maria Piana Date: Mon, 31 Jan 2022 10:33:56 +0000 Subject: [PATCH] Enable mailserver cycle by default This commit enables mailserver cycle logic by default and make a few changes: 1) Nodes are graylisted instead of being blacklisted for a set amount of time. The reason is that if we blacklist, any cut in connectivity might result in long delays before reconnecting, especially on spotty connections. 2) Fixes an issue on the devp2p server, whereby the node would not connect to one of the static nodes since all the connection slots where filled. The fix is a bit inelegant, it always connects to static nodes, ignoring maxpeers, but it's tricky to get it to work since the code is clearly not written to select a specific node. 3) Adds support to pinned mailservers 4) Add retries to mailservers requests. It uses a closure for now, I think we should eventually have a channel etc, but I'd leave that for later. --- VERSION | 2 +- appdatabase/migrations/bindata.go | 155 +-- appdatabase/migrationsprevnodecfg/bindata.go | 384 ++++---- cmd/ping-community/main.go | 17 - go.mod | 2 +- go.sum | 4 +- mailserver/migrations/bindata.go | 6 +- multiaccounts/accounts/database.go | 15 + multiaccounts/migrations/bindata.go | 14 +- nodecfg/node_config.go | 11 +- params/config.go | 2 - protocol/anonmetrics/migrations/migrations.go | 6 +- protocol/encryption/migrations/migrations.go | 40 +- protocol/message_persistence.go | 4 +- protocol/messenger.go | 60 +- protocol/messenger_communities.go | 20 +- protocol/messenger_config.go | 7 - protocol/messenger_contacts.go | 5 +- protocol/messenger_mailserver.go | 266 +++-- protocol/messenger_mailserver_cycle.go | 911 ++++++++---------- protocol/migrations/migrations.go | 551 ++++++----- .../migrations/migrations.go | 14 +- .../migrations/migrations.go | 10 +- protocol/transport/migrations/migrations.go | 12 +- services/ext/api.go | 31 +- services/ext/service.go | 26 +- services/mailservers/api_test.go | 1 + services/mailservers/database.go | 58 +- services/mailservers/fleet.go | 135 +++ signal/events_shhext.go | 14 +- static/bindata.go | 260 +++-- t/bindata.go | 6 +- .../ethereum/go-ethereum/p2p/dial.go | 7 +- vendor/modules.txt | 2 +- 34 files changed, 1744 insertions(+), 1314 deletions(-) create mode 100644 services/mailservers/fleet.go diff --git a/VERSION b/VERSION index 5f8cbfdb7..13bb62857 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.95.0 +0.96.0 diff --git a/appdatabase/migrations/bindata.go b/appdatabase/migrations/bindata.go index 2bdc07341..ed7c90c79 100644 --- a/appdatabase/migrations/bindata.go +++ b/appdatabase/migrations/bindata.go @@ -1,20 +1,20 @@ -// Code generated by go-bindata. +// Code generated by go-bindata. DO NOT EDIT. // sources: -// 1640111208_dummy.up.sql -// 1642666031_add_removed_clock_to_bookmarks.up.sql -// 1643644541_gif_api_key_setting.up.sql -// 1644188994_recent_stickers.up.sql -// 1646659233_add_address_to_dapp_permisssion.up.sql -// 1646841105_add_emoji_account.up.sql -// 1647278782_display_name.up.sql -// doc.go -// DO NOT EDIT! +// 1640111208_dummy.up.sql (258B) +// 1642666031_add_removed_clock_to_bookmarks.up.sql (117B) +// 1643644541_gif_api_key_setting.up.sql (108B) +// 1644188994_recent_stickers.up.sql (79B) +// 1646659233_add_address_to_dapp_permisssion.up.sql (700B) +// 1646841105_add_emoji_account.up.sql (96B) +// 1647278782_display_name.up.sql (110B) +// doc.go (74B) package migrations import ( "bytes" "compress/gzip" + "crypto/sha256" "fmt" "io" "io/ioutil" @@ -27,7 +27,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("Read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %v", name, err) } var buf bytes.Buffer @@ -35,7 +35,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("Read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %v", name, err) } if clErr != nil { return nil, err @@ -45,8 +45,9 @@ func bindataRead(data []byte, name string) ([]byte, error) { } type asset struct { - bytes []byte - info os.FileInfo + bytes []byte + info os.FileInfo + digest [sha256.Size]byte } type bindataFileInfo struct { @@ -90,8 +91,8 @@ func _1640111208_dummyUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1640111208_dummy.up.sql", size: 258, mode: os.FileMode(436), modTime: time.Unix(1645543084, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1640111208_dummy.up.sql", size: 258, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xf0, 0xae, 0x20, 0x6e, 0x75, 0xd1, 0x36, 0x14, 0xf2, 0x40, 0xe5, 0xd6, 0x7a, 0xc4, 0xa5, 0x72, 0xaa, 0xb5, 0x4d, 0x71, 0x97, 0xb8, 0xe8, 0x95, 0x22, 0x95, 0xa2, 0xac, 0xaf, 0x48, 0x58}} return a, nil } @@ -110,8 +111,8 @@ func _1642666031_add_removed_clock_to_bookmarksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1642666031_add_removed_clock_to_bookmarks.up.sql", size: 117, mode: os.FileMode(436), modTime: time.Unix(1646418868, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1642666031_add_removed_clock_to_bookmarks.up.sql", size: 117, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x84, 0x4e, 0x38, 0x99, 0x7a, 0xc, 0x90, 0x13, 0xec, 0xfe, 0x2f, 0x55, 0xff, 0xb7, 0xb6, 0xaa, 0x96, 0xc6, 0x92, 0x79, 0xcc, 0xee, 0x4e, 0x99, 0x53, 0xfe, 0x1c, 0xbb, 0x32, 0x2, 0xa4, 0x27}} return a, nil } @@ -130,8 +131,8 @@ func _1643644541_gif_api_key_settingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1643644541_gif_api_key_setting.up.sql", size: 108, mode: os.FileMode(436), modTime: time.Unix(1645543084, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1643644541_gif_api_key_setting.up.sql", size: 108, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x94, 0x28, 0xfb, 0x66, 0xd1, 0x7c, 0xb8, 0x89, 0xe2, 0xb4, 0x71, 0x65, 0x24, 0x57, 0x22, 0x95, 0x38, 0x97, 0x3, 0x9b, 0xc6, 0xa4, 0x41, 0x7b, 0xba, 0xf7, 0xdb, 0x70, 0xf7, 0x20, 0x3a}} return a, nil } @@ -150,8 +151,8 @@ func _1644188994_recent_stickersUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1644188994_recent_stickers.up.sql", size: 79, mode: os.FileMode(436), modTime: time.Unix(1646853782, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1644188994_recent_stickers.up.sql", size: 79, mode: os.FileMode(0644), modTime: time.Unix(1647462278, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1e, 0xad, 0xaa, 0x30, 0xbf, 0x4, 0x7, 0xf8, 0xc3, 0x3, 0xb8, 0x97, 0x23, 0x2b, 0xbd, 0x1c, 0x60, 0x69, 0xb0, 0x42, 0x5e, 0x6b, 0xd, 0xa7, 0xa3, 0x6b, 0x2e, 0xdc, 0x70, 0x13, 0x72, 0x7}} return a, nil } @@ -170,8 +171,8 @@ func _1646659233_add_address_to_dapp_permisssionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1646659233_add_address_to_dapp_permisssion.up.sql", size: 700, mode: os.FileMode(436), modTime: time.Unix(1647278692, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1646659233_add_address_to_dapp_permisssion.up.sql", size: 700, mode: os.FileMode(0644), modTime: time.Unix(1647462278, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xed, 0xb0, 0x35, 0xcc, 0x2e, 0x16, 0xe6, 0x15, 0x86, 0x2c, 0x37, 0x80, 0xae, 0xa3, 0xc5, 0x31, 0x78, 0x5, 0x9d, 0xcd, 0x7b, 0xeb, 0x5f, 0xf2, 0xb3, 0x74, 0x72, 0xdf, 0xcf, 0x88, 0xb, 0x40}} return a, nil } @@ -190,8 +191,8 @@ func _1646841105_add_emoji_accountUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1646841105_add_emoji_account.up.sql", size: 96, mode: os.FileMode(436), modTime: time.Unix(1647278692, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1646841105_add_emoji_account.up.sql", size: 96, mode: os.FileMode(0644), modTime: time.Unix(1647462278, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe6, 0x77, 0x29, 0x95, 0x18, 0x64, 0x82, 0x63, 0xe7, 0xaf, 0x6c, 0xa9, 0x15, 0x7d, 0x46, 0xa6, 0xbc, 0xdf, 0xa7, 0xd, 0x2b, 0xd2, 0x2d, 0x97, 0x4d, 0xa, 0x6b, 0xd, 0x6e, 0x90, 0x42, 0x5c}} return a, nil } @@ -210,8 +211,8 @@ func _1647278782_display_nameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1647278782_display_name.up.sql", size: 110, mode: os.FileMode(436), modTime: time.Unix(1647278807, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1647278782_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1647462278, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xa1, 0x1f, 0x3e, 0x61, 0x65, 0x8d, 0xff, 0xee, 0xde, 0xc5, 0x91, 0xd9, 0x5c, 0xb5, 0xe2, 0xf0, 0xb7, 0xe7, 0x5c, 0x5c, 0x16, 0x25, 0x89, 0xee, 0x78, 0x12, 0xea, 0x3e, 0x48, 0x41, 0xa6}} return a, nil } @@ -230,8 +231,8 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x7c, 0x28, 0xcd, 0x47, 0xf2, 0xfa, 0x7c, 0x51, 0x2d, 0xd8, 0x38, 0xb, 0xb0, 0x34, 0x9d, 0x4c, 0x62, 0xa, 0x9e, 0x28, 0xc3, 0x31, 0x23, 0xd9, 0xbb, 0x89, 0x9f, 0xa0, 0x89, 0x1f, 0xe8}} return a, nil } @@ -239,8 +240,8 @@ func docGo() (*asset, error) { // It returns an error if the asset could not be found or // could not be loaded. func Asset(name string) ([]byte, error) { - cannonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[cannonicalName]; ok { + canonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[canonicalName]; ok { a, err := f() if err != nil { return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) @@ -250,6 +251,12 @@ func Asset(name string) ([]byte, error) { return nil, fmt.Errorf("Asset %s not found", name) } +// AssetString returns the asset contents as a string (instead of a []byte). +func AssetString(name string) (string, error) { + data, err := Asset(name) + return string(data), err +} + // MustAsset is like Asset but panics when Asset would return an error. // It simplifies safe initialization of global variables. func MustAsset(name string) []byte { @@ -261,12 +268,18 @@ func MustAsset(name string) []byte { return a } +// MustAssetString is like AssetString but panics when Asset would return an +// error. It simplifies safe initialization of global variables. +func MustAssetString(name string) string { + return string(MustAsset(name)) +} + // AssetInfo loads and returns the asset info for the given name. // It returns an error if the asset could not be found or // could not be loaded. func AssetInfo(name string) (os.FileInfo, error) { - cannonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[cannonicalName]; ok { + canonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[canonicalName]; ok { a, err := f() if err != nil { return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) @@ -276,6 +289,33 @@ func AssetInfo(name string) (os.FileInfo, error) { return nil, fmt.Errorf("AssetInfo %s not found", name) } +// AssetDigest returns the digest of the file with the given name. It returns an +// error if the asset could not be found or the digest could not be loaded. +func AssetDigest(name string) ([sha256.Size]byte, error) { + canonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[canonicalName]; ok { + a, err := f() + if err != nil { + return [sha256.Size]byte{}, fmt.Errorf("AssetDigest %s can't read by error: %v", name, err) + } + return a.digest, nil + } + return [sha256.Size]byte{}, fmt.Errorf("AssetDigest %s not found", name) +} + +// Digests returns a map of all known files and their checksums. +func Digests() (map[string][sha256.Size]byte, error) { + mp := make(map[string][sha256.Size]byte, len(_bindata)) + for name := range _bindata { + a, err := _bindata[name]() + if err != nil { + return nil, err + } + mp[name] = a.digest + } + return mp, nil +} + // AssetNames returns the names of the assets. func AssetNames() []string { names := make([]string, 0, len(_bindata)) @@ -288,12 +328,19 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ "1640111208_dummy.up.sql": _1640111208_dummyUpSql, + "1642666031_add_removed_clock_to_bookmarks.up.sql": _1642666031_add_removed_clock_to_bookmarksUpSql, + "1643644541_gif_api_key_setting.up.sql": _1643644541_gif_api_key_settingUpSql, + "1644188994_recent_stickers.up.sql": _1644188994_recent_stickersUpSql, + "1646659233_add_address_to_dapp_permisssion.up.sql": _1646659233_add_address_to_dapp_permisssionUpSql, + "1646841105_add_emoji_account.up.sql": _1646841105_add_emoji_accountUpSql, + "1647278782_display_name.up.sql": _1647278782_display_nameUpSql, + "doc.go": docGo, } @@ -306,15 +353,15 @@ var _bindata = map[string]func() (*asset, error){ // img/ // a.png // b.png -// then AssetDir("data") would return []string{"foo.txt", "img"} -// AssetDir("data/img") would return []string{"a.png", "b.png"} -// AssetDir("foo.txt") and AssetDir("notexist") would return an error +// then AssetDir("data") would return []string{"foo.txt", "img"}, +// AssetDir("data/img") would return []string{"a.png", "b.png"}, +// AssetDir("foo.txt") and AssetDir("notexist") would return an error, and // AssetDir("") will return []string{"data"}. func AssetDir(name string) ([]string, error) { node := _bintree if len(name) != 0 { - cannonicalName := strings.Replace(name, "\\", "/", -1) - pathList := strings.Split(cannonicalName, "/") + canonicalName := strings.Replace(name, "\\", "/", -1) + pathList := strings.Split(canonicalName, "/") for _, p := range pathList { node = node.Children[p] if node == nil { @@ -336,18 +383,19 @@ type bintree struct { Func func() (*asset, error) Children map[string]*bintree } + var _bintree = &bintree{nil, map[string]*bintree{ - "1640111208_dummy.up.sql": &bintree{_1640111208_dummyUpSql, map[string]*bintree{}}, - "1642666031_add_removed_clock_to_bookmarks.up.sql": &bintree{_1642666031_add_removed_clock_to_bookmarksUpSql, map[string]*bintree{}}, - "1643644541_gif_api_key_setting.up.sql": &bintree{_1643644541_gif_api_key_settingUpSql, map[string]*bintree{}}, - "1644188994_recent_stickers.up.sql": &bintree{_1644188994_recent_stickersUpSql, map[string]*bintree{}}, + "1640111208_dummy.up.sql": &bintree{_1640111208_dummyUpSql, map[string]*bintree{}}, + "1642666031_add_removed_clock_to_bookmarks.up.sql": &bintree{_1642666031_add_removed_clock_to_bookmarksUpSql, map[string]*bintree{}}, + "1643644541_gif_api_key_setting.up.sql": &bintree{_1643644541_gif_api_key_settingUpSql, map[string]*bintree{}}, + "1644188994_recent_stickers.up.sql": &bintree{_1644188994_recent_stickersUpSql, map[string]*bintree{}}, "1646659233_add_address_to_dapp_permisssion.up.sql": &bintree{_1646659233_add_address_to_dapp_permisssionUpSql, map[string]*bintree{}}, - "1646841105_add_emoji_account.up.sql": &bintree{_1646841105_add_emoji_accountUpSql, map[string]*bintree{}}, - "1647278782_display_name.up.sql": &bintree{_1647278782_display_nameUpSql, map[string]*bintree{}}, - "doc.go": &bintree{docGo, map[string]*bintree{}}, + "1646841105_add_emoji_account.up.sql": &bintree{_1646841105_add_emoji_accountUpSql, map[string]*bintree{}}, + "1647278782_display_name.up.sql": &bintree{_1647278782_display_nameUpSql, map[string]*bintree{}}, + "doc.go": &bintree{docGo, map[string]*bintree{}}, }} -// RestoreAsset restores an asset under the given directory +// RestoreAsset restores an asset under the given directory. func RestoreAsset(dir, name string) error { data, err := Asset(name) if err != nil { @@ -365,14 +413,10 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) - if err != nil { - return err - } - return nil + return os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) } -// RestoreAssets restores an asset under the given directory recursively +// RestoreAssets restores an asset under the given directory recursively. func RestoreAssets(dir, name string) error { children, err := AssetDir(name) // File @@ -390,7 +434,6 @@ func RestoreAssets(dir, name string) error { } func _filePath(dir, name string) string { - cannonicalName := strings.Replace(name, "\\", "/", -1) - return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) + canonicalName := strings.Replace(name, "\\", "/", -1) + return filepath.Join(append([]string{dir}, strings.Split(canonicalName, "/")...)...) } - diff --git a/appdatabase/migrationsprevnodecfg/bindata.go b/appdatabase/migrationsprevnodecfg/bindata.go index 8f565d6a6..5362802b8 100644 --- a/appdatabase/migrationsprevnodecfg/bindata.go +++ b/appdatabase/migrationsprevnodecfg/bindata.go @@ -73,7 +73,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("read %q: %w", name, err) + return nil, fmt.Errorf("read %q: %v", name, err) } var buf bytes.Buffer @@ -81,7 +81,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("read %q: %w", name, err) + return nil, fmt.Errorf("read %q: %v", name, err) } if clErr != nil { return nil, err @@ -137,7 +137,7 @@ func _0001_appDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0001_app.down.sql", size: 356, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0001_app.down.sql", size: 356, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb5, 0x25, 0xa0, 0xf8, 0x7d, 0x2d, 0xd, 0xcf, 0x18, 0xe4, 0x73, 0xc3, 0x95, 0xf5, 0x24, 0x20, 0xa9, 0xe6, 0x9e, 0x1d, 0x93, 0xe5, 0xc5, 0xad, 0x93, 0x8f, 0x5e, 0x40, 0xb5, 0x30, 0xaa, 0x25}} return a, nil } @@ -157,7 +157,7 @@ func _0001_appUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0001_app.up.sql", size: 2967, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0001_app.up.sql", size: 2967, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf7, 0x3a, 0xa7, 0xf2, 0x8f, 0xfa, 0x82, 0x7c, 0xc5, 0x49, 0xac, 0xac, 0xf, 0xc, 0x77, 0xe2, 0xba, 0xe8, 0x4d, 0xe, 0x6f, 0x5d, 0x2c, 0x2c, 0x18, 0x80, 0xc2, 0x1d, 0xe, 0x25, 0xe, 0x18}} return a, nil } @@ -177,7 +177,7 @@ func _0002_tokensDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0002_tokens.down.sql", size: 19, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0002_tokens.down.sql", size: 19, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd1, 0x31, 0x2, 0xcc, 0x2f, 0x38, 0x90, 0xf7, 0x58, 0x37, 0x47, 0xf4, 0x18, 0xf7, 0x72, 0x74, 0x67, 0x14, 0x7e, 0xf3, 0xb1, 0xd6, 0x5f, 0xb0, 0xd5, 0xe7, 0x91, 0xf4, 0x26, 0x77, 0x8e, 0x68}} return a, nil } @@ -197,7 +197,7 @@ func _0002_tokensUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0002_tokens.up.sql", size: 248, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0002_tokens.up.sql", size: 248, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcc, 0xd6, 0xde, 0xd3, 0x7b, 0xee, 0x92, 0x11, 0x38, 0xa4, 0xeb, 0x84, 0xca, 0xcb, 0x37, 0x75, 0x5, 0x77, 0x7f, 0x14, 0x39, 0xee, 0xa1, 0x8b, 0xd4, 0x5c, 0x6e, 0x55, 0x6, 0x50, 0x16, 0xd4}} return a, nil } @@ -217,7 +217,7 @@ func _0003_settingsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0003_settings.down.sql", size: 118, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0003_settings.down.sql", size: 118, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0xa6, 0xf5, 0xc0, 0x60, 0x64, 0x77, 0xe2, 0xe7, 0x3c, 0x9b, 0xb1, 0x52, 0xa9, 0x95, 0x16, 0xf8, 0x60, 0x2f, 0xa5, 0xeb, 0x46, 0xb9, 0xb9, 0x8f, 0x4c, 0xf4, 0xfd, 0xbb, 0xe7, 0xe5, 0xe5}} return a, nil } @@ -237,7 +237,7 @@ func _0003_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0003_settings.up.sql", size: 1311, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0003_settings.up.sql", size: 1311, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x35, 0x0, 0xeb, 0xe2, 0x33, 0x68, 0xb9, 0xf4, 0xf6, 0x8e, 0x9e, 0x10, 0xe9, 0x58, 0x68, 0x28, 0xb, 0xcd, 0xec, 0x74, 0x71, 0xa7, 0x9a, 0x5a, 0x77, 0x59, 0xb1, 0x13, 0x1c, 0xa1, 0x5b}} return a, nil } @@ -257,7 +257,7 @@ func _0004_pending_stickersDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0004_pending_stickers.down.sql", size: 0, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0004_pending_stickers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -277,7 +277,7 @@ func _0004_pending_stickersUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0004_pending_stickers.up.sql", size: 61, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0004_pending_stickers.up.sql", size: 61, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3c, 0xed, 0x25, 0xdf, 0x75, 0x2, 0x6c, 0xf0, 0xa2, 0xa8, 0x37, 0x62, 0x65, 0xad, 0xfd, 0x98, 0xa0, 0x9d, 0x63, 0x94, 0xdf, 0x6b, 0x46, 0xe0, 0x68, 0xec, 0x9c, 0x7f, 0x77, 0xdd, 0xb3, 0x6}} return a, nil } @@ -297,7 +297,7 @@ func _0005_waku_modeDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0005_waku_mode.down.sql", size: 0, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0005_waku_mode.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -317,7 +317,7 @@ func _0005_waku_modeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0005_waku_mode.up.sql", size: 146, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0005_waku_mode.up.sql", size: 146, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa6, 0x91, 0xc, 0xd7, 0x89, 0x61, 0x2e, 0x4c, 0x5a, 0xb6, 0x67, 0xd1, 0xc1, 0x42, 0x24, 0x38, 0xd6, 0x1b, 0x75, 0x41, 0x9c, 0x23, 0xb0, 0xca, 0x5c, 0xf1, 0x5c, 0xd0, 0x13, 0x92, 0x3e, 0xe1}} return a, nil } @@ -337,7 +337,7 @@ func _0006_appearanceUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0006_appearance.up.sql", size: 67, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0006_appearance.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0x6, 0x25, 0x6c, 0xe4, 0x9d, 0xa7, 0x72, 0xe8, 0xbc, 0xe4, 0x1f, 0x1e, 0x2d, 0x7c, 0xb7, 0xf6, 0xa3, 0xec, 0x3b, 0x4e, 0x93, 0x2e, 0xa4, 0xec, 0x6f, 0xe5, 0x95, 0x94, 0xe8, 0x4, 0xfb}} return a, nil } @@ -357,7 +357,7 @@ func _0007_enable_waku_defaultUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0007_enable_waku_default.up.sql", size: 38, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0007_enable_waku_default.up.sql", size: 38, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd4, 0x42, 0xb6, 0xe5, 0x48, 0x41, 0xeb, 0xc0, 0x7e, 0x3b, 0xe6, 0x8e, 0x96, 0x33, 0x20, 0x92, 0x24, 0x5a, 0x60, 0xfa, 0xa0, 0x3, 0x5e, 0x76, 0x4b, 0x89, 0xaa, 0x37, 0x66, 0xbc, 0x26, 0x11}} return a, nil } @@ -377,7 +377,7 @@ func _0008_add_push_notificationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0008_add_push_notifications.up.sql", size: 349, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0008_add_push_notifications.up.sql", size: 349, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5a, 0x0, 0xbf, 0xd0, 0xdd, 0xcd, 0x73, 0xe0, 0x7c, 0x56, 0xef, 0xdc, 0x57, 0x61, 0x94, 0x64, 0x70, 0xb9, 0xfa, 0xa1, 0x2a, 0x36, 0xc, 0x2f, 0xf8, 0x95, 0xa, 0x57, 0x3e, 0x7a, 0xd7, 0x12}} return a, nil } @@ -397,7 +397,7 @@ func _0009_enable_sending_push_notificationsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0009_enable_sending_push_notifications.down.sql", size: 49, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0009_enable_sending_push_notifications.down.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe9, 0xae, 0x1b, 0x41, 0xcb, 0x9c, 0x2c, 0x93, 0xc6, 0x2a, 0x77, 0x3, 0xb9, 0x51, 0xe0, 0x68, 0x68, 0x0, 0xf7, 0x5b, 0xb3, 0x1e, 0x94, 0x44, 0xba, 0x9c, 0xd0, 0x3b, 0x80, 0x21, 0x6f, 0xb5}} return a, nil } @@ -417,7 +417,7 @@ func _0009_enable_sending_push_notificationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0009_enable_sending_push_notifications.up.sql", size: 49, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0009_enable_sending_push_notifications.up.sql", size: 49, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1b, 0x80, 0xe4, 0x9c, 0xc8, 0xb8, 0xd5, 0xef, 0xce, 0x74, 0x9b, 0x7b, 0xdd, 0xa, 0x99, 0x1e, 0xef, 0x7f, 0xb8, 0x99, 0x84, 0x4, 0x0, 0x6b, 0x1d, 0x2c, 0xa, 0xf8, 0x2c, 0x4f, 0xb5, 0x44}} return a, nil } @@ -437,7 +437,7 @@ func _0010_add_block_mentionsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0010_add_block_mentions.down.sql", size: 83, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0010_add_block_mentions.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6d, 0x9e, 0x27, 0x1e, 0xba, 0x9f, 0xca, 0xae, 0x98, 0x2e, 0x6e, 0xe3, 0xdd, 0xac, 0x73, 0x34, 0x4e, 0x69, 0x92, 0xb5, 0xf6, 0x9, 0xab, 0x50, 0x35, 0xd, 0xee, 0xeb, 0x3e, 0xcc, 0x7e, 0xce}} return a, nil } @@ -457,7 +457,7 @@ func _0010_add_block_mentionsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0010_add_block_mentions.up.sql", size: 89, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0010_add_block_mentions.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd7, 0x23, 0x85, 0xa2, 0xb5, 0xb6, 0xb4, 0x3f, 0xdc, 0x4e, 0xff, 0xe2, 0x6b, 0x66, 0x68, 0x5e, 0xb2, 0xb4, 0x14, 0xb2, 0x1b, 0x4d, 0xb1, 0xce, 0xf7, 0x6, 0x58, 0xa7, 0xaf, 0x93, 0x3f, 0x25}} return a, nil } @@ -477,7 +477,7 @@ func _0011_allow_webview_permission_requestsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0011_allow_webview_permission_requests.down.sql", size: 0, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0011_allow_webview_permission_requests.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -497,7 +497,7 @@ func _0011_allow_webview_permission_requestsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0011_allow_webview_permission_requests.up.sql", size: 88, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0011_allow_webview_permission_requests.up.sql", size: 88, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x43, 0x5f, 0x22, 0x4c, 0x98, 0x1d, 0xc6, 0xf4, 0x89, 0xaf, 0xf4, 0x44, 0xba, 0xf8, 0x28, 0xa7, 0xb5, 0xb9, 0xf0, 0xf2, 0xcb, 0x5, 0x59, 0x7a, 0xc, 0xdf, 0xd3, 0x38, 0xa4, 0xb8, 0x98, 0xc2}} return a, nil } @@ -517,7 +517,7 @@ func _0012_pending_transactionsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0012_pending_transactions.down.sql", size: 33, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0012_pending_transactions.down.sql", size: 33, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0x41, 0xfe, 0x5c, 0xd8, 0xc3, 0x29, 0xfd, 0x31, 0x78, 0x99, 0x7a, 0xeb, 0x17, 0x62, 0x88, 0x41, 0xb3, 0xe7, 0xb5, 0x5, 0x0, 0x90, 0xa1, 0x7, 0x1a, 0x23, 0x88, 0x81, 0xba, 0x56, 0x9d}} return a, nil } @@ -537,7 +537,7 @@ func _0012_pending_transactionsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0012_pending_transactions.up.sql", size: 321, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0012_pending_transactions.up.sql", size: 321, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd, 0x17, 0xff, 0xd7, 0xa7, 0x49, 0x1e, 0x7b, 0x34, 0x63, 0x7c, 0x53, 0xaa, 0x6b, 0x2d, 0xc8, 0xe0, 0x82, 0x21, 0x90, 0x3a, 0x94, 0xf1, 0xa6, 0xe4, 0x70, 0xe5, 0x85, 0x1a, 0x48, 0x25, 0xb}} return a, nil } @@ -557,7 +557,7 @@ func _0013_favouritesDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0013_favourites.down.sql", size: 23, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0013_favourites.down.sql", size: 23, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x32, 0xf8, 0x55, 0x13, 0x4f, 0x4a, 0x19, 0x83, 0x9c, 0xda, 0x34, 0xb8, 0x3, 0x54, 0x82, 0x1e, 0x99, 0x36, 0x6b, 0x42, 0x3, 0xf6, 0x43, 0xde, 0xe6, 0x32, 0xb6, 0xdf, 0xe2, 0x59, 0x8c, 0x84}} return a, nil } @@ -577,7 +577,7 @@ func _0013_favouritesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0013_favourites.up.sql", size: 132, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0013_favourites.up.sql", size: 132, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbe, 0x1, 0x27, 0x38, 0x76, 0xf5, 0xcb, 0x61, 0xda, 0x5b, 0xce, 0xd9, 0x8b, 0x18, 0x77, 0x61, 0x84, 0xe7, 0x22, 0xe2, 0x13, 0x99, 0xab, 0x32, 0xbc, 0xbe, 0xed, 0x1f, 0x2f, 0xb0, 0xe4, 0x8d}} return a, nil } @@ -597,7 +597,7 @@ func _0014_add_use_mailserversDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0014_add_use_mailservers.down.sql", size: 0, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0014_add_use_mailservers.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -617,7 +617,7 @@ func _0014_add_use_mailserversUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0014_add_use_mailservers.up.sql", size: 111, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0014_add_use_mailservers.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xba, 0x65, 0xbf, 0x1b, 0xc9, 0x6d, 0x45, 0xf2, 0xf5, 0x30, 0x7c, 0xc1, 0xde, 0xb8, 0xe3, 0x3f, 0xa9, 0x2f, 0x9f, 0xea, 0x1, 0x29, 0x29, 0x65, 0xe7, 0x38, 0xab, 0xa4, 0x62, 0xf, 0xd0}} return a, nil } @@ -637,7 +637,7 @@ func _0015_link_previewsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0015_link_previews.down.sql", size: 0, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0015_link_previews.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -657,7 +657,7 @@ func _0015_link_previewsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0015_link_previews.up.sql", size: 203, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0015_link_previews.up.sql", size: 203, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb1, 0xf7, 0x38, 0x25, 0xa6, 0xfc, 0x6b, 0x9, 0xe4, 0xd9, 0xbf, 0x58, 0x7b, 0x80, 0xd8, 0x48, 0x63, 0xde, 0xa5, 0x5e, 0x30, 0xa3, 0xeb, 0x68, 0x8e, 0x6a, 0x9f, 0xfd, 0xf4, 0x46, 0x41, 0x34}} return a, nil } @@ -677,7 +677,7 @@ func _0016_local_notifications_preferencesDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0016_local_notifications_preferences.down.sql", size: 43, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0016_local_notifications_preferences.down.sql", size: 43, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe0, 0x50, 0xc7, 0xdd, 0x53, 0x9c, 0x5d, 0x1e, 0xb5, 0x71, 0x25, 0x50, 0x58, 0xcf, 0x6d, 0xbe, 0x5a, 0x8, 0x12, 0xc9, 0x13, 0xd, 0x9a, 0x3d, 0x4b, 0x7a, 0x2f, 0x1b, 0xe5, 0x23, 0x52, 0x78}} return a, nil } @@ -697,7 +697,7 @@ func _0016_local_notifications_preferencesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0016_local_notifications_preferences.up.sql", size: 204, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0016_local_notifications_preferences.up.sql", size: 204, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3f, 0x3a, 0x16, 0x25, 0xdf, 0xba, 0x62, 0xd3, 0x81, 0x73, 0xc, 0x10, 0x85, 0xbc, 0x8d, 0xe, 0x1d, 0x62, 0xcb, 0xb, 0x6d, 0x8c, 0x4f, 0x63, 0x5f, 0xe2, 0xd, 0xc5, 0x46, 0xa8, 0x35, 0x5b}} return a, nil } @@ -717,7 +717,7 @@ func _0017_bookmarksDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0017_bookmarks.down.sql", size: 22, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0017_bookmarks.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9a, 0x13, 0x2a, 0x44, 0xb0, 0x3, 0x18, 0x63, 0xb8, 0x33, 0xda, 0x3a, 0xeb, 0xb8, 0xcb, 0xd1, 0x98, 0x29, 0xa7, 0xf0, 0x6, 0x9d, 0xc9, 0x62, 0xe7, 0x89, 0x7f, 0x77, 0xaf, 0xec, 0x6b, 0x8f}} return a, nil } @@ -737,7 +737,7 @@ func _0017_bookmarksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0017_bookmarks.up.sql", size: 147, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0017_bookmarks.up.sql", size: 147, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbc, 0x47, 0xe1, 0xe3, 0xd8, 0xc6, 0x4, 0x6d, 0x5f, 0x2f, 0xa, 0x51, 0xa6, 0x8c, 0x6a, 0xe0, 0x3d, 0x8c, 0x91, 0x47, 0xbc, 0x1, 0x75, 0x46, 0x92, 0x2, 0x18, 0x6e, 0xe3, 0x4f, 0x18, 0x57}} return a, nil } @@ -757,7 +757,7 @@ func _0018_profile_pictures_visibilityUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0018_profile_pictures_visibility.up.sql", size: 84, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0018_profile_pictures_visibility.up.sql", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0xe3, 0xc5, 0xec, 0x83, 0x55, 0x45, 0x57, 0x7a, 0xaa, 0xd2, 0xa7, 0x59, 0xa7, 0x87, 0xef, 0x63, 0x19, 0x9c, 0x46, 0x9c, 0xc5, 0x32, 0x89, 0xa4, 0x68, 0x70, 0xd8, 0x83, 0x43, 0xa4, 0x72}} return a, nil } @@ -777,7 +777,7 @@ func _0019_blocks_ranges_extra_dataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0019_blocks_ranges_extra_data.up.sql", size: 89, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0019_blocks_ranges_extra_data.up.sql", size: 89, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa3, 0x96, 0x32, 0x58, 0xf0, 0xb9, 0xe1, 0x70, 0x81, 0xca, 0x8d, 0x45, 0x57, 0x8a, 0x7, 0x5d, 0x9e, 0x2a, 0x30, 0xb, 0xad, 0x5f, 0xf8, 0xd4, 0x30, 0x94, 0x73, 0x37, 0x8d, 0xc1, 0x9a, 0xed}} return a, nil } @@ -797,7 +797,7 @@ func _0020_metricsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0020_metrics.up.sql", size: 235, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0020_metrics.up.sql", size: 235, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe8, 0x32, 0xbc, 0xb6, 0x9b, 0x5a, 0x8f, 0x9f, 0x4c, 0x90, 0x81, 0x3e, 0x2e, 0xd1, 0x23, 0xcd, 0xf1, 0x83, 0x35, 0xca, 0x66, 0x87, 0x52, 0x4e, 0x30, 0x3e, 0x4f, 0xa8, 0xfd, 0x30, 0x16, 0xbd}} return a, nil } @@ -817,7 +817,7 @@ func _0021_add_session_id_to_metricsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0021_add_session_id_to_metrics.up.sql", size: 55, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0021_add_session_id_to_metrics.up.sql", size: 55, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0x81, 0xfc, 0x97, 0xd1, 0x8b, 0xea, 0x8e, 0xd7, 0xc2, 0x53, 0x62, 0xe9, 0xbc, 0xf, 0x8c, 0x46, 0x41, 0x41, 0xb7, 0x6, 0x35, 0xf5, 0xba, 0xbb, 0x28, 0x50, 0x48, 0xbf, 0x36, 0x90, 0x5c}} return a, nil } @@ -837,7 +837,7 @@ func _0022_pending_transfersUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0022_pending_transfers.up.sql", size: 706, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "0022_pending_transfers.up.sql", size: 706, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6a, 0x9, 0xe6, 0x6, 0xae, 0x60, 0xdd, 0xbb, 0x76, 0xac, 0xe0, 0x57, 0x30, 0x67, 0x37, 0x93, 0x40, 0x13, 0xec, 0xf2, 0x6e, 0x61, 0xa, 0x14, 0xb2, 0xb1, 0xbd, 0x91, 0xf8, 0x89, 0xb3, 0xe3}} return a, nil } @@ -857,7 +857,7 @@ func _1618237885_settings_anon_metrics_should_sendUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1618237885_settings_anon_metrics_should_send.up.sql", size: 80, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1618237885_settings_anon_metrics_should_send.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x6c, 0x1d, 0x1f, 0x54, 0x62, 0x18, 0x22, 0x5c, 0xa7, 0x8c, 0x59, 0x24, 0xd3, 0x4d, 0x55, 0xc4, 0x2a, 0x9e, 0x4c, 0x37, 0x6b, 0xfd, 0xac, 0xec, 0xb7, 0x68, 0x21, 0x26, 0x26, 0xf3, 0x92}} return a, nil } @@ -877,7 +877,7 @@ func _1618395756_contacts_onlyUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1618395756_contacts_only.up.sql", size: 136, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1618395756_contacts_only.up.sql", size: 136, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0xe3, 0xd0, 0xe7, 0xf2, 0x6e, 0xbf, 0x27, 0xf6, 0xe2, 0x2e, 0x16, 0x4b, 0x52, 0x3b, 0xcf, 0x63, 0x52, 0xfc, 0x1d, 0x43, 0xba, 0x42, 0xf9, 0x1e, 0x1e, 0x39, 0x40, 0xed, 0x0, 0x20, 0xa8}} return a, nil } @@ -897,7 +897,7 @@ func _1622184614_add_default_sync_periodUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622184614_add_default_sync_period.up.sql", size: 125, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1622184614_add_default_sync_period.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x60, 0x39, 0xeb, 0x8f, 0xdc, 0x1, 0x56, 0xc1, 0x9b, 0xaa, 0xda, 0x44, 0xe0, 0xdb, 0xda, 0x2c, 0xe7, 0x71, 0x8d, 0xbc, 0xc1, 0x9a, 0x4f, 0x48, 0xe0, 0x5e, 0x81, 0x1e, 0x8e, 0x6a, 0x4d, 0x3}} return a, nil } @@ -917,7 +917,7 @@ func _1625872445_user_statusUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1625872445_user_status.up.sql", size: 351, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1625872445_user_status.up.sql", size: 351, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0xa, 0xfe, 0x7a, 0xcc, 0x9e, 0x35, 0x26, 0xb, 0xc8, 0xf2, 0x7d, 0xfa, 0x4b, 0xcf, 0x53, 0x20, 0x76, 0xc7, 0xd, 0xbc, 0x78, 0x4f, 0x74, 0x2d, 0x2e, 0x2e, 0x7e, 0x62, 0xae, 0x78, 0x1f}} return a, nil } @@ -937,7 +937,7 @@ func _1627983977_add_gif_to_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1627983977_add_gif_to_settings.up.sql", size: 102, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1627983977_add_gif_to_settings.up.sql", size: 102, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x63, 0xe6, 0xe1, 0x97, 0x64, 0x4c, 0xe2, 0x14, 0xb1, 0x96, 0x3a, 0xb0, 0xb9, 0xb7, 0xb5, 0x78, 0x4a, 0x39, 0x69, 0x89, 0xb7, 0x89, 0x19, 0xb8, 0x89, 0x1, 0xc5, 0xc2, 0x85, 0x53, 0xe2, 0x83}} return a, nil } @@ -957,7 +957,7 @@ func _1628580203_add_hidden_accountUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1628580203_add_hidden_account.up.sql", size: 67, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1628580203_add_hidden_account.up.sql", size: 67, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0x30, 0xf1, 0xd4, 0x60, 0xe2, 0x28, 0x14, 0xcb, 0x16, 0xb, 0x9, 0xea, 0x17, 0xa, 0x9e, 0x89, 0xa8, 0x32, 0x32, 0xf8, 0x4d, 0xa0, 0xe1, 0xe5, 0x79, 0xbd, 0x7d, 0x79, 0xe9, 0x4c, 0x9e}} return a, nil } @@ -977,7 +977,7 @@ func _1629123384_add_id_to_app_metricsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1629123384_add_id_to_app_metrics.up.sql", size: 589, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1629123384_add_id_to_app_metrics.up.sql", size: 589, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdf, 0x66, 0xc0, 0x69, 0xb, 0xad, 0x49, 0x7c, 0x8c, 0x67, 0xb8, 0xd6, 0x8d, 0x5d, 0x86, 0x1f, 0xa4, 0x53, 0xf5, 0x8, 0x1, 0xfd, 0x38, 0x49, 0xee, 0x84, 0xc0, 0xd8, 0x17, 0x72, 0x3, 0xb3}} return a, nil } @@ -997,7 +997,7 @@ func _1630401853_add_opensea_enabled_to_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630401853_add_opensea_enabled_to_settings.up.sql", size: 70, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1630401853_add_opensea_enabled_to_settings.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0x91, 0x86, 0x15, 0xc8, 0x99, 0xe3, 0xae, 0xa, 0x6e, 0x94, 0x48, 0x51, 0x5b, 0x18, 0xe0, 0xbc, 0xaf, 0x34, 0x75, 0x55, 0x61, 0xd4, 0xc1, 0x85, 0xc7, 0x3d, 0x99, 0x9e, 0x1f, 0x37, 0x56}} return a, nil } @@ -1017,7 +1017,7 @@ func _1630464455_createSaved_addressesTableDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.down.sql", size: 28, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.down.sql", size: 28, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x23, 0x52, 0x39, 0xb5, 0x42, 0xac, 0xcb, 0xa1, 0x44, 0xb7, 0x94, 0x26, 0x24, 0xb2, 0x12, 0xc, 0xc5, 0xbf, 0x63, 0x13, 0x6f, 0x3c, 0x4, 0x7b, 0xf0, 0xd, 0xfa, 0x55, 0x9e, 0x51, 0xf9, 0x7a}} return a, nil } @@ -1037,7 +1037,7 @@ func _1630464455_createSaved_addressesTableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.up.sql", size: 187, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1630464455_create-saved_addresses-table.up.sql", size: 187, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x32, 0xf, 0x56, 0x18, 0xeb, 0x4e, 0xac, 0xd8, 0xd6, 0x91, 0xae, 0x83, 0xcf, 0x91, 0x9e, 0x4, 0x4b, 0x2, 0x1f, 0x6d, 0xba, 0xf6, 0x3, 0xf2, 0x98, 0x72, 0xf6, 0x91, 0x29, 0x96, 0x0, 0x35}} return a, nil } @@ -1057,7 +1057,7 @@ func _1630485153_networksDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630485153_networks.down.sql", size: 21, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1630485153_networks.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xbb, 0x3e, 0x57, 0xb7, 0xf7, 0x8, 0xbd, 0xb5, 0xc2, 0xea, 0xc, 0x45, 0xb7, 0x7, 0x9, 0xca, 0xe7, 0x48, 0x7e, 0x56, 0x4e, 0x44, 0x78, 0x8e, 0xe3, 0x87, 0x63, 0xaf, 0x16, 0x3f, 0xf9, 0x71}} return a, nil } @@ -1077,7 +1077,7 @@ func _1630485153_networksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1630485153_networks.up.sql", size: 394, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1630485153_networks.up.sql", size: 394, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xed, 0x9, 0x1d, 0x3, 0x86, 0xbd, 0xc5, 0xde, 0x3c, 0x1b, 0x40, 0x41, 0x7c, 0x61, 0x8, 0x80, 0x53, 0x87, 0x1b, 0x5a, 0x56, 0xd, 0x88, 0x1d, 0x60, 0x24, 0xce, 0x7b, 0x8f, 0xff, 0xaf, 0x36}} return a, nil } @@ -1097,7 +1097,7 @@ func _1632262444_profile_pictures_show_toUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1632262444_profile_pictures_show_to.up.sql", size: 81, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1632262444_profile_pictures_show_to.up.sql", size: 81, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc3, 0xa2, 0x5a, 0x94, 0xde, 0x86, 0x2a, 0x29, 0xf5, 0xb3, 0x36, 0xe7, 0x53, 0x81, 0x55, 0xc9, 0xb5, 0xc3, 0xf4, 0x8c, 0x65, 0x2c, 0x4c, 0x48, 0xfd, 0x3c, 0xb7, 0x14, 0xb4, 0xea, 0x7a, 0x13}} return a, nil } @@ -1117,7 +1117,7 @@ func _1635942153_add_telemetry_server_url_to_settingsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1635942153_add_telemetry_server_url_to_settings.up.sql", size: 128, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1635942153_add_telemetry_server_url_to_settings.up.sql", size: 128, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6e, 0x9b, 0x1d, 0x39, 0x9c, 0x8d, 0x50, 0x86, 0xdf, 0xe5, 0x81, 0x55, 0xdc, 0x31, 0xcd, 0xb7, 0xc7, 0x5a, 0x67, 0x3b, 0x21, 0x99, 0xa5, 0x74, 0xb8, 0xd3, 0x58, 0xae, 0x29, 0x68, 0x2a, 0x8d}} return a, nil } @@ -1137,7 +1137,7 @@ func _1635942154_add_backup_settingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1635942154_add_backup_setting.up.sql", size: 287, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1635942154_add_backup_setting.up.sql", size: 287, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb7, 0xe7, 0xfb, 0x70, 0x80, 0x5, 0xb4, 0x7b, 0x67, 0x8, 0x6e, 0x5f, 0x45, 0x17, 0xd9, 0x5f, 0x18, 0x66, 0x2f, 0x8a, 0x4f, 0xd4, 0x15, 0xe5, 0x2b, 0xbb, 0x25, 0x7a, 0x30, 0xad, 0x4c, 0x1a}} return a, nil } @@ -1157,7 +1157,7 @@ func _1637745568_add_auto_message_settingUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1637745568_add_auto_message_setting.up.sql", size: 122, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1637745568_add_auto_message_setting.up.sql", size: 122, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1d, 0xd8, 0xd2, 0xc2, 0x3a, 0xd7, 0xf1, 0x96, 0x6a, 0x35, 0xe5, 0x5c, 0xb9, 0xed, 0x4b, 0xf2, 0x5f, 0x80, 0x43, 0xca, 0x40, 0x57, 0x7e, 0xd7, 0x41, 0x9f, 0x70, 0x9f, 0xaf, 0x2a, 0xfc, 0x8f}} return a, nil } @@ -1177,7 +1177,7 @@ func _1640111208_nodeconfigUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1640111208_nodeconfig.up.sql", size: 7659, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "1640111208_nodeconfig.up.sql", size: 7659, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0x5a, 0xc6, 0xed, 0x6, 0xcb, 0x51, 0x8b, 0x78, 0xe9, 0x10, 0x37, 0xd1, 0xad, 0x9b, 0x76, 0x9a, 0xb9, 0x72, 0x85, 0xe7, 0x8a, 0x7f, 0xf0, 0x81, 0xf8, 0x33, 0x59, 0x67, 0x8e, 0xeb, 0xb1}} return a, nil } @@ -1197,7 +1197,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 85, mode: os.FileMode(0664), modTime: time.Unix(1647246959, 0)} + info := bindataFileInfo{name: "doc.go", size: 85, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0xd2, 0xea, 0xc5, 0xd, 0xc4, 0x7f, 0x95, 0x8e, 0xd5, 0xf5, 0x96, 0xf2, 0x1b, 0xcb, 0xc7, 0xc2, 0x46, 0x1, 0x78, 0x1d, 0x5d, 0x59, 0x19, 0x99, 0xdd, 0x5b, 0xf5, 0x63, 0xa5, 0x25, 0xb8}} return a, nil } @@ -1293,64 +1293,114 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ - "0001_app.down.sql": _0001_appDownSql, - "0001_app.up.sql": _0001_appUpSql, - "0002_tokens.down.sql": _0002_tokensDownSql, - "0002_tokens.up.sql": _0002_tokensUpSql, - "0003_settings.down.sql": _0003_settingsDownSql, - "0003_settings.up.sql": _0003_settingsUpSql, - "0004_pending_stickers.down.sql": _0004_pending_stickersDownSql, - "0004_pending_stickers.up.sql": _0004_pending_stickersUpSql, - "0005_waku_mode.down.sql": _0005_waku_modeDownSql, - "0005_waku_mode.up.sql": _0005_waku_modeUpSql, - "0006_appearance.up.sql": _0006_appearanceUpSql, - "0007_enable_waku_default.up.sql": _0007_enable_waku_defaultUpSql, - "0008_add_push_notifications.up.sql": _0008_add_push_notificationsUpSql, - "0009_enable_sending_push_notifications.down.sql": _0009_enable_sending_push_notificationsDownSql, - "0009_enable_sending_push_notifications.up.sql": _0009_enable_sending_push_notificationsUpSql, - "0010_add_block_mentions.down.sql": _0010_add_block_mentionsDownSql, - "0010_add_block_mentions.up.sql": _0010_add_block_mentionsUpSql, - "0011_allow_webview_permission_requests.down.sql": _0011_allow_webview_permission_requestsDownSql, - "0011_allow_webview_permission_requests.up.sql": _0011_allow_webview_permission_requestsUpSql, - "0012_pending_transactions.down.sql": _0012_pending_transactionsDownSql, - "0012_pending_transactions.up.sql": _0012_pending_transactionsUpSql, - "0013_favourites.down.sql": _0013_favouritesDownSql, - "0013_favourites.up.sql": _0013_favouritesUpSql, - "0014_add_use_mailservers.down.sql": _0014_add_use_mailserversDownSql, - "0014_add_use_mailservers.up.sql": _0014_add_use_mailserversUpSql, - "0015_link_previews.down.sql": _0015_link_previewsDownSql, - "0015_link_previews.up.sql": _0015_link_previewsUpSql, - "0016_local_notifications_preferences.down.sql": _0016_local_notifications_preferencesDownSql, - "0016_local_notifications_preferences.up.sql": _0016_local_notifications_preferencesUpSql, - "0017_bookmarks.down.sql": _0017_bookmarksDownSql, - "0017_bookmarks.up.sql": _0017_bookmarksUpSql, - "0018_profile_pictures_visibility.up.sql": _0018_profile_pictures_visibilityUpSql, - "0019_blocks_ranges_extra_data.up.sql": _0019_blocks_ranges_extra_dataUpSql, - "0020_metrics.up.sql": _0020_metricsUpSql, - "0021_add_session_id_to_metrics.up.sql": _0021_add_session_id_to_metricsUpSql, - "0022_pending_transfers.up.sql": _0022_pending_transfersUpSql, - "1618237885_settings_anon_metrics_should_send.up.sql": _1618237885_settings_anon_metrics_should_sendUpSql, - "1618395756_contacts_only.up.sql": _1618395756_contacts_onlyUpSql, - "1622184614_add_default_sync_period.up.sql": _1622184614_add_default_sync_periodUpSql, - "1625872445_user_status.up.sql": _1625872445_user_statusUpSql, - "1627983977_add_gif_to_settings.up.sql": _1627983977_add_gif_to_settingsUpSql, - "1628580203_add_hidden_account.up.sql": _1628580203_add_hidden_accountUpSql, - "1629123384_add_id_to_app_metrics.up.sql": _1629123384_add_id_to_app_metricsUpSql, - "1630401853_add_opensea_enabled_to_settings.up.sql": _1630401853_add_opensea_enabled_to_settingsUpSql, - "1630464455_create-saved_addresses-table.down.sql": _1630464455_createSaved_addressesTableDownSql, - "1630464455_create-saved_addresses-table.up.sql": _1630464455_createSaved_addressesTableUpSql, - "1630485153_networks.down.sql": _1630485153_networksDownSql, - "1630485153_networks.up.sql": _1630485153_networksUpSql, - "1632262444_profile_pictures_show_to.up.sql": _1632262444_profile_pictures_show_toUpSql, - "1635942153_add_telemetry_server_url_to_settings.up.sql": _1635942153_add_telemetry_server_url_to_settingsUpSql, - "1635942154_add_backup_setting.up.sql": _1635942154_add_backup_settingUpSql, - "1637745568_add_auto_message_setting.up.sql": _1637745568_add_auto_message_settingUpSql, - "1640111208_nodeconfig.up.sql": _1640111208_nodeconfigUpSql, - "doc.go": docGo, -} + "0001_app.down.sql": _0001_appDownSql, -// AssetDebug is true if the assets were built with the debug flag enabled. -const AssetDebug = false + "0001_app.up.sql": _0001_appUpSql, + + "0002_tokens.down.sql": _0002_tokensDownSql, + + "0002_tokens.up.sql": _0002_tokensUpSql, + + "0003_settings.down.sql": _0003_settingsDownSql, + + "0003_settings.up.sql": _0003_settingsUpSql, + + "0004_pending_stickers.down.sql": _0004_pending_stickersDownSql, + + "0004_pending_stickers.up.sql": _0004_pending_stickersUpSql, + + "0005_waku_mode.down.sql": _0005_waku_modeDownSql, + + "0005_waku_mode.up.sql": _0005_waku_modeUpSql, + + "0006_appearance.up.sql": _0006_appearanceUpSql, + + "0007_enable_waku_default.up.sql": _0007_enable_waku_defaultUpSql, + + "0008_add_push_notifications.up.sql": _0008_add_push_notificationsUpSql, + + "0009_enable_sending_push_notifications.down.sql": _0009_enable_sending_push_notificationsDownSql, + + "0009_enable_sending_push_notifications.up.sql": _0009_enable_sending_push_notificationsUpSql, + + "0010_add_block_mentions.down.sql": _0010_add_block_mentionsDownSql, + + "0010_add_block_mentions.up.sql": _0010_add_block_mentionsUpSql, + + "0011_allow_webview_permission_requests.down.sql": _0011_allow_webview_permission_requestsDownSql, + + "0011_allow_webview_permission_requests.up.sql": _0011_allow_webview_permission_requestsUpSql, + + "0012_pending_transactions.down.sql": _0012_pending_transactionsDownSql, + + "0012_pending_transactions.up.sql": _0012_pending_transactionsUpSql, + + "0013_favourites.down.sql": _0013_favouritesDownSql, + + "0013_favourites.up.sql": _0013_favouritesUpSql, + + "0014_add_use_mailservers.down.sql": _0014_add_use_mailserversDownSql, + + "0014_add_use_mailservers.up.sql": _0014_add_use_mailserversUpSql, + + "0015_link_previews.down.sql": _0015_link_previewsDownSql, + + "0015_link_previews.up.sql": _0015_link_previewsUpSql, + + "0016_local_notifications_preferences.down.sql": _0016_local_notifications_preferencesDownSql, + + "0016_local_notifications_preferences.up.sql": _0016_local_notifications_preferencesUpSql, + + "0017_bookmarks.down.sql": _0017_bookmarksDownSql, + + "0017_bookmarks.up.sql": _0017_bookmarksUpSql, + + "0018_profile_pictures_visibility.up.sql": _0018_profile_pictures_visibilityUpSql, + + "0019_blocks_ranges_extra_data.up.sql": _0019_blocks_ranges_extra_dataUpSql, + + "0020_metrics.up.sql": _0020_metricsUpSql, + + "0021_add_session_id_to_metrics.up.sql": _0021_add_session_id_to_metricsUpSql, + + "0022_pending_transfers.up.sql": _0022_pending_transfersUpSql, + + "1618237885_settings_anon_metrics_should_send.up.sql": _1618237885_settings_anon_metrics_should_sendUpSql, + + "1618395756_contacts_only.up.sql": _1618395756_contacts_onlyUpSql, + + "1622184614_add_default_sync_period.up.sql": _1622184614_add_default_sync_periodUpSql, + + "1625872445_user_status.up.sql": _1625872445_user_statusUpSql, + + "1627983977_add_gif_to_settings.up.sql": _1627983977_add_gif_to_settingsUpSql, + + "1628580203_add_hidden_account.up.sql": _1628580203_add_hidden_accountUpSql, + + "1629123384_add_id_to_app_metrics.up.sql": _1629123384_add_id_to_app_metricsUpSql, + + "1630401853_add_opensea_enabled_to_settings.up.sql": _1630401853_add_opensea_enabled_to_settingsUpSql, + + "1630464455_create-saved_addresses-table.down.sql": _1630464455_createSaved_addressesTableDownSql, + + "1630464455_create-saved_addresses-table.up.sql": _1630464455_createSaved_addressesTableUpSql, + + "1630485153_networks.down.sql": _1630485153_networksDownSql, + + "1630485153_networks.up.sql": _1630485153_networksUpSql, + + "1632262444_profile_pictures_show_to.up.sql": _1632262444_profile_pictures_show_toUpSql, + + "1635942153_add_telemetry_server_url_to_settings.up.sql": _1635942153_add_telemetry_server_url_to_settingsUpSql, + + "1635942154_add_backup_setting.up.sql": _1635942154_add_backup_settingUpSql, + + "1637745568_add_auto_message_setting.up.sql": _1637745568_add_auto_message_settingUpSql, + + "1640111208_nodeconfig.up.sql": _1640111208_nodeconfigUpSql, + + "doc.go": docGo, +} // AssetDir returns the file names below a certain // directory embedded in the file by go-bindata. @@ -1393,60 +1443,60 @@ type bintree struct { } var _bintree = &bintree{nil, map[string]*bintree{ - "0001_app.down.sql": {_0001_appDownSql, map[string]*bintree{}}, - "0001_app.up.sql": {_0001_appUpSql, map[string]*bintree{}}, - "0002_tokens.down.sql": {_0002_tokensDownSql, map[string]*bintree{}}, - "0002_tokens.up.sql": {_0002_tokensUpSql, map[string]*bintree{}}, - "0003_settings.down.sql": {_0003_settingsDownSql, map[string]*bintree{}}, - "0003_settings.up.sql": {_0003_settingsUpSql, map[string]*bintree{}}, - "0004_pending_stickers.down.sql": {_0004_pending_stickersDownSql, map[string]*bintree{}}, - "0004_pending_stickers.up.sql": {_0004_pending_stickersUpSql, map[string]*bintree{}}, - "0005_waku_mode.down.sql": {_0005_waku_modeDownSql, map[string]*bintree{}}, - "0005_waku_mode.up.sql": {_0005_waku_modeUpSql, map[string]*bintree{}}, - "0006_appearance.up.sql": {_0006_appearanceUpSql, map[string]*bintree{}}, - "0007_enable_waku_default.up.sql": {_0007_enable_waku_defaultUpSql, map[string]*bintree{}}, - "0008_add_push_notifications.up.sql": {_0008_add_push_notificationsUpSql, map[string]*bintree{}}, - "0009_enable_sending_push_notifications.down.sql": {_0009_enable_sending_push_notificationsDownSql, map[string]*bintree{}}, - "0009_enable_sending_push_notifications.up.sql": {_0009_enable_sending_push_notificationsUpSql, map[string]*bintree{}}, - "0010_add_block_mentions.down.sql": {_0010_add_block_mentionsDownSql, map[string]*bintree{}}, - "0010_add_block_mentions.up.sql": {_0010_add_block_mentionsUpSql, map[string]*bintree{}}, - "0011_allow_webview_permission_requests.down.sql": {_0011_allow_webview_permission_requestsDownSql, map[string]*bintree{}}, - "0011_allow_webview_permission_requests.up.sql": {_0011_allow_webview_permission_requestsUpSql, map[string]*bintree{}}, - "0012_pending_transactions.down.sql": {_0012_pending_transactionsDownSql, map[string]*bintree{}}, - "0012_pending_transactions.up.sql": {_0012_pending_transactionsUpSql, map[string]*bintree{}}, - "0013_favourites.down.sql": {_0013_favouritesDownSql, map[string]*bintree{}}, - "0013_favourites.up.sql": {_0013_favouritesUpSql, map[string]*bintree{}}, - "0014_add_use_mailservers.down.sql": {_0014_add_use_mailserversDownSql, map[string]*bintree{}}, - "0014_add_use_mailservers.up.sql": {_0014_add_use_mailserversUpSql, map[string]*bintree{}}, - "0015_link_previews.down.sql": {_0015_link_previewsDownSql, map[string]*bintree{}}, - "0015_link_previews.up.sql": {_0015_link_previewsUpSql, map[string]*bintree{}}, - "0016_local_notifications_preferences.down.sql": {_0016_local_notifications_preferencesDownSql, map[string]*bintree{}}, - "0016_local_notifications_preferences.up.sql": {_0016_local_notifications_preferencesUpSql, map[string]*bintree{}}, - "0017_bookmarks.down.sql": {_0017_bookmarksDownSql, map[string]*bintree{}}, - "0017_bookmarks.up.sql": {_0017_bookmarksUpSql, map[string]*bintree{}}, - "0018_profile_pictures_visibility.up.sql": {_0018_profile_pictures_visibilityUpSql, map[string]*bintree{}}, - "0019_blocks_ranges_extra_data.up.sql": {_0019_blocks_ranges_extra_dataUpSql, map[string]*bintree{}}, - "0020_metrics.up.sql": {_0020_metricsUpSql, map[string]*bintree{}}, - "0021_add_session_id_to_metrics.up.sql": {_0021_add_session_id_to_metricsUpSql, map[string]*bintree{}}, - "0022_pending_transfers.up.sql": {_0022_pending_transfersUpSql, map[string]*bintree{}}, - "1618237885_settings_anon_metrics_should_send.up.sql": {_1618237885_settings_anon_metrics_should_sendUpSql, map[string]*bintree{}}, - "1618395756_contacts_only.up.sql": {_1618395756_contacts_onlyUpSql, map[string]*bintree{}}, - "1622184614_add_default_sync_period.up.sql": {_1622184614_add_default_sync_periodUpSql, map[string]*bintree{}}, - "1625872445_user_status.up.sql": {_1625872445_user_statusUpSql, map[string]*bintree{}}, - "1627983977_add_gif_to_settings.up.sql": {_1627983977_add_gif_to_settingsUpSql, map[string]*bintree{}}, - "1628580203_add_hidden_account.up.sql": {_1628580203_add_hidden_accountUpSql, map[string]*bintree{}}, - "1629123384_add_id_to_app_metrics.up.sql": {_1629123384_add_id_to_app_metricsUpSql, map[string]*bintree{}}, - "1630401853_add_opensea_enabled_to_settings.up.sql": {_1630401853_add_opensea_enabled_to_settingsUpSql, map[string]*bintree{}}, - "1630464455_create-saved_addresses-table.down.sql": {_1630464455_createSaved_addressesTableDownSql, map[string]*bintree{}}, - "1630464455_create-saved_addresses-table.up.sql": {_1630464455_createSaved_addressesTableUpSql, map[string]*bintree{}}, - "1630485153_networks.down.sql": {_1630485153_networksDownSql, map[string]*bintree{}}, - "1630485153_networks.up.sql": {_1630485153_networksUpSql, map[string]*bintree{}}, - "1632262444_profile_pictures_show_to.up.sql": {_1632262444_profile_pictures_show_toUpSql, map[string]*bintree{}}, - "1635942153_add_telemetry_server_url_to_settings.up.sql": {_1635942153_add_telemetry_server_url_to_settingsUpSql, map[string]*bintree{}}, - "1635942154_add_backup_setting.up.sql": {_1635942154_add_backup_settingUpSql, map[string]*bintree{}}, - "1637745568_add_auto_message_setting.up.sql": {_1637745568_add_auto_message_settingUpSql, map[string]*bintree{}}, - "1640111208_nodeconfig.up.sql": {_1640111208_nodeconfigUpSql, map[string]*bintree{}}, - "doc.go": {docGo, map[string]*bintree{}}, + "0001_app.down.sql": &bintree{_0001_appDownSql, map[string]*bintree{}}, + "0001_app.up.sql": &bintree{_0001_appUpSql, map[string]*bintree{}}, + "0002_tokens.down.sql": &bintree{_0002_tokensDownSql, map[string]*bintree{}}, + "0002_tokens.up.sql": &bintree{_0002_tokensUpSql, map[string]*bintree{}}, + "0003_settings.down.sql": &bintree{_0003_settingsDownSql, map[string]*bintree{}}, + "0003_settings.up.sql": &bintree{_0003_settingsUpSql, map[string]*bintree{}}, + "0004_pending_stickers.down.sql": &bintree{_0004_pending_stickersDownSql, map[string]*bintree{}}, + "0004_pending_stickers.up.sql": &bintree{_0004_pending_stickersUpSql, map[string]*bintree{}}, + "0005_waku_mode.down.sql": &bintree{_0005_waku_modeDownSql, map[string]*bintree{}}, + "0005_waku_mode.up.sql": &bintree{_0005_waku_modeUpSql, map[string]*bintree{}}, + "0006_appearance.up.sql": &bintree{_0006_appearanceUpSql, map[string]*bintree{}}, + "0007_enable_waku_default.up.sql": &bintree{_0007_enable_waku_defaultUpSql, map[string]*bintree{}}, + "0008_add_push_notifications.up.sql": &bintree{_0008_add_push_notificationsUpSql, map[string]*bintree{}}, + "0009_enable_sending_push_notifications.down.sql": &bintree{_0009_enable_sending_push_notificationsDownSql, map[string]*bintree{}}, + "0009_enable_sending_push_notifications.up.sql": &bintree{_0009_enable_sending_push_notificationsUpSql, map[string]*bintree{}}, + "0010_add_block_mentions.down.sql": &bintree{_0010_add_block_mentionsDownSql, map[string]*bintree{}}, + "0010_add_block_mentions.up.sql": &bintree{_0010_add_block_mentionsUpSql, map[string]*bintree{}}, + "0011_allow_webview_permission_requests.down.sql": &bintree{_0011_allow_webview_permission_requestsDownSql, map[string]*bintree{}}, + "0011_allow_webview_permission_requests.up.sql": &bintree{_0011_allow_webview_permission_requestsUpSql, map[string]*bintree{}}, + "0012_pending_transactions.down.sql": &bintree{_0012_pending_transactionsDownSql, map[string]*bintree{}}, + "0012_pending_transactions.up.sql": &bintree{_0012_pending_transactionsUpSql, map[string]*bintree{}}, + "0013_favourites.down.sql": &bintree{_0013_favouritesDownSql, map[string]*bintree{}}, + "0013_favourites.up.sql": &bintree{_0013_favouritesUpSql, map[string]*bintree{}}, + "0014_add_use_mailservers.down.sql": &bintree{_0014_add_use_mailserversDownSql, map[string]*bintree{}}, + "0014_add_use_mailservers.up.sql": &bintree{_0014_add_use_mailserversUpSql, map[string]*bintree{}}, + "0015_link_previews.down.sql": &bintree{_0015_link_previewsDownSql, map[string]*bintree{}}, + "0015_link_previews.up.sql": &bintree{_0015_link_previewsUpSql, map[string]*bintree{}}, + "0016_local_notifications_preferences.down.sql": &bintree{_0016_local_notifications_preferencesDownSql, map[string]*bintree{}}, + "0016_local_notifications_preferences.up.sql": &bintree{_0016_local_notifications_preferencesUpSql, map[string]*bintree{}}, + "0017_bookmarks.down.sql": &bintree{_0017_bookmarksDownSql, map[string]*bintree{}}, + "0017_bookmarks.up.sql": &bintree{_0017_bookmarksUpSql, map[string]*bintree{}}, + "0018_profile_pictures_visibility.up.sql": &bintree{_0018_profile_pictures_visibilityUpSql, map[string]*bintree{}}, + "0019_blocks_ranges_extra_data.up.sql": &bintree{_0019_blocks_ranges_extra_dataUpSql, map[string]*bintree{}}, + "0020_metrics.up.sql": &bintree{_0020_metricsUpSql, map[string]*bintree{}}, + "0021_add_session_id_to_metrics.up.sql": &bintree{_0021_add_session_id_to_metricsUpSql, map[string]*bintree{}}, + "0022_pending_transfers.up.sql": &bintree{_0022_pending_transfersUpSql, map[string]*bintree{}}, + "1618237885_settings_anon_metrics_should_send.up.sql": &bintree{_1618237885_settings_anon_metrics_should_sendUpSql, map[string]*bintree{}}, + "1618395756_contacts_only.up.sql": &bintree{_1618395756_contacts_onlyUpSql, map[string]*bintree{}}, + "1622184614_add_default_sync_period.up.sql": &bintree{_1622184614_add_default_sync_periodUpSql, map[string]*bintree{}}, + "1625872445_user_status.up.sql": &bintree{_1625872445_user_statusUpSql, map[string]*bintree{}}, + "1627983977_add_gif_to_settings.up.sql": &bintree{_1627983977_add_gif_to_settingsUpSql, map[string]*bintree{}}, + "1628580203_add_hidden_account.up.sql": &bintree{_1628580203_add_hidden_accountUpSql, map[string]*bintree{}}, + "1629123384_add_id_to_app_metrics.up.sql": &bintree{_1629123384_add_id_to_app_metricsUpSql, map[string]*bintree{}}, + "1630401853_add_opensea_enabled_to_settings.up.sql": &bintree{_1630401853_add_opensea_enabled_to_settingsUpSql, map[string]*bintree{}}, + "1630464455_create-saved_addresses-table.down.sql": &bintree{_1630464455_createSaved_addressesTableDownSql, map[string]*bintree{}}, + "1630464455_create-saved_addresses-table.up.sql": &bintree{_1630464455_createSaved_addressesTableUpSql, map[string]*bintree{}}, + "1630485153_networks.down.sql": &bintree{_1630485153_networksDownSql, map[string]*bintree{}}, + "1630485153_networks.up.sql": &bintree{_1630485153_networksUpSql, map[string]*bintree{}}, + "1632262444_profile_pictures_show_to.up.sql": &bintree{_1632262444_profile_pictures_show_toUpSql, map[string]*bintree{}}, + "1635942153_add_telemetry_server_url_to_settings.up.sql": &bintree{_1635942153_add_telemetry_server_url_to_settingsUpSql, map[string]*bintree{}}, + "1635942154_add_backup_setting.up.sql": &bintree{_1635942154_add_backup_settingUpSql, map[string]*bintree{}}, + "1637745568_add_auto_message_setting.up.sql": &bintree{_1637745568_add_auto_message_settingUpSql, map[string]*bintree{}}, + "1640111208_nodeconfig.up.sql": &bintree{_1640111208_nodeconfigUpSql, map[string]*bintree{}}, + "doc.go": &bintree{docGo, map[string]*bintree{}}, }} // RestoreAsset restores an asset under the given directory. diff --git a/cmd/ping-community/main.go b/cmd/ping-community/main.go index c08d75a94..376113d68 100644 --- a/cmd/ping-community/main.go +++ b/cmd/ping-community/main.go @@ -18,7 +18,6 @@ import ( "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/p2p/enode" "github.com/status-im/status-go/account/generator" "github.com/status-im/status-go/api" "github.com/status-im/status-go/eth-node/types" @@ -145,22 +144,6 @@ func main() { messenger := wakuextservice.Messenger() - mailserver := "enode://e4865fe6c2a9c1a563a6447990d8e9ce672644ae3e08277ce38ec1f1b690eef6320c07a5d60c3b629f5d4494f93d6b86a745a0bf64ab295bbf6579017adc6ed8@206.189.243.161:443" - - mailserverNode, err := enode.ParseV4(mailserver) - if err != nil { - logger.Error("failed to parse mailserver", "error", err) - return - } - err = backend.StatusNode().WakuExtService().UpdateMailservers([]*enode.Node{mailserverNode}) - if err != nil { - logger.Error("failed to update mailservers", "error", err) - return - - } - messenger.SetMailserver(mailserverNode.ID().Bytes()) - - time.Sleep(5 * time.Second) community, err := messenger.RequestCommunityInfoFromMailserver(*communityID) if err != nil { diff --git a/go.mod b/go.mod index 074bf32ae..b0cd4224d 100644 --- a/go.mod +++ b/go.mod @@ -2,7 +2,7 @@ module github.com/status-im/status-go go 1.13 -replace github.com/ethereum/go-ethereum v1.10.13 => github.com/status-im/go-ethereum v1.10.4-status.3 +replace github.com/ethereum/go-ethereum v1.10.13 => github.com/status-im/go-ethereum v1.10.4-status.4 replace github.com/Sirupsen/logrus v1.4.2 => github.com/sirupsen/logrus v1.4.2 diff --git a/go.sum b/go.sum index 4a672fe12..be089a26f 100644 --- a/go.sum +++ b/go.sum @@ -1210,8 +1210,8 @@ github.com/status-im/doubleratchet v3.0.0+incompatible h1:aJ1ejcSERpSzmWZBgtfYti github.com/status-im/doubleratchet v3.0.0+incompatible/go.mod h1:1sqR0+yhiM/bd+wrdX79AOt2csZuJOni0nUDzKNuqOU= github.com/status-im/go-discover v0.0.0-20220220162124-91b97a3e0efe h1:Wz82CcseYsvh71f5tbomwjOc3lMohohqjyvfOhplLsI= github.com/status-im/go-discover v0.0.0-20220220162124-91b97a3e0efe/go.mod h1:sfq3nyUDYY7Z4SnmDZ/KxTNj/7vu+Eyp4bsm1Hfj1QQ= -github.com/status-im/go-ethereum v1.10.4-status.3 h1:RF618iSCvqJtXu3ZSg7XNg6MJaSTgZNJQZkjpTgV3C8= -github.com/status-im/go-ethereum v1.10.4-status.3/go.mod h1:GvIhpdCOgMHI6i5xVPEZOrv/qSMeOFHbZh77AoyZUoE= +github.com/status-im/go-ethereum v1.10.4-status.4 h1:Cs0MoHEhF0LEwii2R8U8jMSEW/gycbHvSJt//KSdP8c= +github.com/status-im/go-ethereum v1.10.4-status.4/go.mod h1:GvIhpdCOgMHI6i5xVPEZOrv/qSMeOFHbZh77AoyZUoE= github.com/status-im/go-multiaddr-ethv4 v1.2.1 h1:09v9n6426NAojNOvdgegqrAotgffWW/UPDwrpJ85DNE= github.com/status-im/go-multiaddr-ethv4 v1.2.1/go.mod h1:SlBebvQcSUM5+/R/YfpfMuu5WyraW47XFmIqLYBmlKU= github.com/status-im/go-waku v0.0.0-20220303160403-f4f307db8734 h1:uyBsGFFH63+SHerRGKRrlWVYI8XFm3PoP4v2ma4RFIs= diff --git a/mailserver/migrations/bindata.go b/mailserver/migrations/bindata.go index 4334db7ab..deebe082d 100644 --- a/mailserver/migrations/bindata.go +++ b/mailserver/migrations/bindata.go @@ -86,7 +86,7 @@ func _1557732988_initialize_dbDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1557732988_initialize_db.down.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1557732988_initialize_db.down.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1599559877, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0x40, 0x78, 0xb7, 0x71, 0x3c, 0x20, 0x3b, 0xc9, 0xb, 0x2f, 0x49, 0xe4, 0xff, 0x1c, 0x84, 0x54, 0xa1, 0x30, 0xe3, 0x90, 0xf8, 0x73, 0xda, 0xb0, 0x2a, 0xea, 0x8e, 0xf1, 0x82, 0xe7, 0xd2}} return a, nil } @@ -106,7 +106,7 @@ func _1557732988_initialize_dbUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1557732988_initialize_db.up.sql", size: 278, mode: os.FileMode(0644), modTime: time.Unix(1633078517, 0)} + info := bindataFileInfo{name: "1557732988_initialize_db.up.sql", size: 278, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x85, 0x41, 0x7a, 0xba, 0x4f, 0xa3, 0x43, 0xc0, 0x63, 0xfa, 0x2c, 0xd1, 0xc5, 0xbb, 0x20, 0xa0, 0x64, 0xa8, 0x3b, 0x65, 0x82, 0xa2, 0x14, 0x28, 0x18, 0x7c, 0x8b, 0x3a, 0x7a, 0xfd, 0xe0}} return a, nil } @@ -126,7 +126,7 @@ func staticGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "static.go", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "static.go", size: 178, mode: os.FileMode(0644), modTime: time.Unix(1599559877, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xab, 0x8a, 0xf4, 0x27, 0x24, 0x9d, 0x2a, 0x1, 0x7b, 0x54, 0xea, 0xae, 0x4a, 0x35, 0x40, 0x92, 0xb5, 0xf9, 0xb3, 0x54, 0x3e, 0x3a, 0x1a, 0x2b, 0xae, 0xfb, 0x9e, 0x82, 0xeb, 0x4c, 0xf, 0x6}} return a, nil } diff --git a/multiaccounts/accounts/database.go b/multiaccounts/accounts/database.go index 9c8739aff..87c5a39d7 100644 --- a/multiaccounts/accounts/database.go +++ b/multiaccounts/accounts/database.go @@ -739,6 +739,16 @@ func (db *Database) GetPinnedMailservers() (rst map[string]string, err error) { return } +func (db *Database) SetPinnedMailservers(mailservers map[string]string) error { + jsonString, err := json.Marshal(mailservers) + if err != nil { + return err + } + + _, err = db.db.Exec("UPDATE settings SET pinned_mailservers = ? WHERE synthetic_id = 'id'", jsonString) + return err +} + func (db *Database) CanUseMailservers() (bool, error) { var result bool err := db.db.QueryRow("SELECT use_mailservers FROM settings WHERE synthetic_id = 'id'").Scan(&result) @@ -748,6 +758,11 @@ func (db *Database) CanUseMailservers() (bool, error) { return result, err } +func (db *Database) SetUseMailservers(value bool) error { + _, err := db.db.Exec("UPDATE settings SET use_mailservers = ?", value) + return err +} + func (db *Database) CanSyncOnMobileNetwork() (bool, error) { var result bool err := db.db.QueryRow("SELECT syncing_on_mobile_network FROM settings WHERE synthetic_id = 'id'").Scan(&result) diff --git a/multiaccounts/migrations/bindata.go b/multiaccounts/migrations/bindata.go index f28355f6f..e5dc39f99 100644 --- a/multiaccounts/migrations/bindata.go +++ b/multiaccounts/migrations/bindata.go @@ -90,7 +90,7 @@ func _0001_accountsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0001_accounts.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "0001_accounts.down.sql", size: 21, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0x61, 0x4c, 0x18, 0xfc, 0xc, 0xdf, 0x5c, 0x1f, 0x5e, 0xd3, 0xbd, 0xfa, 0x12, 0x5e, 0x8d, 0x8d, 0x8b, 0xb9, 0x5f, 0x99, 0x46, 0x63, 0xa5, 0xe3, 0xa6, 0x8a, 0x4, 0xf1, 0x73, 0x8a, 0xe9}} return a, nil } @@ -110,7 +110,7 @@ func _0001_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "0001_accounts.up.sql", size: 163, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "0001_accounts.up.sql", size: 163, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf2, 0xfa, 0x99, 0x8e, 0x96, 0xb3, 0x13, 0x6c, 0x1f, 0x6, 0x27, 0xc5, 0xd2, 0xd4, 0xe0, 0xa5, 0x26, 0x82, 0xa7, 0x26, 0xf2, 0x68, 0x9d, 0xed, 0x9c, 0x3d, 0xbb, 0xdc, 0x37, 0x28, 0xbc, 0x1}} return a, nil } @@ -130,7 +130,7 @@ func _1605007189_identity_imagesDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1605007189_identity_images.down.sql", size: 29, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "1605007189_identity_images.down.sql", size: 29, mode: os.FileMode(0644), modTime: time.Unix(1617280156, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2f, 0xcf, 0xa7, 0xae, 0xd5, 0x4f, 0xcd, 0x14, 0x63, 0x9, 0xbe, 0x39, 0x49, 0x18, 0x96, 0xb2, 0xa3, 0x8, 0x7d, 0x41, 0xdb, 0x50, 0x5d, 0xf5, 0x4d, 0xa2, 0xd, 0x8f, 0x57, 0x79, 0x77, 0x67}} return a, nil } @@ -150,7 +150,7 @@ func _1605007189_identity_imagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1605007189_identity_images.up.sql", size: 268, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "1605007189_identity_images.up.sql", size: 268, mode: os.FileMode(0644), modTime: time.Unix(1617280156, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x50, 0xb6, 0xc1, 0x5c, 0x76, 0x72, 0x6b, 0x22, 0x34, 0xdc, 0x96, 0xdc, 0x2b, 0xfd, 0x2d, 0xbe, 0xcc, 0x1e, 0xd4, 0x5, 0x93, 0xd, 0xc2, 0x51, 0xf3, 0x1a, 0xef, 0x2b, 0x26, 0xa4, 0xeb, 0x65}} return a, nil } @@ -170,7 +170,7 @@ func _1606224181_drop_photo_path_from_accountsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.down.sql", size: 892, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.down.sql", size: 892, mode: os.FileMode(0644), modTime: time.Unix(1617280156, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x90, 0x24, 0x17, 0x7, 0x80, 0x93, 0x6f, 0x8d, 0x5d, 0xaa, 0x8c, 0x79, 0x15, 0x5d, 0xb3, 0x19, 0xd7, 0xd8, 0x39, 0xf9, 0x3a, 0x63, 0x8f, 0x81, 0x15, 0xb6, 0xd6, 0x9a, 0x37, 0xa8, 0x8e, 0x9b}} return a, nil } @@ -190,7 +190,7 @@ func _1606224181_drop_photo_path_from_accountsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.up.sql", size: 866, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "1606224181_drop_photo_path_from_accounts.up.sql", size: 866, mode: os.FileMode(0644), modTime: time.Unix(1617280156, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xff, 0x4c, 0x97, 0xee, 0xef, 0x82, 0xb8, 0x6c, 0x71, 0xbb, 0x50, 0x7b, 0xe6, 0xd9, 0x22, 0x31, 0x7c, 0x1a, 0xfe, 0x91, 0x28, 0xf6, 0x6, 0x36, 0xe, 0xb1, 0xf1, 0xc8, 0x25, 0xac, 0x7e, 0xd6}} return a, nil } @@ -210,7 +210,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "doc.go", size: 74, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x7c, 0x28, 0xcd, 0x47, 0xf2, 0xfa, 0x7c, 0x51, 0x2d, 0xd8, 0x38, 0xb, 0xb0, 0x34, 0x9d, 0x4c, 0x62, 0xa, 0x9e, 0x28, 0xc3, 0x31, 0x23, 0xd9, 0xbb, 0x89, 0x9f, 0xa0, 0x89, 0x1f, 0xe8}} return a, nil } diff --git a/nodecfg/node_config.go b/nodecfg/node_config.go index 4876c006f..44e87c620 100644 --- a/nodecfg/node_config.go +++ b/nodecfg/node_config.go @@ -192,14 +192,13 @@ func insertShhExtConfig(tx *sql.Tx, c *params.NodeConfig) error { enable_last_used_monitor, connection_target, request_delay, max_server_failures, max_message_delivery_attempts, whisper_cache_dir, disable_generic_discovery_topic, send_v1_messages, data_sync_enabled, verify_transaction_url, verify_ens_url, verify_ens_contract_address, verify_transaction_chain_id, anon_metrics_server_enabled, - anon_metrics_send_id, anon_metrics_server_postgres_uri, bandwidth_stats_enabled, enable_mailserver_cycle, synthetic_id - ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'id')`, + anon_metrics_send_id, anon_metrics_server_postgres_uri, bandwidth_stats_enabled, synthetic_id + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 'id')`, c.ShhextConfig.PFSEnabled, c.ShhextConfig.BackupDisabledDataDir, c.ShhextConfig.InstallationID, c.ShhextConfig.MailServerConfirmations, c.ShhextConfig.EnableConnectionManager, c.ShhextConfig.EnableLastUsedMonitor, c.ShhextConfig.ConnectionTarget, c.ShhextConfig.RequestsDelay, c.ShhextConfig.MaxServerFailures, c.ShhextConfig.MaxMessageDeliveryAttempts, c.ShhextConfig.WhisperCacheDir, c.ShhextConfig.DisableGenericDiscoveryTopic, c.ShhextConfig.SendV1Messages, c.ShhextConfig.DataSyncEnabled, c.ShhextConfig.VerifyTransactionURL, c.ShhextConfig.VerifyENSURL, c.ShhextConfig.VerifyENSContractAddress, c.ShhextConfig.VerifyTransactionChainID, c.ShhextConfig.AnonMetricsServerEnabled, - c.ShhextConfig.AnonMetricsSendID, c.ShhextConfig.AnonMetricsServerPostgresURI, c.ShhextConfig.BandwidthStatsEnabled, c.ShhextConfig.EnableMailserverCycle, - ) + c.ShhextConfig.AnonMetricsSendID, c.ShhextConfig.AnonMetricsServerPostgresURI, c.ShhextConfig.BandwidthStatsEnabled) if err != nil { return err } @@ -580,13 +579,13 @@ func loadNodeConfig(tx *sql.Tx) (*params.NodeConfig, error) { enable_last_used_monitor, connection_target, request_delay, max_server_failures, max_message_delivery_attempts, whisper_cache_dir, disable_generic_discovery_topic, send_v1_messages, data_sync_enabled, verify_transaction_url, verify_ens_url, verify_ens_contract_address, verify_transaction_chain_id, anon_metrics_server_enabled, - anon_metrics_send_id, anon_metrics_server_postgres_uri, bandwidth_stats_enabled, enable_mailserver_cycle FROM shhext_config WHERE synthetic_id = 'id' + anon_metrics_send_id, anon_metrics_server_postgres_uri, bandwidth_stats_enabled FROM shhext_config WHERE synthetic_id = 'id' `).Scan( &nodecfg.ShhextConfig.PFSEnabled, &nodecfg.ShhextConfig.BackupDisabledDataDir, &nodecfg.ShhextConfig.InstallationID, &nodecfg.ShhextConfig.MailServerConfirmations, &nodecfg.ShhextConfig.EnableConnectionManager, &nodecfg.ShhextConfig.EnableLastUsedMonitor, &nodecfg.ShhextConfig.ConnectionTarget, &nodecfg.ShhextConfig.RequestsDelay, &nodecfg.ShhextConfig.MaxServerFailures, &nodecfg.ShhextConfig.MaxMessageDeliveryAttempts, &nodecfg.ShhextConfig.WhisperCacheDir, &nodecfg.ShhextConfig.DisableGenericDiscoveryTopic, &nodecfg.ShhextConfig.SendV1Messages, &nodecfg.ShhextConfig.DataSyncEnabled, &nodecfg.ShhextConfig.VerifyTransactionURL, &nodecfg.ShhextConfig.VerifyENSURL, &nodecfg.ShhextConfig.VerifyENSContractAddress, &nodecfg.ShhextConfig.VerifyTransactionChainID, &nodecfg.ShhextConfig.AnonMetricsServerEnabled, - &nodecfg.ShhextConfig.AnonMetricsSendID, &nodecfg.ShhextConfig.AnonMetricsServerPostgresURI, &nodecfg.ShhextConfig.BandwidthStatsEnabled, &nodecfg.ShhextConfig.EnableMailserverCycle, + &nodecfg.ShhextConfig.AnonMetricsSendID, &nodecfg.ShhextConfig.AnonMetricsServerPostgresURI, &nodecfg.ShhextConfig.BandwidthStatsEnabled, ) if err != nil && err != sql.ErrNoRows { return nil, err diff --git a/params/config.go b/params/config.go index 3a5e6bc07..d9445a215 100644 --- a/params/config.go +++ b/params/config.go @@ -554,8 +554,6 @@ type ShhextConfig struct { ConnectionTarget int // RequestsDelay used to ensure that no similar requests are sent within short periods of time. RequestsDelay time.Duration - // EnableMailserverCycle is used to enable the mailserver cycle to switch between trusted servers to retrieve the message history - EnableMailserverCycle bool // MaxServerFailures defines maximum allowed expired requests before server will be swapped to another one. MaxServerFailures int diff --git a/protocol/anonmetrics/migrations/migrations.go b/protocol/anonmetrics/migrations/migrations.go index 168ec90b9..d8e6e468b 100644 --- a/protocol/anonmetrics/migrations/migrations.go +++ b/protocol/anonmetrics/migrations/migrations.go @@ -86,7 +86,7 @@ func _1619446565_postgres_make_anon_metrics_tableDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1630498597, 0)} + info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x75, 0xea, 0x1, 0x74, 0xe6, 0xa3, 0x11, 0xd0, 0x86, 0x87, 0x7e, 0x31, 0xb4, 0x1a, 0x27, 0x5d, 0xda, 0x77, 0xa3, 0xf5, 0x1d, 0x88, 0x79, 0xcf, 0xd5, 0x95, 0x75, 0xd, 0x47, 0xa1, 0x90, 0x5}} return a, nil } @@ -106,7 +106,7 @@ func _1619446565_postgres_make_anon_metrics_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.up.sql", size: 443, mode: os.FileMode(0644), modTime: time.Unix(1630498597, 0)} + info := bindataFileInfo{name: "1619446565_postgres_make_anon_metrics_table.up.sql", size: 443, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0xdc, 0x72, 0x28, 0x3c, 0xf6, 0x94, 0xb0, 0x47, 0x3d, 0xca, 0x55, 0x3d, 0xf7, 0x83, 0xb8, 0x7d, 0x2f, 0x1e, 0x98, 0xb7, 0xde, 0xa, 0xff, 0xa0, 0x52, 0x60, 0x83, 0x56, 0xc5, 0xd1, 0xa2}} return a, nil } @@ -126,7 +126,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 380, mode: os.FileMode(0644), modTime: time.Unix(1630498597, 0)} + info := bindataFileInfo{name: "doc.go", size: 380, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0x1, 0xd4, 0xd6, 0xc7, 0x44, 0xd4, 0xfd, 0x7b, 0x69, 0x1f, 0xe3, 0xe, 0x48, 0x14, 0x99, 0xf0, 0x8e, 0x43, 0xae, 0x54, 0x64, 0xa2, 0x8b, 0x82, 0x1c, 0x2b, 0xb, 0xec, 0xf5, 0xb3, 0xfc}} return a, nil } diff --git a/protocol/encryption/migrations/migrations.go b/protocol/encryption/migrations/migrations.go index e6d44dad5..d61f83e01 100644 --- a/protocol/encryption/migrations/migrations.go +++ b/protocol/encryption/migrations/migrations.go @@ -103,7 +103,7 @@ func _1536754952_initial_schemaDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1536754952_initial_schema.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1536754952_initial_schema.down.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x44, 0xcf, 0x76, 0x71, 0x1f, 0x5e, 0x9a, 0x43, 0xd8, 0xcd, 0xb8, 0xc3, 0x70, 0xc3, 0x7f, 0xfc, 0x90, 0xb4, 0x25, 0x1e, 0xf4, 0x66, 0x20, 0xb8, 0x33, 0x7e, 0xb0, 0x76, 0x1f, 0xc, 0xc0, 0x75}} return a, nil } @@ -123,7 +123,7 @@ func _1536754952_initial_schemaUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1536754952_initial_schema.up.sql", size: 962, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1536754952_initial_schema.up.sql", size: 962, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x90, 0x5a, 0x59, 0x3e, 0x3, 0xe2, 0x3c, 0x81, 0x42, 0xcd, 0x4c, 0x9a, 0xe8, 0xda, 0x93, 0x2b, 0x70, 0xa4, 0xd5, 0x29, 0x3e, 0xd5, 0xc9, 0x27, 0xb6, 0xb7, 0x65, 0xff, 0x0, 0xcb, 0xde}} return a, nil } @@ -143,7 +143,7 @@ func _1539249977_update_ratchet_infoDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1539249977_update_ratchet_info.down.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1539249977_update_ratchet_info.down.sql", size: 311, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1, 0xa4, 0xeb, 0xa0, 0xe6, 0xa0, 0xd4, 0x48, 0xbb, 0xad, 0x6f, 0x7d, 0x67, 0x8c, 0xbd, 0x25, 0xde, 0x1f, 0x73, 0x9a, 0xbb, 0xa8, 0xc9, 0x30, 0xb7, 0xa9, 0x7c, 0xaf, 0xb5, 0x1, 0x61, 0xdd}} return a, nil } @@ -163,7 +163,7 @@ func _1539249977_update_ratchet_infoUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1539249977_update_ratchet_info.up.sql", size: 368, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1539249977_update_ratchet_info.up.sql", size: 368, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc, 0x8e, 0xbf, 0x6f, 0xa, 0xc0, 0xe1, 0x3c, 0x42, 0x28, 0x88, 0x1d, 0xdb, 0xba, 0x1c, 0x83, 0xec, 0xba, 0xd3, 0x5f, 0x5c, 0x77, 0x5e, 0xa7, 0x46, 0x36, 0xec, 0x69, 0xa, 0x4b, 0x17, 0x79}} return a, nil } @@ -183,7 +183,7 @@ func _1540715431_add_versionDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1540715431_add_version.down.sql", size: 127, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1540715431_add_version.down.sql", size: 127, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x9, 0x4, 0xe3, 0x76, 0x2e, 0xb8, 0x9, 0x23, 0xf0, 0x70, 0x93, 0xc4, 0x50, 0xe, 0x9d, 0x84, 0x22, 0x8c, 0x94, 0xd3, 0x24, 0x9, 0x9a, 0xc1, 0xa1, 0x48, 0x45, 0xfd, 0x40, 0x6e, 0xe6}} return a, nil } @@ -203,7 +203,7 @@ func _1540715431_add_versionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1540715431_add_version.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1540715431_add_version.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc7, 0x4c, 0x36, 0x96, 0xdf, 0x16, 0x10, 0xa6, 0x27, 0x1a, 0x79, 0x8b, 0x42, 0x83, 0x23, 0xc, 0x7e, 0xb6, 0x3d, 0x2, 0xda, 0xa4, 0xb4, 0xd, 0x27, 0x55, 0xba, 0xdc, 0xb2, 0x88, 0x8f, 0xa6}} return a, nil } @@ -223,7 +223,7 @@ func _1541164797_add_installationsDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1541164797_add_installations.down.sql", size: 26, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1541164797_add_installations.down.sql", size: 26, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0xfd, 0xe6, 0xd8, 0xca, 0x3b, 0x38, 0x18, 0xee, 0x0, 0x5f, 0x36, 0x9e, 0x1e, 0xd, 0x19, 0x3e, 0xb4, 0x73, 0x53, 0xe9, 0xa5, 0xac, 0xdd, 0xa1, 0x2f, 0xc7, 0x6c, 0xa8, 0xd9, 0xa, 0x88}} return a, nil } @@ -243,7 +243,7 @@ func _1541164797_add_installationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1541164797_add_installations.up.sql", size: 216, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1541164797_add_installations.up.sql", size: 216, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2d, 0x18, 0x26, 0xb8, 0x88, 0x47, 0xdb, 0x83, 0xcc, 0xb6, 0x9d, 0x1c, 0x1, 0xae, 0x2f, 0xde, 0x97, 0x82, 0x3, 0x30, 0xa8, 0x63, 0xa1, 0x78, 0x4b, 0xa5, 0x9, 0x8, 0x75, 0xa2, 0x57, 0x81}} return a, nil } @@ -263,7 +263,7 @@ func _1558084410_add_secretDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1558084410_add_secret.down.sql", size: 56, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1558084410_add_secret.down.sql", size: 56, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x49, 0xb, 0x65, 0xdf, 0x59, 0xbf, 0xe9, 0x5, 0x5b, 0x6f, 0xd5, 0x3a, 0xb7, 0x57, 0xe8, 0x78, 0x38, 0x73, 0x53, 0x57, 0xf7, 0x24, 0x4, 0xe4, 0xa2, 0x49, 0x22, 0xa2, 0xc6, 0xfd, 0x80, 0xa4}} return a, nil } @@ -283,7 +283,7 @@ func _1558084410_add_secretUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1558084410_add_secret.up.sql", size: 301, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1558084410_add_secret.up.sql", size: 301, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x32, 0x36, 0x8e, 0x47, 0xb0, 0x8f, 0xc1, 0xc6, 0xf7, 0xc6, 0x9f, 0x2d, 0x44, 0x75, 0x2b, 0x26, 0xec, 0x6, 0xa0, 0x7b, 0xa5, 0xbd, 0xc8, 0x76, 0x8a, 0x82, 0x68, 0x2, 0x42, 0xb5, 0xf4}} return a, nil } @@ -303,7 +303,7 @@ func _1558588866_add_versionDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1558588866_add_version.down.sql", size: 47, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1558588866_add_version.down.sql", size: 47, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xde, 0x52, 0x34, 0x3c, 0x46, 0x4a, 0xf0, 0x72, 0x47, 0x6f, 0x49, 0x5c, 0xc7, 0xf9, 0x32, 0xce, 0xc4, 0x3d, 0xfd, 0x61, 0xa1, 0x8b, 0x8f, 0xf2, 0x31, 0x34, 0xde, 0x15, 0x49, 0xa6, 0xde, 0xb9}} return a, nil } @@ -323,7 +323,7 @@ func _1558588866_add_versionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1558588866_add_version.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1558588866_add_version.up.sql", size: 57, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2a, 0xea, 0x64, 0x39, 0x61, 0x20, 0x83, 0x83, 0xb, 0x2e, 0x79, 0x64, 0xb, 0x53, 0xfa, 0xfe, 0xc6, 0xf7, 0x67, 0x42, 0xd3, 0x4f, 0xdc, 0x7e, 0x30, 0x32, 0xe8, 0x14, 0x41, 0xe9, 0xe7, 0x3b}} return a, nil } @@ -343,7 +343,7 @@ func _1559627659_add_contact_codeDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1559627659_add_contact_code.down.sql", size: 32, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1559627659_add_contact_code.down.sql", size: 32, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5d, 0x64, 0x6d, 0xce, 0x24, 0x42, 0x20, 0x8d, 0x4f, 0x37, 0xaa, 0x9d, 0xc, 0x57, 0x98, 0xc1, 0xd1, 0x1a, 0x34, 0xcd, 0x9f, 0x8f, 0x34, 0x86, 0xb3, 0xd3, 0xdc, 0xf1, 0x7d, 0xe5, 0x1b, 0x6e}} return a, nil } @@ -363,7 +363,7 @@ func _1559627659_add_contact_codeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1559627659_add_contact_code.up.sql", size: 198, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1559627659_add_contact_code.up.sql", size: 198, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x16, 0xf6, 0xc2, 0x62, 0x9c, 0xd2, 0xc9, 0x1e, 0xd8, 0xea, 0xaa, 0xea, 0x95, 0x8f, 0x89, 0x6a, 0x85, 0x5d, 0x9d, 0x99, 0x78, 0x3c, 0x90, 0x66, 0x99, 0x3e, 0x4b, 0x19, 0x62, 0xfb, 0x31, 0x4d}} return a, nil } @@ -383,7 +383,7 @@ func _1561368210_add_installation_metadataDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1561368210_add_installation_metadata.down.sql", size: 35, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1561368210_add_installation_metadata.down.sql", size: 35, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa8, 0xde, 0x3f, 0xd2, 0x4a, 0x50, 0x98, 0x56, 0xe3, 0xc0, 0xcd, 0x9d, 0xb0, 0x34, 0x3b, 0xe5, 0x62, 0x18, 0xb5, 0x20, 0xc9, 0x3e, 0xdc, 0x6a, 0x40, 0x36, 0x66, 0xea, 0x51, 0x8c, 0x71, 0xf5}} return a, nil } @@ -403,7 +403,7 @@ func _1561368210_add_installation_metadataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1561368210_add_installation_metadata.up.sql", size: 267, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "1561368210_add_installation_metadata.up.sql", size: 267, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb4, 0x71, 0x8f, 0x29, 0xb1, 0xaa, 0xd6, 0xd1, 0x8c, 0x17, 0xef, 0x6c, 0xd5, 0x80, 0xb8, 0x2c, 0xc3, 0xfe, 0xec, 0x24, 0x4d, 0xc8, 0x25, 0xd3, 0xb4, 0xcd, 0xa9, 0xac, 0x63, 0x61, 0xb2, 0x9c}} return a, nil } @@ -423,7 +423,7 @@ func _1632236298_add_communitiesDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1632236298_add_communities.down.sql", size: 151, mode: os.FileMode(0644), modTime: time.Unix(1642505279, 0)} + info := bindataFileInfo{name: "1632236298_add_communities.down.sql", size: 151, mode: os.FileMode(0644), modTime: time.Unix(1643037480, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x26, 0xe5, 0x47, 0xd1, 0xe5, 0xec, 0x5b, 0x3e, 0xdc, 0x22, 0xf4, 0x27, 0xee, 0x70, 0xf3, 0x9, 0x4f, 0xd2, 0x9f, 0x92, 0xf, 0x5a, 0x18, 0x11, 0xb7, 0x40, 0xab, 0xf1, 0x98, 0x72, 0xd6, 0x60}} return a, nil } @@ -443,7 +443,7 @@ func _1632236298_add_communitiesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1632236298_add_communities.up.sql", size: 584, mode: os.FileMode(0644), modTime: time.Unix(1642505279, 0)} + info := bindataFileInfo{name: "1632236298_add_communities.up.sql", size: 584, mode: os.FileMode(0644), modTime: time.Unix(1643037480, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0xe0, 0x1, 0x6e, 0x84, 0xc, 0x35, 0xe4, 0x5a, 0xf, 0xbe, 0xcb, 0xf7, 0xd2, 0xa8, 0x25, 0xf5, 0xdb, 0x7, 0xcb, 0xa3, 0xe6, 0xf4, 0xc4, 0x1b, 0xa5, 0xec, 0x32, 0x1e, 0x1e, 0x48, 0x60}} return a, nil } @@ -463,7 +463,7 @@ func _1636536507_add_index_bundlesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1636536507_add_index_bundles.up.sql", size: 347, mode: os.FileMode(0644), modTime: time.Unix(1637232499, 0)} + info := bindataFileInfo{name: "1636536507_add_index_bundles.up.sql", size: 347, mode: os.FileMode(0644), modTime: time.Unix(1643037480, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf1, 0xb9, 0x3c, 0x16, 0xfc, 0xfb, 0xb2, 0xb4, 0x3b, 0xfe, 0xdc, 0xf5, 0x9c, 0x42, 0xa0, 0xa0, 0xd4, 0xd, 0x5b, 0x97, 0x10, 0x80, 0x95, 0xe, 0x13, 0xc1, 0x18, 0x8, 0xee, 0xf, 0x99, 0xee}} return a, nil } @@ -483,7 +483,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 377, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "doc.go", size: 377, mode: os.FileMode(0644), modTime: time.Unix(1603694100, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xef, 0xaf, 0xdf, 0xcf, 0x65, 0xae, 0x19, 0xfc, 0x9d, 0x29, 0xc1, 0x91, 0xaf, 0xb5, 0xd5, 0xb1, 0x56, 0xf3, 0xee, 0xa8, 0xba, 0x13, 0x65, 0xdb, 0xab, 0xcf, 0x4e, 0xac, 0x92, 0xe9, 0x60, 0xf1}} return a, nil } diff --git a/protocol/message_persistence.go b/protocol/message_persistence.go index 2729e1924..ea02fea9e 100644 --- a/protocol/message_persistence.go +++ b/protocol/message_persistence.go @@ -1511,8 +1511,8 @@ func (db sqlitePersistence) UpdateMessageOutgoingStatus(id string, newOutgoingSt _, err := db.db.Exec(` UPDATE user_messages SET outgoing_status = ? - WHERE id = ? - `, newOutgoingStatus, id) + WHERE id = ? AND outgoing_status != ? + `, newOutgoingStatus, id, common.OutgoingStatusDelivered) return err } diff --git a/protocol/messenger.go b/protocol/messenger.go index a6722744c..8a84e148b 100644 --- a/protocol/messenger.go +++ b/protocol/messenger.go @@ -15,8 +15,6 @@ import ( "sync" "time" - "github.com/libp2p/go-libp2p-core/peer" - "github.com/status-im/status-go/services/browsers" "github.com/pkg/errors" @@ -29,7 +27,6 @@ import ( gethcommon "github.com/ethereum/go-ethereum/common" "github.com/ethereum/go-ethereum/p2p" - "github.com/ethereum/go-ethereum/p2p/enode" "github.com/status-im/status-go/appdatabase" "github.com/status-im/status-go/appmetrics" "github.com/status-im/status-go/connection" @@ -117,7 +114,6 @@ type Messenger struct { allInstallations *installationMap modifiedInstallations *stringBoolMap installationID string - mailserver []byte mailserverCycle mailserverCycle database *sql.DB multiAccounts *multiaccounts.Database @@ -133,7 +129,8 @@ type Messenger struct { telemetryClient *telemetry.Client // TODO(samyoul) Determine if/how the remaining usage of this mutex can be removed - mutex sync.Mutex + mutex sync.Mutex + mailPeersMutex sync.Mutex } type connStatus int @@ -148,11 +145,11 @@ type peerStatus struct { status connStatus canConnectAfter time.Time lastConnectionAttempt time.Time + mailserver mailserversDB.Mailserver } type mailserverCycle struct { sync.RWMutex - activeMailserver *enode.Node // For usage with wakuV1 - activeStoreNode *peer.ID // For usage with wakuV2 + activeMailserver *mailserversDB.Mailserver peers map[string]peerStatus events chan *p2p.PeerEvent subscription event.Subscription @@ -488,7 +485,7 @@ func (m *Messenger) processSentMessages(ids []string) error { return errors.Wrapf(err, "Can't save raw message marked as sent") } - err = m.UpdateMessageOutgoingStatus(id, "sent") + err = m.UpdateMessageOutgoingStatus(id, common.OutgoingStatusSent) if err != nil { return err } @@ -643,20 +640,15 @@ func (m *Messenger) Start() (*MessengerResponse, error) { } response := &MessengerResponse{} - if m.mailserversDatabase != nil { - mailservers, err := m.mailserversDatabase.Mailservers() - if err != nil { - return nil, err - } - response.Mailservers = mailservers - + mailservers, err := m.allMailservers() + if err != nil { + return nil, err } - if m.config.featureFlags.MailserverCycle { - err := m.StartMailserverCycle() - if err != nil { - return nil, err - } + response.Mailservers = mailservers + err = m.StartMailserverCycle() + if err != nil { + return nil, err } err = m.httpServer.Start() @@ -702,15 +694,18 @@ func (m *Messenger) handleConnectionChange(online bool) { } m.shouldPublishContactCode = false } + go func() { + _, err := m.RequestAllHistoricMessagesWithRetries() + if err != nil { + m.logger.Warn("failed to fetch historic messages", zap.Error(err)) + } + }() } else { if m.pushNotificationClient != nil { m.pushNotificationClient.Offline() } - if m.config.featureFlags.MailserverCycle { - m.DisconnectActiveMailserver() // force mailserver cycle to run again - } } m.ensVerifier.SetOnline(online) @@ -2934,6 +2929,7 @@ func (m *Messenger) markDeliveredMessages(acks [][]byte) { messageID := messageIDBytes.String() //mark messages as delivered + err = m.UpdateMessageOutgoingStatus(messageID, common.OutgoingStatusDelivered) if err != nil { m.logger.Debug("Can't set message status as delivered", zap.Error(err)) @@ -3838,24 +3834,6 @@ func (m *Messenger) storeSyncBookmarks(bookmarkMap map[string]*browsers.Bookmark return m.browserDatabase.StoreSyncBookmarks(bookmarks) } -// SetMailserver sets the currently used mailserver -func (m *Messenger) SetMailserver(peer []byte) { - m.mailserver = peer -} - -func (m *Messenger) RequestHistoricMessages( - ctx context.Context, - from, to uint32, - cursor []byte, - storeCursor *types.StoreRequestCursor, - waitForResponse bool, -) ([]byte, *types.StoreRequestCursor, error) { - if m.mailserver == nil { - return nil, nil, errors.New("no mailserver selected") - } - return m.transport.SendMessagesRequest(ctx, m.mailserver, from, to, cursor, storeCursor, waitForResponse) -} - func (m *Messenger) MessageByID(id string) (*common.Message, error) { return m.persistence.MessageByID(id) } diff --git a/protocol/messenger_communities.go b/protocol/messenger_communities.go index ba19c8623..6acedb248 100644 --- a/protocol/messenger_communities.go +++ b/protocol/messenger_communities.go @@ -790,14 +790,16 @@ func (m *Messenger) requestCommunityInfoFromMailserver(communityID string, waitF now := uint32(m.transport.GetCurrentTime() / 1000) monthAgo := now - (86400 * 30) - _, _, err := m.RequestHistoricMessagesForFilter(context.Background(), - monthAgo, - now, - nil, - nil, - filter, - waitForResponse) - + _, err := m.performMailserverRequest(func() (*MessengerResponse, error) { + _, _, err := m.RequestHistoricMessagesForFilter(context.Background(), + monthAgo, + now, + nil, + nil, + filter, + waitForResponse) + return nil, err + }) if err != nil { return nil, err } @@ -817,7 +819,7 @@ func (m *Messenger) requestCommunityInfoFromMailserver(communityID string, waitF select { case <-time.After(200 * time.Millisecond): //send signal to client that message status updated - community, err = m.communitiesManager.GetByIDString(communityID) + community, err := m.communitiesManager.GetByIDString(communityID) if err != nil { return nil, err } diff --git a/protocol/messenger_config.go b/protocol/messenger_config.go index e182fb880..713cfa1cc 100644 --- a/protocol/messenger_config.go +++ b/protocol/messenger_config.go @@ -255,10 +255,3 @@ func WithClusterConfig(cc params.ClusterConfig) Option { return nil } } - -func WithMailserverCycle() func(c *config) error { - return func(c *config) error { - c.featureFlags.MailserverCycle = true - return nil - } -} diff --git a/protocol/messenger_contacts.go b/protocol/messenger_contacts.go index e3c0f7894..ee4acec92 100644 --- a/protocol/messenger_contacts.go +++ b/protocol/messenger_contacts.go @@ -134,7 +134,10 @@ func (m *Messenger) AddContact(ctx context.Context, request *requests.AddContact if err != nil { return nil, err } - m.scheduleSyncFilter(filter) + _, err = m.scheduleSyncFilters([]*transport.Filter{filter}) + if err != nil { + return nil, err + } ensName, err = m.settings.ENSName() if err != nil { diff --git a/protocol/messenger_mailserver.go b/protocol/messenger_mailserver.go index 4f413fcbd..34e3d0262 100644 --- a/protocol/messenger_mailserver.go +++ b/protocol/messenger_mailserver.go @@ -21,13 +21,15 @@ import ( // tolerance is how many seconds of potentially out-of-order messages we want to fetch var tolerance uint32 = 60 -var mailserverRequestTimeout = 60 * time.Second +var mailserverRequestTimeout = 10 * time.Second var oneMonthInSeconds uint32 = 31 * 24 * 60 * 60 +var mailserverMaxTries uint = 2 +var mailserverMaxFailedRequests uint = 2 var ErrNoFiltersForChat = errors.New("no filter registered for given chat") func (m *Messenger) shouldSync() (bool, error) { - if m.mailserver == nil || !m.online() { + if m.mailserverCycle.activeMailserver == nil || !m.online() { return false, nil } @@ -65,27 +67,80 @@ func (m *Messenger) scheduleSyncChat(chat *Chat) (bool, error) { } go func() { - response, err := m.syncChat(chat.ID) + _, err := m.performMailserverRequest(func() (*MessengerResponse, error) { + response, err := m.syncChat(chat.ID) + if err != nil { + m.logger.Error("failed to sync chat", zap.Error(err)) + return nil, err + } + + if m.config.messengerSignalsHandler != nil { + m.config.messengerSignalsHandler.MessengerResponse(response) + } + return response, nil + }) if err != nil { - m.logger.Error("failed to sync chat", zap.Error(err)) - return + m.logger.Error("failed to perform mailserver request", zap.Error(err)) } - - if m.config.messengerSignalsHandler != nil { - m.config.messengerSignalsHandler.MessengerResponse(response) - } - }() return true, nil } -func (m *Messenger) scheduleSyncFilter(filter *transport.Filter) { - _, err := m.scheduleSyncFilters([]*transport.Filter{filter}) +func (m *Messenger) connectToNewMailserverAndWait() error { + // Handle pinned mailservers + m.logger.Info("disconnecting mailserver") + pinnedMailserver, err := m.getPinnedMailserver() if err != nil { - m.logger.Error("failed to schedule syncing filters", zap.Error(err)) + m.logger.Error("could not obtain the pinned mailserver", zap.Error(err)) + return err + } + // If pinned mailserver is not nil, no need to disconnect and wait for it to be available + if pinnedMailserver == nil { + m.disconnectActiveMailserver() } + return m.findNewMailserver() +} + +func (m *Messenger) performMailserverRequest(fn func() (*MessengerResponse, error)) (*MessengerResponse, error) { + + m.mailserverCycle.Lock() + defer m.mailserverCycle.Unlock() + var tries uint = 0 + for tries < mailserverMaxTries { + if !m.isActiveMailserverAvailable() { + return nil, errors.New("mailserver not available") + } + + m.logger.Info("trying performing mailserver requests", zap.Uint("try", tries)) + activeMailserver := m.getActiveMailserver() + // Make sure we are connected to a mailserver + if activeMailserver == nil { + return nil, errors.New("mailserver not available") + } + + // Peform request + response, err := fn() + if err == nil { + // Reset failed requests + activeMailserver.FailedRequests = 0 + return response, nil + } + + tries++ + // Increment failed requests + activeMailserver.FailedRequests++ + + // Change mailserver + if activeMailserver.FailedRequests >= mailserverMaxFailedRequests { + return nil, errors.New("too many failed requests") + } + // Wait a couple of second not to spam + time.Sleep(2 * time.Second) + + } + return nil, errors.New("failed to perform mailserver request") } func (m *Messenger) scheduleSyncFilters(filters []*transport.Filter) (bool, error) { @@ -100,15 +155,21 @@ func (m *Messenger) scheduleSyncFilters(filters []*transport.Filter) (bool, erro } go func() { - response, err := m.syncFilters(filters) + _, err := m.performMailserverRequest(func() (*MessengerResponse, error) { + response, err := m.syncFilters(filters) + if err != nil { + m.logger.Error("failed to sync filter", zap.Error(err)) + return nil, err + } + + if m.config.messengerSignalsHandler != nil { + m.config.messengerSignalsHandler.MessengerResponse(response) + } + return response, nil + }) if err != nil { - m.logger.Error("failed to sync filter", zap.Error(err)) - return - } - - if m.config.messengerSignalsHandler != nil { - m.config.messengerSignalsHandler.MessengerResponse(response) + m.logger.Error("failed to perform mailserver request", zap.Error(err)) } }() @@ -228,6 +289,10 @@ func (m *Messenger) resetFiltersPriority(filters []*transport.Filter) { } } +func (m *Messenger) RequestAllHistoricMessagesWithRetries() (*MessengerResponse, error) { + return m.performMailserverRequest(m.RequestAllHistoricMessages) +} + // RequestAllHistoricMessages requests all the historic messages for any topic func (m *Messenger) RequestAllHistoricMessages() (*MessengerResponse, error) { shouldSync, err := m.shouldSync() @@ -256,7 +321,11 @@ func (m *Messenger) RequestAllHistoricMessages() (*MessengerResponse, error) { filters := m.transport.Filters() m.updateFiltersPriority(filters) defer m.resetFiltersPriority(filters) - return m.syncFilters(filters) + response, err := m.syncFilters(filters) + if err != nil { + return nil, err + } + return response, nil } func getPrioritizedBatches() []int { @@ -485,10 +554,15 @@ func (m *Messenger) processMailserverBatch(batch MailserverBatch) error { ctx, cancel := context.WithTimeout(context.Background(), mailserverRequestTimeout) defer cancel() - cursor, storeCursor, err := m.transport.SendMessagesRequestForTopics(ctx, m.mailserver, batch.From, batch.To, nil, nil, batch.Topics, true) + mailserverID, err := m.activeMailserverID() if err != nil { return err } + cursor, storeCursor, err := m.transport.SendMessagesRequestForTopics(ctx, mailserverID, batch.From, batch.To, nil, nil, batch.Topics, true) + if err != nil { + logger.Error("failed to send request", zap.Error(err)) + return err + } for len(cursor) != 0 || storeCursor != nil { logger.Info("retrieved cursor", zap.String("cursor", types.EncodeHex(cursor))) @@ -496,7 +570,7 @@ func (m *Messenger) processMailserverBatch(batch MailserverBatch) error { ctx, cancel := context.WithTimeout(context.Background(), mailserverRequestTimeout) defer cancel() - cursor, storeCursor, err = m.transport.SendMessagesRequestForTopics(ctx, m.mailserver, batch.From, batch.To, cursor, storeCursor, batch.Topics, true) + cursor, storeCursor, err = m.transport.SendMessagesRequestForTopics(ctx, mailserverID, batch.From, batch.To, cursor, storeCursor, batch.Topics, true) if err != nil { return err } @@ -506,8 +580,10 @@ func (m *Messenger) processMailserverBatch(batch MailserverBatch) error { return err } } - logger.Info("waiting until message processed") - m.waitUntilP2PMessagesProcessed() + // NOTE(camellos): Disabling for now, not critical and I'd rather take a bit more time + // to test it + //logger.Info("waiting until message processed") + //m.waitUntilP2PMessagesProcessed() logger.Info("synced topic") return nil } @@ -528,65 +604,85 @@ func (m *Messenger) RequestHistoricMessagesForFilter( filter *transport.Filter, waitForResponse bool, ) ([]byte, *types.StoreRequestCursor, error) { - if m.mailserver == nil { - return nil, nil, errors.New("no mailserver selected") + + activeMailserverID, err := m.activeMailserverID() + if err != nil { + return nil, nil, err } - return m.transport.SendMessagesRequestForFilter(ctx, m.mailserver, from, to, cursor, previousStoreCursor, filter, waitForResponse) + if activeMailserverID == nil { + m.cycleMailservers() + activeMailserverID, err = m.activeMailserverID() + if err != nil { + return nil, nil, err + } + if activeMailserverID == nil { + return nil, nil, errors.New("no mailserver selected") + } + } + + return m.transport.SendMessagesRequestForFilter(ctx, activeMailserverID, from, to, cursor, previousStoreCursor, filter, waitForResponse) } func (m *Messenger) SyncChatFromSyncedFrom(chatID string) (uint32, error) { - topics, err := m.topicsForChat(chatID) - if err != nil { - return 0, nil - } - chat, ok := m.allChats.Load(chatID) - if !ok { - return 0, ErrChatNotFound - } - - defaultSyncPeriod, err := m.settings.GetDefaultSyncPeriod() - if err != nil { - return 0, err - } - batch := MailserverBatch{ - ChatIDs: []string{chatID}, - To: chat.SyncedFrom, - From: chat.SyncedFrom - defaultSyncPeriod, - Topics: topics, - } - - requestID := uuid.NewRandom().String() - - if m.config.messengerSignalsHandler != nil { - m.config.messengerSignalsHandler.HistoryRequestStarted(requestID, 1) - } - - err = m.processMailserverBatch(batch) - if err != nil { - if m.config.messengerSignalsHandler != nil { - m.config.messengerSignalsHandler.HistoryRequestFailed(requestID, err) + var from uint32 + _, err := m.performMailserverRequest(func() (*MessengerResponse, error) { + topics, err := m.topicsForChat(chatID) + if err != nil { + return nil, nil } - return 0, err - } - if m.config.messengerSignalsHandler != nil { - m.config.messengerSignalsHandler.HistoryRequestBatchProcessed(requestID, 1, 1) - m.config.messengerSignalsHandler.HistoryRequestCompleted(requestID) - } + chat, ok := m.allChats.Load(chatID) + if !ok { + return nil, ErrChatNotFound + } - if chat.SyncedFrom == 0 || chat.SyncedFrom > batch.From { - chat.SyncedFrom = batch.From - } + defaultSyncPeriod, err := m.settings.GetDefaultSyncPeriod() + if err != nil { + return nil, err + } + batch := MailserverBatch{ + ChatIDs: []string{chatID}, + To: chat.SyncedFrom, + From: chat.SyncedFrom - defaultSyncPeriod, + Topics: topics, + } - m.logger.Debug("setting sync timestamps", zap.Int64("from", int64(batch.From)), zap.Int64("to", int64(chat.SyncedTo)), zap.String("chatID", chatID)) + requestID := uuid.NewRandom().String() - err = m.persistence.SetSyncTimestamps(batch.From, chat.SyncedTo, chat.ID) + if m.config.messengerSignalsHandler != nil { + m.config.messengerSignalsHandler.HistoryRequestStarted(requestID, 1) + } + + err = m.processMailserverBatch(batch) + if err != nil { + + if m.config.messengerSignalsHandler != nil { + m.config.messengerSignalsHandler.HistoryRequestFailed(requestID, err) + } + return nil, err + } + + if m.config.messengerSignalsHandler != nil { + m.config.messengerSignalsHandler.HistoryRequestBatchProcessed(requestID, 1, 1) + m.config.messengerSignalsHandler.HistoryRequestCompleted(requestID) + } + + if chat.SyncedFrom == 0 || chat.SyncedFrom > batch.From { + chat.SyncedFrom = batch.From + } + + m.logger.Debug("setting sync timestamps", zap.Int64("from", int64(batch.From)), zap.Int64("to", int64(chat.SyncedTo)), zap.String("chatID", chatID)) + + err = m.persistence.SetSyncTimestamps(batch.From, chat.SyncedTo, chat.ID) + from = batch.From + return nil, err + }) if err != nil { return 0, err } - return batch.From, nil + return from, nil } func (m *Messenger) FillGaps(chatID string, messageIDs []string) error { @@ -650,7 +746,7 @@ func (m *Messenger) FillGaps(chatID string, messageIDs []string) error { return m.persistence.DeleteMessages(messageIDs) } -func (m *Messenger) waitUntilP2PMessagesProcessed() { +func (m *Messenger) waitUntilP2PMessagesProcessed() { // nolint: unused ticker := time.NewTicker(50 * time.Millisecond) @@ -669,6 +765,34 @@ func (m *Messenger) LoadFilters(filters []*transport.Filter) ([]*transport.Filte return m.transport.LoadFilters(filters) } +func (m *Messenger) ToggleUseMailservers(value bool) error { + m.mailserverCycle.Lock() + defer m.mailserverCycle.Unlock() + + err := m.settings.SetUseMailservers(value) + if err != nil { + return err + } + + if value { + m.cycleMailservers() + return nil + } + + m.disconnectActiveMailserver() + return nil +} + +func (m *Messenger) SetPinnedMailservers(mailservers map[string]string) error { + err := m.settings.SetPinnedMailservers(mailservers) + if err != nil { + return err + } + + m.cycleMailservers() + return nil +} + func (m *Messenger) RemoveFilters(filters []*transport.Filter) error { return m.transport.RemoveFilters(filters) } diff --git a/protocol/messenger_mailserver_cycle.go b/protocol/messenger_mailserver_cycle.go index 2a9a567fa..724c84dbe 100644 --- a/protocol/messenger_mailserver_cycle.go +++ b/protocol/messenger_mailserver_cycle.go @@ -7,16 +7,11 @@ import ( "math/big" "sort" "strings" - "sync" "time" - "github.com/libp2p/go-libp2p-core/peer" - "github.com/multiformats/go-multiaddr" "github.com/pkg/errors" "go.uber.org/zap" - "github.com/status-im/go-waku/waku/v2/dnsdisc" - "github.com/ethereum/go-ethereum/p2p" "github.com/ethereum/go-ethereum/p2p/enode" "github.com/status-im/status-go/params" @@ -24,29 +19,51 @@ import ( "github.com/status-im/status-go/signal" ) -const defaultBackoff = 30 * time.Second +const defaultBackoff = 10 * time.Second +const graylistBackoff = 3 * time.Minute -type byRTTMs []*mailservers.PingResult +func (m *Messenger) mailserversByFleet(fleet string) []mailservers.Mailserver { + var items []mailservers.Mailserver + for _, ms := range mailservers.DefaultMailservers() { + if ms.Fleet == fleet { + items = append(items, ms) + } + } + return items +} -func (s byRTTMs) Len() int { +type byRTTMsAndCanConnectBefore []SortedMailserver + +func (s byRTTMsAndCanConnectBefore) Len() int { return len(s) } -func (s byRTTMs) Swap(i, j int) { +func (s byRTTMsAndCanConnectBefore) Swap(i, j int) { s[i], s[j] = s[j], s[i] } -func (s byRTTMs) Less(i, j int) bool { - return *s[i].RTTMs < *s[j].RTTMs +func (s byRTTMsAndCanConnectBefore) Less(i, j int) bool { + // Slightly inaccurate as time sensitive sorting, but it does not matter so much + now := time.Now() + if s[i].CanConnectAfter.Before(now) && s[j].CanConnectAfter.Before(now) { + return s[i].RTTMs < s[j].RTTMs + } + return s[i].CanConnectAfter.Before(s[j].CanConnectAfter) +} + +func (m *Messenger) activeMailserverID() ([]byte, error) { + if m.mailserverCycle.activeMailserver == nil { + return nil, nil + } + + return m.mailserverCycle.activeMailserver.IDBytes() } func (m *Messenger) StartMailserverCycle() error { - canUseMailservers, err := m.settings.CanUseMailservers() - if err != nil { - return err - } - if !canUseMailservers { - return errors.New("mailserver use is not allowed") + + if m.server == nil { + m.logger.Warn("not starting mailserver cycle") + return nil } m.logger.Debug("started mailserver cycle") @@ -54,7 +71,6 @@ func (m *Messenger) StartMailserverCycle() error { m.mailserverCycle.events = make(chan *p2p.PeerEvent, 20) m.mailserverCycle.subscription = m.server.SubscribeEvents(m.mailserverCycle.events) - go m.checkMailserverConnection() go m.updateWakuV1PeerStatus() go m.updateWakuV2PeerStatus() return nil @@ -66,67 +82,59 @@ func (m *Messenger) DisconnectActiveMailserver() { m.disconnectActiveMailserver() } -func (m *Messenger) disconnectV1Mailserver() { - // TODO: remove this function once WakuV1 is deprecated +func (m *Messenger) disconnectMailserver() error { if m.mailserverCycle.activeMailserver == nil { - return + m.logger.Info("no active mailserver") + return nil } - m.logger.Info("Disconnecting active mailserver", zap.Any("nodeID", m.mailserverCycle.activeMailserver.ID())) - pInfo, ok := m.mailserverCycle.peers[m.mailserverCycle.activeMailserver.ID().String()] + m.logger.Info("disconnecting active mailserver", zap.String("nodeID", m.mailserverCycle.activeMailserver.ID)) + m.mailPeersMutex.Lock() + pInfo, ok := m.mailserverCycle.peers[m.mailserverCycle.activeMailserver.ID] if ok { pInfo.status = disconnected - pInfo.canConnectAfter = time.Now().Add(defaultBackoff) - m.mailserverCycle.peers[m.mailserverCycle.activeMailserver.ID().String()] = pInfo + pInfo.canConnectAfter = time.Now().Add(graylistBackoff) + m.mailserverCycle.peers[m.mailserverCycle.activeMailserver.ID] = pInfo } else { - m.mailserverCycle.peers[m.mailserverCycle.activeMailserver.ID().String()] = peerStatus{ + m.mailserverCycle.peers[m.mailserverCycle.activeMailserver.ID] = peerStatus{ status: disconnected, - canConnectAfter: time.Now().Add(defaultBackoff), + mailserver: *m.mailserverCycle.activeMailserver, + canConnectAfter: time.Now().Add(graylistBackoff), } } + m.mailPeersMutex.Unlock() + + if m.mailserverCycle.activeMailserver.Version == 2 { + peerID, err := m.mailserverCycle.activeMailserver.PeerID() + if err != nil { + return err + } + err = m.transport.DropPeer(string(*peerID)) + if err != nil { + m.logger.Warn("could not drop peer") + return err + } + + } else { + node, err := m.mailserverCycle.activeMailserver.Enode() + if err != nil { + return err + } + m.server.RemovePeer(node) + } - m.server.RemovePeer(m.mailserverCycle.activeMailserver) m.mailserverCycle.activeMailserver = nil -} - -func (m *Messenger) disconnectStoreNode() { - if m.mailserverCycle.activeStoreNode == nil { - return - } - m.logger.Info("Disconnecting active storeNode", zap.Any("nodeID", m.mailserverCycle.activeStoreNode.Pretty())) - pInfo, ok := m.mailserverCycle.peers[string(*m.mailserverCycle.activeStoreNode)] - if ok { - pInfo.status = disconnected - pInfo.canConnectAfter = time.Now().Add(defaultBackoff) - m.mailserverCycle.peers[string(*m.mailserverCycle.activeStoreNode)] = pInfo - } else { - m.mailserverCycle.peers[string(*m.mailserverCycle.activeStoreNode)] = peerStatus{ - status: disconnected, - canConnectAfter: time.Now().Add(defaultBackoff), - } - } - - err := m.transport.DropPeer(string(*m.mailserverCycle.activeStoreNode)) - if err != nil { - m.logger.Warn("Could not drop peer") - } - - m.mailserverCycle.activeStoreNode = nil + return nil } func (m *Messenger) disconnectActiveMailserver() { - switch m.transport.WakuVersion() { - case 1: - m.disconnectV1Mailserver() - case 2: - m.disconnectStoreNode() + err := m.disconnectMailserver() + if err != nil { + m.logger.Error("failed to disconnect mailserver", zap.Error(err)) } - signal.SendMailserverChanged("") + signal.SendMailserverChanged("", "") } func (m *Messenger) cycleMailservers() { - m.mailserverCycle.Lock() - defer m.mailserverCycle.Unlock() - m.logger.Info("Automatically switching mailserver") if m.mailserverCycle.activeMailserver != nil { @@ -143,78 +151,6 @@ func poolSize(fleetSize int) int { return int(math.Ceil(float64(fleetSize) / 4)) } -func (m *Messenger) findNewMailserver() error { - switch m.transport.WakuVersion() { - case 1: - return m.findNewMailserverV1() - case 2: - return m.findStoreNode() - default: - return errors.New("waku version is not supported") - } -} - -func (m *Messenger) findStoreNode() error { - allMailservers := parseStoreNodeConfig(m.config.clusterConfig.StoreNodes) - - // TODO: append user mailservers once that functionality is available for waku2 - - var mailserverList []multiaddr.Multiaddr - now := time.Now() - for _, node := range allMailservers { - pID, err := getPeerID(node) - if err != nil { - continue - } - - pInfo, ok := m.mailserverCycle.peers[string(pID)] - if !ok || pInfo.canConnectAfter.Before(now) { - mailserverList = append(mailserverList, node) - } - } - - m.logger.Info("Finding a new store node...") - - var mailserverStr []string - for _, m := range mailserverList { - mailserverStr = append(mailserverStr, m.String()) - } - - pingResult, err := mailservers.DoPing(context.Background(), mailserverStr, 500, mailservers.MultiAddressToAddress) - if err != nil { - return err - } - - var availableMailservers []*mailservers.PingResult - for _, result := range pingResult { - if result.Err != nil { - continue // The results with error are ignored - } - availableMailservers = append(availableMailservers, result) - } - sort.Sort(byRTTMs(availableMailservers)) - - if len(availableMailservers) == 0 { - m.logger.Warn("No store nodes available") // Do nothing... - return nil - } - - // Picks a random mailserver amongs the ones with the lowest latency - // The pool size is 1/4 of the mailservers were pinged successfully - pSize := poolSize(len(availableMailservers) - 1) - if pSize <= 0 { - m.logger.Warn("No store nodes available") // Do nothing... - return nil - } - - r, err := rand.Int(rand.Reader, big.NewInt(int64(pSize))) - if err != nil { - return err - } - - return m.connectToStoreNode(parseMultiaddresses([]string{availableMailservers[r.Int64()].Address})[0]) -} - func (m *Messenger) getFleet() (string, error) { var fleet string dbFleet, err := m.settings.GetFleet() @@ -231,10 +167,44 @@ func (m *Messenger) getFleet() (string, error) { return fleet, nil } -func (m *Messenger) findNewMailserverV1() error { - // TODO: remove this function once WakuV1 is deprecated +func (m *Messenger) allMailservers() ([]mailservers.Mailserver, error) { + // Append user mailservers + fleet, err := m.getFleet() + if err != nil { + return nil, err + } - allMailservers := parseNodes(m.config.clusterConfig.TrustedMailServers) + allMailservers := m.mailserversByFleet(fleet) + + customMailservers, err := m.mailservers.Mailservers() + if err != nil { + return nil, err + } + + for _, c := range customMailservers { + if c.Fleet == fleet { + allMailservers = append(allMailservers, c) + } + } + + return allMailservers, nil +} + +type SortedMailserver struct { + Address string + RTTMs int + CanConnectAfter time.Time +} + +func (m *Messenger) findNewMailserver() error { + pinnedMailserver, err := m.getPinnedMailserver() + if err != nil { + m.logger.Error("Could not obtain the pinned mailserver", zap.Error(err)) + return err + } + if pinnedMailserver != nil { + return m.connectToMailserver(*pinnedMailserver) + } // Append user mailservers fleet, err := m.getFleet() @@ -242,36 +212,40 @@ func (m *Messenger) findNewMailserverV1() error { return err } + allMailservers := m.mailserversByFleet(fleet) + customMailservers, err := m.mailservers.Mailservers() if err != nil { return err } + for _, c := range customMailservers { if c.Fleet == fleet { - mNode, err := enode.ParseV4(c.Address) - if err != nil { - allMailservers = append(allMailservers, mNode) - } - } - } - - var mailserverList []*enode.Node - now := time.Now() - for _, node := range allMailservers { - pInfo, ok := m.mailserverCycle.peers[node.ID().String()] - if !ok || pInfo.canConnectAfter.Before(now) { - mailserverList = append(mailserverList, node) + allMailservers = append(allMailservers, c) } } m.logger.Info("Finding a new mailserver...") var mailserverStr []string - for _, m := range mailserverList { - mailserverStr = append(mailserverStr, m.String()) + for _, m := range allMailservers { + mailserverStr = append(mailserverStr, m.Address) } - pingResult, err := mailservers.DoPing(context.Background(), mailserverStr, 500, mailservers.EnodeStringToAddr) + if len(allMailservers) == 0 { + m.logger.Warn("no mailservers available") // Do nothing... + return nil + + } + + var parseFn func(string) (string, error) + if allMailservers[0].Version == 2 { + parseFn = mailservers.MultiAddressToAddress + } else { + parseFn = mailservers.EnodeStringToAddr + } + + pingResult, err := mailservers.DoPing(context.Background(), mailserverStr, 500, parseFn) if err != nil { return err } @@ -279,23 +253,46 @@ func (m *Messenger) findNewMailserverV1() error { var availableMailservers []*mailservers.PingResult for _, result := range pingResult { if result.Err != nil { + m.logger.Info("connecting error", zap.String("eerr", *result.Err)) continue // The results with error are ignored } availableMailservers = append(availableMailservers, result) } - sort.Sort(byRTTMs(availableMailservers)) if len(availableMailservers) == 0 { m.logger.Warn("No mailservers available") // Do nothing... return nil } + mailserversByAddress := make(map[string]mailservers.Mailserver) + for idx := range allMailservers { + mailserversByAddress[allMailservers[idx].Address] = allMailservers[idx] + } + var sortedMailservers []SortedMailserver + for _, ping := range availableMailservers { + address := ping.Address + ms := mailserversByAddress[address] + sortedMailserver := SortedMailserver{ + Address: address, + RTTMs: *ping.RTTMs, + } + m.mailPeersMutex.Lock() + pInfo, ok := m.mailserverCycle.peers[ms.ID] + m.mailPeersMutex.Unlock() + if ok { + sortedMailserver.CanConnectAfter = pInfo.canConnectAfter + } + + sortedMailservers = append(sortedMailservers, sortedMailserver) + + } + sort.Sort(byRTTMsAndCanConnectBefore(sortedMailservers)) + // Picks a random mailserver amongs the ones with the lowest latency // The pool size is 1/4 of the mailservers were pinged successfully - pSize := poolSize(len(availableMailservers) - 1) + pSize := poolSize(len(sortedMailservers) - 1) if pSize <= 0 { - m.logger.Warn("No store nodes available") // Do nothing... - return nil + pSize = len(sortedMailservers) } r, err := rand.Int(rand.Reader, big.NewInt(int64(pSize))) @@ -303,41 +300,33 @@ func (m *Messenger) findNewMailserverV1() error { return err } - return m.connectToMailserver(parseNodes([]string{availableMailservers[r.Int64()].Address})[0]) + msPing := sortedMailservers[r.Int64()] + ms := mailserversByAddress[msPing.Address] + m.logger.Info("connecting to mailserver", zap.String("address", ms.Address)) + return m.connectToMailserver(ms) } func (m *Messenger) activeMailserverStatus() (connStatus, error) { - var mailserverID string - switch m.transport.WakuVersion() { - case 1: - if m.mailserverCycle.activeMailserver == nil { - return disconnected, errors.New("Active mailserver is not set") - } - mailserverID = m.mailserverCycle.activeMailserver.ID().String() - case 2: - if m.mailserverCycle.activeStoreNode == nil { - return disconnected, errors.New("Active storenode is not set") - } - mailserverID = string(*m.mailserverCycle.activeStoreNode) - default: - return disconnected, errors.New("waku version is not supported") + if m.mailserverCycle.activeMailserver == nil { + return disconnected, errors.New("Active mailserver is not set") } - return m.mailserverCycle.peers[mailserverID].status, nil + mailserverID := m.mailserverCycle.activeMailserver.ID + + m.mailPeersMutex.Lock() + status := m.mailserverCycle.peers[mailserverID].status + m.mailPeersMutex.Unlock() + + return status, nil + } -func (m *Messenger) connectToMailserver(node *enode.Node) error { - // TODO: remove this function once WakuV1 is deprecated +func (m *Messenger) connectToMailserver(ms mailservers.Mailserver) error { - if m.transport.WakuVersion() != 1 { - return nil // This can only be used with wakuV1 - } + m.logger.Info("connecting to mailserver", zap.Any("peer", ms.ID)) - m.logger.Info("Connecting to mailserver", zap.Any("peer", node.ID())) - nodeConnected := false - - m.mailserverCycle.activeMailserver = node - signal.SendMailserverChanged(m.mailserverCycle.activeMailserver.String()) + m.mailserverCycle.activeMailserver = &ms + signal.SendMailserverChanged(m.mailserverCycle.activeMailserver.Address, m.mailserverCycle.activeMailserver.ID) // Adding a peer and marking it as connected can't be executed sync in WakuV1, because // There's a delay between requesting a peer being added, and a signal being @@ -349,105 +338,49 @@ func (m *Messenger) connectToMailserver(node *enode.Node) error { return err } - if activeMailserverStatus == connected { - nodeConnected = true - } else { + if activeMailserverStatus != connected { // Attempt to connect to mailserver by adding it as a peer - m.SetMailserver(node.ID().Bytes()) - m.server.AddPeer(node) - if err := m.peerStore.Update([]*enode.Node{node}); err != nil { - return err + + if ms.Version == 2 { + if err := m.transport.DialPeer(ms.Address); err != nil { + m.logger.Error("failed to dial", zap.Error(err)) + return err + } + } else { + node, err := ms.Enode() + if err != nil { + return err + } + m.server.AddPeer(node) + if err := m.peerStore.Update([]*enode.Node{node}); err != nil { + return err + } } - pInfo, ok := m.mailserverCycle.peers[node.ID().String()] + m.mailPeersMutex.Lock() + pInfo, ok := m.mailserverCycle.peers[ms.ID] if ok { pInfo.status = connecting pInfo.lastConnectionAttempt = time.Now() - m.mailserverCycle.peers[node.ID().String()] = pInfo + pInfo.mailserver = ms + m.mailserverCycle.peers[ms.ID] = pInfo } else { - m.mailserverCycle.peers[node.ID().String()] = peerStatus{ + m.mailserverCycle.peers[ms.ID] = peerStatus{ status: connecting, + mailserver: ms, lastConnectionAttempt: time.Now(), } } + m.mailPeersMutex.Unlock() } - - if nodeConnected { - m.logger.Info("Mailserver available") - signal.SendMailserverAvailable(m.mailserverCycle.activeMailserver.String()) - } - return nil } -func (m *Messenger) connectToStoreNode(node multiaddr.Multiaddr) error { - if m.transport.WakuVersion() != 2 { - return nil // This can only be used with wakuV2 - } - - m.logger.Info("Connecting to storenode", zap.Any("peer", node)) - - nodeConnected := false - - peerID, err := getPeerID(node) - if err != nil { - return err - } - - m.mailserverCycle.activeStoreNode = &peerID - signal.SendMailserverChanged(m.mailserverCycle.activeStoreNode.Pretty()) - - // Adding a peer and marking it as connected can't be executed sync in WakuV1, because - // There's a delay between requesting a peer being added, and a signal being - // received after the peer was added. So we first set the peer status as - // Connecting and once a peerConnected signal is received, we mark it as - // Connected - activeMailserverStatus, err := m.activeMailserverStatus() - if err != nil { - return err - } - - if activeMailserverStatus == connected { - nodeConnected = true - } else { - // Attempt to connect to mailserver by adding it as a peer - m.SetMailserver([]byte(peerID.Pretty())) - if err := m.transport.DialPeer(node.String()); err != nil { - return err - } - - pInfo, ok := m.mailserverCycle.peers[string(peerID)] - if ok { - pInfo.status = connected - pInfo.lastConnectionAttempt = time.Now() - } else { - m.mailserverCycle.peers[string(peerID)] = peerStatus{ - status: connected, - lastConnectionAttempt: time.Now(), - } - } - - nodeConnected = true - } - - if nodeConnected { - m.logger.Info("Storenode available") - signal.SendMailserverAvailable(m.mailserverCycle.activeStoreNode.Pretty()) - } - - return nil -} - -func (m *Messenger) getActiveMailserver() *enode.Node { - m.mailserverCycle.RLock() - defer m.mailserverCycle.RUnlock() +func (m *Messenger) getActiveMailserver() *mailservers.Mailserver { return m.mailserverCycle.activeMailserver } func (m *Messenger) isActiveMailserverAvailable() bool { - m.mailserverCycle.RLock() - defer m.mailserverCycle.RUnlock() - mailserverStatus, err := m.activeMailserverStatus() if err != nil { return false @@ -456,9 +389,201 @@ func (m *Messenger) isActiveMailserverAvailable() bool { return mailserverStatus == connected } +func (m *Messenger) mailserverAddressToID(uniqueID string) (string, error) { + allMailservers, err := m.allMailservers() + if err != nil { + return "", err + } + + for _, ms := range allMailservers { + if uniqueID == ms.UniqueID() { + return ms.ID, nil + } + + } + + return "", nil +} + +type ConnectedPeer struct { + UniqueID string +} + +func (m *Messenger) mailserverPeersInfo() []ConnectedPeer { + var connectedPeers []ConnectedPeer + for _, connectedPeer := range m.server.PeersInfo() { + connectedPeers = append(connectedPeers, ConnectedPeer{ + // This is a bit fragile, but should work + UniqueID: strings.TrimSuffix(connectedPeer.Enode, "?discport=0"), + }) + } + + return connectedPeers +} + +func (m *Messenger) penalizeMailserver(id string) { + m.mailPeersMutex.Lock() + defer m.mailPeersMutex.Unlock() + pInfo, ok := m.mailserverCycle.peers[id] + if !ok { + pInfo.status = disconnected + } + + pInfo.canConnectAfter = time.Now().Add(graylistBackoff) + m.mailserverCycle.peers[id] = pInfo +} + +func (m *Messenger) handleMailserverCycleEvent(connectedPeers []ConnectedPeer) error { + m.logger.Debug("connected peers", zap.Any("connected", connectedPeers)) + m.logger.Debug("peers info", zap.Any("peer-info", m.mailserverCycle.peers)) + + m.mailPeersMutex.Lock() + for pID, pInfo := range m.mailserverCycle.peers { + if pInfo.status == disconnected { + continue + } + + // Removing disconnected + + found := false + for _, connectedPeer := range connectedPeers { + id, err := m.mailserverAddressToID(connectedPeer.UniqueID) + if err != nil { + m.logger.Error("failed to convert id to hex", zap.Error(err)) + return err + } + + if pID == id { + found = true + break + } + } + if !found && (pInfo.status == connected || (pInfo.status == connecting && pInfo.lastConnectionAttempt.Add(8*time.Second).Before(time.Now()))) { + m.logger.Info("peer disconnected", zap.String("peer", pID)) + pInfo.status = disconnected + pInfo.canConnectAfter = time.Now().Add(defaultBackoff) + } + + m.mailserverCycle.peers[pID] = pInfo + } + + for _, connectedPeer := range connectedPeers { + id, err := m.mailserverAddressToID(connectedPeer.UniqueID) + if err != nil { + m.logger.Error("failed to convert id to hex", zap.Error(err)) + return err + } + if id == "" { + continue + } + pInfo, ok := m.mailserverCycle.peers[id] + if !ok || pInfo.status != connected { + m.logger.Info("peer connected", zap.String("peer", connectedPeer.UniqueID)) + pInfo.status = connected + if pInfo.canConnectAfter.Before(time.Now()) { + pInfo.canConnectAfter = time.Now().Add(defaultBackoff) + } + + if m.mailserverCycle.activeMailserver != nil && id == m.mailserverCycle.activeMailserver.ID { + m.logger.Info("mailserver available", zap.String("address", connectedPeer.UniqueID)) + signal.SendMailserverAvailable(m.mailserverCycle.activeMailserver.Address, m.mailserverCycle.activeMailserver.ID) + } + // Query mailserver + go func() { + _, err := m.performMailserverRequest(m.RequestAllHistoricMessages) + if err != nil { + m.logger.Error("could not perform mailserver request", zap.Error(err)) + } + }() + + m.mailserverCycle.peers[id] = pInfo + } + } + m.mailPeersMutex.Unlock() + // Check whether we want to disconnect the mailserver + if m.mailserverCycle.activeMailserver != nil { + if m.mailserverCycle.activeMailserver.FailedRequests >= mailserverMaxFailedRequests { + m.penalizeMailserver(m.mailserverCycle.activeMailserver.ID) + signal.SendMailserverNotWorking() + m.logger.Info("connecting too many failed requests") + m.mailserverCycle.activeMailserver.FailedRequests = 0 + + return m.connectToNewMailserverAndWait() + } + + m.mailPeersMutex.Lock() + pInfo, ok := m.mailserverCycle.peers[m.mailserverCycle.activeMailserver.ID] + m.mailPeersMutex.Unlock() + if ok { + if pInfo.status != connected && pInfo.lastConnectionAttempt.Add(30*time.Second).Before(time.Now()) { + m.logger.Info("penalizing mailserver & disconnecting connecting", zap.String("id", m.mailserverCycle.activeMailserver.ID)) + + signal.SendMailserverNotWorking() + m.penalizeMailserver(m.mailserverCycle.activeMailserver.ID) + m.disconnectActiveMailserver() + } + } + + } else { + m.cycleMailservers() + } + + m.logger.Debug("updated-peers", zap.Any("peers", m.mailserverCycle.peers)) + + return nil +} + +func (m *Messenger) updateWakuV1PeerStatus() { + + if m.transport.WakuVersion() != 1 { + m.logger.Debug("waku version not 1, returning") + return + } + + ticker := time.NewTicker(1 * time.Second) + defer ticker.Stop() + + for { + select { + case <-ticker.C: + err := m.handleMailserverCycleEvent(m.mailserverPeersInfo()) + if err != nil { + m.logger.Error("failed to handle mailserver cycle event", zap.Error(err)) + continue + } + + ms := m.getActiveMailserver() + if ms != nil { + node, err := ms.Enode() + if err != nil { + m.logger.Error("failed to parse enode", zap.Error(err)) + continue + } + m.server.AddPeer(node) + if err := m.peerStore.Update([]*enode.Node{node}); err != nil { + m.logger.Error("failed to update peers", zap.Error(err)) + continue + } + } + + case <-m.mailserverCycle.events: + err := m.handleMailserverCycleEvent(m.mailserverPeersInfo()) + if err != nil { + m.logger.Error("failed to handle mailserver cycle event", zap.Error(err)) + return + } + case <-m.quit: + close(m.mailserverCycle.events) + m.mailserverCycle.subscription.Unsubscribe() + return + } + } +} + func (m *Messenger) updateWakuV2PeerStatus() { if m.transport.WakuVersion() != 2 { - return // This can only be used with wakuV2 + m.logger.Debug("waku version not 2, returning") + return } connSubscription, err := m.transport.SubscribeToConnStatusChanges() @@ -469,255 +594,59 @@ func (m *Messenger) updateWakuV2PeerStatus() { for { select { case status := <-connSubscription.C: - m.mailserverCycle.Lock() - - for pID, pInfo := range m.mailserverCycle.peers { - if pInfo.status == disconnected { - continue - } - - // Removing disconnected - - found := false - for connectedPeer := range status.Peers { - peerID, err := peer.Decode(connectedPeer) - if err != nil { - continue - } - - if string(peerID) == pID { - found = true - break - } - } - if !found && pInfo.status == connected { - m.logger.Info("Peer disconnected", zap.String("peer", peer.ID(pID).Pretty())) - pInfo.status = disconnected - pInfo.canConnectAfter = time.Now().Add(defaultBackoff) - } - - m.mailserverCycle.peers[pID] = pInfo + var connectedPeers []ConnectedPeer + for id := range status.Peers { + connectedPeers = append(connectedPeers, ConnectedPeer{UniqueID: id}) } - - for connectedPeer := range status.Peers { - peerID, err := peer.Decode(connectedPeer) - if err != nil { - continue - } - - pInfo, ok := m.mailserverCycle.peers[string(peerID)] - if !ok || pInfo.status != connected { - m.logger.Info("Peer connected", zap.String("peer", connectedPeer)) - pInfo.status = connected - pInfo.canConnectAfter = time.Now().Add(defaultBackoff) - m.mailserverCycle.peers[string(peerID)] = pInfo - } + err := m.handleMailserverCycleEvent(connectedPeers) + if err != nil { + m.logger.Error("failed to handle mailserver cycle event", zap.Error(err)) + return } - m.mailserverCycle.Unlock() case <-m.quit: + close(m.mailserverCycle.events) + m.mailserverCycle.subscription.Unsubscribe() connSubscription.Unsubscribe() return } } } -func (m *Messenger) updateWakuV1PeerStatus() { - // TODO: remove this function once WakuV1 is deprecated - - if m.transport.WakuVersion() != 1 { - return // This can only be used with wakuV1 - } - - for { - select { - case <-m.mailserverCycle.events: - connectedPeers := m.server.PeersInfo() - m.mailserverCycle.Lock() - - for pID, pInfo := range m.mailserverCycle.peers { - if pInfo.status == disconnected { - continue - } - - // Removing disconnected - - found := false - for _, connectedPeer := range connectedPeers { - if enode.HexID(connectedPeer.ID) == enode.HexID(pID) { - found = true - break - } - } - if !found && (pInfo.status == connected || (pInfo.status == connecting && pInfo.lastConnectionAttempt.Add(8*time.Second).Before(time.Now()))) { - m.logger.Info("Peer disconnected", zap.String("peer", enode.HexID(pID).String())) - pInfo.status = disconnected - pInfo.canConnectAfter = time.Now().Add(defaultBackoff) - } - - m.mailserverCycle.peers[pID] = pInfo - } - - for _, connectedPeer := range connectedPeers { - hexID := enode.HexID(connectedPeer.ID).String() - pInfo, ok := m.mailserverCycle.peers[hexID] - if !ok || pInfo.status != connected { - m.logger.Info("Peer connected", zap.String("peer", hexID)) - pInfo.status = connected - pInfo.canConnectAfter = time.Now().Add(defaultBackoff) - if m.mailserverCycle.activeMailserver != nil && hexID == m.mailserverCycle.activeMailserver.ID().String() { - m.logger.Info("Mailserver available") - signal.SendMailserverAvailable(m.mailserverCycle.activeMailserver.String()) - } - m.mailserverCycle.peers[hexID] = pInfo - } - } - m.mailserverCycle.Unlock() - case <-m.quit: - m.mailserverCycle.Lock() - defer m.mailserverCycle.Unlock() - close(m.mailserverCycle.events) - m.mailserverCycle.subscription.Unsubscribe() - return - } - } -} - -func (m *Messenger) getPinnedMailserver() (string, error) { - // TODO: Pinned mailservers are ony available in V1 for now - if m.transport.WakuVersion() != 1 { - return "", nil - } - +func (m *Messenger) getPinnedMailserver() (*mailservers.Mailserver, error) { fleet, err := m.getFleet() if err != nil { - return "", err + return nil, err } pinnedMailservers, err := m.settings.GetPinnedMailservers() if err != nil { - return "", err + return nil, err } pinnedMailserver, ok := pinnedMailservers[fleet] if !ok { - return "", nil + return nil, nil } - return pinnedMailserver, nil -} - -func (m *Messenger) checkMailserverConnection() { - ticker := time.NewTicker(10 * time.Second) - defer ticker.Stop() - - for { - m.logger.Info("Verifying mailserver connection state...") - - pinnedMailserver, err := m.getPinnedMailserver() - if err != nil { - m.logger.Error("Could not obtain the pinned mailserver", zap.Error(err)) - continue - } - - if pinnedMailserver != "" { - pinnedNode := parseNodes([]string{pinnedMailserver})[0] - - activeMailserver := m.getActiveMailserver() - if activeMailserver == nil || activeMailserver.String() != pinnedMailserver { - m.logger.Info("New pinned mailserver", zap.Any("pinnedMailserver", pinnedMailserver)) - err = m.connectToMailserver(pinnedNode) - if err != nil { - m.logger.Error("Could not connect to pinned mailserver", zap.Error(err)) - continue - } - } - } else { - // or setup a random mailserver: - if !m.isActiveMailserverAvailable() { - m.cycleMailservers() - } - } - - select { - case <-m.quit: - return - case <-ticker.C: - continue - } - } -} - -func parseNodes(enodes []string) []*enode.Node { - var nodes []*enode.Node - for _, item := range enodes { - parsedPeer, err := enode.ParseV4(item) - if err == nil { - nodes = append(nodes, parsedPeer) - } - } - return nodes -} - -func parseMultiaddresses(addresses []string) []multiaddr.Multiaddr { - var result []multiaddr.Multiaddr - for _, item := range addresses { - ma, err := multiaddr.NewMultiaddr(item) - if err == nil { - result = append(result, ma) - } - } - return result -} - -func parseStoreNodeConfig(addresses []string) []multiaddr.Multiaddr { - // TODO: once a scoring/reputation mechanism is added to waku, - // this function can be modified to retrieve the storenodes - // from waku peerstore. - // We don't do that now because we can't trust any random storenode - // So we use only those specified in the cluster config - var result []multiaddr.Multiaddr - var dnsDiscWg sync.WaitGroup - - maChan := make(chan multiaddr.Multiaddr, 1000) - - for _, addrString := range addresses { - if strings.HasPrefix(addrString, "enrtree://") { - // Use DNS Discovery - dnsDiscWg.Add(1) - go func(addr string) { - defer dnsDiscWg.Done() - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) - defer cancel() - multiaddresses, err := dnsdisc.RetrieveNodes(ctx, addr) - if err == nil { - for _, ma := range multiaddresses { - maChan <- ma - } - } - }(addrString) - - } else { - // It's a normal multiaddress - ma, err := multiaddr.NewMultiaddr(addrString) - if err == nil { - maChan <- ma - } - } - } - dnsDiscWg.Wait() - close(maChan) - for ma := range maChan { - result = append(result, ma) - } - - return result -} - -func getPeerID(addr multiaddr.Multiaddr) (peer.ID, error) { - idStr, err := addr.ValueForProtocol(multiaddr.P_P2P) + customMailservers, err := m.mailservers.Mailservers() if err != nil { - return "", err + return nil, err } - return peer.Decode(idStr) + + fleetMailservers := mailservers.DefaultMailservers() + + for _, c := range fleetMailservers { + if c.Fleet == fleet && c.ID == pinnedMailserver { + return &c, nil + } + } + + for _, c := range customMailservers { + if c.Fleet == fleet && c.ID == pinnedMailserver { + return &c, nil + } + } + + return nil, nil } diff --git a/protocol/migrations/migrations.go b/protocol/migrations/migrations.go index 426226c66..fd1b374cf 100644 --- a/protocol/migrations/migrations.go +++ b/protocol/migrations/migrations.go @@ -1,64 +1,64 @@ -// Code generated by go-bindata. +// Code generated by go-bindata. DO NOT EDIT. // sources: -// 000001_init.down.db.sql -// 000001_init.up.db.sql -// 000002_add_last_ens_clock_value.up.sql -// 1586358095_add_replace.up.sql -// 1588665364_add_image_data.up.sql -// 1589365189_add_pow_target.up.sql -// 1591277220_add_index_messages.up.sql -// 1593087212_add_mute_chat_and_raw_message_fields.up.sql -// 1595862781_add_audio_data.up.sql -// 1595865249_create_emoji_reactions_table.up.sql -// 1596805115_create_group_chat_invitations_table.up.sql -// 1597322655_add_invitation_admin_chat_field.up.sql -// 1597757544_add_nickname.up.sql -// 1598955122_add_mentions.up.sql -// 1599641390_add_emoji_reactions_index.up.sql -// 1599720851_add_seen_index_remove_long_messages.up.sql -// 1603198582_add_profile_chat_field.up.sql -// 1603816533_add_links.up.sql -// 1603888149_create_chat_identity_last_published_table.up.sql -// 1605075346_add_communities.up.sql -// 1610117927_add_message_cache.up.sql -// 1610959908_add_dont_wrap_to_raw_messages.up.sql -// 1610960912_add_send_on_personal_topic.up.sql -// 1612870480_add_datasync_id.up.sql -// 1614152139_add_communities_request_to_join.up.sql -// 1615374373_add_confirmations.up.sql -// 1617694931_add_notification_center.up.sql -// 1618923660_create_pin_messages.up.sql -// 1619094007_add_joined_chat_field.up.sql -// 1619099821_add_last_synced_field.up.sql -// 1621933219_add_mentioned.up.sql -// 1622010048_add_unviewed_mentions_count.up.sql -// 1622061278_add_message_activity_center_notification_field.up.sql -// 1622464518_set_synced_to_from.up.sql -// 1622464519_add_chat_description.up.sql -// 1622622253_add_pinned_by_to_pin_messages.up.sql -// 1623938329_add_author_activity_center_notification_field.up.sql -// 1623938330_add_edit_messages.up.sql -// 1624978434_add_muted_community.up.sql -// 1625018910_add_repply_message_activity_center_notification_field.up.sql -// 1625762506_add_deleted_messages.up.sql -// 1627388946_add_communities_synced_at.up.sql -// 1628280060_create-usermessages-index.sql -// 1632303896_modify_contacts_table.up.sql -// 1633349838_add_emoji_column_in_chats.up.sql -// 1634831235_add_highlight_column_in_chats.up.sql -// 1634896007_add_last_updated_locally_and_removed.up.sql -// 1635840039_add_clock_read_at_column_in_chats.up.sql -// 1637852321_add_received_invitation_admin_column_in_chats.up.sql -// 1645034601_display_name.up.sql -// README.md -// doc.go -// DO NOT EDIT! +// 000001_init.down.db.sql (65B) +// 000001_init.up.db.sql (2.719kB) +// 000002_add_last_ens_clock_value.up.sql (77B) +// 1586358095_add_replace.up.sql (224B) +// 1588665364_add_image_data.up.sql (186B) +// 1589365189_add_pow_target.up.sql (66B) +// 1591277220_add_index_messages.up.sql (240B) +// 1593087212_add_mute_chat_and_raw_message_fields.up.sql (215B) +// 1595862781_add_audio_data.up.sql (246B) +// 1595865249_create_emoji_reactions_table.up.sql (300B) +// 1596805115_create_group_chat_invitations_table.up.sql (231B) +// 1597322655_add_invitation_admin_chat_field.up.sql (54B) +// 1597757544_add_nickname.up.sql (52B) +// 1598955122_add_mentions.up.sql (52B) +// 1599641390_add_emoji_reactions_index.up.sql (126B) +// 1599720851_add_seen_index_remove_long_messages.up.sql (150B) +// 1603198582_add_profile_chat_field.up.sql (45B) +// 1603816533_add_links.up.sql (48B) +// 1603888149_create_chat_identity_last_published_table.up.sql (407B) +// 1605075346_add_communities.up.sql (6.971kB) +// 1610117927_add_message_cache.up.sql (142B) +// 1610959908_add_dont_wrap_to_raw_messages.up.sql (83B) +// 1610960912_add_send_on_personal_topic.up.sql (82B) +// 1612870480_add_datasync_id.up.sql (111B) +// 1614152139_add_communities_request_to_join.up.sql (831B) +// 1615374373_add_confirmations.up.sql (227B) +// 1617694931_add_notification_center.up.sql (572B) +// 1618923660_create_pin_messages.up.sql (265B) +// 1619094007_add_joined_chat_field.up.sql (101B) +// 1619099821_add_last_synced_field.up.sql (226B) +// 1621933219_add_mentioned.up.sql (70B) +// 1622010048_add_unviewed_mentions_count.up.sql (114B) +// 1622061278_add_message_activity_center_notification_field.up.sql (80B) +// 1622464518_set_synced_to_from.up.sql (105B) +// 1622464519_add_chat_description.up.sql (93B) +// 1622622253_add_pinned_by_to_pin_messages.up.sql (52B) +// 1623938329_add_author_activity_center_notification_field.up.sql (66B) +// 1623938330_add_edit_messages.up.sql (369B) +// 1624978434_add_muted_community.up.sql (82B) +// 1625018910_add_repply_message_activity_center_notification_field.up.sql (86B) +// 1625762506_add_deleted_messages.up.sql (357B) +// 1627388946_add_communities_synced_at.up.sql (87B) +// 1628280060_create-usermessages-index.sql (80B) +// 1632303896_modify_contacts_table.up.sql (1.574kB) +// 1633349838_add_emoji_column_in_chats.up.sql (52B) +// 1634831235_add_highlight_column_in_chats.up.sql (62B) +// 1634896007_add_last_updated_locally_and_removed.up.sql (131B) +// 1635840039_add_clock_read_at_column_in_chats.up.sql (245B) +// 1637852321_add_received_invitation_admin_column_in_chats.up.sql (72B) +// 1645034601_display_name.up.sql (110B) +// README.md (554B) +// doc.go (850B) package migrations import ( "bytes" "compress/gzip" + "crypto/sha256" "fmt" "io" "io/ioutil" @@ -71,7 +71,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("Read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %v", name, err) } var buf bytes.Buffer @@ -79,7 +79,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("Read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %v", name, err) } if clErr != nil { return nil, err @@ -89,8 +89,9 @@ func bindataRead(data []byte, name string) ([]byte, error) { } type asset struct { - bytes []byte - info os.FileInfo + bytes []byte + info os.FileInfo + digest [sha256.Size]byte } type bindataFileInfo struct { @@ -134,8 +135,8 @@ func _000001_initDownDbSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "000001_init.down.db.sql", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1610007618, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5e, 0xbb, 0x3f, 0x1, 0x75, 0x19, 0x70, 0x86, 0xa7, 0x34, 0x40, 0x17, 0x34, 0x3e, 0x18, 0x51, 0x79, 0xd4, 0x22, 0xad, 0x8f, 0x80, 0xcc, 0xa6, 0xcc, 0x6, 0x2b, 0x62, 0x2, 0x47, 0xba, 0xf9}} return a, nil } @@ -154,8 +155,8 @@ func _000001_initUpDbSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "000001_init.up.db.sql", size: 2719, mode: os.FileMode(0644), modTime: time.Unix(1610007618, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x60, 0xdc, 0xeb, 0xe, 0xc2, 0x4f, 0x75, 0xa, 0xf6, 0x3e, 0xc7, 0xc4, 0x4, 0xe2, 0xe1, 0xa4, 0x73, 0x2f, 0x4a, 0xad, 0x1a, 0x0, 0xc3, 0x93, 0x9d, 0x77, 0x3e, 0x31, 0x91, 0x77, 0x2e, 0xc8}} return a, nil } @@ -174,8 +175,8 @@ func _000002_add_last_ens_clock_valueUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "000002_add_last_ens_clock_value.up.sql", size: 77, mode: os.FileMode(0644), modTime: time.Unix(1610007618, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4d, 0x3, 0x8f, 0xd5, 0x85, 0x83, 0x47, 0xbe, 0xf9, 0x82, 0x7e, 0x81, 0xa4, 0xbd, 0xaa, 0xd5, 0x98, 0x18, 0x5, 0x2d, 0x82, 0x42, 0x3b, 0x3, 0x50, 0xc3, 0x1e, 0x84, 0x35, 0xf, 0xb6, 0x2b}} return a, nil } @@ -194,8 +195,8 @@ func _1586358095_add_replaceUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1586358095_add_replace.up.sql", size: 224, mode: os.FileMode(0644), modTime: time.Unix(1611588719, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd2, 0xb3, 0xa9, 0xc7, 0x7f, 0x9d, 0x8f, 0x43, 0x8c, 0x9e, 0x58, 0x8d, 0x44, 0xbc, 0xfa, 0x6b, 0x5f, 0x3f, 0x5a, 0xbe, 0xe8, 0xb1, 0x16, 0xf, 0x91, 0x2a, 0xa0, 0x71, 0xbb, 0x8d, 0x6b, 0xcb}} return a, nil } @@ -214,8 +215,8 @@ func _1588665364_add_image_dataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1588665364_add_image_data.up.sql", size: 186, mode: os.FileMode(0644), modTime: time.Unix(1611588719, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd6, 0xc6, 0x35, 0xb4, 0x4c, 0x39, 0x96, 0x29, 0x30, 0xda, 0xf4, 0x8f, 0xcb, 0xf1, 0x9f, 0x84, 0xdc, 0x88, 0xd4, 0xd5, 0xbc, 0xb6, 0x5b, 0x46, 0x78, 0x67, 0x76, 0x1a, 0x5, 0x36, 0xdc, 0xe5}} return a, nil } @@ -234,8 +235,8 @@ func _1589365189_add_pow_targetUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1589365189_add_pow_target.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1611588719, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4e, 0x3a, 0xe2, 0x2e, 0x7d, 0xaf, 0xbb, 0xcc, 0x21, 0xa1, 0x7a, 0x41, 0x9a, 0xd0, 0xbb, 0xa9, 0xc8, 0x35, 0xf9, 0x32, 0x34, 0x46, 0x44, 0x9a, 0x86, 0x40, 0x7c, 0xb9, 0x23, 0xc7, 0x3, 0x3f}} return a, nil } @@ -254,8 +255,8 @@ func _1591277220_add_index_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1591277220_add_index_messages.up.sql", size: 240, mode: os.FileMode(0644), modTime: time.Unix(1614609069, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9c, 0xfe, 0xbe, 0xd5, 0xb8, 0x8f, 0xdd, 0xef, 0xbb, 0xa8, 0xad, 0x7f, 0xed, 0x5b, 0x5b, 0x2f, 0xe6, 0x82, 0x27, 0x78, 0x1f, 0xb9, 0x57, 0xdc, 0x8, 0xc2, 0xb2, 0xa9, 0x9a, 0x4, 0xe1, 0x7a}} return a, nil } @@ -274,8 +275,8 @@ func _1593087212_add_mute_chat_and_raw_message_fieldsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1593087212_add_mute_chat_and_raw_message_fields.up.sql", size: 215, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x73, 0x99, 0x61, 0xd1, 0xaa, 0xb4, 0xbf, 0xaf, 0xd7, 0x20, 0x17, 0x40, 0xf9, 0x2, 0xfb, 0xcc, 0x40, 0x2a, 0xd, 0x86, 0x36, 0x30, 0x88, 0x89, 0x25, 0x80, 0x42, 0xb0, 0x5b, 0xe9, 0x73, 0x78}} return a, nil } @@ -294,8 +295,8 @@ func _1595862781_add_audio_dataUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1595862781_add_audio_data.up.sql", size: 246, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xae, 0xd2, 0xee, 0x55, 0xfb, 0x36, 0xa4, 0x92, 0x66, 0xe, 0x81, 0x62, 0x1e, 0x7a, 0x69, 0xa, 0xd5, 0x4b, 0xa5, 0x6a, 0x8d, 0x1d, 0xce, 0xf3, 0x3e, 0xc0, 0x5f, 0x9c, 0x66, 0x1b, 0xb4, 0xed}} return a, nil } @@ -314,8 +315,8 @@ func _1595865249_create_emoji_reactions_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1595865249_create_emoji_reactions_table.up.sql", size: 300, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x3e, 0xc5, 0x43, 0x5c, 0x3d, 0x53, 0x43, 0x2c, 0x1a, 0xa5, 0xb6, 0xbf, 0x7, 0x4, 0x5a, 0x3e, 0x40, 0x8b, 0xa4, 0x57, 0x12, 0x58, 0xbc, 0x42, 0xe2, 0xc3, 0xde, 0x76, 0x98, 0x80, 0xe2, 0xbe}} return a, nil } @@ -334,8 +335,8 @@ func _1596805115_create_group_chat_invitations_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1596805115_create_group_chat_invitations_table.up.sql", size: 231, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6d, 0xb1, 0x14, 0x6d, 0x54, 0x28, 0x67, 0xc3, 0x23, 0x6a, 0xfc, 0x80, 0xdf, 0x9e, 0x4c, 0x35, 0x36, 0xf, 0xf8, 0xf3, 0x5f, 0xae, 0xad, 0xb, 0xc1, 0x51, 0x8e, 0x17, 0x7, 0xe5, 0x7f, 0x91}} return a, nil } @@ -354,8 +355,8 @@ func _1597322655_add_invitation_admin_chat_fieldUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1597322655_add_invitation_admin_chat_field.up.sql", size: 54, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0x7a, 0xa0, 0xf2, 0xdb, 0x13, 0x91, 0x91, 0xa8, 0x34, 0x1a, 0xa1, 0x49, 0x68, 0xd5, 0xae, 0x2c, 0xd8, 0xd5, 0xea, 0x8f, 0x8c, 0xc7, 0x2, 0x4e, 0x58, 0x2c, 0x3a, 0x14, 0xd4, 0x4f, 0x2c}} return a, nil } @@ -374,8 +375,8 @@ func _1597757544_add_nicknameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1597757544_add_nickname.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf4, 0xa2, 0x64, 0x50, 0xc5, 0x4, 0xb9, 0x8b, 0xd1, 0x18, 0x9b, 0xc3, 0x91, 0x36, 0x2a, 0x1f, 0xc3, 0x6c, 0x2d, 0x92, 0xf8, 0x5e, 0xff, 0xb1, 0x59, 0x61, 0x2, 0x1c, 0xe1, 0x85, 0x90, 0xa4}} return a, nil } @@ -394,8 +395,8 @@ func _1598955122_add_mentionsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1598955122_add_mentions.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8d, 0x22, 0x17, 0x92, 0xd2, 0x11, 0x4e, 0x7, 0x93, 0x9a, 0x55, 0xfd, 0xb, 0x97, 0xc4, 0x63, 0x6a, 0x81, 0x97, 0xcd, 0xb2, 0xf8, 0x4b, 0x5f, 0x3c, 0xfa, 0x3a, 0x38, 0x53, 0x10, 0xed, 0x9d}} return a, nil } @@ -414,8 +415,8 @@ func _1599641390_add_emoji_reactions_indexUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1599641390_add_emoji_reactions_index.up.sql", size: 126, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf9, 0xd8, 0xdc, 0xa7, 0xb, 0x92, 0x7a, 0x61, 0x37, 0x24, 0x1c, 0x77, 0x5e, 0xe, 0x7e, 0xfc, 0x9f, 0x98, 0x7b, 0x65, 0xe7, 0xf9, 0x71, 0x57, 0x89, 0x2d, 0x90, 0x1b, 0xf6, 0x5e, 0x37, 0xe8}} return a, nil } @@ -434,8 +435,8 @@ func _1599720851_add_seen_index_remove_long_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1599720851_add_seen_index_remove_long_messages.up.sql", size: 150, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x24, 0x1c, 0xc4, 0x78, 0x91, 0xc7, 0xeb, 0xfe, 0xc8, 0xa0, 0xd8, 0x13, 0x27, 0x97, 0xc8, 0x96, 0x56, 0x97, 0x33, 0x2c, 0x1e, 0x16, 0x8a, 0xd3, 0x49, 0x99, 0x3, 0xe9, 0xbb, 0xc4, 0x5, 0x3c}} return a, nil } @@ -454,8 +455,8 @@ func _1603198582_add_profile_chat_fieldUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1603198582_add_profile_chat_field.up.sql", size: 45, mode: os.FileMode(0644), modTime: time.Unix(1617280156, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0xca, 0xe, 0x46, 0xa0, 0x9, 0x9d, 0x47, 0x57, 0xe9, 0xfb, 0x17, 0xeb, 0x9c, 0xf6, 0xb8, 0x1d, 0xe9, 0xd, 0x0, 0xd5, 0xe5, 0xd8, 0x9e, 0x60, 0xa, 0xbf, 0x32, 0x2c, 0x52, 0x7f, 0x6a}} return a, nil } @@ -474,8 +475,8 @@ func _1603816533_add_linksUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1603816533_add_links.up.sql", size: 48, mode: os.FileMode(0644), modTime: time.Unix(1617280156, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc9, 0x24, 0xd6, 0x1d, 0xa, 0x83, 0x1e, 0x4d, 0xf, 0xae, 0x4d, 0x8c, 0x51, 0x32, 0xa8, 0x37, 0xb0, 0x14, 0xfb, 0x32, 0x34, 0xc8, 0xc, 0x4e, 0x5b, 0xc5, 0x15, 0x65, 0x73, 0x0, 0x0, 0x1d}} return a, nil } @@ -494,8 +495,8 @@ func _1603888149_create_chat_identity_last_published_tableUpSql() (*asset, error return nil, err } - info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1603888149_create_chat_identity_last_published_table.up.sql", size: 407, mode: os.FileMode(0644), modTime: time.Unix(1617280156, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7f, 0x9, 0xf, 0xfb, 0xdb, 0x3c, 0x86, 0x70, 0x82, 0xda, 0x10, 0x25, 0xe2, 0x4e, 0x40, 0x45, 0xab, 0x8b, 0x1c, 0x91, 0x7c, 0xf1, 0x70, 0x2e, 0x81, 0xf3, 0x71, 0x45, 0xda, 0xe2, 0xa4, 0x57}} return a, nil } @@ -514,8 +515,8 @@ func _1605075346_add_communitiesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1605075346_add_communities.up.sql", size: 6971, mode: os.FileMode(0644), modTime: time.Unix(1617280156, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1f, 0x64, 0xea, 0xb4, 0xae, 0x9e, 0xdb, 0x9, 0x58, 0xb6, 0x5c, 0x7a, 0x50, 0xc5, 0xfe, 0x93, 0x5d, 0x36, 0x85, 0x5d, 0x6a, 0xba, 0xc9, 0x7e, 0x84, 0xd7, 0xbf, 0x2a, 0x53, 0xf3, 0x97, 0xf1}} return a, nil } @@ -534,8 +535,8 @@ func _1610117927_add_message_cacheUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1610117927_add_message_cache.up.sql", size: 142, mode: os.FileMode(0644), modTime: time.Unix(1617280156, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0xf1, 0xf0, 0x82, 0x79, 0x28, 0x19, 0xc2, 0x39, 0x6a, 0xa5, 0x96, 0x59, 0x23, 0xa0, 0xed, 0x60, 0x58, 0x86, 0x9, 0xb9, 0xad, 0xfb, 0xa, 0xe3, 0x47, 0x6e, 0xa1, 0x18, 0xe8, 0x39, 0x2c}} return a, nil } @@ -554,8 +555,8 @@ func _1610959908_add_dont_wrap_to_raw_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1610959908_add_dont_wrap_to_raw_messages.up.sql", size: 83, mode: os.FileMode(0644), modTime: time.Unix(1636975146, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x71, 0x2, 0x9a, 0xca, 0xd4, 0x38, 0x44, 0x30, 0x2b, 0xa8, 0x27, 0x32, 0x63, 0x53, 0x22, 0x60, 0x59, 0x84, 0x23, 0x96, 0x77, 0xf0, 0x56, 0xd7, 0x94, 0xe0, 0x95, 0x28, 0x6, 0x1d, 0x4e, 0xb1}} return a, nil } @@ -574,8 +575,8 @@ func _1610960912_add_send_on_personal_topicUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1610960912_add_send_on_personal_topic.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1636975146, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0xac, 0x2f, 0xc4, 0xd, 0xa7, 0x1b, 0x37, 0x30, 0xc2, 0x68, 0xee, 0xde, 0x54, 0x5e, 0xbf, 0x3f, 0xa0, 0xd6, 0xc6, 0x9f, 0xd4, 0x34, 0x12, 0x76, 0x1e, 0x66, 0x4a, 0xfc, 0xf, 0xee, 0xc9}} return a, nil } @@ -594,8 +595,8 @@ func _1612870480_add_datasync_idUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1612870480_add_datasync_id.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1636975146, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0x9a, 0xbc, 0xfa, 0xaa, 0x8c, 0x9c, 0x37, 0x67, 0x15, 0x9c, 0x7e, 0x78, 0x75, 0x66, 0x82, 0x18, 0x72, 0x10, 0xbc, 0xd4, 0xab, 0x44, 0xfe, 0x57, 0x85, 0x6d, 0x19, 0xf5, 0x96, 0x8a, 0xbe}} return a, nil } @@ -614,8 +615,8 @@ func _1614152139_add_communities_request_to_joinUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1614152139_add_communities_request_to_join.up.sql", size: 831, mode: os.FileMode(0644), modTime: time.Unix(1636975146, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x11, 0x3, 0x26, 0xf9, 0x29, 0x50, 0x4f, 0xcd, 0x46, 0xe5, 0xb1, 0x6b, 0xb9, 0x2, 0x40, 0xb1, 0xdf, 0x4a, 0x4c, 0x7a, 0xda, 0x3, 0x35, 0xcd, 0x2d, 0xcc, 0x80, 0x7d, 0x57, 0x5f, 0x3, 0x5c}} return a, nil } @@ -634,8 +635,8 @@ func _1615374373_add_confirmationsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1615374373_add_confirmations.up.sql", size: 227, mode: os.FileMode(0644), modTime: time.Unix(1637083886, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xdd, 0xa6, 0x65, 0xc5, 0x1d, 0xb2, 0x77, 0x36, 0xe3, 0x79, 0xda, 0xe8, 0x7a, 0xa4, 0xdf, 0x45, 0xae, 0xd8, 0xb4, 0xba, 0x90, 0xfd, 0x74, 0x71, 0x14, 0x75, 0x73, 0x72, 0xb9, 0x9e, 0x1, 0x81}} return a, nil } @@ -654,8 +655,8 @@ func _1617694931_add_notification_centerUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1617694931_add_notification_center.up.sql", size: 572, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x45, 0xc6, 0xc9, 0x73, 0xbb, 0x1f, 0xda, 0xa3, 0x4d, 0x19, 0x98, 0x85, 0x2d, 0xca, 0xda, 0xcc, 0x3b, 0x32, 0xff, 0xc7, 0x7b, 0xe3, 0x9f, 0x9b, 0x2a, 0x93, 0xf5, 0xdf, 0x65, 0x38, 0x91}} return a, nil } @@ -674,8 +675,8 @@ func _1618923660_create_pin_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1618923660_create_pin_messages.up.sql", size: 265, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x61, 0x44, 0x3a, 0xbe, 0x30, 0xd2, 0x7e, 0xc0, 0xe2, 0x8e, 0x65, 0x53, 0x54, 0xbb, 0x7a, 0x1c, 0xb3, 0x5d, 0xd2, 0xa6, 0xa9, 0x28, 0xb7, 0xa4, 0x5f, 0x8b, 0x9, 0x5f, 0x17, 0xc1, 0x85, 0x21}} return a, nil } @@ -694,8 +695,8 @@ func _1619094007_add_joined_chat_fieldUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1619094007_add_joined_chat_field.up.sql", size: 101, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfa, 0x30, 0x81, 0x3a, 0x2f, 0x9f, 0xb3, 0x0, 0x55, 0x8e, 0x1d, 0xa8, 0xb0, 0x68, 0xf0, 0x40, 0x1a, 0x6c, 0xaa, 0xfc, 0x33, 0xd1, 0xd1, 0x55, 0x3f, 0xf2, 0xbd, 0x54, 0xa1, 0x2b, 0x40, 0x95}} return a, nil } @@ -714,8 +715,8 @@ func _1619099821_add_last_synced_fieldUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1619099821_add_last_synced_field.up.sql", size: 226, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf, 0x52, 0x22, 0xe, 0x2f, 0xd7, 0x93, 0x5f, 0x42, 0xc2, 0x93, 0x4, 0x35, 0x6f, 0xc9, 0x19, 0xed, 0x6b, 0x52, 0x6f, 0xae, 0x99, 0xe2, 0x68, 0x3d, 0x4f, 0x40, 0xe, 0xe1, 0xa, 0x47, 0x21}} return a, nil } @@ -734,8 +735,8 @@ func _1621933219_add_mentionedUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1621933219_add_mentioned.up.sql", size: 70, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x76, 0x8a, 0xc9, 0x7, 0x8f, 0xa5, 0xcb, 0x12, 0x21, 0x4e, 0xfe, 0x96, 0x77, 0xcf, 0x7f, 0x76, 0x75, 0x36, 0x2c, 0xf8, 0x1d, 0x13, 0xcb, 0xcd, 0x6e, 0x70, 0xbf, 0xf5, 0x93, 0x67, 0xd1}} return a, nil } @@ -754,8 +755,8 @@ func _1622010048_add_unviewed_mentions_countUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1622010048_add_unviewed_mentions_count.up.sql", size: 114, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7c, 0x16, 0x85, 0xa6, 0x5b, 0xe1, 0x66, 0xb9, 0x84, 0xbe, 0x7f, 0xa, 0x77, 0x23, 0xb9, 0xef, 0x8e, 0x2, 0x8, 0xfc, 0x61, 0xb2, 0x43, 0xa9, 0x63, 0xae, 0xb4, 0xdf, 0x30, 0xb1, 0x61, 0x4b}} return a, nil } @@ -774,8 +775,8 @@ func _1622061278_add_message_activity_center_notification_fieldUpSql() (*asset, return nil, err } - info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1622061278_add_message_activity_center_notification_field.up.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8, 0xc, 0xa6, 0x1f, 0xa5, 0xc6, 0x7c, 0x6f, 0xab, 0x2c, 0x2d, 0xb5, 0xa4, 0xdd, 0xc1, 0xd6, 0x44, 0x83, 0xf9, 0xb1, 0xa5, 0xce, 0x34, 0x3d, 0x2, 0xa9, 0x35, 0xcf, 0xc6, 0xb2, 0x43, 0x37}} return a, nil } @@ -794,8 +795,8 @@ func _1622464518_set_synced_to_fromUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1622464518_set_synced_to_from.up.sql", size: 105, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x33, 0x3e, 0x2b, 0xa, 0x1e, 0xc7, 0x6d, 0x6f, 0xd1, 0x1d, 0xe8, 0x4b, 0xdd, 0x92, 0x76, 0xea, 0xf2, 0x3e, 0x15, 0x85, 0xc4, 0xc3, 0x31, 0xf1, 0xc0, 0xa2, 0xd7, 0x47, 0xde, 0x4e, 0xfd, 0xc6}} return a, nil } @@ -814,8 +815,8 @@ func _1622464519_add_chat_descriptionUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1622464519_add_chat_description.up.sql", size: 93, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0x2e, 0x89, 0x31, 0xec, 0xef, 0xeb, 0x43, 0xf5, 0x96, 0x6d, 0xce, 0x91, 0x8a, 0x37, 0x2a, 0x11, 0x7a, 0x3f, 0xd9, 0x10, 0xbb, 0xa1, 0xbc, 0x7, 0xe0, 0x3b, 0xa5, 0xf4, 0xa6, 0xf4, 0xa1}} return a, nil } @@ -834,8 +835,8 @@ func _1622622253_add_pinned_by_to_pin_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1622622253_add_pinned_by_to_pin_messages.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9b, 0x94, 0xa3, 0x45, 0x91, 0x1e, 0x66, 0xd1, 0x96, 0x5a, 0xaf, 0xfa, 0x29, 0x39, 0xa8, 0x3a, 0x97, 0x4c, 0x65, 0x6, 0x96, 0x90, 0x4c, 0xfe, 0xce, 0x7d, 0x5d, 0xd4, 0xb3, 0x8, 0x6d, 0x5f}} return a, nil } @@ -854,8 +855,8 @@ func _1623938329_add_author_activity_center_notification_fieldUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1623938329_add_author_activity_center_notification_field.up.sql", size: 66, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x36, 0xe6, 0xa7, 0xd5, 0x26, 0xff, 0xab, 0x92, 0x88, 0xf0, 0xd3, 0x34, 0xd9, 0x2f, 0xe7, 0x18, 0x1a, 0x40, 0xf9, 0xbe, 0x8e, 0xfc, 0xd0, 0x4f, 0x1f, 0x4a, 0xb9, 0x83, 0x3f, 0xa9, 0xde, 0xb}} return a, nil } @@ -874,8 +875,8 @@ func _1623938330_add_edit_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1623938330_add_edit_messages.up.sql", size: 369, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xd2, 0xce, 0xe, 0x5c, 0x19, 0xbe, 0x5e, 0x29, 0xbe, 0x9b, 0x31, 0x53, 0x76, 0xb2, 0xc8, 0x56, 0xf0, 0x82, 0xfe, 0x7d, 0x6c, 0xe8, 0x5c, 0xe9, 0x7a, 0x5d, 0x5, 0xc4, 0x92, 0x38, 0xe3}} return a, nil } @@ -894,8 +895,8 @@ func _1624978434_add_muted_communityUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1624978434_add_muted_community.up.sql", size: 82, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6, 0xdc, 0x6e, 0x6f, 0x97, 0xc7, 0x3d, 0x50, 0xab, 0x80, 0x87, 0x44, 0x43, 0x38, 0xe6, 0xc5, 0xc1, 0x91, 0x26, 0xf, 0x16, 0xe, 0xd9, 0x32, 0x37, 0x25, 0x96, 0x25, 0x6, 0xc8, 0xb5, 0x4a}} return a, nil } @@ -914,8 +915,8 @@ func _1625018910_add_repply_message_activity_center_notification_fieldUpSql() (* return nil, err } - info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1625018910_add_repply_message_activity_center_notification_field.up.sql", size: 86, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf2, 0x52, 0x12, 0x40, 0xd8, 0x6f, 0x71, 0x97, 0x46, 0x39, 0xaa, 0x74, 0x41, 0xcd, 0x45, 0x4c, 0xe8, 0xd9, 0xe2, 0x56, 0x8e, 0x78, 0x18, 0x62, 0xf6, 0xa8, 0x36, 0xe9, 0x9a, 0x1f, 0xc, 0xb1}} return a, nil } @@ -934,8 +935,8 @@ func _1625762506_add_deleted_messagesUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1625762506_add_deleted_messages.up.sql", size: 357, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xd5, 0x61, 0x42, 0xb6, 0x8c, 0x7f, 0x2d, 0xec, 0xa9, 0x6d, 0x3d, 0x0, 0xa3, 0x32, 0xd8, 0x4a, 0x38, 0x5c, 0x97, 0xfc, 0x68, 0xde, 0xa9, 0xb7, 0xd8, 0xde, 0xb, 0x29, 0x93, 0xdc, 0x81, 0xf8}} return a, nil } @@ -954,8 +955,8 @@ func _1627388946_add_communities_synced_atUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1627388946_add_communities_synced_at.up.sql", size: 87, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc1, 0xbd, 0x9b, 0x6a, 0xc9, 0x1a, 0x7a, 0x34, 0xcf, 0x5f, 0x80, 0x9e, 0x8c, 0x1c, 0xc0, 0xec, 0x4e, 0x78, 0xb0, 0x2d, 0x15, 0x77, 0x38, 0x4a, 0x6a, 0x5, 0x84, 0xf5, 0x8d, 0x8b, 0xbe, 0x9}} return a, nil } @@ -974,8 +975,8 @@ func _1628280060_createUsermessagesIndexSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1628280060_create-usermessages-index.sql", size: 80, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0x6f, 0x70, 0x47, 0x40, 0xab, 0xa8, 0x60, 0xe0, 0xf9, 0x8, 0x7e, 0x19, 0x9d, 0xba, 0x33, 0x16, 0xfc, 0x3c, 0xdc, 0xa8, 0xa6, 0x53, 0x61, 0x39, 0x82, 0x91, 0xcf, 0x69, 0xd8, 0xf2, 0xcf}} return a, nil } @@ -994,8 +995,8 @@ func _1632303896_modify_contacts_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1632303896_modify_contacts_table.up.sql", size: 1574, mode: os.FileMode(0644), modTime: time.Unix(1643037480, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x1e, 0x6c, 0x3c, 0xd, 0xd7, 0x7d, 0xbb, 0x19, 0xbc, 0xe4, 0x7, 0xfd, 0xf8, 0x66, 0x6d, 0x78, 0xf6, 0x4, 0xe6, 0x51, 0xe4, 0xe6, 0xdc, 0xe, 0x5a, 0x2e, 0xac, 0xe6, 0xe7, 0x24, 0x69}} return a, nil } @@ -1014,8 +1015,8 @@ func _1633349838_add_emoji_column_in_chatsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1633349838_add_emoji_column_in_chats.up.sql", size: 52, mode: os.FileMode(0644), modTime: time.Unix(1643037480, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xcb, 0x33, 0xcb, 0x3b, 0xa9, 0x99, 0x77, 0x6a, 0xea, 0xc4, 0x39, 0xd7, 0xa1, 0x49, 0xa7, 0xdf, 0xff, 0x72, 0xda, 0x34, 0x21, 0x67, 0x66, 0xca, 0x65, 0x46, 0x1, 0xa6, 0x4e, 0xf9, 0x38, 0x86}} return a, nil } @@ -1034,8 +1035,8 @@ func _1634831235_add_highlight_column_in_chatsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1634831235_add_highlight_column_in_chats.up.sql", size: 62, mode: os.FileMode(0644), modTime: time.Unix(1643037480, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xaa, 0x63, 0x5c, 0x73, 0x19, 0x83, 0xbd, 0x35, 0x80, 0x9f, 0x66, 0xec, 0x4c, 0xbc, 0x9d, 0x2d, 0x52, 0x91, 0x6d, 0xb3, 0x2b, 0x87, 0xde, 0x24, 0x46, 0x5c, 0xd, 0xfd, 0x78, 0xf5, 0xe3, 0xe9}} return a, nil } @@ -1054,8 +1055,8 @@ func _1634896007_add_last_updated_locally_and_removedUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1634896007_add_last_updated_locally_and_removed.up.sql", size: 131, mode: os.FileMode(0644), modTime: time.Unix(1643037480, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2e, 0xa8, 0x34, 0xe2, 0xc0, 0x62, 0xc8, 0xd6, 0x5a, 0x87, 0xe3, 0x70, 0xe1, 0xc4, 0x16, 0x9c, 0x60, 0x2e, 0x98, 0xf0, 0x91, 0x84, 0xbe, 0xe0, 0xdf, 0x3e, 0x4d, 0x24, 0xc4, 0x6c, 0x40, 0x17}} return a, nil } @@ -1074,8 +1075,8 @@ func _1635840039_add_clock_read_at_column_in_chatsUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1635840039_add_clock_read_at_column_in_chats.up.sql", size: 245, mode: os.FileMode(0644), modTime: time.Unix(1643037480, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x6c, 0xba, 0x3f, 0xba, 0x1a, 0x71, 0xa8, 0x9, 0x19, 0xbe, 0x1e, 0x38, 0x50, 0x30, 0x3a, 0x52, 0x15, 0x29, 0xee, 0x49, 0x19, 0x6f, 0x53, 0xc2, 0xc6, 0x6c, 0xd9, 0x80, 0x7e, 0xb9, 0x58, 0x7a}} return a, nil } @@ -1094,8 +1095,8 @@ func _1637852321_add_received_invitation_admin_column_in_chatsUpSql() (*asset, e return nil, err } - info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1637852321_add_received_invitation_admin_column_in_chats.up.sql", size: 72, mode: os.FileMode(0644), modTime: time.Unix(1643037480, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x70, 0x8b, 0x92, 0x56, 0x83, 0x70, 0x7f, 0x6, 0xb2, 0xd, 0x1c, 0x2f, 0xcc, 0x93, 0xc3, 0x85, 0x8c, 0xc2, 0x38, 0x94, 0x7e, 0x88, 0x3f, 0x39, 0x34, 0xf8, 0x90, 0xcf, 0x83, 0x68, 0x3d, 0xe5}} return a, nil } @@ -1114,8 +1115,8 @@ func _1645034601_display_nameUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(436), modTime: time.Unix(1645133998, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "1645034601_display_name.up.sql", size: 110, mode: os.FileMode(0644), modTime: time.Unix(1647462278, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x15, 0xfc, 0xda, 0x70, 0x53, 0x19, 0x90, 0x20, 0x4, 0x1c, 0x99, 0x42, 0x53, 0x1a, 0xd6, 0xb8, 0xbb, 0x8a, 0xe8, 0xbe, 0xcc, 0xb7, 0xc, 0x7f, 0x73, 0x50, 0x18, 0xf1, 0x8b, 0x18, 0x54, 0x64}} return a, nil } @@ -1134,8 +1135,8 @@ func readmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "README.md", size: 554, mode: os.FileMode(0644), modTime: time.Unix(1617280156, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x1c, 0x6e, 0xfb, 0xcc, 0x81, 0x94, 0x4d, 0x8c, 0xa0, 0x3b, 0x5, 0xb0, 0x18, 0xd6, 0xbb, 0xb3, 0x79, 0xc8, 0x8f, 0xff, 0xc1, 0x10, 0xf9, 0xf, 0x20, 0x1b, 0x4a, 0x74, 0x96, 0x42, 0xd7, 0xa8}} return a, nil } @@ -1154,8 +1155,8 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "doc.go", size: 850, mode: os.FileMode(0644), modTime: time.Unix(1611588719, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa0, 0xcc, 0x41, 0xe1, 0x61, 0x12, 0x97, 0xe, 0x36, 0x8c, 0xa7, 0x9e, 0xe0, 0x6e, 0x59, 0x9e, 0xee, 0xd5, 0x4a, 0xcf, 0x1e, 0x60, 0xd6, 0xc3, 0x3a, 0xc9, 0x6c, 0xf2, 0x86, 0x5a, 0xb4, 0x1e}} return a, nil } @@ -1163,8 +1164,8 @@ func docGo() (*asset, error) { // It returns an error if the asset could not be found or // could not be loaded. func Asset(name string) ([]byte, error) { - cannonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[cannonicalName]; ok { + canonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[canonicalName]; ok { a, err := f() if err != nil { return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) @@ -1174,6 +1175,12 @@ func Asset(name string) ([]byte, error) { return nil, fmt.Errorf("Asset %s not found", name) } +// AssetString returns the asset contents as a string (instead of a []byte). +func AssetString(name string) (string, error) { + data, err := Asset(name) + return string(data), err +} + // MustAsset is like Asset but panics when Asset would return an error. // It simplifies safe initialization of global variables. func MustAsset(name string) []byte { @@ -1185,12 +1192,18 @@ func MustAsset(name string) []byte { return a } +// MustAssetString is like AssetString but panics when Asset would return an +// error. It simplifies safe initialization of global variables. +func MustAssetString(name string) string { + return string(MustAsset(name)) +} + // AssetInfo loads and returns the asset info for the given name. // It returns an error if the asset could not be found or // could not be loaded. func AssetInfo(name string) (os.FileInfo, error) { - cannonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[cannonicalName]; ok { + canonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[canonicalName]; ok { a, err := f() if err != nil { return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) @@ -1200,6 +1213,33 @@ func AssetInfo(name string) (os.FileInfo, error) { return nil, fmt.Errorf("AssetInfo %s not found", name) } +// AssetDigest returns the digest of the file with the given name. It returns an +// error if the asset could not be found or the digest could not be loaded. +func AssetDigest(name string) ([sha256.Size]byte, error) { + canonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[canonicalName]; ok { + a, err := f() + if err != nil { + return [sha256.Size]byte{}, fmt.Errorf("AssetDigest %s can't read by error: %v", name, err) + } + return a.digest, nil + } + return [sha256.Size]byte{}, fmt.Errorf("AssetDigest %s not found", name) +} + +// Digests returns a map of all known files and their checksums. +func Digests() (map[string][sha256.Size]byte, error) { + mp := make(map[string][sha256.Size]byte, len(_bindata)) + for name := range _bindata { + a, err := _bindata[name]() + if err != nil { + return nil, err + } + mp[name] = a.digest + } + return mp, nil +} + // AssetNames returns the names of the assets. func AssetNames() []string { names := make([]string, 0, len(_bindata)) @@ -1212,56 +1252,107 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ "000001_init.down.db.sql": _000001_initDownDbSql, + "000001_init.up.db.sql": _000001_initUpDbSql, + "000002_add_last_ens_clock_value.up.sql": _000002_add_last_ens_clock_valueUpSql, + "1586358095_add_replace.up.sql": _1586358095_add_replaceUpSql, + "1588665364_add_image_data.up.sql": _1588665364_add_image_dataUpSql, + "1589365189_add_pow_target.up.sql": _1589365189_add_pow_targetUpSql, + "1591277220_add_index_messages.up.sql": _1591277220_add_index_messagesUpSql, + "1593087212_add_mute_chat_and_raw_message_fields.up.sql": _1593087212_add_mute_chat_and_raw_message_fieldsUpSql, + "1595862781_add_audio_data.up.sql": _1595862781_add_audio_dataUpSql, + "1595865249_create_emoji_reactions_table.up.sql": _1595865249_create_emoji_reactions_tableUpSql, + "1596805115_create_group_chat_invitations_table.up.sql": _1596805115_create_group_chat_invitations_tableUpSql, + "1597322655_add_invitation_admin_chat_field.up.sql": _1597322655_add_invitation_admin_chat_fieldUpSql, + "1597757544_add_nickname.up.sql": _1597757544_add_nicknameUpSql, + "1598955122_add_mentions.up.sql": _1598955122_add_mentionsUpSql, + "1599641390_add_emoji_reactions_index.up.sql": _1599641390_add_emoji_reactions_indexUpSql, + "1599720851_add_seen_index_remove_long_messages.up.sql": _1599720851_add_seen_index_remove_long_messagesUpSql, + "1603198582_add_profile_chat_field.up.sql": _1603198582_add_profile_chat_fieldUpSql, + "1603816533_add_links.up.sql": _1603816533_add_linksUpSql, + "1603888149_create_chat_identity_last_published_table.up.sql": _1603888149_create_chat_identity_last_published_tableUpSql, + "1605075346_add_communities.up.sql": _1605075346_add_communitiesUpSql, + "1610117927_add_message_cache.up.sql": _1610117927_add_message_cacheUpSql, + "1610959908_add_dont_wrap_to_raw_messages.up.sql": _1610959908_add_dont_wrap_to_raw_messagesUpSql, + "1610960912_add_send_on_personal_topic.up.sql": _1610960912_add_send_on_personal_topicUpSql, + "1612870480_add_datasync_id.up.sql": _1612870480_add_datasync_idUpSql, + "1614152139_add_communities_request_to_join.up.sql": _1614152139_add_communities_request_to_joinUpSql, + "1615374373_add_confirmations.up.sql": _1615374373_add_confirmationsUpSql, + "1617694931_add_notification_center.up.sql": _1617694931_add_notification_centerUpSql, + "1618923660_create_pin_messages.up.sql": _1618923660_create_pin_messagesUpSql, + "1619094007_add_joined_chat_field.up.sql": _1619094007_add_joined_chat_fieldUpSql, + "1619099821_add_last_synced_field.up.sql": _1619099821_add_last_synced_fieldUpSql, + "1621933219_add_mentioned.up.sql": _1621933219_add_mentionedUpSql, + "1622010048_add_unviewed_mentions_count.up.sql": _1622010048_add_unviewed_mentions_countUpSql, + "1622061278_add_message_activity_center_notification_field.up.sql": _1622061278_add_message_activity_center_notification_fieldUpSql, + "1622464518_set_synced_to_from.up.sql": _1622464518_set_synced_to_fromUpSql, + "1622464519_add_chat_description.up.sql": _1622464519_add_chat_descriptionUpSql, + "1622622253_add_pinned_by_to_pin_messages.up.sql": _1622622253_add_pinned_by_to_pin_messagesUpSql, + "1623938329_add_author_activity_center_notification_field.up.sql": _1623938329_add_author_activity_center_notification_fieldUpSql, + "1623938330_add_edit_messages.up.sql": _1623938330_add_edit_messagesUpSql, + "1624978434_add_muted_community.up.sql": _1624978434_add_muted_communityUpSql, + "1625018910_add_repply_message_activity_center_notification_field.up.sql": _1625018910_add_repply_message_activity_center_notification_fieldUpSql, + "1625762506_add_deleted_messages.up.sql": _1625762506_add_deleted_messagesUpSql, + "1627388946_add_communities_synced_at.up.sql": _1627388946_add_communities_synced_atUpSql, + "1628280060_create-usermessages-index.sql": _1628280060_createUsermessagesIndexSql, + "1632303896_modify_contacts_table.up.sql": _1632303896_modify_contacts_tableUpSql, + "1633349838_add_emoji_column_in_chats.up.sql": _1633349838_add_emoji_column_in_chatsUpSql, + "1634831235_add_highlight_column_in_chats.up.sql": _1634831235_add_highlight_column_in_chatsUpSql, + "1634896007_add_last_updated_locally_and_removed.up.sql": _1634896007_add_last_updated_locally_and_removedUpSql, + "1635840039_add_clock_read_at_column_in_chats.up.sql": _1635840039_add_clock_read_at_column_in_chatsUpSql, + "1637852321_add_received_invitation_admin_column_in_chats.up.sql": _1637852321_add_received_invitation_admin_column_in_chatsUpSql, + "1645034601_display_name.up.sql": _1645034601_display_nameUpSql, + "README.md": readmeMd, + "doc.go": docGo, } @@ -1274,15 +1365,15 @@ var _bindata = map[string]func() (*asset, error){ // img/ // a.png // b.png -// then AssetDir("data") would return []string{"foo.txt", "img"} -// AssetDir("data/img") would return []string{"a.png", "b.png"} -// AssetDir("foo.txt") and AssetDir("notexist") would return an error +// then AssetDir("data") would return []string{"foo.txt", "img"}, +// AssetDir("data/img") would return []string{"a.png", "b.png"}, +// AssetDir("foo.txt") and AssetDir("notexist") would return an error, and // AssetDir("") will return []string{"data"}. func AssetDir(name string) ([]string, error) { node := _bintree if len(name) != 0 { - cannonicalName := strings.Replace(name, "\\", "/", -1) - pathList := strings.Split(cannonicalName, "/") + canonicalName := strings.Replace(name, "\\", "/", -1) + pathList := strings.Split(canonicalName, "/") for _, p := range pathList { node = node.Children[p] if node == nil { @@ -1304,62 +1395,63 @@ type bintree struct { Func func() (*asset, error) Children map[string]*bintree } + var _bintree = &bintree{nil, map[string]*bintree{ - "000001_init.down.db.sql": &bintree{_000001_initDownDbSql, map[string]*bintree{}}, - "000001_init.up.db.sql": &bintree{_000001_initUpDbSql, map[string]*bintree{}}, - "000002_add_last_ens_clock_value.up.sql": &bintree{_000002_add_last_ens_clock_valueUpSql, map[string]*bintree{}}, - "1586358095_add_replace.up.sql": &bintree{_1586358095_add_replaceUpSql, map[string]*bintree{}}, - "1588665364_add_image_data.up.sql": &bintree{_1588665364_add_image_dataUpSql, map[string]*bintree{}}, - "1589365189_add_pow_target.up.sql": &bintree{_1589365189_add_pow_targetUpSql, map[string]*bintree{}}, - "1591277220_add_index_messages.up.sql": &bintree{_1591277220_add_index_messagesUpSql, map[string]*bintree{}}, - "1593087212_add_mute_chat_and_raw_message_fields.up.sql": &bintree{_1593087212_add_mute_chat_and_raw_message_fieldsUpSql, map[string]*bintree{}}, - "1595862781_add_audio_data.up.sql": &bintree{_1595862781_add_audio_dataUpSql, map[string]*bintree{}}, - "1595865249_create_emoji_reactions_table.up.sql": &bintree{_1595865249_create_emoji_reactions_tableUpSql, map[string]*bintree{}}, - "1596805115_create_group_chat_invitations_table.up.sql": &bintree{_1596805115_create_group_chat_invitations_tableUpSql, map[string]*bintree{}}, - "1597322655_add_invitation_admin_chat_field.up.sql": &bintree{_1597322655_add_invitation_admin_chat_fieldUpSql, map[string]*bintree{}}, - "1597757544_add_nickname.up.sql": &bintree{_1597757544_add_nicknameUpSql, map[string]*bintree{}}, - "1598955122_add_mentions.up.sql": &bintree{_1598955122_add_mentionsUpSql, map[string]*bintree{}}, - "1599641390_add_emoji_reactions_index.up.sql": &bintree{_1599641390_add_emoji_reactions_indexUpSql, map[string]*bintree{}}, - "1599720851_add_seen_index_remove_long_messages.up.sql": &bintree{_1599720851_add_seen_index_remove_long_messagesUpSql, map[string]*bintree{}}, - "1603198582_add_profile_chat_field.up.sql": &bintree{_1603198582_add_profile_chat_fieldUpSql, map[string]*bintree{}}, - "1603816533_add_links.up.sql": &bintree{_1603816533_add_linksUpSql, map[string]*bintree{}}, - "1603888149_create_chat_identity_last_published_table.up.sql": &bintree{_1603888149_create_chat_identity_last_published_tableUpSql, map[string]*bintree{}}, - "1605075346_add_communities.up.sql": &bintree{_1605075346_add_communitiesUpSql, map[string]*bintree{}}, - "1610117927_add_message_cache.up.sql": &bintree{_1610117927_add_message_cacheUpSql, map[string]*bintree{}}, - "1610959908_add_dont_wrap_to_raw_messages.up.sql": &bintree{_1610959908_add_dont_wrap_to_raw_messagesUpSql, map[string]*bintree{}}, - "1610960912_add_send_on_personal_topic.up.sql": &bintree{_1610960912_add_send_on_personal_topicUpSql, map[string]*bintree{}}, - "1612870480_add_datasync_id.up.sql": &bintree{_1612870480_add_datasync_idUpSql, map[string]*bintree{}}, - "1614152139_add_communities_request_to_join.up.sql": &bintree{_1614152139_add_communities_request_to_joinUpSql, map[string]*bintree{}}, - "1615374373_add_confirmations.up.sql": &bintree{_1615374373_add_confirmationsUpSql, map[string]*bintree{}}, - "1617694931_add_notification_center.up.sql": &bintree{_1617694931_add_notification_centerUpSql, map[string]*bintree{}}, - "1618923660_create_pin_messages.up.sql": &bintree{_1618923660_create_pin_messagesUpSql, map[string]*bintree{}}, - "1619094007_add_joined_chat_field.up.sql": &bintree{_1619094007_add_joined_chat_fieldUpSql, map[string]*bintree{}}, - "1619099821_add_last_synced_field.up.sql": &bintree{_1619099821_add_last_synced_fieldUpSql, map[string]*bintree{}}, - "1621933219_add_mentioned.up.sql": &bintree{_1621933219_add_mentionedUpSql, map[string]*bintree{}}, - "1622010048_add_unviewed_mentions_count.up.sql": &bintree{_1622010048_add_unviewed_mentions_countUpSql, map[string]*bintree{}}, - "1622061278_add_message_activity_center_notification_field.up.sql": &bintree{_1622061278_add_message_activity_center_notification_fieldUpSql, map[string]*bintree{}}, - "1622464518_set_synced_to_from.up.sql": &bintree{_1622464518_set_synced_to_fromUpSql, map[string]*bintree{}}, - "1622464519_add_chat_description.up.sql": &bintree{_1622464519_add_chat_descriptionUpSql, map[string]*bintree{}}, - "1622622253_add_pinned_by_to_pin_messages.up.sql": &bintree{_1622622253_add_pinned_by_to_pin_messagesUpSql, map[string]*bintree{}}, - "1623938329_add_author_activity_center_notification_field.up.sql": &bintree{_1623938329_add_author_activity_center_notification_fieldUpSql, map[string]*bintree{}}, - "1623938330_add_edit_messages.up.sql": &bintree{_1623938330_add_edit_messagesUpSql, map[string]*bintree{}}, - "1624978434_add_muted_community.up.sql": &bintree{_1624978434_add_muted_communityUpSql, map[string]*bintree{}}, + "000001_init.down.db.sql": &bintree{_000001_initDownDbSql, map[string]*bintree{}}, + "000001_init.up.db.sql": &bintree{_000001_initUpDbSql, map[string]*bintree{}}, + "000002_add_last_ens_clock_value.up.sql": &bintree{_000002_add_last_ens_clock_valueUpSql, map[string]*bintree{}}, + "1586358095_add_replace.up.sql": &bintree{_1586358095_add_replaceUpSql, map[string]*bintree{}}, + "1588665364_add_image_data.up.sql": &bintree{_1588665364_add_image_dataUpSql, map[string]*bintree{}}, + "1589365189_add_pow_target.up.sql": &bintree{_1589365189_add_pow_targetUpSql, map[string]*bintree{}}, + "1591277220_add_index_messages.up.sql": &bintree{_1591277220_add_index_messagesUpSql, map[string]*bintree{}}, + "1593087212_add_mute_chat_and_raw_message_fields.up.sql": &bintree{_1593087212_add_mute_chat_and_raw_message_fieldsUpSql, map[string]*bintree{}}, + "1595862781_add_audio_data.up.sql": &bintree{_1595862781_add_audio_dataUpSql, map[string]*bintree{}}, + "1595865249_create_emoji_reactions_table.up.sql": &bintree{_1595865249_create_emoji_reactions_tableUpSql, map[string]*bintree{}}, + "1596805115_create_group_chat_invitations_table.up.sql": &bintree{_1596805115_create_group_chat_invitations_tableUpSql, map[string]*bintree{}}, + "1597322655_add_invitation_admin_chat_field.up.sql": &bintree{_1597322655_add_invitation_admin_chat_fieldUpSql, map[string]*bintree{}}, + "1597757544_add_nickname.up.sql": &bintree{_1597757544_add_nicknameUpSql, map[string]*bintree{}}, + "1598955122_add_mentions.up.sql": &bintree{_1598955122_add_mentionsUpSql, map[string]*bintree{}}, + "1599641390_add_emoji_reactions_index.up.sql": &bintree{_1599641390_add_emoji_reactions_indexUpSql, map[string]*bintree{}}, + "1599720851_add_seen_index_remove_long_messages.up.sql": &bintree{_1599720851_add_seen_index_remove_long_messagesUpSql, map[string]*bintree{}}, + "1603198582_add_profile_chat_field.up.sql": &bintree{_1603198582_add_profile_chat_fieldUpSql, map[string]*bintree{}}, + "1603816533_add_links.up.sql": &bintree{_1603816533_add_linksUpSql, map[string]*bintree{}}, + "1603888149_create_chat_identity_last_published_table.up.sql": &bintree{_1603888149_create_chat_identity_last_published_tableUpSql, map[string]*bintree{}}, + "1605075346_add_communities.up.sql": &bintree{_1605075346_add_communitiesUpSql, map[string]*bintree{}}, + "1610117927_add_message_cache.up.sql": &bintree{_1610117927_add_message_cacheUpSql, map[string]*bintree{}}, + "1610959908_add_dont_wrap_to_raw_messages.up.sql": &bintree{_1610959908_add_dont_wrap_to_raw_messagesUpSql, map[string]*bintree{}}, + "1610960912_add_send_on_personal_topic.up.sql": &bintree{_1610960912_add_send_on_personal_topicUpSql, map[string]*bintree{}}, + "1612870480_add_datasync_id.up.sql": &bintree{_1612870480_add_datasync_idUpSql, map[string]*bintree{}}, + "1614152139_add_communities_request_to_join.up.sql": &bintree{_1614152139_add_communities_request_to_joinUpSql, map[string]*bintree{}}, + "1615374373_add_confirmations.up.sql": &bintree{_1615374373_add_confirmationsUpSql, map[string]*bintree{}}, + "1617694931_add_notification_center.up.sql": &bintree{_1617694931_add_notification_centerUpSql, map[string]*bintree{}}, + "1618923660_create_pin_messages.up.sql": &bintree{_1618923660_create_pin_messagesUpSql, map[string]*bintree{}}, + "1619094007_add_joined_chat_field.up.sql": &bintree{_1619094007_add_joined_chat_fieldUpSql, map[string]*bintree{}}, + "1619099821_add_last_synced_field.up.sql": &bintree{_1619099821_add_last_synced_fieldUpSql, map[string]*bintree{}}, + "1621933219_add_mentioned.up.sql": &bintree{_1621933219_add_mentionedUpSql, map[string]*bintree{}}, + "1622010048_add_unviewed_mentions_count.up.sql": &bintree{_1622010048_add_unviewed_mentions_countUpSql, map[string]*bintree{}}, + "1622061278_add_message_activity_center_notification_field.up.sql": &bintree{_1622061278_add_message_activity_center_notification_fieldUpSql, map[string]*bintree{}}, + "1622464518_set_synced_to_from.up.sql": &bintree{_1622464518_set_synced_to_fromUpSql, map[string]*bintree{}}, + "1622464519_add_chat_description.up.sql": &bintree{_1622464519_add_chat_descriptionUpSql, map[string]*bintree{}}, + "1622622253_add_pinned_by_to_pin_messages.up.sql": &bintree{_1622622253_add_pinned_by_to_pin_messagesUpSql, map[string]*bintree{}}, + "1623938329_add_author_activity_center_notification_field.up.sql": &bintree{_1623938329_add_author_activity_center_notification_fieldUpSql, map[string]*bintree{}}, + "1623938330_add_edit_messages.up.sql": &bintree{_1623938330_add_edit_messagesUpSql, map[string]*bintree{}}, + "1624978434_add_muted_community.up.sql": &bintree{_1624978434_add_muted_communityUpSql, map[string]*bintree{}}, "1625018910_add_repply_message_activity_center_notification_field.up.sql": &bintree{_1625018910_add_repply_message_activity_center_notification_fieldUpSql, map[string]*bintree{}}, - "1625762506_add_deleted_messages.up.sql": &bintree{_1625762506_add_deleted_messagesUpSql, map[string]*bintree{}}, - "1627388946_add_communities_synced_at.up.sql": &bintree{_1627388946_add_communities_synced_atUpSql, map[string]*bintree{}}, - "1628280060_create-usermessages-index.sql": &bintree{_1628280060_createUsermessagesIndexSql, map[string]*bintree{}}, - "1632303896_modify_contacts_table.up.sql": &bintree{_1632303896_modify_contacts_tableUpSql, map[string]*bintree{}}, - "1633349838_add_emoji_column_in_chats.up.sql": &bintree{_1633349838_add_emoji_column_in_chatsUpSql, map[string]*bintree{}}, - "1634831235_add_highlight_column_in_chats.up.sql": &bintree{_1634831235_add_highlight_column_in_chatsUpSql, map[string]*bintree{}}, - "1634896007_add_last_updated_locally_and_removed.up.sql": &bintree{_1634896007_add_last_updated_locally_and_removedUpSql, map[string]*bintree{}}, - "1635840039_add_clock_read_at_column_in_chats.up.sql": &bintree{_1635840039_add_clock_read_at_column_in_chatsUpSql, map[string]*bintree{}}, - "1637852321_add_received_invitation_admin_column_in_chats.up.sql": &bintree{_1637852321_add_received_invitation_admin_column_in_chatsUpSql, map[string]*bintree{}}, - "1645034601_display_name.up.sql": &bintree{_1645034601_display_nameUpSql, map[string]*bintree{}}, - "README.md": &bintree{readmeMd, map[string]*bintree{}}, - "doc.go": &bintree{docGo, map[string]*bintree{}}, + "1625762506_add_deleted_messages.up.sql": &bintree{_1625762506_add_deleted_messagesUpSql, map[string]*bintree{}}, + "1627388946_add_communities_synced_at.up.sql": &bintree{_1627388946_add_communities_synced_atUpSql, map[string]*bintree{}}, + "1628280060_create-usermessages-index.sql": &bintree{_1628280060_createUsermessagesIndexSql, map[string]*bintree{}}, + "1632303896_modify_contacts_table.up.sql": &bintree{_1632303896_modify_contacts_tableUpSql, map[string]*bintree{}}, + "1633349838_add_emoji_column_in_chats.up.sql": &bintree{_1633349838_add_emoji_column_in_chatsUpSql, map[string]*bintree{}}, + "1634831235_add_highlight_column_in_chats.up.sql": &bintree{_1634831235_add_highlight_column_in_chatsUpSql, map[string]*bintree{}}, + "1634896007_add_last_updated_locally_and_removed.up.sql": &bintree{_1634896007_add_last_updated_locally_and_removedUpSql, map[string]*bintree{}}, + "1635840039_add_clock_read_at_column_in_chats.up.sql": &bintree{_1635840039_add_clock_read_at_column_in_chatsUpSql, map[string]*bintree{}}, + "1637852321_add_received_invitation_admin_column_in_chats.up.sql": &bintree{_1637852321_add_received_invitation_admin_column_in_chatsUpSql, map[string]*bintree{}}, + "1645034601_display_name.up.sql": &bintree{_1645034601_display_nameUpSql, map[string]*bintree{}}, + "README.md": &bintree{readmeMd, map[string]*bintree{}}, + "doc.go": &bintree{docGo, map[string]*bintree{}}, }} -// RestoreAsset restores an asset under the given directory +// RestoreAsset restores an asset under the given directory. func RestoreAsset(dir, name string) error { data, err := Asset(name) if err != nil { @@ -1377,14 +1469,10 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) - if err != nil { - return err - } - return nil + return os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) } -// RestoreAssets restores an asset under the given directory recursively +// RestoreAssets restores an asset under the given directory recursively. func RestoreAssets(dir, name string) error { children, err := AssetDir(name) // File @@ -1402,7 +1490,6 @@ func RestoreAssets(dir, name string) error { } func _filePath(dir, name string) string { - cannonicalName := strings.Replace(name, "\\", "/", -1) - return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) + canonicalName := strings.Replace(name, "\\", "/", -1) + return filepath.Join(append([]string{dir}, strings.Split(canonicalName, "/")...)...) } - diff --git a/protocol/pushnotificationclient/migrations/migrations.go b/protocol/pushnotificationclient/migrations/migrations.go index 45a724926..9bd002b56 100644 --- a/protocol/pushnotificationclient/migrations/migrations.go +++ b/protocol/pushnotificationclient/migrations/migrations.go @@ -90,7 +90,7 @@ func _1593601729_initial_schemaDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1593601729_initial_schema.down.sql", size: 144, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "1593601729_initial_schema.down.sql", size: 144, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa, 0x95, 0x55, 0x64, 0x38, 0x40, 0x16, 0xbf, 0x8b, 0x1c, 0x18, 0xb4, 0xc5, 0x7f, 0xd0, 0xb8, 0xf0, 0x3c, 0xa2, 0x82, 0xf8, 0x8d, 0x5a, 0xd3, 0xb6, 0x6e, 0xa3, 0xb4, 0xc, 0x9, 0x33, 0x0}} return a, nil } @@ -110,7 +110,7 @@ func _1593601729_initial_schemaUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1593601729_initial_schema.up.sql", size: 1773, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "1593601729_initial_schema.up.sql", size: 1773, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x4e, 0x1e, 0x5, 0x35, 0x9, 0xb2, 0x2d, 0x6f, 0x33, 0x63, 0xa2, 0x7a, 0x5b, 0xd2, 0x2d, 0xcb, 0x79, 0x7e, 0x6, 0xb4, 0x9d, 0x35, 0xd8, 0x9b, 0x55, 0xe5, 0xf8, 0x44, 0xca, 0xa6, 0xf3, 0xd3}} return a, nil } @@ -130,7 +130,7 @@ func _1597909626_add_server_typeDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1597909626_add_server_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "1597909626_add_server_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -150,7 +150,7 @@ func _1597909626_add_server_typeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1597909626_add_server_type.up.sql", size: 145, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "1597909626_add_server_type.up.sql", size: 145, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc8, 0x3f, 0xe0, 0xe7, 0x57, 0x0, 0x5d, 0x60, 0xf3, 0x55, 0x64, 0x71, 0x80, 0x3c, 0xca, 0x8, 0x61, 0xb5, 0x3c, 0xe, 0xa1, 0xe4, 0x61, 0xd1, 0x4e, 0xd8, 0xb2, 0x55, 0xdd, 0x87, 0x62, 0x9b}} return a, nil } @@ -170,7 +170,7 @@ func _1599053776_add_chat_id_and_typeDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.down.sql", size: 0, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14, 0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24, 0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c, 0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55}} return a, nil } @@ -190,7 +190,7 @@ func _1599053776_add_chat_id_and_typeUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.up.sql", size: 264, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "1599053776_add_chat_id_and_type.up.sql", size: 264, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xea, 0x7a, 0xf9, 0xc4, 0xa2, 0x96, 0x2e, 0xf9, 0x8f, 0x7, 0xf1, 0x1e, 0x73, 0x8a, 0xa6, 0x3a, 0x13, 0x4, 0x73, 0x82, 0x83, 0xb, 0xe3, 0xb5, 0x3b, 0x7e, 0xd, 0x23, 0xce, 0x98, 0xd4, 0xdc}} return a, nil } @@ -210,7 +210,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc0, 0x2f, 0x1e, 0x64, 0x9, 0x93, 0xe4, 0x8b, 0xf2, 0x98, 0x5a, 0x45, 0xe2, 0x80, 0x88, 0x67, 0x7a, 0x2d, 0xd7, 0x4b, 0xd1, 0x73, 0xb6, 0x6d, 0x15, 0xc2, 0x0, 0x34, 0xcd, 0xa0, 0xdb, 0x20}} return a, nil } diff --git a/protocol/pushnotificationserver/migrations/migrations.go b/protocol/pushnotificationserver/migrations/migrations.go index 174d36052..feb73a6aa 100644 --- a/protocol/pushnotificationserver/migrations/migrations.go +++ b/protocol/pushnotificationserver/migrations/migrations.go @@ -88,7 +88,7 @@ func _1593601728_initial_schemaDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1593601728_initial_schema.down.sql", size: 200, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "1593601728_initial_schema.down.sql", size: 200, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x88, 0x8a, 0x61, 0x81, 0x57, 0x45, 0x9b, 0x97, 0x9b, 0x1f, 0xf6, 0x94, 0x8a, 0x20, 0xb3, 0x2b, 0xff, 0x69, 0x49, 0xf4, 0x58, 0xcc, 0xd0, 0x55, 0xcc, 0x9a, 0x8b, 0xb6, 0x7f, 0x29, 0x53, 0xc1}} return a, nil } @@ -108,7 +108,7 @@ func _1593601728_initial_schemaUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1593601728_initial_schema.up.sql", size: 675, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "1593601728_initial_schema.up.sql", size: 675, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xfd, 0x61, 0x90, 0x79, 0xd9, 0x14, 0x65, 0xe9, 0x96, 0x53, 0x17, 0x33, 0x54, 0xeb, 0x8b, 0x5d, 0x95, 0x99, 0x10, 0x36, 0x58, 0xdd, 0xb2, 0xbf, 0x45, 0xd9, 0xbb, 0xc4, 0x92, 0xe, 0xce, 0x2}} return a, nil } @@ -128,7 +128,7 @@ func _1598419937_add_push_notifications_tableDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1598419937_add_push_notifications_table.down.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "1598419937_add_push_notifications_table.down.sql", size: 51, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc, 0x98, 0xc8, 0x30, 0x45, 0x5b, 0xc5, 0x7d, 0x13, 0x5d, 0xe7, 0xc8, 0x23, 0x43, 0xf7, 0xdc, 0x9c, 0xe2, 0xdd, 0x63, 0xf0, 0xb7, 0x16, 0x40, 0xc, 0xda, 0xb9, 0x16, 0x70, 0x2b, 0x5a, 0x7e}} return a, nil } @@ -148,7 +148,7 @@ func _1598419937_add_push_notifications_tableUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1598419937_add_push_notifications_table.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "1598419937_add_push_notifications_table.up.sql", size: 104, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x2, 0x3e, 0xef, 0xf, 0xc2, 0xdf, 0xbc, 0x99, 0x7a, 0xc2, 0xd3, 0x64, 0x4f, 0x4c, 0x7e, 0xfc, 0x2e, 0x8c, 0xa7, 0x54, 0xd3, 0x4d, 0x25, 0x98, 0x41, 0xbc, 0xea, 0xd7, 0x2, 0xc1, 0xd0, 0x52}} return a, nil } @@ -168,7 +168,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "doc.go", size: 382, mode: os.FileMode(0644), modTime: time.Unix(1611588835, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc0, 0x2f, 0x1e, 0x64, 0x9, 0x93, 0xe4, 0x8b, 0xf2, 0x98, 0x5a, 0x45, 0xe2, 0x80, 0x88, 0x67, 0x7a, 0x2d, 0xd7, 0x4b, 0xd1, 0x73, 0xb6, 0x6d, 0x15, 0xc2, 0x0, 0x34, 0xcd, 0xa0, 0xdb, 0x20}} return a, nil } diff --git a/protocol/transport/migrations/migrations.go b/protocol/transport/migrations/migrations.go index baa50830d..5ebbb09e8 100644 --- a/protocol/transport/migrations/migrations.go +++ b/protocol/transport/migrations/migrations.go @@ -89,7 +89,7 @@ func _1561059284_add_waku_keysDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1561059284_add_waku_keys.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "1561059284_add_waku_keys.down.sql", size: 22, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe5, 0x2a, 0x7e, 0x9, 0xa3, 0xdd, 0xc6, 0x3, 0xfa, 0xaa, 0x98, 0xa0, 0x26, 0x5e, 0x67, 0x43, 0xe6, 0x20, 0xfd, 0x10, 0xfd, 0x60, 0x89, 0x17, 0x13, 0x87, 0x1b, 0x44, 0x36, 0x79, 0xb6, 0x60}} return a, nil } @@ -109,7 +109,7 @@ func _1561059284_add_waku_keysUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1561059284_add_waku_keys.up.sql", size: 109, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "1561059284_add_waku_keys.up.sql", size: 109, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xa9, 0x5c, 0x8, 0x32, 0xef, 0x12, 0x88, 0x21, 0xd, 0x7a, 0x42, 0x4d, 0xe7, 0x2d, 0x6c, 0x99, 0xb6, 0x1, 0xf1, 0xba, 0x2c, 0x40, 0x8d, 0xa9, 0x4b, 0xe6, 0xc4, 0x21, 0xec, 0x47, 0x6b, 0xf7}} return a, nil } @@ -129,7 +129,7 @@ func _1616691080_add_wakuv2_keysDownSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1628714143, 0)} + info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.down.sql", size: 24, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x42, 0xb6, 0x23, 0x70, 0xb8, 0x63, 0x18, 0x61, 0xea, 0x35, 0x6e, 0xae, 0xe9, 0x71, 0x89, 0xa, 0xa5, 0x72, 0xa2, 0x64, 0xaa, 0x45, 0x1, 0xf, 0xfc, 0xee, 0x1b, 0xd9, 0xd2, 0x27, 0xf4, 0xe2}} return a, nil } @@ -149,7 +149,7 @@ func _1616691080_add_wakuv2_keysUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1628714143, 0)} + info := bindataFileInfo{name: "1616691080_add_wakuV2_keys.up.sql", size: 111, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x10, 0xf0, 0x97, 0x25, 0xfe, 0x96, 0x2c, 0xa8, 0x62, 0x4a, 0x71, 0x75, 0xff, 0x5f, 0x43, 0x1e, 0x71, 0x53, 0xf1, 0xde, 0xf, 0xcf, 0xcd, 0x87, 0x15, 0x61, 0x9d, 0x25, 0x2e, 0xaf, 0x18, 0x99}} return a, nil } @@ -169,7 +169,7 @@ func _1634723014_add_wakuv2_keysUpSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "1634723014_add_wakuV2_keys.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1635152717, 0)} + info := bindataFileInfo{name: "1634723014_add_wakuV2_keys.up.sql", size: 125, mode: os.FileMode(0644), modTime: time.Unix(1643037480, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xe1, 0x7a, 0x1e, 0x6, 0xad, 0x1b, 0x37, 0xdb, 0xea, 0x94, 0xaf, 0xe0, 0x7d, 0xc9, 0xd6, 0xda, 0x52, 0x71, 0x8a, 0x44, 0xb3, 0xa6, 0x7b, 0x1e, 0x90, 0xdb, 0x1e, 0x5a, 0xa, 0x40, 0x26}} return a, nil } @@ -189,7 +189,7 @@ func docGo() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "doc.go", size: 373, mode: os.FileMode(0644), modTime: time.Unix(1621263711, 0)} + info := bindataFileInfo{name: "doc.go", size: 373, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x23, 0x6a, 0xc1, 0xce, 0x94, 0xf6, 0xef, 0xf1, 0x97, 0x95, 0xb, 0x35, 0xaf, 0x5f, 0xe7, 0x5f, 0xac, 0x6e, 0xb8, 0xab, 0xba, 0xb5, 0x35, 0x97, 0x22, 0x36, 0x11, 0xce, 0x44, 0xfc, 0xfa, 0xac}} return a, nil } diff --git a/services/ext/api.go b/services/ext/api.go index 423d85dd2..1ec6d6f82 100644 --- a/services/ext/api.go +++ b/services/ext/api.go @@ -12,7 +12,6 @@ import ( "github.com/ethereum/go-ethereum/common/hexutil" "github.com/ethereum/go-ethereum/log" - "github.com/ethereum/go-ethereum/p2p/enode" "github.com/ethereum/go-ethereum/rlp" "github.com/status-im/status-go/eth-node/crypto" @@ -703,24 +702,6 @@ func (api *PublicAPI) SignMessageWithChatKey(ctx context.Context, message string return api.service.messenger.SignMessage(message) } -func (api *PublicAPI) UpdateMailservers(enodes []string) error { - nodes := make([]*enode.Node, len(enodes)) - for i, rawurl := range enodes { - node, err := enode.ParseV4(rawurl) - if err != nil { - return err - } - nodes[i] = node - } - return api.service.UpdateMailservers(nodes) -} - -// Used in WakuV2 - Once proper peer management is added, we should probably remove this, or at least -// change mailserver so we use a peer.ID instead of a string / []byte -func (api *PublicAPI) SetMailserver(peer string) { - api.service.SetMailserver([]byte(peer)) -} - // PushNotifications server endpoints func (api *PublicAPI) StartPushNotificationsServer() error { @@ -909,6 +890,10 @@ func (api *PublicAPI) RequestAllHistoricMessages() (*protocol.MessengerResponse, return api.service.messenger.RequestAllHistoricMessages() } +func (api *PublicAPI) RequestAllHistoricMessagesWithRetries() (*protocol.MessengerResponse, error) { + return api.service.messenger.RequestAllHistoricMessagesWithRetries() +} + func (api *PublicAPI) DisconnectActiveMailserver() { api.service.messenger.DisconnectActiveMailserver() } @@ -980,6 +965,14 @@ func (api *PublicAPI) ImageServerURL() string { return api.service.messenger.ImageServerURL() } +func (api *PublicAPI) ToggleUseMailservers(value bool) error { + return api.service.messenger.ToggleUseMailservers(value) +} + +func (api *PublicAPI) SetPinnedMailservers(pinnedMailservers map[string]string) error { + return api.service.messenger.SetPinnedMailservers(pinnedMailservers) +} + // ----- // HELPER // ----- diff --git a/services/ext/service.go b/services/ext/service.go index 936c02423..b823ac3ca 100644 --- a/services/ext/service.go +++ b/services/ext/service.go @@ -194,6 +194,10 @@ func (s *Service) retrieveMessagesLoop(tick time.Duration, cancel <-chan struct{ for { select { case <-ticker.C: + // We might be shutting down here + if s.messenger == nil { + return + } response, err := s.messenger.RetrieveAll() if err != nil { log.Error("failed to retrieve raw messages", "err", err) @@ -333,24 +337,6 @@ func (s *Service) DisableInstallation(installationID string) error { return s.messenger.DisableInstallation(installationID) } -// UpdateMailservers updates information about selected mail servers. -func (s *Service) UpdateMailservers(nodes []*enode.Node) error { - if len(nodes) > 0 && s.messenger != nil { - s.messenger.SetMailserver(nodes[0].ID().Bytes()) - } - for _, peer := range nodes { - s.server.AddPeer(peer) - } - if err := s.peerStore.Update(nodes); err != nil { - return err - } - return nil -} - -func (s *Service) SetMailserver(peer []byte) { - s.messenger.SetMailserver(peer) -} - // Protocols returns a new protocols list. In this case, there are none. func (s *Service) Protocols() []p2p.Protocol { return []p2p.Protocol{} @@ -424,10 +410,6 @@ func buildMessengerOptions( options = append(options, protocol.WithDatasync()) } - if config.ShhextConfig.EnableMailserverCycle { - options = append(options, protocol.WithMailserverCycle()) - } - settings, err := accountsDB.GetSettings() if err != sql.ErrNoRows && err != nil { return nil, err diff --git a/services/mailservers/api_test.go b/services/mailservers/api_test.go index c9b9a17dd..c89e03856 100644 --- a/services/mailservers/api_test.go +++ b/services/mailservers/api_test.go @@ -32,6 +32,7 @@ func TestAddGetDeleteMailserver(t *testing.T) { ID: "mailserver001", Name: "My Mailserver", Address: "enode://...", + Custom: true, Fleet: "prod", } testMailserverWithPassword := testMailserver diff --git a/services/mailservers/database.go b/services/mailservers/database.go index a6351e7ae..5d6df12bb 100644 --- a/services/mailservers/database.go +++ b/services/mailservers/database.go @@ -9,15 +9,62 @@ import ( "strings" "time" + "github.com/libp2p/go-libp2p-core/peer" + + "github.com/ethereum/go-ethereum/p2p/enode" "github.com/status-im/status-go/protocol/transport" ) type Mailserver struct { - ID string `json:"id"` - Name string `json:"name"` - Address string `json:"address"` - Password string `json:"password,omitempty"` - Fleet string `json:"fleet"` + ID string `json:"id"` + Name string `json:"name"` + Custom bool `json:"custom"` + Address string `json:"address"` + Password string `json:"password,omitempty"` + Fleet string `json:"fleet"` + Version uint `json:"version"` + FailedRequests uint `json:"-"` +} + +func (m Mailserver) Enode() (*enode.Node, error) { + return enode.ParseV4(m.Address) +} + +func (m Mailserver) IDBytes() ([]byte, error) { + if m.Version == 2 { + id, err := peer.Decode(m.UniqueID()) + if err != nil { + return nil, err + } + return []byte(id.Pretty()), err + } + + node, err := enode.ParseV4(m.Address) + if err != nil { + return nil, err + } + return node.ID().Bytes(), nil +} + +func (m Mailserver) PeerID() (*peer.ID, error) { + if m.Version != 2 { + return nil, errors.New("not available") + } + + pID, err := peer.Decode(m.UniqueID()) + if err != nil { + return nil, err + } + + return &pID, nil +} + +func (m Mailserver) UniqueID() string { + if m.Version == 2 { + s := strings.Split(m.Address, "/") + return s[len(s)-1] + } + return m.Address } func (m Mailserver) nullablePassword() (val sql.NullString) { @@ -119,6 +166,7 @@ func (d *Database) Mailservers() ([]Mailserver, error) { ); err != nil { return nil, err } + m.Custom = true if password.Valid { m.Password = password.String } diff --git a/services/mailservers/fleet.go b/services/mailservers/fleet.go new file mode 100644 index 000000000..571db7b20 --- /dev/null +++ b/services/mailservers/fleet.go @@ -0,0 +1,135 @@ +package mailservers + +import "github.com/status-im/status-go/params" + +func DefaultMailservers() []Mailserver { + + return []Mailserver{ + Mailserver{ + ID: "mail-01.ac-cn-hongkong-c.eth.prod", + Address: "enode://606ae04a71e5db868a722c77a21c8244ae38f1bd6e81687cc6cfe88a3063fa1c245692232f64f45bd5408fed5133eab8ed78049332b04f9c110eac7f71c1b429@47.75.247.214:443", + Fleet: params.FleetProd, + Version: 1, + }, + Mailserver{ + ID: "mail-01.do-ams3.eth.prod", + Address: "enode://c42f368a23fa98ee546fd247220759062323249ef657d26d357a777443aec04db1b29a3a22ef3e7c548e18493ddaf51a31b0aed6079bd6ebe5ae838fcfaf3a49@178.128.142.54:443", + Fleet: params.FleetProd, + Version: 1, + }, + Mailserver{ + ID: "mail-01.gc-us-central1-a.eth.prod", + Address: "enode://ee2b53b0ace9692167a410514bca3024695dbf0e1a68e1dff9716da620efb195f04a4b9e873fb9b74ac84de801106c465b8e2b6c4f0d93b8749d1578bfcaf03e@104.197.238.144:443", + Fleet: params.FleetProd, + Version: 1, + }, + Mailserver{ + ID: "mail-02.ac-cn-hongkong-c.eth.prod", + Address: "enode://2c8de3cbb27a3d30cbb5b3e003bc722b126f5aef82e2052aaef032ca94e0c7ad219e533ba88c70585ebd802de206693255335b100307645ab5170e88620d2a81@47.244.221.14:443", + Fleet: params.FleetProd, + Version: 1, + }, + Mailserver{ + ID: "mail-02.do-ams3.eth.prod", + Address: "enode://7aa648d6e855950b2e3d3bf220c496e0cae4adfddef3e1e6062e6b177aec93bc6cdcf1282cb40d1656932ebfdd565729da440368d7c4da7dbd4d004b1ac02bf8@178.128.142.26:443", + Fleet: params.FleetProd, + Version: 1, + }, + Mailserver{ + ID: "mail-02.gc-us-central1-a.eth.prod", + Address: "enode://30211cbd81c25f07b03a0196d56e6ce4604bb13db773ff1c0ea2253547fafd6c06eae6ad3533e2ba39d59564cfbdbb5e2ce7c137a5ebb85e99dcfc7a75f99f55@23.236.58.92:443", + Fleet: params.FleetProd, + Version: 1, + }, + Mailserver{ + ID: "mail-03.ac-cn-hongkong-c.eth.prod", + Address: "enode://e85f1d4209f2f99da801af18db8716e584a28ad0bdc47fbdcd8f26af74dbd97fc279144680553ec7cd9092afe683ddea1e0f9fc571ebcb4b1d857c03a088853d@47.244.129.82:443", + Fleet: params.FleetProd, + Version: 1, + }, + Mailserver{ + ID: "mail-03.do-ams3.eth.prod", + Address: "enode://8a64b3c349a2e0ef4a32ea49609ed6eb3364be1110253c20adc17a3cebbc39a219e5d3e13b151c0eee5d8e0f9a8ba2cd026014e67b41a4ab7d1d5dd67ca27427@178.128.142.94:443", + Fleet: params.FleetProd, + Version: 1, + }, + Mailserver{ + ID: "mail-03.gc-us-central1-a.eth.prod", + Address: "enode://44160e22e8b42bd32a06c1532165fa9e096eebedd7fa6d6e5f8bbef0440bc4a4591fe3651be68193a7ec029021cdb496cfe1d7f9f1dc69eb99226e6f39a7a5d4@35.225.221.245:443", + Fleet: params.FleetProd, + Version: 1, + }, + Mailserver{ + ID: "mail-01.ac-cn-hongkong-c.eth.staging", + Address: "enode://b74859176c9751d314aeeffc26ec9f866a412752e7ddec91b19018a18e7cca8d637cfe2cedcb972f8eb64d816fbd5b4e89c7e8c7fd7df8a1329fa43db80b0bfe@47.52.90.156:443", + Fleet: params.FleetStaging, + Version: 1, + }, + Mailserver{ + ID: "mail-01.do-ams3.eth.staging", + Address: "enode://69f72baa7f1722d111a8c9c68c39a31430e9d567695f6108f31ccb6cd8f0adff4991e7fdca8fa770e75bc8a511a87d24690cbc80e008175f40c157d6f6788d48@206.189.240.16:443", + Fleet: params.FleetStaging, + Version: 1, + }, + Mailserver{ + ID: "mail-01.gc-us-central1-a.eth.staging", + Address: "enode://e4fc10c1f65c8aed83ac26bc1bfb21a45cc1a8550a58077c8d2de2a0e0cd18e40fd40f7e6f7d02dc6cd06982b014ce88d6e468725ffe2c138e958788d0002a7f@35.239.193.41:443", + Fleet: params.FleetStaging, + Version: 1, + }, + Mailserver{ + ID: "mail-01.ac-cn-hongkong-c.eth.test", + Address: "enode://619dbb5dda12e85bf0eb5db40fb3de625609043242737c0e975f7dfd659d85dc6d9a84f9461a728c5ab68c072fed38ca6a53917ca24b8e93cc27bdef3a1e79ac@47.52.188.196:443", + Fleet: params.FleetTest, + Version: 1, + }, + Mailserver{ + ID: "mail-01.do-ams3.eth.test", + Address: "enode://e4865fe6c2a9c1a563a6447990d8e9ce672644ae3e08277ce38ec1f1b690eef6320c07a5d60c3b629f5d4494f93d6b86a745a0bf64ab295bbf6579017adc6ed8@206.189.243.161:443", + Fleet: params.FleetTest, + Version: 1, + }, + Mailserver{ + ID: "mail-01.gc-us-central1-a.eth.test", + Address: "enode://707e57453acd3e488c44b9d0e17975371e2f8fb67525eae5baca9b9c8e06c86cde7c794a6c2e36203bf9f56cae8b0e50f3b33c4c2b694a7baeea1754464ce4e3@35.192.229.172:443", + Fleet: params.FleetTest, + Version: 1, + }, + Mailserver{ + ID: "node-01.ac-cn-hongkong-c.wakuv2.prod", + Address: "/ip4/8.210.222.231/tcp/30303/p2p/16Uiu2HAm4v86W3bmT1BiH6oSPzcsSr24iDQpSN5Qa992BCjjwgrD", + Fleet: params.FleetWakuV2Prod, + Version: 2, + }, + Mailserver{ + ID: "node-01.do-ams3.wakuv2.prod", + Address: "/ip4/188.166.135.145/tcp/30303/p2p/16Uiu2HAmL5okWopX7NqZWBUKVqW8iUxCEmd5GMHLVPwCgzYzQv3e", + Fleet: params.FleetWakuV2Prod, + Version: 2, + }, + Mailserver{ + ID: "node-01.gc-us-central1-a.wakuv2.prod", + Address: "/ip4/34.121.100.108/tcp/30303/p2p/16Uiu2HAmVkKntsECaYfefR1V2yCR79CegLATuTPE6B9TxgxBiiiA", + Fleet: params.FleetWakuV2Prod, + Version: 2, + }, + Mailserver{ + ID: "node-01.ac-cn-hongkong-c.wakuv2.test", + Address: "/ip4/47.242.210.73/tcp/30303/p2p/16Uiu2HAkvWiyFsgRhuJEb9JfjYxEkoHLgnUQmr1N5mKWnYjxYRVm", + Fleet: params.FleetWakuV2Test, + Version: 2, + }, + Mailserver{ + ID: "node-01.do-ams3.wakuv2.test", + Address: "/ip4/134.209.139.210/tcp/30303/p2p/16Uiu2HAmPLe7Mzm8TsYUubgCAW1aJoeFScxrLj8ppHFivPo97bUZ", + Fleet: params.FleetWakuV2Test, + Version: 2, + }, + Mailserver{ + ID: "node-01.gc-us-central1-a.wakuv2.test", + Address: "/ip4/104.154.239.128/tcp/30303/p2p/16Uiu2HAmJb2e28qLXxT5kZxVUUoJt72EMzNGXB47Rxx5hw3q4YjS", + Fleet: params.FleetWakuV2Test, + Version: 2, + }, + } +} diff --git a/signal/events_shhext.go b/signal/events_shhext.go index fa14b0108..331bf37bb 100644 --- a/signal/events_shhext.go +++ b/signal/events_shhext.go @@ -54,6 +54,9 @@ const ( // EventMailserverChanged is triggered when switching the active mailserver EventMailserverChanged = "mailserver.changed" + + // EventMailserverNotWorking is triggered when the mailserver has failed to connect or failed to respond to requests + EventMailserverNotWorking = "mailserver.not.working" ) // EnvelopeSignal includes hash of the envelope. @@ -91,6 +94,7 @@ type BundleAddedSignal struct { type MailserverSignal struct { Address string `json:"address"` + ID string `json:"id"` } type Filter struct { @@ -205,14 +209,20 @@ func SendNewMessages(obj json.Marshaler) { send(EventNewMessages, obj) } -func SendMailserverAvailable(nodeAddress string) { +func SendMailserverAvailable(nodeAddress, id string) { send(EventMailserverAvailable, MailserverSignal{ Address: nodeAddress, + ID: id, }) } -func SendMailserverChanged(nodeAddress string) { +func SendMailserverChanged(nodeAddress, id string) { send(EventMailserverChanged, MailserverSignal{ Address: nodeAddress, + ID: id, }) } + +func SendMailserverNotWorking() { + send(EventMailserverNotWorking, MailserverSignal{}) +} diff --git a/static/bindata.go b/static/bindata.go index c89742761..8f37c3339 100644 --- a/static/bindata.go +++ b/static/bindata.go @@ -1,33 +1,33 @@ -// Code generated by go-bindata. +// Code generated by go-bindata. DO NOT EDIT. // sources: -// emojis.txt -// ../config/README.md -// ../config/cli/anon-metric-node-client.json -// ../config/cli/anon-metric-node-server.json -// ../config/cli/fleet-eth.prod.json -// ../config/cli/fleet-eth.staging.json -// ../config/cli/fleet-eth.test.json -// ../config/cli/fleet-status.prod.json -// ../config/cli/fleet-status.test.json -// ../config/cli/fleet-wakuv2.prod.json -// ../config/cli/fleet-wakuv2.test.json -// ../config/cli/les-enabled.json -// ../config/cli/mailserver-enabled.json -// ../config/status-chain-genesis.json -// keys/bootnode.key -// keys/firebaseauthkey -// keys/test-account1-status-chain.pk -// keys/test-account1.pk -// keys/test-account2-status-chain.pk -// keys/test-account2.pk -// keys/test-account3-before-eip55.pk -// DO NOT EDIT! +// emojis.txt (28.134kB) +// ../config/README.md (3.031kB) +// ../config/cli/anon-metric-node-client.json (857B) +// ../config/cli/anon-metric-node-server.json (696B) +// ../config/cli/fleet-eth.prod.json (4.47kB) +// ../config/cli/fleet-eth.staging.json (1.98kB) +// ../config/cli/fleet-eth.test.json (2.174kB) +// ../config/cli/fleet-status.prod.json (1.92kB) +// ../config/cli/fleet-status.test.json (937B) +// ../config/cli/fleet-wakuv2.prod.json (747B) +// ../config/cli/fleet-wakuv2.test.json (748B) +// ../config/cli/les-enabled.json (58B) +// ../config/cli/mailserver-enabled.json (176B) +// ../config/status-chain-genesis.json (612B) +// keys/bootnode.key (65B) +// keys/firebaseauthkey (153B) +// keys/test-account1-status-chain.pk (489B) +// keys/test-account1.pk (491B) +// keys/test-account2-status-chain.pk (489B) +// keys/test-account2.pk (491B) +// keys/test-account3-before-eip55.pk (489B) package static import ( "bytes" "compress/gzip" + "crypto/sha256" "fmt" "io" "io/ioutil" @@ -40,7 +40,7 @@ import ( func bindataRead(data []byte, name string) ([]byte, error) { gz, err := gzip.NewReader(bytes.NewBuffer(data)) if err != nil { - return nil, fmt.Errorf("Read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %v", name, err) } var buf bytes.Buffer @@ -48,7 +48,7 @@ func bindataRead(data []byte, name string) ([]byte, error) { clErr := gz.Close() if err != nil { - return nil, fmt.Errorf("Read %q: %v", name, err) + return nil, fmt.Errorf("read %q: %v", name, err) } if clErr != nil { return nil, err @@ -58,8 +58,9 @@ func bindataRead(data []byte, name string) ([]byte, error) { } type asset struct { - bytes []byte - info os.FileInfo + bytes []byte + info os.FileInfo + digest [sha256.Size]byte } type bindataFileInfo struct { @@ -103,8 +104,8 @@ func emojisTxt() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "emojis.txt", size: 28134, mode: os.FileMode(436), modTime: time.Unix(1647264337, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "emojis.txt", size: 28134, mode: os.FileMode(0644), modTime: time.Unix(1647462278, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x28, 0xc, 0x22, 0x34, 0xa1, 0xeb, 0x8, 0x8d, 0xef, 0x38, 0x1b, 0xd8, 0xc2, 0x1a, 0x6d, 0xa2, 0x62, 0xad, 0x43, 0xfc, 0x1c, 0x38, 0xda, 0x8c, 0x3f, 0x34, 0xa, 0x8c, 0x6f, 0x5d, 0xd8}} return a, nil } @@ -123,8 +124,8 @@ func ConfigReadmeMd() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/README.md", size: 3031, mode: os.FileMode(436), modTime: time.Unix(1645543084, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "../config/README.md", size: 3031, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x15, 0x44, 0x2b, 0x13, 0x14, 0x34, 0xa, 0x66, 0x62, 0x1b, 0xc6, 0x4a, 0x2c, 0x7d, 0x4d, 0x89, 0xfb, 0xc9, 0x69, 0xe4, 0x18, 0x5f, 0x3, 0x98, 0x6d, 0x3c, 0x9e, 0xa8, 0xcd, 0x53, 0x5d, 0x75}} return a, nil } @@ -143,8 +144,8 @@ func ConfigCliAnonMetricNodeClientJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/anon-metric-node-client.json", size: 857, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "../config/cli/anon-metric-node-client.json", size: 857, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x90, 0xdf, 0xcd, 0xc8, 0x92, 0x1d, 0x63, 0x5e, 0xe1, 0xf9, 0x7f, 0xed, 0xf2, 0x68, 0x6b, 0x20, 0xff, 0x1d, 0x3b, 0xc9, 0x7b, 0xb9, 0x6a, 0xba, 0xd3, 0xbd, 0xf7, 0x48, 0x7b, 0x5a, 0x52, 0x79}} return a, nil } @@ -163,8 +164,8 @@ func ConfigCliAnonMetricNodeServerJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/anon-metric-node-server.json", size: 696, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "../config/cli/anon-metric-node-server.json", size: 696, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf0, 0x2f, 0x97, 0xab, 0x77, 0x61, 0x93, 0x9d, 0x1f, 0x33, 0x18, 0x72, 0xad, 0xce, 0xa3, 0x35, 0xa9, 0x44, 0xbf, 0x29, 0xa8, 0xea, 0x21, 0xb7, 0x22, 0x7f, 0x7d, 0x3a, 0x6b, 0x55, 0x3c, 0x66}} return a, nil } @@ -183,12 +184,12 @@ func ConfigCliFleetEthProdJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-eth.prod.json", size: 4470, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "../config/cli/fleet-eth.prod.json", size: 4470, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0x7b, 0x71, 0xe3, 0x8a, 0xb0, 0x7f, 0xc3, 0xe, 0xd2, 0x67, 0x38, 0x50, 0xf4, 0x27, 0xaa, 0xec, 0x47, 0xa1, 0x1, 0xf7, 0x5d, 0xe9, 0x8f, 0x3c, 0x35, 0x9f, 0xdb, 0x9b, 0x30, 0x88, 0x26}} return a, nil } -var _ConfigCliFleetEthStagingJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x95\x4f\x8b\x1d\xd9\xcd\x87\xf7\xfe\x14\x97\xbb\x7e\xa9\x91\xce\xd1\x91\x74\x7a\x65\xde\x49\xb2\x8b\x09\x99\xec\x42\x16\xfa\xeb\x69\x68\xfa\x42\xf7\xb5\x21\x09\xf3\xdd\x43\x79\x0c\xf1\x90\x9e\xb5\x77\x85\xaa\x38\xe7\x41\x7a\x7e\xaa\x7f\xbf\xbb\x5c\xae\x7f\xad\xe7\xac\x7f\x7d\xbe\x7d\x7a\xbd\x3e\x5c\xda\x9e\x5e\xeb\xff\xce\xf2\x87\xdb\x1f\x1e\x5f\xe3\xf6\xb9\x5e\xfe\xf9\x9b\xfa\x8f\x4f\x9f\x5e\xef\xf5\xf2\xe3\xed\xb9\x1f\x3f\x5e\x1f\x2e\xe7\x19\x97\xcb\xf5\x8f\xcf\xe6\x4f\x95\xd7\x87\xcb\xfd\xe5\xd3\x97\x2f\x2f\x97\xeb\x9f\x9e\xaa\xee\xd7\x87\xcb\xb5\xee\x3f\x1f\xaf\x77\xfb\xf8\xf8\xfc\xf1\xfa\xf5\xdd\xff\xdf\x6e\xf7\x0f\xb7\xac\xf3\xd6\xbf\x7f\x29\x5d\x2e\xd7\x7a\xbe\x65\x3d\xfc\xf0\x03\x4f\x70\x98\x34\xc2\xa8\xf6\x5a\xa3\x17\x08\x92\x73\x68\x0d\x4d\xde\x6b\x79\x40\x27\x52\xc9\x5e\xd0\x7b\x7a\x4c\x1f\xae\x11\x1a\xd8\xd3\x39\x11\x66\x36\x73\x2f\x34\x9c\x29\x32\x7d\xa5\x43\xe3\x04\x66\x6c\x5f\x21\xae\x6d\x03\x83\x54\x37\x04\x53\xc8\x76\x42\x5b\x6c\xb4\xe1\x3d\xc9\xb1\xf1\x18\x63\x1f\x44\x0f\x44\xf3\x2b\xf5\x37\x88\x2d\xbb\x7d\x6e\xdc\x2d\x23\x6c\x31\x58\x02\x4d\xca\x88\xa9\x62\xde\x45\x58\xc0\xcc\x03\xb0\x3c\x2d\x4d\x2b\x0b\x88\x07\x2d\x3a\x91\xca\x61\x45\x1a\xae\x1e\x2a\x39\x82\x3c\x75\xa5\x29\x36\x94\x8f\x95\x60\xa4\xec\xee\xa1\xd9\x34\xc4\xb7\xa0\xc5\xc2\x35\xa7\x27\x40\xd7\x7b\x14\x3a\x70\xea\x81\x20\xc7\x98\xfb\x6d\x4a\x04\x13\x0d\x94\x3d\xb6\x09\xe0\xae\x26\xb3\x31\x68\xa7\x4c\x18\x2d\x6c\xa5\x06\xdc\x04\x3e\x32\x54\x5d\x7c\x62\x79\x37\x19\x8f\xd9\xee\x44\x7e\x3e\x8a\x85\xdb\xd8\x1c\x18\x95\x53\x64\xe5\xc6\xf6\x42\x25\x9e\x81\x0b\xb6\x18\xdb\xe4\x4e\x1f\xa1\x40\xdd\xb3\x63\xf9\x5c\xef\xe7\x3a\xc6\xd4\x63\x9f\x8c\xbf\x76\xf2\x0b\xe2\x3f\xbe\x5a\xf0\xb7\x97\xd3\xa6\xfc\xb3\x3d\x3e\xfd\x54\x2f\x9f\xeb\xe5\x4d\x1d\x5c\x48\xd7\x46\xe1\xd8\xb2\x30\x27\x92\x55\x75\xc7\xe0\x8a\xdd\xca\x6c\x84\x43\xd6\x28\xc9\xac\xd8\xe8\xb8\x01\xd5\x50\x4b\x22\x4c\x93\xa7\x44\xd7\x88\xca\xf0\x2d\xa3\xb5\x9c\x29\x15\xb9\x3d\x97\x53\xe9\x0e\x29\x0d\xe9\x94\x6c\x35\x9c\x63\xb7\xd1\x4c\x57\x70\xf0\xae\x53\x87\x35\x8e\x0d\x07\x2e\x7e\xbb\xd1\x7c\x7a\xe0\x66\xd2\x28\x63\x24\x22\x9a\xc6\x0e\xd6\x98\xdb\x26\xd2\x84\xda\xb9\x58\x78\xaf\x66\x04\xed\x89\x11\xce\x91\xda\x60\xd9\x4d\x7b\x63\x49\x67\x98\xb6\x89\x40\xc9\xf2\x50\x5b\xe7\x39\x92\x83\x78\x43\x78\x28\x14\x80\xa2\xac\x26\x08\x5c\x92\xdc\x2c\xaa\x49\xfa\x7e\x00\x1f\xa8\xfb\x18\x04\x07\xfe\x0e\x64\x51\x07\x42\x60\xf3\x0a\xb5\x4a\x9d\x16\x83\x3d\xd0\xdb\x07\x1a\xad\x08\x34\x5d\x0b\x6c\x29\x88\x84\xe6\xc8\x1a\x06\x05\x91\xa8\x45\xd0\x49\xd0\x52\xdc\x92\x30\x32\x38\x12\x78\xeb\x70\x40\x8a\x52\x4d\x2e\x62\x95\xb1\xfa\xec\x36\x4e\xad\xbd\xf4\xe4\x03\x80\x61\xd2\xbf\xda\xb0\x0f\xdc\xf3\x20\xfc\x5f\x1b\xfe\xf2\xe9\xf5\xe7\x0f\xb7\xfb\x63\x3f\x86\xdd\x1f\x6f\xcf\xaf\x6f\x38\x01\xf4\xbd\x6d\xf8\x6f\x5f\x81\xbe\xf7\xd8\xbf\x65\xf9\xde\xd3\xfd\xed\x2c\x7f\xba\xdb\xfd\x31\x7e\x77\xc3\x83\x6a\xf4\xb2\x3d\x63\x09\xb7\xd5\x1a\xcd\x0d\xb2\x50\x94\xf8\xdc\xcd\xbd\xd5\x2d\x5a\x46\xaf\x5d\xaa\xd5\x8e\x9c\xed\xb6\x7c\x42\x2b\x18\xa5\x8b\xb6\xd6\x0c\x9f\xa9\xd2\xa3\x79\x0d\x14\xe2\x73\xc5\xa9\xb0\x12\xaf\xea\xa1\x9b\x83\xad\x07\x75\x8a\x18\x8d\x55\x7b\x39\x67\x7e\x8d\xf4\x18\x7c\xe0\x94\xb7\xe3\xb2\x91\x02\xce\xeb\x86\xb8\xf9\x84\xc0\xec\x9c\x98\x96\xc2\x6b\x18\x71\xa7\xed\x29\xb0\x68\x58\x15\x3a\xf0\xa0\xad\x8e\x93\x56\x15\x6c\x9c\x8c\xe4\xea\xbb\x66\x29\xf1\x18\xa5\x64\x32\x60\xc6\xd2\xa5\x56\x98\x5b\x71\x37\x4f\xab\x28\x9c\x55\xcc\x5a\xd4\xcc\xac\xc0\x73\xeb\x7e\x8f\x2c\xc7\x3e\xe3\x72\x20\xe9\xdb\x8c\x39\x55\x94\x08\x79\x8d\x06\x84\x39\x58\x75\xf7\xd0\xc9\x50\xbc\x7b\x24\xec\x04\x5e\x74\xfe\x24\xa9\x2d\x0d\x0a\xc5\xa7\x50\xd4\x9a\xb8\xb3\x98\x86\x6c\x73\x9b\x41\x64\xcb\x5b\x41\x72\x6f\x96\xe0\x14\x58\x3e\x9d\x82\x1d\x66\x9b\x80\xf0\x1c\x04\x35\xaa\xd8\x1a\xd0\xd6\xdc\x75\x46\x1a\xf7\x38\xe0\x50\xfe\x26\xd0\xef\x2e\x97\x5f\xde\xfd\xf2\xee\x3f\x01\x00\x00\xff\xff\xff\x1f\xf2\xb6\x61\x08\x00\x00") +var _ConfigCliFleetEthStagingJson = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xc4\x95\xcf\x8b\x1d\xc9\x0d\xc7\xef\xfe\x2b\x1e\xef\x1c\x7a\xa5\x2a\x95\xa4\x9a\x93\xc9\x26\xb9\xc5\x84\x6c\x6e\x21\x07\xfd\xf4\x0e\x0c\xf3\x60\xe6\xd9\x90\x84\xfd\xdf\x43\x7b\x0d\xf1\x92\xc9\xd9\xb7\x46\xdd\x54\x7d\xfa\x53\xfa\xaa\xfe\xfd\xee\x72\xb9\xfe\xb5\x9e\xb3\xfe\xf5\xf9\xf6\xe9\xf5\xfa\x70\x69\x7b\x7a\xad\xdf\x9d\xe5\x0f\xb7\x3f\x3c\xbe\xc6\xed\x73\xbd\xfc\xf3\x37\xf5\x1f\x9f\x3e\xbd\xde\xeb\xe5\xc7\xdb\x73\x3f\x7e\xbc\x3e\x5c\xce\x35\x2e\x97\xeb\x1f\x9f\xcd\x9f\x2a\xaf\x0f\x97\xfb\xcb\xa7\x2f\x5f\x5e\x2e\xd7\x3f\x3d\x55\xdd\xaf\x0f\x97\x6b\xdd\x7f\x3e\x5e\xef\xf6\xf1\xf1\xf9\xe3\xf5\xeb\xbb\xdf\xdf\x6e\xf7\x0f\xb7\xac\x73\xd7\xbf\x7f\x29\x5d\x2e\xd7\x7a\xbe\x65\x3d\xfc\xf0\x03\x4f\x70\x98\x34\xc2\xa8\xf6\x5a\xa3\x17\x08\x92\x73\x68\x0d\x4d\xde\x6b\x79\x40\x27\x52\xc9\x5e\xd0\x7b\x7a\x4c\x1f\xae\x11\x1a\xd8\xd3\x39\x11\x66\x36\x73\x2f\x34\x9c\x29\x32\x7d\xa5\x43\xe3\x04\x66\x6c\x5f\x21\xae\x6d\x03\x83\x54\x37\x04\x53\xc8\x76\x42\x5b\x6c\xb4\xe1\x3d\xc9\xb1\xf1\x18\x63\x1f\x44\x0f\x44\xf3\x2b\xf5\x37\x88\x2d\xbb\x7d\x6e\xdc\x2d\x23\x6c\x31\x58\x02\x4d\xca\x88\xa9\x62\xde\x45\x58\xc0\xcc\x03\xb0\x3c\x2d\x4d\x2b\x0b\x88\x07\x2d\x3a\x91\xca\x61\x45\x1a\xae\x1e\x2a\x39\x82\x3c\x75\xa5\x29\x36\x94\x8f\x95\x60\xa4\xec\xee\xa1\xd9\x34\xc4\xb7\xa0\xc5\xc2\x35\xa7\x27\x40\xd7\x7b\x14\x3a\x70\xea\x81\x20\xc7\x98\xfb\x6d\x4a\x04\x13\x0d\x94\x3d\xb6\x09\xe0\xae\x26\xb3\x31\x68\xa7\x4c\x18\x2d\x6c\xa5\x06\xdc\x04\x3e\x32\x54\x5d\x7c\x62\x79\x37\x19\x8f\xd9\xee\x44\x7e\x3e\x8a\x85\xdb\xd8\x1c\x18\x95\x53\x64\xe5\xc6\xf6\x42\x25\x9e\x81\x0b\xb6\x18\xdb\xe4\x4e\x1f\xa1\x40\xdd\xb3\x63\xf9\x5c\xef\xe7\x3a\xc6\xd4\x63\x9f\x8c\xbf\x9a\xfc\x82\xf8\x8f\xaf\x5d\xf0\xb7\x97\xb3\x9b\xf2\xcf\xf6\xf8\xf4\x53\xbd\x7c\xae\x97\x37\xdb\xc1\x85\x74\x6d\x14\x8e\x2d\x0b\x73\x22\x59\x55\x77\x0c\xae\xd8\xad\xcc\x46\x38\x64\x8d\x92\xcc\x8a\x8d\x8e\x1b\x50\x0d\xb5\x24\xc2\x34\x79\x4a\x74\x8d\xa8\x0c\xdf\x32\x5a\xcb\x99\x52\x91\xdb\x73\x39\x95\xee\x90\xd2\x90\x4e\xc9\x56\xc3\x39\x76\x1b\xcd\x74\x05\x07\xef\x3a\xdb\x61\x8d\x63\xc3\x81\x8b\xdf\x16\x5d\xd4\x81\x10\xd8\xbc\x42\xad\x52\xa7\xc5\x60\x0f\xf4\xf6\x81\x46\x2b\x02\x4d\xd7\x02\x5b\x0a\x22\xa1\x39\xb2\x86\x41\x41\x24\x6a\x11\x74\x12\xb4\x14\xb7\x24\x8c\x0c\x8e\x04\xde\x3a\x1c\x90\xa2\x54\x93\x8b\x58\x65\xac\x3e\x7f\x04\xa7\xd6\x5e\x2a\xaa\x09\x00\xc3\xa4\x7f\x15\xbd\x0f\xdc\xf3\x20\xfc\x5f\xd1\x7f\xf9\xf4\xfa\xf3\x87\xdb\xfd\xb1\x1f\xc3\xee\x8f\xb7\xe7\xd7\x37\x74\x03\x7d\x6f\xd1\xff\xf5\x0a\xc4\x67\xb2\xdc\x4c\x1a\x65\x8c\x44\x44\xd3\xd8\xc1\x1a\x73\xdb\x44\x9a\x50\x3b\x17\x0b\xef\xd5\x8c\xa0\x3d\x31\xc2\x39\x52\x1b\x2c\xbb\x69\x6f\x2c\xe9\x0c\xd3\x36\x11\x28\x59\x1e\x6a\xeb\x5c\x47\x72\x10\x6f\x08\x0f\x85\x02\x50\x94\xd5\x04\x81\x4b\x92\x9b\x4f\xad\xa4\xdf\xb2\x7c\xef\xd3\xfd\xed\x59\xfe\x74\xb7\xfb\x63\xfc\xdf\xe1\x09\xaa\xd1\xcb\xf6\x8c\x25\xdc\x56\x6b\x34\x37\xc8\x42\x51\xe2\x73\xec\xf5\x56\xb7\x68\x19\xbd\x76\xa9\x56\x3b\x72\xb6\xdb\xf2\x09\xad\x60\x94\x2e\xda\x5a\x33\x7c\xa6\x4a\x8f\xe6\x35\x50\x88\xcf\xe9\xa1\xc2\x4a\xbc\xaa\x87\x6e\x0e\xb6\x1e\xd4\x29\x62\x34\x56\xed\xe5\x9c\xf9\x35\x2d\x63\xf0\x81\x53\xde\x8e\xcb\x46\x0a\x38\xb7\x1b\xe2\xe6\x13\x02\xb3\x73\x62\x5a\x0a\xaf\x61\xc4\x9d\xb6\xa7\xc0\xa2\x61\x55\xe8\xc0\x83\xb6\x3a\x4e\x5a\x55\xb0\x71\x32\x92\xab\xef\x9a\xa5\xc4\x63\x94\x92\xc9\x80\x19\x4b\x97\x5a\x61\x6e\xc5\xdd\x3c\xad\xa2\x70\x56\x31\x6b\x51\x33\xb3\x02\xcf\xad\xfb\x3d\xb2\x1c\xfb\x8c\xcb\x81\xa4\x6f\x33\xe6\x54\x51\x22\xe4\x35\x1a\x10\xe6\x60\xd5\xdd\x43\x27\x43\xf1\xee\x91\xb0\x13\x78\xd1\x79\xff\x50\x5b\x1a\x14\x8a\x4f\xa1\xa8\x35\x71\x67\x31\x0d\xd9\xe6\x36\x83\xc8\x96\xb7\x82\xe4\xde\x2c\xc1\x29\xb0\x7c\x3a\x05\x3b\xcc\x36\x01\xe1\x39\x08\x6a\x54\xb1\x35\xa0\xad\xb9\xeb\x8c\x34\xee\x71\xc0\xa1\xfc\x4d\xa0\xdf\x5d\x2e\xbf\xbc\xfb\xe5\xdd\x7f\x02\x00\x00\xff\xff\xd6\xb8\xb9\xd5\xbc\x07\x00\x00") func ConfigCliFleetEthStagingJsonBytes() ([]byte, error) { return bindataRead( @@ -203,8 +204,8 @@ func ConfigCliFleetEthStagingJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-eth.staging.json", size: 2145, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "../config/cli/fleet-eth.staging.json", size: 1980, mode: os.FileMode(0644), modTime: time.Unix(1647462281, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xf5, 0x9c, 0x6d, 0x7c, 0xd8, 0xb7, 0xd2, 0x5f, 0x83, 0x52, 0x83, 0x72, 0x43, 0xb7, 0x81, 0x1e, 0x33, 0x5e, 0xfb, 0x79, 0xb8, 0x26, 0xce, 0x4c, 0x7f, 0x10, 0xa6, 0x96, 0x38, 0xc3, 0xde, 0x19}} return a, nil } @@ -223,8 +224,8 @@ func ConfigCliFleetEthTestJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-eth.test.json", size: 2174, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "../config/cli/fleet-eth.test.json", size: 2174, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x55, 0x19, 0xca, 0x8d, 0xaa, 0x69, 0x9b, 0xa2, 0xa1, 0xdd, 0xef, 0xf2, 0x63, 0x5e, 0xcd, 0xe2, 0x8f, 0xc7, 0x37, 0x7e, 0x41, 0xa1, 0xc1, 0x3f, 0x65, 0x80, 0xa, 0xa4, 0x27, 0x74, 0x8d, 0xc6}} return a, nil } @@ -243,8 +244,8 @@ func ConfigCliFleetStatusProdJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-status.prod.json", size: 1920, mode: os.FileMode(436), modTime: time.Unix(1647264337, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "../config/cli/fleet-status.prod.json", size: 1920, mode: os.FileMode(0644), modTime: time.Unix(1647462278, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5, 0xf, 0x4a, 0x61, 0xd2, 0xfd, 0x7d, 0x59, 0xcf, 0x49, 0x81, 0x6, 0x71, 0xdb, 0x63, 0xe8, 0xeb, 0xdf, 0x9e, 0x65, 0x22, 0xae, 0x9b, 0xb0, 0x16, 0x17, 0xe0, 0x52, 0xe6, 0xb, 0xcf, 0x88}} return a, nil } @@ -263,8 +264,8 @@ func ConfigCliFleetStatusTestJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-status.test.json", size: 937, mode: os.FileMode(436), modTime: time.Unix(1646853782, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "../config/cli/fleet-status.test.json", size: 937, mode: os.FileMode(0644), modTime: time.Unix(1646392728, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x5c, 0x3b, 0xc5, 0xd2, 0xe9, 0xd3, 0x52, 0xd4, 0x5a, 0xf3, 0xed, 0x37, 0xed, 0xde, 0xda, 0xc1, 0x57, 0x37, 0x17, 0x8c, 0x40, 0xee, 0x12, 0x82, 0x14, 0x2c, 0x8b, 0xc7, 0x4b, 0x2, 0xf8, 0x82}} return a, nil } @@ -283,8 +284,8 @@ func ConfigCliFleetWakuv2ProdJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.prod.json", size: 747, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.prod.json", size: 747, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xc3, 0x81, 0x84, 0xfd, 0x7d, 0x7e, 0x27, 0xc8, 0x5e, 0xb6, 0x38, 0xe1, 0x6, 0xa, 0xbc, 0x86, 0x87, 0x54, 0xa2, 0x2f, 0xe1, 0xa1, 0xc8, 0x6, 0x80, 0xfa, 0xed, 0xfe, 0x13, 0x6c, 0x81, 0xd9}} return a, nil } @@ -303,8 +304,8 @@ func ConfigCliFleetWakuv2TestJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.test.json", size: 748, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "../config/cli/fleet-wakuv2.test.json", size: 748, mode: os.FileMode(0644), modTime: time.Unix(1637600491, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x77, 0x6d, 0x28, 0xb7, 0xc2, 0xf3, 0x22, 0xe3, 0x6d, 0xc1, 0xeb, 0x4b, 0x42, 0xe2, 0x6, 0xb0, 0x60, 0x30, 0xdb, 0xe3, 0x26, 0xff, 0x9, 0xf5, 0xea, 0xe6, 0x56, 0xce, 0xa8, 0x98, 0x61, 0x70}} return a, nil } @@ -323,8 +324,8 @@ func ConfigCliLesEnabledJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/les-enabled.json", size: 58, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "../config/cli/les-enabled.json", size: 58, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x7e, 0xee, 0x27, 0xa7, 0x74, 0xa0, 0x46, 0xa1, 0x41, 0xed, 0x4d, 0x16, 0x5b, 0xf3, 0xf0, 0x7c, 0xc8, 0x2f, 0x6f, 0x47, 0xa4, 0xbb, 0x5f, 0x43, 0x33, 0xd, 0x9, 0x9d, 0xea, 0x9e, 0x15, 0xee}} return a, nil } @@ -343,8 +344,8 @@ func ConfigCliMailserverEnabledJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/cli/mailserver-enabled.json", size: 176, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "../config/cli/mailserver-enabled.json", size: 176, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x34, 0xec, 0x81, 0x8b, 0x99, 0xb6, 0xdb, 0xc0, 0x8b, 0x46, 0x97, 0x96, 0xc7, 0x58, 0x30, 0x33, 0xef, 0x54, 0x25, 0x87, 0x7b, 0xb9, 0x94, 0x6b, 0x18, 0xa4, 0x5b, 0x58, 0x67, 0x7c, 0x44, 0xa6}} return a, nil } @@ -363,8 +364,8 @@ func ConfigStatusChainGenesisJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "../config/status-chain-genesis.json", size: 612, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "../config/status-chain-genesis.json", size: 612, mode: os.FileMode(0644), modTime: time.Unix(1599559876, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xb, 0xf0, 0xc, 0x1, 0x95, 0x65, 0x6, 0x55, 0x48, 0x8f, 0x83, 0xa0, 0xb4, 0x81, 0xda, 0xad, 0x30, 0x6d, 0xb2, 0x78, 0x1b, 0x26, 0x4, 0x13, 0x12, 0x9, 0x6, 0xae, 0x3a, 0x2c, 0x1, 0x71}} return a, nil } @@ -383,8 +384,8 @@ func keysBootnodeKey() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/bootnode.key", size: 65, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "keys/bootnode.key", size: 65, mode: os.FileMode(0644), modTime: time.Unix(1599559877, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x31, 0xcf, 0x27, 0xd4, 0x96, 0x2e, 0x32, 0xcd, 0x58, 0x96, 0x2a, 0xe5, 0x8c, 0xa0, 0xf1, 0x73, 0x1f, 0xd6, 0xd6, 0x8b, 0xb, 0x73, 0xd3, 0x2c, 0x84, 0x1a, 0x56, 0xa4, 0x74, 0xb6, 0x95, 0x20}} return a, nil } @@ -403,8 +404,8 @@ func keysFirebaseauthkey() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/firebaseauthkey", size: 153, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "keys/firebaseauthkey", size: 153, mode: os.FileMode(0644), modTime: time.Unix(1536843582, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xe, 0x69, 0x23, 0x64, 0x7d, 0xf9, 0x14, 0x37, 0x6f, 0x2b, 0x1, 0xf0, 0xb0, 0xa4, 0xb2, 0xd0, 0x18, 0xcd, 0xf9, 0xeb, 0x57, 0xa3, 0xfd, 0x79, 0x25, 0xa7, 0x9c, 0x3, 0xce, 0x26, 0xec, 0xe1}} return a, nil } @@ -423,8 +424,8 @@ func keysTestAccount1StatusChainPk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account1-status-chain.pk", size: 489, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "keys/test-account1-status-chain.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1599559877, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8f, 0xba, 0x35, 0x1, 0x2b, 0x9d, 0xad, 0xf0, 0x2d, 0x3c, 0x4d, 0x6, 0xb5, 0x22, 0x2, 0x47, 0xd4, 0x1c, 0xf4, 0x31, 0x2f, 0xb, 0x5b, 0x27, 0x5d, 0x43, 0x97, 0x58, 0x2d, 0xf0, 0xe1, 0xbe}} return a, nil } @@ -443,8 +444,8 @@ func keysTestAccount1Pk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account1.pk", size: 491, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "keys/test-account1.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1599559877, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9, 0x43, 0xc2, 0xf4, 0x8c, 0xc6, 0x64, 0x25, 0x8c, 0x7, 0x8c, 0xa8, 0x89, 0x2b, 0x7b, 0x9b, 0x4f, 0x81, 0xcb, 0xce, 0x3d, 0xef, 0x82, 0x9c, 0x27, 0x27, 0xa9, 0xc5, 0x46, 0x70, 0x30, 0x38}} return a, nil } @@ -463,8 +464,8 @@ func keysTestAccount2StatusChainPk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account2-status-chain.pk", size: 489, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "keys/test-account2-status-chain.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1599559877, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9, 0xf8, 0x5c, 0xe9, 0x92, 0x96, 0x2d, 0x88, 0x2b, 0x8e, 0x42, 0x3f, 0xa4, 0x93, 0x6c, 0xad, 0xe9, 0xc0, 0x1b, 0x8a, 0x8, 0x8c, 0x5e, 0x7a, 0x84, 0xa2, 0xf, 0x9f, 0x77, 0x58, 0x2c, 0x2c}} return a, nil } @@ -483,8 +484,8 @@ func keysTestAccount2Pk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account2.pk", size: 491, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "keys/test-account2.pk", size: 491, mode: os.FileMode(0644), modTime: time.Unix(1599559877, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x9f, 0x72, 0xd5, 0x95, 0x5c, 0x5a, 0x99, 0x9d, 0x2f, 0x21, 0x83, 0xd7, 0x10, 0x17, 0x4a, 0x3d, 0x65, 0xc9, 0x26, 0x1a, 0x2c, 0x9d, 0x65, 0x63, 0xd2, 0xa0, 0xfc, 0x7c, 0x0, 0x87, 0x38, 0x9f}} return a, nil } @@ -503,8 +504,8 @@ func keysTestAccount3BeforeEip55Pk() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "keys/test-account3-before-eip55.pk", size: 489, mode: os.FileMode(436), modTime: time.Unix(1643209233, 0)} - a := &asset{bytes: bytes, info: info} + info := bindataFileInfo{name: "keys/test-account3-before-eip55.pk", size: 489, mode: os.FileMode(0644), modTime: time.Unix(1599559877, 0)} + a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x81, 0x40, 0x56, 0xc1, 0x5e, 0x10, 0x6e, 0x28, 0x15, 0x3, 0x4e, 0xc4, 0xc4, 0x71, 0x4d, 0x16, 0x99, 0xcc, 0x1b, 0x63, 0xee, 0x10, 0x20, 0xe4, 0x59, 0x52, 0x3f, 0xc0, 0xad, 0x15, 0x13, 0x72}} return a, nil } @@ -512,8 +513,8 @@ func keysTestAccount3BeforeEip55Pk() (*asset, error) { // It returns an error if the asset could not be found or // could not be loaded. func Asset(name string) ([]byte, error) { - cannonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[cannonicalName]; ok { + canonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[canonicalName]; ok { a, err := f() if err != nil { return nil, fmt.Errorf("Asset %s can't read by error: %v", name, err) @@ -523,6 +524,12 @@ func Asset(name string) ([]byte, error) { return nil, fmt.Errorf("Asset %s not found", name) } +// AssetString returns the asset contents as a string (instead of a []byte). +func AssetString(name string) (string, error) { + data, err := Asset(name) + return string(data), err +} + // MustAsset is like Asset but panics when Asset would return an error. // It simplifies safe initialization of global variables. func MustAsset(name string) []byte { @@ -534,12 +541,18 @@ func MustAsset(name string) []byte { return a } +// MustAssetString is like AssetString but panics when Asset would return an +// error. It simplifies safe initialization of global variables. +func MustAssetString(name string) string { + return string(MustAsset(name)) +} + // AssetInfo loads and returns the asset info for the given name. // It returns an error if the asset could not be found or // could not be loaded. func AssetInfo(name string) (os.FileInfo, error) { - cannonicalName := strings.Replace(name, "\\", "/", -1) - if f, ok := _bindata[cannonicalName]; ok { + canonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[canonicalName]; ok { a, err := f() if err != nil { return nil, fmt.Errorf("AssetInfo %s can't read by error: %v", name, err) @@ -549,6 +562,33 @@ func AssetInfo(name string) (os.FileInfo, error) { return nil, fmt.Errorf("AssetInfo %s not found", name) } +// AssetDigest returns the digest of the file with the given name. It returns an +// error if the asset could not be found or the digest could not be loaded. +func AssetDigest(name string) ([sha256.Size]byte, error) { + canonicalName := strings.Replace(name, "\\", "/", -1) + if f, ok := _bindata[canonicalName]; ok { + a, err := f() + if err != nil { + return [sha256.Size]byte{}, fmt.Errorf("AssetDigest %s can't read by error: %v", name, err) + } + return a.digest, nil + } + return [sha256.Size]byte{}, fmt.Errorf("AssetDigest %s not found", name) +} + +// Digests returns a map of all known files and their checksums. +func Digests() (map[string][sha256.Size]byte, error) { + mp := make(map[string][sha256.Size]byte, len(_bindata)) + for name := range _bindata { + a, err := _bindata[name]() + if err != nil { + return nil, err + } + mp[name] = a.digest + } + return mp, nil +} + // AssetNames returns the names of the assets. func AssetNames() []string { names := make([]string, 0, len(_bindata)) @@ -561,25 +601,45 @@ func AssetNames() []string { // _bindata is a table, holding each asset generator, mapped to its name. var _bindata = map[string]func() (*asset, error){ "emojis.txt": emojisTxt, + "../config/README.md": ConfigReadmeMd, + "../config/cli/anon-metric-node-client.json": ConfigCliAnonMetricNodeClientJson, + "../config/cli/anon-metric-node-server.json": ConfigCliAnonMetricNodeServerJson, + "../config/cli/fleet-eth.prod.json": ConfigCliFleetEthProdJson, + "../config/cli/fleet-eth.staging.json": ConfigCliFleetEthStagingJson, + "../config/cli/fleet-eth.test.json": ConfigCliFleetEthTestJson, + "../config/cli/fleet-status.prod.json": ConfigCliFleetStatusProdJson, + "../config/cli/fleet-status.test.json": ConfigCliFleetStatusTestJson, + "../config/cli/fleet-wakuv2.prod.json": ConfigCliFleetWakuv2ProdJson, + "../config/cli/fleet-wakuv2.test.json": ConfigCliFleetWakuv2TestJson, + "../config/cli/les-enabled.json": ConfigCliLesEnabledJson, + "../config/cli/mailserver-enabled.json": ConfigCliMailserverEnabledJson, + "../config/status-chain-genesis.json": ConfigStatusChainGenesisJson, + "keys/bootnode.key": keysBootnodeKey, + "keys/firebaseauthkey": keysFirebaseauthkey, + "keys/test-account1-status-chain.pk": keysTestAccount1StatusChainPk, + "keys/test-account1.pk": keysTestAccount1Pk, + "keys/test-account2-status-chain.pk": keysTestAccount2StatusChainPk, + "keys/test-account2.pk": keysTestAccount2Pk, + "keys/test-account3-before-eip55.pk": keysTestAccount3BeforeEip55Pk, } @@ -592,15 +652,15 @@ var _bindata = map[string]func() (*asset, error){ // img/ // a.png // b.png -// then AssetDir("data") would return []string{"foo.txt", "img"} -// AssetDir("data/img") would return []string{"a.png", "b.png"} -// AssetDir("foo.txt") and AssetDir("notexist") would return an error +// then AssetDir("data") would return []string{"foo.txt", "img"}, +// AssetDir("data/img") would return []string{"a.png", "b.png"}, +// AssetDir("foo.txt") and AssetDir("notexist") would return an error, and // AssetDir("") will return []string{"data"}. func AssetDir(name string) ([]string, error) { node := _bintree if len(name) != 0 { - cannonicalName := strings.Replace(name, "\\", "/", -1) - pathList := strings.Split(cannonicalName, "/") + canonicalName := strings.Replace(name, "\\", "/", -1) + pathList := strings.Split(canonicalName, "/") for _, p := range pathList { node = node.Children[p] if node == nil { @@ -622,6 +682,7 @@ type bintree struct { Func func() (*asset, error) Children map[string]*bintree } + var _bintree = &bintree{nil, map[string]*bintree{ "..": &bintree{nil, map[string]*bintree{ "config": &bintree{nil, map[string]*bintree{ @@ -629,32 +690,32 @@ var _bintree = &bintree{nil, map[string]*bintree{ "cli": &bintree{nil, map[string]*bintree{ "anon-metric-node-client.json": &bintree{ConfigCliAnonMetricNodeClientJson, map[string]*bintree{}}, "anon-metric-node-server.json": &bintree{ConfigCliAnonMetricNodeServerJson, map[string]*bintree{}}, - "fleet-eth.prod.json": &bintree{ConfigCliFleetEthProdJson, map[string]*bintree{}}, - "fleet-eth.staging.json": &bintree{ConfigCliFleetEthStagingJson, map[string]*bintree{}}, - "fleet-eth.test.json": &bintree{ConfigCliFleetEthTestJson, map[string]*bintree{}}, - "fleet-status.prod.json": &bintree{ConfigCliFleetStatusProdJson, map[string]*bintree{}}, - "fleet-status.test.json": &bintree{ConfigCliFleetStatusTestJson, map[string]*bintree{}}, - "fleet-wakuv2.prod.json": &bintree{ConfigCliFleetWakuv2ProdJson, map[string]*bintree{}}, - "fleet-wakuv2.test.json": &bintree{ConfigCliFleetWakuv2TestJson, map[string]*bintree{}}, - "les-enabled.json": &bintree{ConfigCliLesEnabledJson, map[string]*bintree{}}, - "mailserver-enabled.json": &bintree{ConfigCliMailserverEnabledJson, map[string]*bintree{}}, + "fleet-eth.prod.json": &bintree{ConfigCliFleetEthProdJson, map[string]*bintree{}}, + "fleet-eth.staging.json": &bintree{ConfigCliFleetEthStagingJson, map[string]*bintree{}}, + "fleet-eth.test.json": &bintree{ConfigCliFleetEthTestJson, map[string]*bintree{}}, + "fleet-status.prod.json": &bintree{ConfigCliFleetStatusProdJson, map[string]*bintree{}}, + "fleet-status.test.json": &bintree{ConfigCliFleetStatusTestJson, map[string]*bintree{}}, + "fleet-wakuv2.prod.json": &bintree{ConfigCliFleetWakuv2ProdJson, map[string]*bintree{}}, + "fleet-wakuv2.test.json": &bintree{ConfigCliFleetWakuv2TestJson, map[string]*bintree{}}, + "les-enabled.json": &bintree{ConfigCliLesEnabledJson, map[string]*bintree{}}, + "mailserver-enabled.json": &bintree{ConfigCliMailserverEnabledJson, map[string]*bintree{}}, }}, "status-chain-genesis.json": &bintree{ConfigStatusChainGenesisJson, map[string]*bintree{}}, }}, }}, "emojis.txt": &bintree{emojisTxt, map[string]*bintree{}}, "keys": &bintree{nil, map[string]*bintree{ - "bootnode.key": &bintree{keysBootnodeKey, map[string]*bintree{}}, - "firebaseauthkey": &bintree{keysFirebaseauthkey, map[string]*bintree{}}, + "bootnode.key": &bintree{keysBootnodeKey, map[string]*bintree{}}, + "firebaseauthkey": &bintree{keysFirebaseauthkey, map[string]*bintree{}}, "test-account1-status-chain.pk": &bintree{keysTestAccount1StatusChainPk, map[string]*bintree{}}, - "test-account1.pk": &bintree{keysTestAccount1Pk, map[string]*bintree{}}, + "test-account1.pk": &bintree{keysTestAccount1Pk, map[string]*bintree{}}, "test-account2-status-chain.pk": &bintree{keysTestAccount2StatusChainPk, map[string]*bintree{}}, - "test-account2.pk": &bintree{keysTestAccount2Pk, map[string]*bintree{}}, + "test-account2.pk": &bintree{keysTestAccount2Pk, map[string]*bintree{}}, "test-account3-before-eip55.pk": &bintree{keysTestAccount3BeforeEip55Pk, map[string]*bintree{}}, }}, }} -// RestoreAsset restores an asset under the given directory +// RestoreAsset restores an asset under the given directory. func RestoreAsset(dir, name string) error { data, err := Asset(name) if err != nil { @@ -672,14 +733,10 @@ func RestoreAsset(dir, name string) error { if err != nil { return err } - err = os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) - if err != nil { - return err - } - return nil + return os.Chtimes(_filePath(dir, name), info.ModTime(), info.ModTime()) } -// RestoreAssets restores an asset under the given directory recursively +// RestoreAssets restores an asset under the given directory recursively. func RestoreAssets(dir, name string) error { children, err := AssetDir(name) // File @@ -697,7 +754,6 @@ func RestoreAssets(dir, name string) error { } func _filePath(dir, name string) string { - cannonicalName := strings.Replace(name, "\\", "/", -1) - return filepath.Join(append([]string{dir}, strings.Split(cannonicalName, "/")...)...) + canonicalName := strings.Replace(name, "\\", "/", -1) + return filepath.Join(append([]string{dir}, strings.Split(canonicalName, "/")...)...) } - diff --git a/t/bindata.go b/t/bindata.go index cf96ec39e..14abbfc1e 100644 --- a/t/bindata.go +++ b/t/bindata.go @@ -86,7 +86,7 @@ func configPublicChainAccountsJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config/public-chain-accounts.json", size: 307, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "config/public-chain-accounts.json", size: 307, mode: os.FileMode(0644), modTime: time.Unix(1599559877, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x76, 0x5d, 0xc0, 0xfe, 0x57, 0x50, 0x18, 0xec, 0x2d, 0x61, 0x1b, 0xa9, 0x81, 0x11, 0x5f, 0x77, 0xf7, 0xb6, 0x67, 0x82, 0x1, 0x40, 0x68, 0x9d, 0xc5, 0x41, 0xaf, 0xce, 0x43, 0x81, 0x92, 0x96}} return a, nil } @@ -106,7 +106,7 @@ func configStatusChainAccountsJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config/status-chain-accounts.json", size: 543, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "config/status-chain-accounts.json", size: 543, mode: os.FileMode(0644), modTime: time.Unix(1599559877, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0x8e, 0xb3, 0x61, 0x51, 0x70, 0x3c, 0x12, 0x3e, 0xf1, 0x1c, 0x81, 0xfb, 0x9a, 0x7c, 0xe3, 0x63, 0xd0, 0x8f, 0x12, 0xc5, 0x2d, 0xf4, 0xea, 0x27, 0x33, 0xef, 0xca, 0xf9, 0x3f, 0x72, 0x44, 0xbf}} return a, nil } @@ -126,7 +126,7 @@ func configTestDataJson() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "config/test-data.json", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1585751575, 0)} + info := bindataFileInfo{name: "config/test-data.json", size: 84, mode: os.FileMode(0644), modTime: time.Unix(1599559877, 0)} a := &asset{bytes: bytes, info: info, digest: [32]uint8{0xce, 0x9d, 0x80, 0xf5, 0x87, 0xfa, 0x57, 0x1d, 0xa1, 0xd5, 0x7a, 0x10, 0x3, 0xac, 0xd7, 0xf4, 0x64, 0x32, 0x96, 0x2b, 0xb7, 0x21, 0xb7, 0xa6, 0x80, 0x40, 0xe9, 0x65, 0xe3, 0xd6, 0xbd, 0x40}} return a, nil } diff --git a/vendor/github.com/ethereum/go-ethereum/p2p/dial.go b/vendor/github.com/ethereum/go-ethereum/p2p/dial.go index d36d66550..f79adbb6a 100644 --- a/vendor/github.com/ethereum/go-ethereum/p2p/dial.go +++ b/vendor/github.com/ethereum/go-ethereum/p2p/dial.go @@ -231,7 +231,7 @@ loop: for { // Launch new dials if slots are available. slots := d.freeDialSlots() - slots -= d.startStaticDials(slots) + slots -= d.startStaticDials() if slots > 0 { nodesCh = d.nodesIn } else { @@ -395,6 +395,7 @@ func (d *dialScheduler) checkDial(n *enode.Node) error { // node and the actual endpoint will be resolved later in dialTask. return errNoPort } + if _, ok := d.dialing[n.ID()]; ok { return errAlreadyDialing } @@ -411,8 +412,8 @@ func (d *dialScheduler) checkDial(n *enode.Node) error { } // startStaticDials starts n static dial tasks. -func (d *dialScheduler) startStaticDials(n int) (started int) { - for started = 0; started < n && len(d.staticPool) > 0; started++ { +func (d *dialScheduler) startStaticDials() (started int) { + for started = 0; len(d.staticPool) > 0; started++ { idx := d.rand.Intn(len(d.staticPool)) task := d.staticPool[idx] d.startDial(task) diff --git a/vendor/modules.txt b/vendor/modules.txt index 8b2753476..dfb96d3f5 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -38,7 +38,7 @@ github.com/edsrzf/mmap-go # github.com/elastic/gosigar v0.14.1 github.com/elastic/gosigar github.com/elastic/gosigar/sys/windows -# github.com/ethereum/go-ethereum v1.10.13 => github.com/status-im/go-ethereum v1.10.4-status.3 +# github.com/ethereum/go-ethereum v1.10.13 => github.com/status-im/go-ethereum v1.10.4-status.4 github.com/ethereum/go-ethereum github.com/ethereum/go-ethereum/accounts github.com/ethereum/go-ethereum/accounts/abi