From 006c8b604b88fdddf1a2319e44aa37dd8777efd9 Mon Sep 17 00:00:00 2001 From: tobi <31960611+tsmethurst@users.noreply.github.com> Date: Sun, 4 Sep 2022 14:41:42 +0200 Subject: [PATCH] [feature] Set default header and avatar for API accounts to GtS ones (#799) * validate web-asset-base-dir * move default icons into converter * always ensure avatar + header on api accounts * update tests * add default header * don't return error from web module creation anymore * tidy a bit * use pngs for default avatars rather than svgs --- cmd/gotosocial/action/server/server.go | 5 +- cmd/gotosocial/action/testrig/testrig.go | 5 +- internal/api/client/followrequest/get_test.go | 2 +- .../api/client/instance/instancepatch_test.go | 8 +- internal/config/validate.go | 5 + internal/config/validate_test.go | 9 + .../processing/streaming/notification_test.go | 2 +- internal/typeutils/converter.go | 10 +- internal/typeutils/defaulticons.go | 138 +++++++++++++++ internal/typeutils/internaltofrontend.go | 3 + internal/typeutils/internaltofrontend_test.go | 4 +- internal/web/assets.go | 10 +- internal/web/assetscache.go | 2 +- internal/web/panels.go | 28 +-- internal/web/profile.go | 16 -- internal/web/thread.go | 26 --- internal/web/web.go | 73 +------- .../default_avatars/GoToSocial_icon1.png | Bin 0 -> 19837 bytes .../default_avatars/GoToSocial_icon1.svg | 160 ------------------ .../default_avatars/GoToSocial_icon2.png | Bin 0 -> 21157 bytes .../default_avatars/GoToSocial_icon2.svg | 137 --------------- .../default_avatars/GoToSocial_icon3.png | Bin 0 -> 22775 bytes .../default_avatars/GoToSocial_icon3.svg | 137 --------------- .../default_avatars/GoToSocial_icon4.png | Bin 0 -> 23960 bytes .../default_avatars/GoToSocial_icon4.svg | 152 ----------------- .../default_avatars/GoToSocial_icon5.png | Bin 0 -> 23453 bytes .../default_avatars/GoToSocial_icon5.svg | 152 ----------------- .../default_avatars/GoToSocial_icon6.png | Bin 0 -> 20371 bytes .../default_avatars/GoToSocial_icon6.svg | 160 ------------------ web/assets/default_header.png | Bin 0 -> 70 bytes 30 files changed, 205 insertions(+), 1039 deletions(-) create mode 100644 internal/typeutils/defaulticons.go create mode 100644 web/assets/default_avatars/GoToSocial_icon1.png delete mode 100644 web/assets/default_avatars/GoToSocial_icon1.svg create mode 100644 web/assets/default_avatars/GoToSocial_icon2.png delete mode 100644 web/assets/default_avatars/GoToSocial_icon2.svg create mode 100644 web/assets/default_avatars/GoToSocial_icon3.png delete mode 100644 web/assets/default_avatars/GoToSocial_icon3.svg create mode 100644 web/assets/default_avatars/GoToSocial_icon4.png delete mode 100644 web/assets/default_avatars/GoToSocial_icon4.svg create mode 100644 web/assets/default_avatars/GoToSocial_icon5.png delete mode 100644 web/assets/default_avatars/GoToSocial_icon5.svg create mode 100644 web/assets/default_avatars/GoToSocial_icon6.png delete mode 100644 web/assets/default_avatars/GoToSocial_icon6.svg create mode 100644 web/assets/default_header.png diff --git a/cmd/gotosocial/action/server/server.go b/cmd/gotosocial/action/server/server.go index ee327c0c5..e695e0789 100644 --- a/cmd/gotosocial/action/server/server.go +++ b/cmd/gotosocial/action/server/server.go @@ -150,10 +150,7 @@ var Start action.GTSAction = func(ctx context.Context) error { } // build web module - webModule, err := web.New(processor) - if err != nil { - return fmt.Errorf("error creating web module: %s", err) - } + webModule := web.New(processor) // build client api modules authModule := auth.New(dbService, idp, processor) diff --git a/cmd/gotosocial/action/testrig/testrig.go b/cmd/gotosocial/action/testrig/testrig.go index 739358f99..02eb96063 100644 --- a/cmd/gotosocial/action/testrig/testrig.go +++ b/cmd/gotosocial/action/testrig/testrig.go @@ -108,10 +108,7 @@ var Start action.GTSAction = func(ctx context.Context) error { } // build web module - webModule, err := web.New(processor) - if err != nil { - return fmt.Errorf("error creating web module: %s", err) - } + webModule := web.New(processor) // build client api modules authModule := auth.New(dbService, idp, processor) diff --git a/internal/api/client/followrequest/get_test.go b/internal/api/client/followrequest/get_test.go index 2af9c7744..adf55c8b6 100644 --- a/internal/api/client/followrequest/get_test.go +++ b/internal/api/client/followrequest/get_test.go @@ -70,7 +70,7 @@ func (suite *GetTestSuite) TestGet() { b, err := ioutil.ReadAll(result.Body) assert.NoError(suite.T(), err) - suite.Equal(`[{"id":"01FHMQX3GAABWSM0S2VZEC2SWC","username":"some_user","acct":"some_user@example.org","display_name":"some user","locked":true,"bot":false,"created_at":"2020-08-10T12:13:28.000Z","note":"i'm a real son of a gun","url":"http://example.org/@some_user","avatar":"","avatar_static":"","header":"","header_static":"","followers_count":0,"following_count":0,"statuses_count":0,"last_status_at":"","emojis":[],"fields":[]}]`, string(b)) + suite.Equal(`[{"id":"01FHMQX3GAABWSM0S2VZEC2SWC","username":"some_user","acct":"some_user@example.org","display_name":"some user","locked":true,"bot":false,"created_at":"2020-08-10T12:13:28.000Z","note":"i'm a real son of a gun","url":"http://example.org/@some_user","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":0,"following_count":0,"statuses_count":0,"last_status_at":"","emojis":[],"fields":[]}]`, string(b)) } func TestGetTestSuite(t *testing.T) { diff --git a/internal/api/client/instance/instancepatch_test.go b/internal/api/client/instance/instancepatch_test.go index c44f8d093..4ecf0d62c 100644 --- a/internal/api/client/instance/instancepatch_test.go +++ b/internal/api/client/instance/instancepatch_test.go @@ -63,7 +63,7 @@ func (suite *InstancePatchTestSuite) TestInstancePatch1() { b, err := io.ReadAll(result.Body) suite.NoError(err) - suite.Equal(`{"uri":"http://localhost:8080","account_domain":"localhost:8080","title":"Example Instance","description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","short_description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","email":"someone@example.org","version":"0.0.0-testrig","registrations":true,"approval_required":true,"invites_enabled":false,"configuration":{"statuses":{"max_characters":5000,"max_media_attachments":6,"characters_reserved_per_url":999},"media_attachments":{"supported_mime_types":["image/jpeg","image/gif","image/png"],"image_size_limit":10485760,"image_matrix_limit":16777216,"video_size_limit":41943040,"video_frame_rate_limit":60,"video_matrix_limit":16777216},"polls":{"max_options":6,"max_characters_per_option":50,"min_expiration":300,"max_expiration":2629746}},"urls":{"streaming_api":"wss://localhost:8080"},"stats":{"domain_count":2,"status_count":16,"user_count":4},"thumbnail":"http://localhost:8080/assets/logo.png","contact_account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"","header_static":"","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[]},"max_toot_chars":5000}`, string(b)) + suite.Equal(`{"uri":"http://localhost:8080","account_domain":"localhost:8080","title":"Example Instance","description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","short_description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","email":"someone@example.org","version":"0.0.0-testrig","registrations":true,"approval_required":true,"invites_enabled":false,"configuration":{"statuses":{"max_characters":5000,"max_media_attachments":6,"characters_reserved_per_url":999},"media_attachments":{"supported_mime_types":["image/jpeg","image/gif","image/png"],"image_size_limit":10485760,"image_matrix_limit":16777216,"video_size_limit":41943040,"video_frame_rate_limit":60,"video_matrix_limit":16777216},"polls":{"max_options":6,"max_characters_per_option":50,"min_expiration":300,"max_expiration":2629746}},"urls":{"streaming_api":"wss://localhost:8080"},"stats":{"domain_count":2,"status_count":16,"user_count":4},"thumbnail":"http://localhost:8080/assets/logo.png","contact_account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[]},"max_toot_chars":5000}`, string(b)) } func (suite *InstancePatchTestSuite) TestInstancePatch2() { @@ -93,7 +93,7 @@ func (suite *InstancePatchTestSuite) TestInstancePatch2() { b, err := io.ReadAll(result.Body) suite.NoError(err) - suite.Equal(`{"uri":"http://localhost:8080","account_domain":"localhost:8080","title":"Geoff's Instance","description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","short_description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","email":"admin@example.org","version":"0.0.0-testrig","registrations":true,"approval_required":true,"invites_enabled":false,"configuration":{"statuses":{"max_characters":5000,"max_media_attachments":6,"characters_reserved_per_url":999},"media_attachments":{"supported_mime_types":["image/jpeg","image/gif","image/png"],"image_size_limit":10485760,"image_matrix_limit":16777216,"video_size_limit":41943040,"video_frame_rate_limit":60,"video_matrix_limit":16777216},"polls":{"max_options":6,"max_characters_per_option":50,"min_expiration":300,"max_expiration":2629746}},"urls":{"streaming_api":"wss://localhost:8080"},"stats":{"domain_count":2,"status_count":16,"user_count":4},"thumbnail":"http://localhost:8080/assets/logo.png","contact_account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"","header_static":"","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[]},"max_toot_chars":5000}`, string(b)) + suite.Equal(`{"uri":"http://localhost:8080","account_domain":"localhost:8080","title":"Geoff's Instance","description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","short_description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","email":"admin@example.org","version":"0.0.0-testrig","registrations":true,"approval_required":true,"invites_enabled":false,"configuration":{"statuses":{"max_characters":5000,"max_media_attachments":6,"characters_reserved_per_url":999},"media_attachments":{"supported_mime_types":["image/jpeg","image/gif","image/png"],"image_size_limit":10485760,"image_matrix_limit":16777216,"video_size_limit":41943040,"video_frame_rate_limit":60,"video_matrix_limit":16777216},"polls":{"max_options":6,"max_characters_per_option":50,"min_expiration":300,"max_expiration":2629746}},"urls":{"streaming_api":"wss://localhost:8080"},"stats":{"domain_count":2,"status_count":16,"user_count":4},"thumbnail":"http://localhost:8080/assets/logo.png","contact_account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[]},"max_toot_chars":5000}`, string(b)) } func (suite *InstancePatchTestSuite) TestInstancePatch3() { @@ -123,7 +123,7 @@ func (suite *InstancePatchTestSuite) TestInstancePatch3() { b, err := io.ReadAll(result.Body) suite.NoError(err) - suite.Equal(`{"uri":"http://localhost:8080","account_domain":"localhost:8080","title":"GoToSocial Testrig Instance","description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","short_description":"\u003cp\u003eThis is some html, which is \u003cem\u003eallowed\u003c/em\u003e in short descriptions.\u003c/p\u003e","email":"admin@example.org","version":"0.0.0-testrig","registrations":true,"approval_required":true,"invites_enabled":false,"configuration":{"statuses":{"max_characters":5000,"max_media_attachments":6,"characters_reserved_per_url":999},"media_attachments":{"supported_mime_types":["image/jpeg","image/gif","image/png"],"image_size_limit":10485760,"image_matrix_limit":16777216,"video_size_limit":41943040,"video_frame_rate_limit":60,"video_matrix_limit":16777216},"polls":{"max_options":6,"max_characters_per_option":50,"min_expiration":300,"max_expiration":2629746}},"urls":{"streaming_api":"wss://localhost:8080"},"stats":{"domain_count":2,"status_count":16,"user_count":4},"thumbnail":"http://localhost:8080/assets/logo.png","contact_account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"","header_static":"","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[]},"max_toot_chars":5000}`, string(b)) + suite.Equal(`{"uri":"http://localhost:8080","account_domain":"localhost:8080","title":"GoToSocial Testrig Instance","description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","short_description":"\u003cp\u003eThis is some html, which is \u003cem\u003eallowed\u003c/em\u003e in short descriptions.\u003c/p\u003e","email":"admin@example.org","version":"0.0.0-testrig","registrations":true,"approval_required":true,"invites_enabled":false,"configuration":{"statuses":{"max_characters":5000,"max_media_attachments":6,"characters_reserved_per_url":999},"media_attachments":{"supported_mime_types":["image/jpeg","image/gif","image/png"],"image_size_limit":10485760,"image_matrix_limit":16777216,"video_size_limit":41943040,"video_frame_rate_limit":60,"video_matrix_limit":16777216},"polls":{"max_options":6,"max_characters_per_option":50,"min_expiration":300,"max_expiration":2629746}},"urls":{"streaming_api":"wss://localhost:8080"},"stats":{"domain_count":2,"status_count":16,"user_count":4},"thumbnail":"http://localhost:8080/assets/logo.png","contact_account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[]},"max_toot_chars":5000}`, string(b)) } func (suite *InstancePatchTestSuite) TestInstancePatch4() { @@ -214,7 +214,7 @@ func (suite *InstancePatchTestSuite) TestInstancePatch6() { b, err := io.ReadAll(result.Body) suite.NoError(err) - suite.Equal(`{"uri":"http://localhost:8080","account_domain":"localhost:8080","title":"GoToSocial Testrig Instance","description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","short_description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","email":"","version":"0.0.0-testrig","registrations":true,"approval_required":true,"invites_enabled":false,"configuration":{"statuses":{"max_characters":5000,"max_media_attachments":6,"characters_reserved_per_url":999},"media_attachments":{"supported_mime_types":["image/jpeg","image/gif","image/png"],"image_size_limit":10485760,"image_matrix_limit":16777216,"video_size_limit":41943040,"video_frame_rate_limit":60,"video_matrix_limit":16777216},"polls":{"max_options":6,"max_characters_per_option":50,"min_expiration":300,"max_expiration":2629746}},"urls":{"streaming_api":"wss://localhost:8080"},"stats":{"domain_count":2,"status_count":16,"user_count":4},"thumbnail":"http://localhost:8080/assets/logo.png","contact_account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"","header_static":"","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[]},"max_toot_chars":5000}`, string(b)) + suite.Equal(`{"uri":"http://localhost:8080","account_domain":"localhost:8080","title":"GoToSocial Testrig Instance","description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","short_description":"\u003cp\u003eThis is the GoToSocial testrig. It doesn't federate or anything.\u003c/p\u003e\u003cp\u003eWhen the testrig is shut down, all data on it will be deleted.\u003c/p\u003e\u003cp\u003eDon't use this in production!\u003c/p\u003e","email":"","version":"0.0.0-testrig","registrations":true,"approval_required":true,"invites_enabled":false,"configuration":{"statuses":{"max_characters":5000,"max_media_attachments":6,"characters_reserved_per_url":999},"media_attachments":{"supported_mime_types":["image/jpeg","image/gif","image/png"],"image_size_limit":10485760,"image_matrix_limit":16777216,"video_size_limit":41943040,"video_frame_rate_limit":60,"video_matrix_limit":16777216},"polls":{"max_options":6,"max_characters_per_option":50,"min_expiration":300,"max_expiration":2629746}},"urls":{"streaming_api":"wss://localhost:8080"},"stats":{"domain_count":2,"status_count":16,"user_count":4},"thumbnail":"http://localhost:8080/assets/logo.png","contact_account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[]},"max_toot_chars":5000}`, string(b)) } func (suite *InstancePatchTestSuite) TestInstancePatch7() { diff --git a/internal/config/validate.go b/internal/config/validate.go index b68cb2c62..064eae07a 100644 --- a/internal/config/validate.go +++ b/internal/config/validate.go @@ -62,6 +62,11 @@ func Validate() error { errs = append(errs, fmt.Errorf("%s must be set to either http or https, provided value was %s", ProtocolFlag(), proto)) } + webAssetsBaseDir := GetWebAssetBaseDir() + if webAssetsBaseDir == "" { + errs = append(errs, fmt.Errorf("%s must be set", WebAssetBaseDirFlag())) + } + if len(errs) > 0 { errStrings := []string{} for _, err := range errs { diff --git a/internal/config/validate_test.go b/internal/config/validate_test.go index 6b832de36..c3a998a4a 100644 --- a/internal/config/validate_test.go +++ b/internal/config/validate_test.go @@ -103,6 +103,15 @@ func (suite *ConfigValidateTestSuite) TestValidateConfigNoProtocol() { suite.EqualError(err, "protocol must be set") } +func (suite *ConfigValidateTestSuite) TestValidateConfigNoWebAssetBaseDir() { + testrig.InitTestConfig() + + config.SetWebAssetBaseDir("") + + err := config.Validate() + suite.EqualError(err, "web-asset-base-dir must be set") +} + func (suite *ConfigValidateTestSuite) TestValidateConfigNoProtocolOrHost() { testrig.InitTestConfig() diff --git a/internal/processing/streaming/notification_test.go b/internal/processing/streaming/notification_test.go index 960d9408d..0017dac04 100644 --- a/internal/processing/streaming/notification_test.go +++ b/internal/processing/streaming/notification_test.go @@ -52,7 +52,7 @@ func (suite *NotificationTestSuite) TestStreamNotification() { suite.NoError(err) msg := <-openStream.Messages - suite.Equal(`{"id":"01FH57SJCMDWQGEAJ0X08CE3WV","type":"follow","created_at":"2021-10-04T08:52:36.000Z","account":{"id":"01F8MH5ZK5VRH73AKHQM6Y9VNX","username":"foss_satan","acct":"foss_satan@fossbros-anonymous.io","display_name":"big gerald","locked":false,"bot":false,"created_at":"2021-09-26T10:52:36.000Z","note":"i post about like, i dunno, stuff, or whatever!!!!","url":"http://fossbros-anonymous.io/@foss_satan","avatar":"","avatar_static":"","header":"","header_static":"","followers_count":0,"following_count":0,"statuses_count":1,"last_status_at":"2021-09-20T10:40:37.000Z","emojis":[],"fields":[]}}`, msg.Payload) + suite.Equal(`{"id":"01FH57SJCMDWQGEAJ0X08CE3WV","type":"follow","created_at":"2021-10-04T08:52:36.000Z","account":{"id":"01F8MH5ZK5VRH73AKHQM6Y9VNX","username":"foss_satan","acct":"foss_satan@fossbros-anonymous.io","display_name":"big gerald","locked":false,"bot":false,"created_at":"2021-09-26T10:52:36.000Z","note":"i post about like, i dunno, stuff, or whatever!!!!","url":"http://fossbros-anonymous.io/@foss_satan","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":0,"following_count":0,"statuses_count":1,"last_status_at":"2021-09-20T10:40:37.000Z","emojis":[],"fields":[]}}`, msg.Payload) } func TestNotificationTestSuite(t *testing.T) { diff --git a/internal/typeutils/converter.go b/internal/typeutils/converter.go index 6996599ae..3effb9388 100644 --- a/internal/typeutils/converter.go +++ b/internal/typeutils/converter.go @@ -21,6 +21,7 @@ package typeutils import ( "context" "net/url" + "sync" "github.com/superseriousbusiness/activity/streams/vocab" "github.com/superseriousbusiness/gotosocial/internal/ap" @@ -195,10 +196,15 @@ type TypeConverter interface { } type converter struct { - db db.DB + db db.DB + defaultAvatars []string + randAvatars sync.Map } // NewConverter returns a new Converter func NewConverter(db db.DB) TypeConverter { - return &converter{db: db} + return &converter{ + db: db, + defaultAvatars: populateDefaultAvatars(), + } } diff --git a/internal/typeutils/defaulticons.go b/internal/typeutils/defaulticons.go new file mode 100644 index 000000000..b2a9858af --- /dev/null +++ b/internal/typeutils/defaulticons.go @@ -0,0 +1,138 @@ +/* + GoToSocial + Copyright (C) 2021-2022 GoToSocial Authors admin@gotosocial.org + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU Affero General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU Affero General Public License for more details. + + You should have received a copy of the GNU Affero General Public License + along with this program. If not, see . +*/ + +package typeutils + +import ( + "io/ioutil" + "math/rand" + "path/filepath" + "strings" + + apimodel "github.com/superseriousbusiness/gotosocial/internal/api/model" + "github.com/superseriousbusiness/gotosocial/internal/config" + "github.com/superseriousbusiness/gotosocial/internal/log" +) + +const defaultHeaderPath = "/assets/default_header.png" + +// populateDefaultAvatars returns a slice of standard avatars found +// in the path [web-assets-base-dir]/default_avatars. The slice +// entries correspond to the relative url via which they can be +// retrieved from the server. +// +// So for example, an avatar called default.jpeg would be returned +// in the slice as "/assets/default_avatars/default.jpeg". +func populateDefaultAvatars() (defaultAvatars []string) { + webAssetsAbsFilePath, err := filepath.Abs(config.GetWebAssetBaseDir()) + if err != nil { + log.Panicf("populateDefaultAvatars: error getting abs path for web assets: %s", err) + } + + defaultAvatarsAbsFilePath := filepath.Join(webAssetsAbsFilePath, "default_avatars") + defaultAvatarFiles, err := ioutil.ReadDir(defaultAvatarsAbsFilePath) + if err != nil { + log.Warnf("populateDefaultAvatars: error reading default avatars at %s: %s", defaultAvatarsAbsFilePath, err) + return + } + + for _, f := range defaultAvatarFiles { + // ignore directories + if f.IsDir() { + continue + } + + // ignore files bigger than 50kb + if f.Size() > 50000 { + continue + } + + // get the name of the file, eg avatar.jpeg + fileName := f.Name() + + // get just the .jpeg, for example, from avatar.jpeg + extensionWithDot := filepath.Ext(fileName) + + // remove the leading . to just get, eg, jpeg + extension := strings.TrimPrefix(extensionWithDot, ".") + + // take only files with simple extensions + // that we know will work OK as avatars + switch strings.ToLower(extension) { + case "jpeg", "jpg", "gif", "png": + avatarURL := config.GetProtocol() + "://" + config.GetHost() + "/assets/default_avatars/" + fileName + defaultAvatars = append(defaultAvatars, avatarURL) + default: + continue + } + } + + return +} + +// ensureAvatar ensures that the given account has a value set +// for the avatar URL. +// +// If no value is set, an avatar will be selected at random from +// the available default avatars. This selection is 'sticky', so +// the same account will get the same result on subsequent calls. +// +// If a value for the avatar URL is already set, this function is +// a no-op. +// +// If there are no default avatars available, this function is a +// no-op. +func (c *converter) ensureAvatar(account *apimodel.Account) { + if (account.Avatar != "" && account.AvatarStatic != "") || len(c.defaultAvatars) == 0 { + return + } + + var avatar string + if avatarI, ok := c.randAvatars.Load(account.ID); ok { + // we already have a default avatar stored for this account + avatar, ok = avatarI.(string) + if !ok { + panic("avatarI was not a string") + } + } else { + // select + store a default avatar for this account at random + randomIndex := rand.Intn(len(c.defaultAvatars)) //nolint:gosec + avatar = c.defaultAvatars[randomIndex] + c.randAvatars.Store(account.ID, avatar) + } + + account.Avatar = avatar + account.AvatarStatic = avatar +} + +// EnsureAvatar ensures that the given account has a value set +// for the header URL. +// +// If no value is set, the default header will be set. +// +// If a value for the header URL is already set, this function is +// a no-op. +func (c *converter) ensureHeader(account *apimodel.Account) { + if account.Header != "" && account.HeaderStatic != "" { + return + } + + h := config.GetProtocol() + "://" + config.GetHost() + defaultHeaderPath + account.Header = h + account.HeaderStatic = h +} diff --git a/internal/typeutils/internaltofrontend.go b/internal/typeutils/internaltofrontend.go index 6ccbed340..0243e4732 100644 --- a/internal/typeutils/internaltofrontend.go +++ b/internal/typeutils/internaltofrontend.go @@ -190,6 +190,9 @@ func (c *converter) AccountToAPIAccountPublic(ctx context.Context, a *gtsmodel.A Suspended: suspended, } + c.ensureAvatar(accountFrontend) + c.ensureHeader(accountFrontend) + return accountFrontend, nil } diff --git a/internal/typeutils/internaltofrontend_test.go b/internal/typeutils/internaltofrontend_test.go index 648c90fba..dc92260e1 100644 --- a/internal/typeutils/internaltofrontend_test.go +++ b/internal/typeutils/internaltofrontend_test.go @@ -63,7 +63,7 @@ func (suite *InternalToFrontendTestSuite) TestStatusToFrontend() { b, err := json.Marshal(apiStatus) suite.NoError(err) - suite.Equal(`{"id":"01F8MH75CBF9JFX4ZAD54N0W0R","created_at":"2021-10-20T11:36:45.000Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R","url":"http://localhost:8080/@admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R","replies_count":0,"reblogs_count":0,"favourites_count":1,"favourited":true,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"hello world! #welcome ! first post on the instance :rainbow: !","reblog":null,"application":{"name":"superseriousbusiness","website":"https://superserious.business"},"account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"","header_static":"","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[]},"media_attachments":[{"id":"01F8MH6NEM8D7527KZAECTCR76","type":"image","url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpeg","text_url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpeg","preview_url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/small/01F8MH6NEM8D7527KZAECTCR76.jpeg","remote_url":null,"preview_remote_url":null,"meta":{"original":{"width":1200,"height":630,"size":"1200x630","aspect":1.9047619},"small":{"width":256,"height":134,"size":"256x134","aspect":1.9104477},"focus":{"x":0,"y":0}},"description":"Black and white image of some 50's style text saying: Welcome On Board","blurhash":"LNJRdVM{00Rj%Mayt7j[4nWBofRj"}],"mentions":[],"tags":[{"name":"welcome","url":"http://localhost:8080/tags/welcome"}],"emojis":[{"shortcode":"rainbow","url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","static_url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","visible_in_picker":true}],"card":null,"poll":null}`, string(b)) + suite.Equal(`{"id":"01F8MH75CBF9JFX4ZAD54N0W0R","created_at":"2021-10-20T11:36:45.000Z","in_reply_to_id":null,"in_reply_to_account_id":null,"sensitive":false,"spoiler_text":"","visibility":"public","language":"en","uri":"http://localhost:8080/users/admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R","url":"http://localhost:8080/@admin/statuses/01F8MH75CBF9JFX4ZAD54N0W0R","replies_count":0,"reblogs_count":0,"favourites_count":1,"favourited":true,"reblogged":false,"muted":false,"bookmarked":false,"pinned":false,"content":"hello world! #welcome ! first post on the instance :rainbow: !","reblog":null,"application":{"name":"superseriousbusiness","website":"https://superserious.business"},"account":{"id":"01F8MH17FWEB39HZJ76B6VXSKF","username":"admin","acct":"admin","display_name":"","locked":false,"bot":false,"created_at":"2022-05-17T13:10:59.000Z","note":"","url":"http://localhost:8080/@admin","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":1,"following_count":1,"statuses_count":4,"last_status_at":"2021-10-20T10:41:37.000Z","emojis":[],"fields":[]},"media_attachments":[{"id":"01F8MH6NEM8D7527KZAECTCR76","type":"image","url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpeg","text_url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/original/01F8MH6NEM8D7527KZAECTCR76.jpeg","preview_url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/attachment/small/01F8MH6NEM8D7527KZAECTCR76.jpeg","remote_url":null,"preview_remote_url":null,"meta":{"original":{"width":1200,"height":630,"size":"1200x630","aspect":1.9047619},"small":{"width":256,"height":134,"size":"256x134","aspect":1.9104477},"focus":{"x":0,"y":0}},"description":"Black and white image of some 50's style text saying: Welcome On Board","blurhash":"LNJRdVM{00Rj%Mayt7j[4nWBofRj"}],"mentions":[],"tags":[{"name":"welcome","url":"http://localhost:8080/tags/welcome"}],"emojis":[{"shortcode":"rainbow","url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/emoji/original/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","static_url":"http://localhost:8080/fileserver/01F8MH17FWEB39HZJ76B6VXSKF/emoji/static/01F8MH9H8E4VG3KDYJR9EGPXCQ.png","visible_in_picker":true}],"card":null,"poll":null}`, string(b)) } func (suite *InternalToFrontendTestSuite) TestInstanceToFrontend() { @@ -108,7 +108,7 @@ func (suite *InternalToFrontendTestSuite) TestInstanceToFrontendWithAdminAccount b, err := json.Marshal(apiInstance) suite.NoError(err) - suite.Equal(`{"uri":"https://example.org","title":"example instance","description":"a much longer description","short_description":"a little description","email":"someone@example.org","version":"software-from-hell 0.666","registrations":false,"approval_required":false,"invites_enabled":false,"thumbnail":"","contact_account":{"id":"01FHMQX3GAABWSM0S2VZEC2SWC","username":"some_user","acct":"some_user@example.org","display_name":"some user","locked":true,"bot":false,"created_at":"2020-08-10T12:13:28.000Z","note":"i'm a real son of a gun","url":"http://example.org/@some_user","avatar":"","avatar_static":"","header":"","header_static":"","followers_count":0,"following_count":0,"statuses_count":0,"last_status_at":"","emojis":[],"fields":[]},"max_toot_chars":0}`, string(b)) + suite.Equal(`{"uri":"https://example.org","title":"example instance","description":"a much longer description","short_description":"a little description","email":"someone@example.org","version":"software-from-hell 0.666","registrations":false,"approval_required":false,"invites_enabled":false,"thumbnail":"","contact_account":{"id":"01FHMQX3GAABWSM0S2VZEC2SWC","username":"some_user","acct":"some_user@example.org","display_name":"some user","locked":true,"bot":false,"created_at":"2020-08-10T12:13:28.000Z","note":"i'm a real son of a gun","url":"http://example.org/@some_user","avatar":"","avatar_static":"","header":"http://localhost:8080/assets/default_header.png","header_static":"http://localhost:8080/assets/default_header.png","followers_count":0,"following_count":0,"statuses_count":0,"last_status_at":"","emojis":[],"fields":[]},"max_toot_chars":0}`, string(b)) } func TestInternalToFrontendTestSuite(t *testing.T) { diff --git a/internal/web/assets.go b/internal/web/assets.go index f67f38363..397870862 100644 --- a/internal/web/assets.go +++ b/internal/web/assets.go @@ -20,9 +20,12 @@ package web import ( "net/http" + "path/filepath" "strings" "github.com/gin-gonic/gin" + "github.com/superseriousbusiness/gotosocial/internal/config" + "github.com/superseriousbusiness/gotosocial/internal/log" ) type fileSystem struct { @@ -49,7 +52,12 @@ func (fs fileSystem) Open(path string) (http.File, error) { } func (m *Module) mountAssetsFilesystem(group *gin.RouterGroup) { - fs := fileSystem{http.Dir(m.webAssetsAbsFilePath)} + webAssetsAbsFilePath, err := filepath.Abs(config.GetWebAssetBaseDir()) + if err != nil { + log.Panicf("mountAssetsFilesystem: error getting absolute path of assets dir: %s", err) + } + + fs := fileSystem{http.Dir(webAssetsAbsFilePath)} // use the cache middleware on all handlers in this group group.Use(m.cacheControlMiddleware(fs)) diff --git a/internal/web/assetscache.go b/internal/web/assetscache.go index 57a0ade0b..fccc95993 100644 --- a/internal/web/assetscache.go +++ b/internal/web/assetscache.go @@ -114,7 +114,7 @@ func (m *Module) cacheControlMiddleware(fs http.FileSystem) gin.HandlerFunc { if !strings.HasPrefix(upath, "/") { upath = "/" + upath } - assetFilePath := strings.TrimPrefix(path.Clean(upath), assetsPath) + assetFilePath := strings.TrimPrefix(path.Clean(upath), assetsPathPrefix) // either fetch etag from ttlcache or generate it eTag, err := m.getAssetETag(assetFilePath, fs) diff --git a/internal/web/panels.go b/internal/web/panels.go index dafd0abc7..fdec87a33 100644 --- a/internal/web/panels.go +++ b/internal/web/panels.go @@ -38,15 +38,15 @@ func (m *Module) UserPanelHandler(c *gin.Context) { c.HTML(http.StatusOK, "frontend.tmpl", gin.H{ "instance": instance, "stylesheets": []string{ - assetsPath + "/Fork-Awesome/css/fork-awesome.min.css", - assetsPath + "/dist/_colors.css", - assetsPath + "/dist/base.css", - assetsPath + "/dist/panels-base.css", - assetsPath + "/dist/panels-user-style.css", + assetsPathPrefix + "/Fork-Awesome/css/fork-awesome.min.css", + assetsPathPrefix + "/dist/_colors.css", + assetsPathPrefix + "/dist/base.css", + assetsPathPrefix + "/dist/panels-base.css", + assetsPathPrefix + "/dist/panels-user-style.css", }, "javascript": []string{ - assetsPath + "/dist/bundle.js", - assetsPath + "/dist/user-panel.js", + assetsPathPrefix + "/dist/bundle.js", + assetsPathPrefix + "/dist/user-panel.js", }, }) } @@ -63,15 +63,15 @@ func (m *Module) AdminPanelHandler(c *gin.Context) { c.HTML(http.StatusOK, "frontend.tmpl", gin.H{ "instance": instance, "stylesheets": []string{ - assetsPath + "/Fork-Awesome/css/fork-awesome.min.css", - assetsPath + "/dist/_colors.css", - assetsPath + "/dist/base.css", - assetsPath + "/dist/panels-base.css", - assetsPath + "/dist/panels-admin-style.css", + assetsPathPrefix + "/Fork-Awesome/css/fork-awesome.min.css", + assetsPathPrefix + "/dist/_colors.css", + assetsPathPrefix + "/dist/base.css", + assetsPathPrefix + "/dist/panels-base.css", + assetsPathPrefix + "/dist/panels-admin-style.css", }, "javascript": []string{ - assetsPath + "/dist/bundle.js", - assetsPath + "/dist/admin-panel.js", + assetsPathPrefix + "/dist/bundle.js", + assetsPathPrefix + "/dist/admin-panel.js", }, }) } diff --git a/internal/web/profile.go b/internal/web/profile.go index 542c015f1..61f7c57e7 100644 --- a/internal/web/profile.go +++ b/internal/web/profile.go @@ -23,7 +23,6 @@ import ( "encoding/json" "errors" "fmt" - "math/rand" "net/http" "strings" @@ -100,21 +99,6 @@ func (m *Module) profileGETHandler(c *gin.Context) { return } - // pick a random dummy avatar if this account avatar isn't set yet - if account.Avatar == "" && len(m.defaultAvatars) > 0 { - //nolint:gosec - randomIndex := rand.Intn(len(m.defaultAvatars)) - dummyAvatar := m.defaultAvatars[randomIndex] - account.Avatar = dummyAvatar - for _, i := range statusResp.Items { - s, ok := i.(*apimodel.Status) - if !ok { - panic("timelineable was not *apimodel.Status") - } - s.Account.Avatar = dummyAvatar - } - } - c.HTML(http.StatusOK, "profile.tmpl", gin.H{ "instance": instance, "account": account, diff --git a/internal/web/thread.go b/internal/web/thread.go index d3b92bde3..3db4952c7 100644 --- a/internal/web/thread.go +++ b/internal/web/thread.go @@ -23,7 +23,6 @@ import ( "encoding/json" "errors" "fmt" - "math/rand" "net/http" "strings" @@ -36,21 +35,6 @@ import ( "github.com/superseriousbusiness/gotosocial/internal/oauth" ) -var randAvatars = make(map[string]string) - -func (m *Module) ensureAvatar(status apimodel.Status) { - if status.Account.Avatar == "" && len(m.defaultAvatars) > 0 { - avatar, ok := randAvatars[status.Account.ID] - if !ok { - //nolint:gosec - randomIndex := rand.Intn(len(m.defaultAvatars)) - avatar = m.defaultAvatars[randomIndex] - randAvatars[status.Account.ID] = avatar - } - status.Account.Avatar = avatar - } -} - func (m *Module) threadGETHandler(c *gin.Context) { ctx := c.Request.Context() @@ -120,16 +104,6 @@ func (m *Module) threadGETHandler(c *gin.Context) { return } - m.ensureAvatar(*status) - - for _, status := range context.Descendants { - m.ensureAvatar(status) - } - - for _, status := range context.Ancestors { - m.ensureAvatar(status) - } - c.HTML(http.StatusOK, "thread.tmpl", gin.H{ "instance": instance, "status": status, diff --git a/internal/web/web.go b/internal/web/web.go index fe270ac6c..336525938 100644 --- a/internal/web/web.go +++ b/internal/web/web.go @@ -20,17 +20,12 @@ package web import ( "errors" - "fmt" - "io/ioutil" "net/http" - "path/filepath" - "strings" "time" "codeberg.org/gruf/go-cache/v2" "github.com/gin-gonic/gin" "github.com/superseriousbusiness/gotosocial/internal/api" - "github.com/superseriousbusiness/gotosocial/internal/config" "github.com/superseriousbusiness/gotosocial/internal/gtserror" "github.com/superseriousbusiness/gotosocial/internal/processing" "github.com/superseriousbusiness/gotosocial/internal/router" @@ -43,7 +38,7 @@ const ( statusPath = profilePath + "/statuses/:" + statusIDKey adminPanelPath = "/admin" userPanelpath = "/user" - assetsPath = "/assets" + assetsPathPrefix = "/assets" tokenParam = "token" usernameKey = "username" @@ -52,78 +47,26 @@ const ( // Module implements the api.ClientModule interface for web pages. type Module struct { - processor processing.Processor - webAssetsAbsFilePath string - assetsETagCache cache.Cache[string, eTagCacheEntry] - defaultAvatars []string + processor processing.Processor + assetsETagCache cache.Cache[string, eTagCacheEntry] } // New returns a new api.ClientModule for web pages. -func New(processor processing.Processor) (api.ClientModule, error) { - webAssetsBaseDir := config.GetWebAssetBaseDir() - if webAssetsBaseDir == "" { - return nil, fmt.Errorf("%s cannot be empty and must be a relative or absolute path", config.WebAssetBaseDirFlag()) - } - - webAssetsAbsFilePath, err := filepath.Abs(webAssetsBaseDir) - if err != nil { - return nil, fmt.Errorf("error getting absolute path of %s: %s", webAssetsBaseDir, err) - } - - defaultAvatarsAbsFilePath := filepath.Join(webAssetsAbsFilePath, "default_avatars") - defaultAvatarFiles, err := ioutil.ReadDir(defaultAvatarsAbsFilePath) - if err != nil { - return nil, fmt.Errorf("error reading default avatars at %s: %s", defaultAvatarsAbsFilePath, err) - } - - defaultAvatars := []string{} - for _, f := range defaultAvatarFiles { - // ignore directories - if f.IsDir() { - continue - } - - // ignore files bigger than 50kb - if f.Size() > 50000 { - continue - } - - // get the name of the file, eg avatar.jpeg - fileName := f.Name() - - // get just the .jpeg, for example, from avatar.jpeg - extensionWithDot := filepath.Ext(fileName) - - // remove the leading . to just get, eg, jpeg - extension := strings.TrimPrefix(extensionWithDot, ".") - - // take only files with simple extensions - // that we know will work OK as avatars - switch strings.ToLower(extension) { - case "svg", "jpeg", "jpg", "gif", "png": - avatar := fmt.Sprintf("%s/default_avatars/%s", assetsPath, f.Name()) - defaultAvatars = append(defaultAvatars, avatar) - default: - continue - } - } - +func New(processor processing.Processor) api.ClientModule { assetsETagCache := cache.New[string, eTagCacheEntry]() assetsETagCache.SetTTL(time.Hour, false) assetsETagCache.Start(time.Minute) return &Module{ - processor: processor, - webAssetsAbsFilePath: webAssetsAbsFilePath, - assetsETagCache: assetsETagCache, - defaultAvatars: defaultAvatars, - }, nil + processor: processor, + assetsETagCache: assetsETagCache, + } } // Route satisfies the RESTAPIModule interface func (m *Module) Route(s router.Router) error { // serve static files from assets dir at /assets - assetsGroup := s.AttachGroup(assetsPath) + assetsGroup := s.AttachGroup(assetsPathPrefix) m.mountAssetsFilesystem(assetsGroup) s.AttachHandler(http.MethodGet, adminPanelPath, m.AdminPanelHandler) diff --git a/web/assets/default_avatars/GoToSocial_icon1.png b/web/assets/default_avatars/GoToSocial_icon1.png new file mode 100644 index 0000000000000000000000000000000000000000..f8248a10c2eef17ccdd9ba6cd1f26b929688abd6 GIT binary patch literal 19837 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 - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - diff --git a/web/assets/default_avatars/GoToSocial_icon2.png b/web/assets/default_avatars/GoToSocial_icon2.png new file mode 100644 index 0000000000000000000000000000000000000000..718647f9ab27a3e72e3e686f3f88bd8a4f48bea4 GIT binary patch literal 21157 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%0D`xQbr-^$R&UumgHZlTcb9nSf5yB1J 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 - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - diff --git a/web/assets/default_avatars/GoToSocial_icon3.png b/web/assets/default_avatars/GoToSocial_icon3.png new file mode 100644 index 0000000000000000000000000000000000000000..9411ea3f5cb5d3bcf05bb92ce6f33b2aaad664ed GIT binary patch literal 22775 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 V;T#?{FF+)8?XvNu@{7)i{{eoJ$`Akm literal 0 HcmV?d00001 diff --git a/web/assets/default_avatars/GoToSocial_icon3.svg b/web/assets/default_avatars/GoToSocial_icon3.svg deleted file mode 100644 index 205e229c9..000000000 --- a/web/assets/default_avatars/GoToSocial_icon3.svg +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - diff --git a/web/assets/default_avatars/GoToSocial_icon4.png b/web/assets/default_avatars/GoToSocial_icon4.png new file mode 100644 index 0000000000000000000000000000000000000000..56cb7bc3f660d0bcc55d77f2cfccef0b655eeb03 GIT binary patch literal 23960 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 literal 0 HcmV?d00001 diff --git a/web/assets/default_avatars/GoToSocial_icon4.svg b/web/assets/default_avatars/GoToSocial_icon4.svg deleted file mode 100644 index ec6a46212..000000000 --- a/web/assets/default_avatars/GoToSocial_icon4.svg +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff --git a/web/assets/default_avatars/GoToSocial_icon5.png b/web/assets/default_avatars/GoToSocial_icon5.png new file mode 100644 index 0000000000000000000000000000000000000000..7fbef35f3352e75191f36b60263667a339ba9461 GIT binary patch literal 23453 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 literal 0 HcmV?d00001 diff --git a/web/assets/default_avatars/GoToSocial_icon5.svg b/web/assets/default_avatars/GoToSocial_icon5.svg deleted file mode 100644 index c505b67d7..000000000 --- a/web/assets/default_avatars/GoToSocial_icon5.svg +++ /dev/null @@ -1,152 +0,0 @@ - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff --git a/web/assets/default_avatars/GoToSocial_icon6.png b/web/assets/default_avatars/GoToSocial_icon6.png new file mode 100644 index 0000000000000000000000000000000000000000..203d018874681fda4c2cf259e933a8e43a86a7ee GIT binary patch literal 20371 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 literal 0 HcmV?d00001 diff --git a/web/assets/default_avatars/GoToSocial_icon6.svg b/web/assets/default_avatars/GoToSocial_icon6.svg deleted file mode 100644 index 43db9cbf0..000000000 --- a/web/assets/default_avatars/GoToSocial_icon6.svg +++ /dev/null @@ -1,160 +0,0 @@ - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - diff --git a/web/assets/default_header.png b/web/assets/default_header.png new file mode 100644 index 0000000000000000000000000000000000000000..40f0484a265cc07dcb37ec9b858619cbf39d7586 GIT binary patch literal 70 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}1TpU9