Matrix-Zeitzone konfigurierbar machen (Default Europe/Berlin)

This commit is contained in:
Kai
2026-02-17 16:45:29 +01:00
parent 0185414e40
commit 5c8e985851
4 changed files with 19 additions and 1 deletions

View File

@@ -12,3 +12,4 @@ DB_DSN=farmcal:CHANGE_ME@tcp(127.0.0.1:3306)/farmcal?parseTime=true
# MATRIX_ENABLE_CRYPTO=1 # MATRIX_ENABLE_CRYPTO=1
# MATRIX_PICKLE_KEY=CHANGE_ME_LONG_RANDOM # MATRIX_PICKLE_KEY=CHANGE_ME_LONG_RANDOM
# MATRIX_CRYPTO_STORE_PATH=/tmp/farmcal-matrix-crypto.db # MATRIX_CRYPTO_STORE_PATH=/tmp/farmcal-matrix-crypto.db
# MATRIX_TIMEZONE=Europe/Berlin

View File

@@ -44,6 +44,7 @@ MATRIX_LIMIT=25
MATRIX_ENABLE_CRYPTO=1 MATRIX_ENABLE_CRYPTO=1
MATRIX_PICKLE_KEY=LONG_RANDOM_SECRET MATRIX_PICKLE_KEY=LONG_RANDOM_SECRET
MATRIX_CRYPTO_STORE_PATH=/tmp/farmcal-matrix-crypto.db MATRIX_CRYPTO_STORE_PATH=/tmp/farmcal-matrix-crypto.db
MATRIX_TIMEZONE=Europe/Berlin
``` ```
- `MATRIX_ACCESS_TOKEN` sollte ein User-Token mit Leserechten fuer den Raum sein. - `MATRIX_ACCESS_TOKEN` sollte ein User-Token mit Leserechten fuer den Raum sein.

View File

@@ -21,6 +21,7 @@ type MatrixClient struct {
AccessToken string AccessToken string
RoomID string RoomID string
Limit int Limit int
TimeLocation *time.Location
httpClient *http.Client httpClient *http.Client
crypto *cryptohelper.CryptoHelper crypto *cryptohelper.CryptoHelper
} }
@@ -50,6 +51,12 @@ func newMatrixClientFromEnv() *MatrixClient {
Timeout: 8 * time.Second, Timeout: 8 * time.Second,
}, },
} }
locName := strings.TrimSpace(readEnv("MATRIX_TIMEZONE", "Europe/Berlin"))
if loc, err := time.LoadLocation(locName); err == nil {
m.TimeLocation = loc
} else {
m.TimeLocation = time.Local
}
if readEnv("MATRIX_ENABLE_CRYPTO", "1") != "0" { if readEnv("MATRIX_ENABLE_CRYPTO", "1") != "0" {
m.crypto = initMatrixCrypto(hs, token) m.crypto = initMatrixCrypto(hs, token)
@@ -128,7 +135,7 @@ func (m *MatrixClient) FetchRecentMessages(ctx context.Context) ([]MatrixMessage
} }
func (m *MatrixClient) mapEventToMessage(ctx context.Context, ev *event.Event) (MatrixMessage, bool) { func (m *MatrixClient) mapEventToMessage(ctx context.Context, ev *event.Event) (MatrixMessage, bool) {
ts := time.UnixMilli(ev.Timestamp).Local().Format("02.01.2006 15:04") ts := m.formatTimestamp(ev.Timestamp)
sender := shortMatrixSender(string(ev.Sender)) sender := shortMatrixSender(string(ev.Sender))
switch ev.Type { switch ev.Type {
@@ -152,6 +159,14 @@ func (m *MatrixClient) mapEventToMessage(ctx context.Context, ev *event.Event) (
} }
} }
func (m *MatrixClient) formatTimestamp(tsMillis int64) string {
loc := m.TimeLocation
if loc == nil {
loc = time.Local
}
return time.UnixMilli(tsMillis).In(loc).Format("02.01.2006 15:04")
}
func extractBody(ev *event.Event) (string, bool) { func extractBody(ev *event.Event) (string, bool) {
if ev == nil { if ev == nil {
return "", false return "", false

View File

@@ -16,3 +16,4 @@ services:
MATRIX_ENABLE_CRYPTO: "${MATRIX_ENABLE_CRYPTO:-1}" MATRIX_ENABLE_CRYPTO: "${MATRIX_ENABLE_CRYPTO:-1}"
MATRIX_PICKLE_KEY: "${MATRIX_PICKLE_KEY:-}" MATRIX_PICKLE_KEY: "${MATRIX_PICKLE_KEY:-}"
MATRIX_CRYPTO_STORE_PATH: "${MATRIX_CRYPTO_STORE_PATH:-/tmp/farmcal-matrix-crypto.db}" MATRIX_CRYPTO_STORE_PATH: "${MATRIX_CRYPTO_STORE_PATH:-/tmp/farmcal-matrix-crypto.db}"
MATRIX_TIMEZONE: "${MATRIX_TIMEZONE:-Europe/Berlin}"