@@ -150,6 +150,26 @@ func main() {
150150 })
151151 server .Use (sessions .Sessions ("session" , store ))
152152
153+ InjectUmamiAnalytics ()
154+ InjectGoogleAnalytics ()
155+
156+ // 设置路由
157+ router .SetRouter (server , buildFS , indexPage )
158+ var port = os .Getenv ("PORT" )
159+ if port == "" {
160+ port = strconv .Itoa (* common .Port )
161+ }
162+
163+ // Log startup success message
164+ common .LogStartupSuccess (startTime , port )
165+
166+ err = server .Run (":" + port )
167+ if err != nil {
168+ common .FatalLog ("failed to start HTTP server: " + err .Error ())
169+ }
170+ }
171+
172+ func InjectUmamiAnalytics () {
153173 analyticsInjectBuilder := & strings.Builder {}
154174 if os .Getenv ("UMAMI_WEBSITE_ID" ) != "" {
155175 umamiSiteID := os .Getenv ("UMAMI_WEBSITE_ID" )
@@ -164,21 +184,28 @@ func main() {
164184 analyticsInjectBuilder .WriteString ("\" ></script>" )
165185 }
166186 analyticsInject := analyticsInjectBuilder .String ()
167- indexPage = bytes .ReplaceAll (indexPage , []byte ("<analytics></analytics>\n " ), []byte (analyticsInject ))
168-
169- router .SetRouter (server , buildFS , indexPage )
170- var port = os .Getenv ("PORT" )
171- if port == "" {
172- port = strconv .Itoa (* common .Port )
173- }
174-
175- // Log startup success message
176- common .LogStartupSuccess (startTime , port )
187+ indexPage = bytes .ReplaceAll (indexPage , []byte ("<!--umami-->\n " ), []byte (analyticsInject ))
188+ }
177189
178- err = server .Run (":" + port )
179- if err != nil {
180- common .FatalLog ("failed to start HTTP server: " + err .Error ())
190+ func InjectGoogleAnalytics () {
191+ analyticsInjectBuilder := & strings.Builder {}
192+ if os .Getenv ("GOOGLE_ANALYTICS_ID" ) != "" {
193+ gaID := os .Getenv ("GOOGLE_ANALYTICS_ID" )
194+ // Google Analytics 4 (gtag.js)
195+ analyticsInjectBuilder .WriteString ("<script async src=\" https://www.googletagmanager.com/gtag/js?id=" )
196+ analyticsInjectBuilder .WriteString (gaID )
197+ analyticsInjectBuilder .WriteString ("\" ></script>" )
198+ analyticsInjectBuilder .WriteString ("<script>" )
199+ analyticsInjectBuilder .WriteString ("window.dataLayer = window.dataLayer || [];" )
200+ analyticsInjectBuilder .WriteString ("function gtag(){dataLayer.push(arguments);}" )
201+ analyticsInjectBuilder .WriteString ("gtag('js', new Date());" )
202+ analyticsInjectBuilder .WriteString ("gtag('config', '" )
203+ analyticsInjectBuilder .WriteString (gaID )
204+ analyticsInjectBuilder .WriteString ("');" )
205+ analyticsInjectBuilder .WriteString ("</script>" )
181206 }
207+ analyticsInject := analyticsInjectBuilder .String ()
208+ indexPage = bytes .ReplaceAll (indexPage , []byte ("<!--Google Analytics-->\n " ), []byte (analyticsInject ))
182209}
183210
184211func InitResources () error {
0 commit comments