| -rw-r--r-- | .github/workflows/build-and-deploy-prod.yml | 2 | ||||
| -rw-r--r-- | config/config.go | 5 | ||||
| -rw-r--r-- | config/config.prod.yaml | 2 | ||||
| -rw-r--r-- | deploy/playbook.yml | 1 | ||||
| -rw-r--r-- | internal/router/basic-handler.go | 4 | ||||
| -rw-r--r-- | internal/router/handlers/lang-blog-title.go | 16 | ||||
| -rw-r--r-- | internal/router/handlers/root.go | 8 | ||||
| -rw-r--r-- | internal/router/router.go | 15 | ||||
| -rw-r--r-- | views/layouts/general-page.html | 7 | ||||
| -rw-r--r-- | views/partials/general-page-header.html | 2 |
10 files changed, 5 insertions, 57 deletions
diff --git a/.github/workflows/build-and-deploy-prod.yml b/.github/workflows/build-and-deploy-prod.yml index 24b6e0e..413f402 100644 --- a/.github/workflows/build-and-deploy-prod.yml +++ b/.github/workflows/build-and-deploy-prod.yml @@ -75,4 +75,4 @@ jobs: ANSIBLE_HOST_KEY_CHECKING: False working-directory: ./deploy run: | - ansible-playbook -i inventory.yml -l prod playbook.yml --private-key ~/.ssh/id_ed25519 -u svc_github -e saya_today_web_auth_salt="${{ secrets.AUTH_SALT }}" -e saya_today_web_b2_key_id="${{ secrets.B2_KEY_ID }}" -e saya_today_web_b2_application_key="${{ secrets.B2_APPLICATION_KEY }}" -e saya_today_web_environment=prod -e saya_today_web_tag=${{ github.ref_name }} -e saya_today_web_mail_salt="${{ secrets.MAIL_SALT }}" -e saya_today_web_mail_host="${{ secrets.MAIL_HOST }}" -e saya_today_web_mail_address="${{ secrets.MAIL_ADDRESS }}" -e saya_today_web_mail_username="${{ secrets.MAIL_USERNAME }}" -e saya_today_web_mail_password="${{ secrets.MAIL_PASSWORD }}" -e saya_today_google_site_verification="${{ secrets.GOOGLE_SITE_VERIFICATION }}" + ansible-playbook -i inventory.yml -l prod playbook.yml --private-key ~/.ssh/id_ed25519 -u svc_github -e saya_today_web_auth_salt="${{ secrets.AUTH_SALT }}" -e saya_today_web_b2_key_id="${{ secrets.B2_KEY_ID }}" -e saya_today_web_b2_application_key="${{ secrets.B2_APPLICATION_KEY }}" -e saya_today_web_environment=prod -e saya_today_web_tag=${{ github.ref_name }} -e saya_today_web_mail_salt="${{ secrets.MAIL_SALT }}" -e saya_today_web_mail_host="${{ secrets.MAIL_HOST }}" -e saya_today_web_mail_address="${{ secrets.MAIL_ADDRESS }}" -e saya_today_web_mail_username="${{ secrets.MAIL_USERNAME }}" -e saya_today_web_mail_password="${{ secrets.MAIL_PASSWORD }}" diff --git a/config/config.go b/config/config.go index eb4a91d..fd8c480 100644 --- a/config/config.go +++ b/config/config.go @@ -17,7 +17,6 @@ type Config struct { Auth AuthConfig `json:"Auth" yaml:"auth" validate:"required"` Mail MailConfig `json:"Mail" yaml:"mail" validate:"required"` CanonicalEndpoint string `json:"CanonicalEndpoint" yaml:"canonicalEndpoint" validate:"required"` - Meta MetaConfig `json:"Meta" yaml:"meta"` } type BlogPagesConfig struct { @@ -78,10 +77,6 @@ type TriggerConfig struct { OnNewPost string `json:"OnNewPost" yaml:"onNewPost" validate:"cron,required"` } -type MetaConfig struct { - GoogleSiteVerification string `json:"GoogleSiteVerification" yaml:"googleSiteVerification"` -} - func LoadConfig(path string, config *Config) error { fileBytes, err := os.ReadFile(path) if err != nil { diff --git a/config/config.prod.yaml b/config/config.prod.yaml index b40ba57..4de853c 100644 --- a/config/config.prod.yaml +++ b/config/config.prod.yaml @@ -45,5 +45,3 @@ mail: trigger: onNewPost: "0/5 * * * *" canonicalEndpoint: 'https://${FQDN}' -meta: - googleSiteVerification: '${GOOGLE_SITE_VERIFICATION}' diff --git a/deploy/playbook.yml b/deploy/playbook.yml index b0202bd..2516f4e 100644 --- a/deploy/playbook.yml +++ b/deploy/playbook.yml @@ -24,7 +24,6 @@ MAIL_PASSWORD: "{{ saya_today_web_mail_password }}" MAIL_SALT: "{{ saya_today_web_mail_salt }}" FQDN: "{{ saya_today_web_listen_address }}" - GOOGLE_SITE_VERIFICATION: "{{ saya_today_google_site_verification | default('') }}" network_mode: caddy networks: - name: caddy diff --git a/internal/router/basic-handler.go b/internal/router/basic-handler.go index b973d01..96d0f77 100644 --- a/internal/router/basic-handler.go +++ b/internal/router/basic-handler.go @@ -53,10 +53,6 @@ func (r *BasicHandler) AddMeta(c *fiber.Ctx, supplements *Supplements, lang stri return []MetaField{{Name: "robots", Content: "noindex,nofollow"}}, nil } -func (r *BasicHandler) AddLinkedData(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (ld map[string]any, err error) { - return nil, nil -} - func (r *BasicHandler) RenderHeader(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) { return fiber.StatusNoContent, nil } diff --git a/internal/router/handlers/lang-blog-title.go b/internal/router/handlers/lang-blog-title.go index 5bfc6e7..a9acdbb 100644 --- a/internal/router/handlers/lang-blog-title.go +++ b/internal/router/handlers/lang-blog-title.go @@ -81,22 +81,6 @@ func (r *BlogPageHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, }, nil } -func (r *BlogPageHandler) AddLinkedData(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (ld map[string]any, err error) { - metadata, _, err := supplements.B2Client.ReadFrontmatter(lang + "/" + c.Params("title") + ".md") - if err != nil { - return nil, fmt.Errorf("failed to read frontmatter of the desired blog post: %w", err) - } - - return map[string]any{ - "@context": "https://schema.org", - "@type": "Article", - "headline": metadata.Title, - "description": fmt.Sprintf("%s [%s]", metadata.ShortDescription, metadata.ActionDate), - "author": map[string]string{"@type": "Person", "name": "Saya Andy"}, - "datePublished": metadata.PublishedTime.UTC().Format(time.RFC3339), - }, nil -} - func (r *BlogPageHandler) RenderBody(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) { _, pathParts, _, err := router.GetPathFromReferer(c) if err != nil { diff --git a/internal/router/handlers/root.go b/internal/router/handlers/root.go index a8890fa..cd01fcd 100644 --- a/internal/router/handlers/root.go +++ b/internal/router/handlers/root.go @@ -41,16 +41,12 @@ func (r *RootHandler) SitemapInfo(_ *router.Supplements) []router.SitemapInfo { } func (r *RootHandler) AddMeta(c *fiber.Ctx, supplements *router.Supplements, lang string, templateMap fiber.Map) (meta []router.MetaField, err error) { - meta = []router.MetaField{ + return []router.MetaField{ {Property: "og:title", Content: "Saya Blog"}, {Property: "og:description", Content: "The blog of a 25 years old, travelling God knows where, proud to be not mainstream // Личный блог 25-летки, странствующего по ебеням, зато не мейнстрим"}, {Property: "og:url", Content: fmt.Sprint(templateMap["CanonicalEndpoint"]) + "/"}, {Property: "og:type", Content: "website"}, - } - if supplements.Meta.GoogleSiteVerification != "" { - meta = append(meta, router.MetaField{Name: "google-site-verification", Content: supplements.Meta.GoogleSiteVerification}) - } - return meta, nil + }, nil } func (r *RootHandler) RenderBody(c *fiber.Ctx, supplements *router.Supplements, _ string, templateMap fiber.Map) (statusCode int, err error) { diff --git a/internal/router/router.go b/internal/router/router.go index 3242759..3ce7e3b 100644 --- a/internal/router/router.go +++ b/internal/router/router.go @@ -2,10 +2,8 @@ package router import ( "database/sql" - "encoding/json" "errors" "fmt" - "html/template" "log/slog" "net/url" "slices" @@ -80,7 +78,6 @@ type Route interface { ContentType() string Render(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) AddMeta(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (meta []MetaField, err error) - AddLinkedData(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (ld map[string]any, err error) RenderHeader(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) RenderBody(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) RenderFooter(c *fiber.Ctx, supplements *Supplements, lang string, templateMap fiber.Map) (statusCode int, err error) @@ -100,7 +97,6 @@ type Supplements struct { BlogTrigger *blogtrigger.BlogTriggerScheduler TemplateManager *templatemanager.TemplateManager MarkdownRenderer goldmark.Markdown - Meta config.MetaConfig } type Router struct { @@ -216,8 +212,6 @@ func NewRouter(cfg *config.Config) (*Router, error) { return nil, fmt.Errorf("fail to initialize template manager: %w", err) } - supplements.Meta = cfg.Meta - enablePrintRoutes := false if cfg.LogLevel <= slog.LevelDebug { enablePrintRoutes = true @@ -434,15 +428,6 @@ func (r *Router) generalPage(c *fiber.Ctx, route Route, lang string) error { slog.Warn("failed to receive meta", slog.String("path", path), slog.String("error", err.Error())) } - var ld map[string]any - if ld, err = route.AddLinkedData(c, r.supplements, lang, valueMap); err != nil { - slog.Warn("failed to receive linked data", slog.String("path", path), slog.String("error", err.Error())) - } - if ld != nil { - ldBytes, _ := json.Marshal(ld) - valueMap["LinkedData"] = template.JS(ldBytes) - } - content, err := r.supplements.TemplateManager.Render("general-page", valueMap) if err != nil { slog.Warn("failed to generate div", slog.String("path", path), slog.String("error", err.Error())) diff --git a/views/layouts/general-page.html b/views/layouts/general-page.html index 2d3bff3..d7d11a3 100644 --- a/views/layouts/general-page.html +++ b/views/layouts/general-page.html @@ -6,7 +6,7 @@ {{- range .Meta }} <meta {{with .Name}}name="{{.}}" {{end}}{{with .Property}}property="{{.}}" {{end}}{{with .Content}}content="{{.}}"{{end}}> {{- if eq .Property "og:description" }} - <meta name="description" content="{{.Content}}"> + <meta name="description" href="{{.Content}}"> {{- end }} {{- if eq .Property "og:url" }} <link rel="canonical" href="{{.Content}}"> @@ -16,11 +16,6 @@ <link rel="stylesheet" href="https://f003.backblazeb2.com/file/sayana-static/libs/leaflet/1.9.4/leaflet.css"> <link rel="stylesheet" href="https://f003.backblazeb2.com/file/sayana-static/libs/glightbox/3.3.0/css/glightbox.min.css"> <link href="/output.css" rel="stylesheet"> - {{- with .LinkedData }} - <script type="application/ld+json"> - {{ . }} - </script> - {{- end }} </head> <body data-theme="ram" class="font-andika text-main-hard overflow-hidden bg-interlocked-hexagons h-dvh flex flex-row"> diff --git a/views/partials/general-page-header.html b/views/partials/general-page-header.html index e019d3b..ac536d7 100644 --- a/views/partials/general-page-header.html +++ b/views/partials/general-page-header.html @@ -1,5 +1,5 @@ <title>{{ .Title }} // SAYA TODAY</title> <div class="flex flex-row mb-2"> {{ block "header" . }}{{ end }} - <p class="text-4xl font-andika font-light italic text-shadow-[0_2px_2px_var(--main-soft-color)] text-left my-auto">{{ .Title }}</p> + <h1 class="text-4xl font-andika font-light italic text-shadow-[0_2px_2px_var(--main-soft-color)] text-left my-auto">{{ .Title }}</h1> </div>
\ No newline at end of file |