mirror of
https://git.freebsd.org/ports.git
synced 2025-04-28 01:26:39 -04:00
net/xapsd: Update g20240326 => g20241228
- fixes CVE-2024-45338 and CVE-2024-51744
- requires at least go 1.23, so use latest stable
- adds sub folder support
Commit log:
1e589be...8cf4e49
PR: 285485
This commit is contained in:
parent
94ca69451c
commit
2d98b88458
5 changed files with 152 additions and 135 deletions
|
@ -1,6 +1,5 @@
|
||||||
PORTNAME= xapsd
|
PORTNAME= xapsd
|
||||||
DISTVERSION= g20240326
|
DISTVERSION= g20241228
|
||||||
PORTREVISION= 7
|
|
||||||
CATEGORIES= net
|
CATEGORIES= net
|
||||||
|
|
||||||
MAINTAINER= PopularMoment@protonmail.com
|
MAINTAINER= PopularMoment@protonmail.com
|
||||||
|
@ -10,39 +9,37 @@ WWW= https://github.com/freswa/dovecot-xaps-daemon
|
||||||
LICENSE= MIT
|
LICENSE= MIT
|
||||||
LICENSE_FILE= ${WRKSRC}/LICENSE
|
LICENSE_FILE= ${WRKSRC}/LICENSE
|
||||||
|
|
||||||
USES= go:modules
|
USES= go:1.24,modules
|
||||||
USE_RC_SUBR= xapsd
|
USE_RC_SUBR= xapsd
|
||||||
USE_GITHUB= yes
|
USE_GITHUB= yes
|
||||||
GH_ACCOUNT= freswa
|
GH_ACCOUNT= freswa
|
||||||
GH_PROJECT= dovecot-xaps-daemon
|
GH_PROJECT= dovecot-xaps-daemon
|
||||||
GH_TAGNAME= 1e589be
|
GH_TAGNAME= 8cf4e49
|
||||||
|
|
||||||
GH_TUPLE= freswa:go-plist:900e8a7d907d:freswa_go_plist/vendor/github.com/freswa/go-plist \
|
GH_TUPLE= freswa:go-plist:900e8a7d907d:freswa_go_plist/vendor/github.com/freswa/go-plist \
|
||||||
fsnotify:fsnotify:v1.6.0:fsnotify_fsnotify/vendor/github.com/fsnotify/fsnotify \
|
fsnotify:fsnotify:v1.8.0:fsnotify_fsnotify/vendor/github.com/fsnotify/fsnotify \
|
||||||
go-ini:ini:v1.67.0:go_ini_ini/vendor/gopkg.in/ini.v1 \
|
go-ini:ini:v1.67.0:go_ini_ini/vendor/gopkg.in/ini.v1 \
|
||||||
go-yaml:yaml:v3.0.1:go_yaml_yaml/vendor/gopkg.in/yaml.v3 \
|
go-yaml:yaml:v3.0.1:go_yaml_yaml/vendor/gopkg.in/yaml.v3 \
|
||||||
golang-jwt:jwt:v4.5.0:golang_jwt_jwt_v4/vendor/github.com/golang-jwt/jwt/v4 \
|
golang-jwt:jwt:v4.5.1:golang_jwt_jwt_v4/vendor/github.com/golang-jwt/jwt/v4 \
|
||||||
golang:exp:7918f672742d:golang_exp/vendor/golang.org/x/exp \
|
golang:exp:b2144cdd0a67:golang_exp/vendor/golang.org/x/exp \
|
||||||
golang:net:v0.17.0:golang_net/vendor/golang.org/x/net \
|
golang:net:v0.33.0:golang_net/vendor/golang.org/x/net \
|
||||||
golang:sys:v0.13.0:golang_sys/vendor/golang.org/x/sys \
|
golang:sys:v0.28.0:golang_sys/vendor/golang.org/x/sys \
|
||||||
golang:text:v0.13.0:golang_text/vendor/golang.org/x/text \
|
golang:text:v0.21.0:golang_text/vendor/golang.org/x/text \
|
||||||
hashicorp:hcl:v1.0.0:hashicorp_hcl/vendor/github.com/hashicorp/hcl \
|
hashicorp:hcl:v1.0.0:hashicorp_hcl/vendor/github.com/hashicorp/hcl \
|
||||||
julienschmidt:httprouter:v1.3.0:julienschmidt_httprouter/vendor/github.com/julienschmidt/httprouter \
|
julienschmidt:httprouter:v1.3.0:julienschmidt_httprouter/vendor/github.com/julienschmidt/httprouter \
|
||||||
magiconair:properties:v1.8.7:magiconair_properties/vendor/github.com/magiconair/properties \
|
magiconair:properties:v1.8.9:magiconair_properties/vendor/github.com/magiconair/properties \
|
||||||
mitchellh:mapstructure:v1.5.0:mitchellh_mapstructure/vendor/github.com/mitchellh/mapstructure \
|
mitchellh:mapstructure:v1.5.0:mitchellh_mapstructure/vendor/github.com/mitchellh/mapstructure \
|
||||||
pelletier:go-toml:v2.1.0:pelletier_go_toml_v2/vendor/github.com/pelletier/go-toml/v2 \
|
pelletier:go-toml:v2.2.3:pelletier_go_toml_v2/vendor/github.com/pelletier/go-toml/v2 \
|
||||||
sagikazarmark:locafero:v0.3.0:sagikazarmark_locafero/vendor/github.com/sagikazarmark/locafero \
|
sagikazarmark:locafero:v0.6.0:sagikazarmark_locafero/vendor/github.com/sagikazarmark/locafero \
|
||||||
sagikazarmark:slog-shim:v0.1.0:sagikazarmark_slog_shim/vendor/github.com/sagikazarmark/slog-shim \
|
sagikazarmark:slog-shim:v0.1.0:sagikazarmark_slog_shim/vendor/github.com/sagikazarmark/slog-shim \
|
||||||
sideshow:apns2:v0.23.0:sideshow_apns2/vendor/github.com/sideshow/apns2 \
|
sideshow:apns2:v0.25.0:sideshow_apns2/vendor/github.com/sideshow/apns2 \
|
||||||
sirupsen:logrus:v1.9.3:sirupsen_logrus/vendor/github.com/sirupsen/logrus \
|
sirupsen:logrus:v1.9.3:sirupsen_logrus/vendor/github.com/sirupsen/logrus \
|
||||||
sourcegraph:conc:v0.3.0:sourcegraph_conc/vendor/github.com/sourcegraph/conc \
|
sourcegraph:conc:v0.3.0:sourcegraph_conc/vendor/github.com/sourcegraph/conc \
|
||||||
spf13:afero:v1.10.0:spf13_afero/vendor/github.com/spf13/afero \
|
spf13:afero:v1.11.0:spf13_afero/vendor/github.com/spf13/afero \
|
||||||
spf13:cast:v1.5.1:spf13_cast/vendor/github.com/spf13/cast \
|
spf13:cast:v1.7.1:spf13_cast/vendor/github.com/spf13/cast \
|
||||||
spf13:jwalterweatherman:v1.1.0:spf13_jwalterweatherman/vendor/github.com/spf13/jwalterweatherman \
|
|
||||||
spf13:pflag:v1.0.5:spf13_pflag/vendor/github.com/spf13/pflag \
|
spf13:pflag:v1.0.5:spf13_pflag/vendor/github.com/spf13/pflag \
|
||||||
spf13:viper:v1.17.0:spf13_viper/vendor/github.com/spf13/viper \
|
spf13:viper:v1.19.0:spf13_viper/vendor/github.com/spf13/viper \
|
||||||
subosito:gotenv:v1.6.0:subosito_gotenv/vendor/github.com/subosito/gotenv \
|
subosito:gotenv:v1.6.0:subosito_gotenv/vendor/github.com/subosito/gotenv \
|
||||||
uber-go:atomic:v1.11.0:uber_go_atomic/vendor/go.uber.org/atomic \
|
|
||||||
uber-go:multierr:v1.11.0:uber_go_multierr/vendor/go.uber.org/multierr
|
uber-go:multierr:v1.11.0:uber_go_multierr/vendor/go.uber.org/multierr
|
||||||
|
|
||||||
GO_TARGET= ./cmd/xapsd:${PREFIX}/sbin/xapsd
|
GO_TARGET= ./cmd/xapsd:${PREFIX}/sbin/xapsd
|
||||||
|
|
|
@ -1,57 +1,53 @@
|
||||||
TIMESTAMP = 1712416748
|
TIMESTAMP = 1741456749
|
||||||
SHA256 (freswa-dovecot-xaps-daemon-g20240326-1e589be_GH0.tar.gz) = 1e6c019df01f9c54e4499537678fbebf83270a39570c24677b41b93ed2022e17
|
SHA256 (freswa-dovecot-xaps-daemon-g20241228-8cf4e49_GH0.tar.gz) = 85296246ef9729d3233dfbf69147ba085f815bccad58a0c1c8d783e42b8dbd77
|
||||||
SIZE (freswa-dovecot-xaps-daemon-g20240326-1e589be_GH0.tar.gz) = 110569
|
SIZE (freswa-dovecot-xaps-daemon-g20241228-8cf4e49_GH0.tar.gz) = 41256
|
||||||
SHA256 (freswa-go-plist-900e8a7d907d_GH0.tar.gz) = 2b4a06b8805bc1436ab8f34d6fd140645a0a01ccaf9f4b3a7dc3e0e35f5a2e88
|
SHA256 (freswa-go-plist-900e8a7d907d_GH0.tar.gz) = 2b4a06b8805bc1436ab8f34d6fd140645a0a01ccaf9f4b3a7dc3e0e35f5a2e88
|
||||||
SIZE (freswa-go-plist-900e8a7d907d_GH0.tar.gz) = 47675
|
SIZE (freswa-go-plist-900e8a7d907d_GH0.tar.gz) = 47675
|
||||||
SHA256 (fsnotify-fsnotify-v1.6.0_GH0.tar.gz) = 583b2b399709d04807c5c3185e7d4dc0543d532af91fdeb85eeaf803a0b7703b
|
SHA256 (fsnotify-fsnotify-v1.8.0_GH0.tar.gz) = 3c4cbec6225307397717f18bb87ffc496e59d0f802a41fff572bf09e5dbf6e2b
|
||||||
SIZE (fsnotify-fsnotify-v1.6.0_GH0.tar.gz) = 46044
|
SIZE (fsnotify-fsnotify-v1.8.0_GH0.tar.gz) = 72325
|
||||||
SHA256 (go-ini-ini-v1.67.0_GH0.tar.gz) = 06ba51234140118d1b6064f1817aa89cc971c6e7ce04cb9d286e6660d89296c8
|
SHA256 (go-ini-ini-v1.67.0_GH0.tar.gz) = 06ba51234140118d1b6064f1817aa89cc971c6e7ce04cb9d286e6660d89296c8
|
||||||
SIZE (go-ini-ini-v1.67.0_GH0.tar.gz) = 53531
|
SIZE (go-ini-ini-v1.67.0_GH0.tar.gz) = 53531
|
||||||
SHA256 (go-yaml-yaml-v3.0.1_GH0.tar.gz) = cf05411540d3e6ef8f1fd88434b34f94cedaceb540329031d80e23b74540c4e5
|
SHA256 (go-yaml-yaml-v3.0.1_GH0.tar.gz) = cf05411540d3e6ef8f1fd88434b34f94cedaceb540329031d80e23b74540c4e5
|
||||||
SIZE (go-yaml-yaml-v3.0.1_GH0.tar.gz) = 91173
|
SIZE (go-yaml-yaml-v3.0.1_GH0.tar.gz) = 91173
|
||||||
SHA256 (golang-jwt-jwt-v4.5.0_GH0.tar.gz) = 00b1cc127cba09b4e4ea9efa5c0f18a36bb55e08b5eec0a222b8e1599a938077
|
SHA256 (golang-jwt-jwt-v4.5.1_GH0.tar.gz) = 1bb5df28987139b800083b79fab18bb644f664da1aade0f9d36482c3bf04eccd
|
||||||
SIZE (golang-jwt-jwt-v4.5.0_GH0.tar.gz) = 53049
|
SIZE (golang-jwt-jwt-v4.5.1_GH0.tar.gz) = 53181
|
||||||
SHA256 (golang-exp-7918f672742d_GH0.tar.gz) = b95b3ce3e29ce58fb69a562d1e0ad092086f5acbe8258e7288a313c9f354f9ed
|
SHA256 (golang-exp-b2144cdd0a67_GH0.tar.gz) = 837709d8463fad36e00f30eafd6b6ab3f44c7e7926959cdafbc69fa4a2a9ffb7
|
||||||
SIZE (golang-exp-7918f672742d_GH0.tar.gz) = 1634283
|
SIZE (golang-exp-b2144cdd0a67_GH0.tar.gz) = 1741596
|
||||||
SHA256 (golang-net-v0.17.0_GH0.tar.gz) = 8cbbc0df17599834c9f547d802045b279724a3931f3cdb92c02d141214fd80c4
|
SHA256 (golang-net-v0.33.0_GH0.tar.gz) = 675e0ceaf54baf4f6e2a5152fe148906119c97e7b1d37d1c44ec2621faeab0e8
|
||||||
SIZE (golang-net-v0.17.0_GH0.tar.gz) = 1456230
|
SIZE (golang-net-v0.33.0_GH0.tar.gz) = 1466426
|
||||||
SHA256 (golang-sys-v0.13.0_GH0.tar.gz) = 8877d20a8f1b2533ddef00e65b6b3b9cebbcbffa319ed525df0bc229f583e2b6
|
SHA256 (golang-sys-v0.28.0_GH0.tar.gz) = 62726b1ccbb09c7e8de2215756a26012751bdded12b5bacc6de83296db694ebf
|
||||||
SIZE (golang-sys-v0.13.0_GH0.tar.gz) = 1442250
|
SIZE (golang-sys-v0.28.0_GH0.tar.gz) = 1519898
|
||||||
SHA256 (golang-text-v0.13.0_GH0.tar.gz) = c6e22ff8280188539ba0a6c65cbc80cda877adcf5332651fa78044018c05d6af
|
SHA256 (golang-text-v0.21.0_GH0.tar.gz) = d64dbf40a8ae06c4805895e48553ecdadaed07089d8ed2168a0d61551d17ff22
|
||||||
SIZE (golang-text-v0.13.0_GH0.tar.gz) = 8967009
|
SIZE (golang-text-v0.21.0_GH0.tar.gz) = 8964782
|
||||||
SHA256 (hashicorp-hcl-v1.0.0_GH0.tar.gz) = 50632428210503070fd2fde748c88b7414bf84a6a0eadebf9d8e596a033bead2
|
SHA256 (hashicorp-hcl-v1.0.0_GH0.tar.gz) = 50632428210503070fd2fde748c88b7414bf84a6a0eadebf9d8e596a033bead2
|
||||||
SIZE (hashicorp-hcl-v1.0.0_GH0.tar.gz) = 70658
|
SIZE (hashicorp-hcl-v1.0.0_GH0.tar.gz) = 70658
|
||||||
SHA256 (julienschmidt-httprouter-v1.3.0_GH0.tar.gz) = 2999dffc23f8ac3872ea37d108ddec0ba570d2780a42876300bdcdb0744908e2
|
SHA256 (julienschmidt-httprouter-v1.3.0_GH0.tar.gz) = 2999dffc23f8ac3872ea37d108ddec0ba570d2780a42876300bdcdb0744908e2
|
||||||
SIZE (julienschmidt-httprouter-v1.3.0_GH0.tar.gz) = 23889
|
SIZE (julienschmidt-httprouter-v1.3.0_GH0.tar.gz) = 23889
|
||||||
SHA256 (magiconair-properties-v1.8.7_GH0.tar.gz) = 09e950df1970975400edc7f6c2f9e3edace4e1ea49f823006387d130fb0f4f03
|
SHA256 (magiconair-properties-v1.8.9_GH0.tar.gz) = 259f5a9eea40458a1096f7c51121178823e912af07c1ca620d115905db5c4f26
|
||||||
SIZE (magiconair-properties-v1.8.7_GH0.tar.gz) = 31425
|
SIZE (magiconair-properties-v1.8.9_GH0.tar.gz) = 28416
|
||||||
SHA256 (mitchellh-mapstructure-v1.5.0_GH0.tar.gz) = 81106cbac93000812c194b4a2069dd32913ec18819b1e99e8436595ce4939413
|
SHA256 (mitchellh-mapstructure-v1.5.0_GH0.tar.gz) = 81106cbac93000812c194b4a2069dd32913ec18819b1e99e8436595ce4939413
|
||||||
SIZE (mitchellh-mapstructure-v1.5.0_GH0.tar.gz) = 30123
|
SIZE (mitchellh-mapstructure-v1.5.0_GH0.tar.gz) = 30123
|
||||||
SHA256 (pelletier-go-toml-v2.1.0_GH0.tar.gz) = ee61dae04dfb61262f2ab5c1b55dabaec8acb74f9513e4729b72511479eb9fd1
|
SHA256 (pelletier-go-toml-v2.2.3_GH0.tar.gz) = 3a5dfdc1e543efd6032813cb27a5b06d66bbefbbcc88bb664f69d605725c42af
|
||||||
SIZE (pelletier-go-toml-v2.1.0_GH0.tar.gz) = 899401
|
SIZE (pelletier-go-toml-v2.2.3_GH0.tar.gz) = 909237
|
||||||
SHA256 (sagikazarmark-locafero-v0.3.0_GH0.tar.gz) = babb395f253048afda2bd17a91750cf7f2dcb28c1d870f10a01d6d37531d2eeb
|
SHA256 (sagikazarmark-locafero-v0.6.0_GH0.tar.gz) = 2a1ba4cb44d1858b77fb750f6f72f1b3b3d013ef8731644bdc0a6fdc9e3f28be
|
||||||
SIZE (sagikazarmark-locafero-v0.3.0_GH0.tar.gz) = 23726
|
SIZE (sagikazarmark-locafero-v0.6.0_GH0.tar.gz) = 11140
|
||||||
SHA256 (sagikazarmark-slog-shim-v0.1.0_GH0.tar.gz) = a594ec7e138265768a5c23f8ab460724d8215db45dc1bddde4743bca3373803d
|
SHA256 (sagikazarmark-slog-shim-v0.1.0_GH0.tar.gz) = a594ec7e138265768a5c23f8ab460724d8215db45dc1bddde4743bca3373803d
|
||||||
SIZE (sagikazarmark-slog-shim-v0.1.0_GH0.tar.gz) = 10872
|
SIZE (sagikazarmark-slog-shim-v0.1.0_GH0.tar.gz) = 10872
|
||||||
SHA256 (sideshow-apns2-v0.23.0_GH0.tar.gz) = 5ad9b2fb211ac9ae9040e09ba5b3b2c74189826e778f874b99aeb174ad22a1ea
|
SHA256 (sideshow-apns2-v0.25.0_GH0.tar.gz) = c269325d9f5d34fd394aecee79d48e1726ce9ddf899f22a20b4362616f388e84
|
||||||
SIZE (sideshow-apns2-v0.23.0_GH0.tar.gz) = 1264203
|
SIZE (sideshow-apns2-v0.25.0_GH0.tar.gz) = 1264207
|
||||||
SHA256 (sirupsen-logrus-v1.9.3_GH0.tar.gz) = cfa48a647a28c1f12fb6a9b672bc4d88b6407ff05aedcf23ce939d342646acce
|
SHA256 (sirupsen-logrus-v1.9.3_GH0.tar.gz) = cfa48a647a28c1f12fb6a9b672bc4d88b6407ff05aedcf23ce939d342646acce
|
||||||
SIZE (sirupsen-logrus-v1.9.3_GH0.tar.gz) = 50320
|
SIZE (sirupsen-logrus-v1.9.3_GH0.tar.gz) = 50320
|
||||||
SHA256 (sourcegraph-conc-v0.3.0_GH0.tar.gz) = c20a36ef6e8cd4721b8824d3e0a590d78f56ce72ace53ec7fdd2f7a978e9240f
|
SHA256 (sourcegraph-conc-v0.3.0_GH0.tar.gz) = c20a36ef6e8cd4721b8824d3e0a590d78f56ce72ace53ec7fdd2f7a978e9240f
|
||||||
SIZE (sourcegraph-conc-v0.3.0_GH0.tar.gz) = 23021
|
SIZE (sourcegraph-conc-v0.3.0_GH0.tar.gz) = 23021
|
||||||
SHA256 (spf13-afero-v1.10.0_GH0.tar.gz) = 4a35513ee4da7c1e38d0abd67fe541c15abe21b45e521498060c565d88213950
|
SHA256 (spf13-afero-v1.11.0_GH0.tar.gz) = f83f67c4a03d8bba2b7fe1a496e848b2b1b7d97d0b951d85d2b401e7488a4ed4
|
||||||
SIZE (spf13-afero-v1.10.0_GH0.tar.gz) = 94857
|
SIZE (spf13-afero-v1.11.0_GH0.tar.gz) = 89257
|
||||||
SHA256 (spf13-cast-v1.5.1_GH0.tar.gz) = 445aa5b0e61b67ccd0d14fe38cd473d73775f1bec4b58fe83b16e3b0cab08a9a
|
SHA256 (spf13-cast-v1.7.1_GH0.tar.gz) = 582dcd8edee06058dde613d3e9cea2c721a26e8afa7aa782d7d24075798579f3
|
||||||
SIZE (spf13-cast-v1.5.1_GH0.tar.gz) = 15524
|
SIZE (spf13-cast-v1.7.1_GH0.tar.gz) = 15743
|
||||||
SHA256 (spf13-jwalterweatherman-v1.1.0_GH0.tar.gz) = 4fd850a792c5738954c4801cf549d8d0bf53edd17139cd39d179aa5abf7ec68d
|
|
||||||
SIZE (spf13-jwalterweatherman-v1.1.0_GH0.tar.gz) = 6871
|
|
||||||
SHA256 (spf13-pflag-v1.0.5_GH0.tar.gz) = 9a2cae1f8e8ab0d2cc8ebe468e871af28d9ac0962cf0520999e3ba85f0c7b808
|
SHA256 (spf13-pflag-v1.0.5_GH0.tar.gz) = 9a2cae1f8e8ab0d2cc8ebe468e871af28d9ac0962cf0520999e3ba85f0c7b808
|
||||||
SIZE (spf13-pflag-v1.0.5_GH0.tar.gz) = 50796
|
SIZE (spf13-pflag-v1.0.5_GH0.tar.gz) = 50796
|
||||||
SHA256 (spf13-viper-v1.17.0_GH0.tar.gz) = 7f5476e4333a29e6fd5d277f5f9c7c5e234e802419059c6d6b088108e7627358
|
SHA256 (spf13-viper-v1.19.0_GH0.tar.gz) = bd754a586de7b8f6e54037b715765833f8120cb8bdbb4240a69c6537a0ccdfd5
|
||||||
SIZE (spf13-viper-v1.17.0_GH0.tar.gz) = 127661
|
SIZE (spf13-viper-v1.19.0_GH0.tar.gz) = 119990
|
||||||
SHA256 (subosito-gotenv-v1.6.0_GH0.tar.gz) = 51a5a8e36f30ddd97866779e93c4e93b0d4958a60fabd1d17fc2226bfe7823db
|
SHA256 (subosito-gotenv-v1.6.0_GH0.tar.gz) = 51a5a8e36f30ddd97866779e93c4e93b0d4958a60fabd1d17fc2226bfe7823db
|
||||||
SIZE (subosito-gotenv-v1.6.0_GH0.tar.gz) = 11470
|
SIZE (subosito-gotenv-v1.6.0_GH0.tar.gz) = 11470
|
||||||
SHA256 (uber-go-atomic-v1.11.0_GH0.tar.gz) = cfe258c20d71ac4dbf0f716a23ed00c332b7f281180651e2a67ad40a8b0772cc
|
|
||||||
SIZE (uber-go-atomic-v1.11.0_GH0.tar.gz) = 24299
|
|
||||||
SHA256 (uber-go-multierr-v1.11.0_GH0.tar.gz) = 8aa599cf7de733306cf8770f854f8a38e6c819b1ae4296f15e44b1e7c6698f34
|
SHA256 (uber-go-multierr-v1.11.0_GH0.tar.gz) = 8aa599cf7de733306cf8770f854f8a38e6c819b1ae4296f15e44b1e7c6698f34
|
||||||
SIZE (uber-go-multierr-v1.11.0_GH0.tar.gz) = 16900
|
SIZE (uber-go-multierr-v1.11.0_GH0.tar.gz) = 16900
|
||||||
|
|
63
net/xapsd/files/patch-internal_apns.go
Normal file
63
net/xapsd/files/patch-internal_apns.go
Normal file
|
@ -0,0 +1,63 @@
|
||||||
|
--- internal/apns.go.orig 2024-03-26 13:15:17 UTC
|
||||||
|
+++ internal/apns.go
|
||||||
|
@@ -1,18 +1,21 @@
|
||||||
|
package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
+ "crypto/md5"
|
||||||
|
"crypto/tls"
|
||||||
|
"crypto/x509"
|
||||||
|
+ "encoding/hex"
|
||||||
|
"errors"
|
||||||
|
+ "net/http"
|
||||||
|
+ "sync"
|
||||||
|
+ "time"
|
||||||
|
+
|
||||||
|
"github.com/freswa/dovecot-xaps-daemon/internal/config"
|
||||||
|
"github.com/freswa/dovecot-xaps-daemon/internal/database"
|
||||||
|
"github.com/freswa/dovecot-xaps-daemon/pkg/apple_xserver_certs"
|
||||||
|
"github.com/sideshow/apns2"
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
"golang.org/x/net/http2"
|
||||||
|
- "net/http"
|
||||||
|
- "sync"
|
||||||
|
- "time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
@@ -135,11 +138,11 @@ func (apns *Apns) checkDelayed() {
|
||||||
|
}
|
||||||
|
apns.mapMutex.Unlock()
|
||||||
|
for _, reg := range sendNow {
|
||||||
|
- apns.SendNotification(reg, false)
|
||||||
|
+ apns.SendNotification(reg, false, "")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
-func (apns *Apns) SendNotification(registration database.Registration, delayed bool) {
|
||||||
|
+func (apns *Apns) SendNotification(registration database.Registration, delayed bool, mailbox string) {
|
||||||
|
apns.mapMutex.Lock()
|
||||||
|
if delayed {
|
||||||
|
apns.delayedApns[registration] = time.Now()
|
||||||
|
@@ -149,6 +152,7 @@ func (apns *Apns) SendNotification(registration databa
|
||||||
|
delete(apns.delayedApns, registration)
|
||||||
|
apns.mapMutex.Unlock()
|
||||||
|
}
|
||||||
|
+
|
||||||
|
log.Debugln("Sending notification to", registration.AccountId, "/", registration.DeviceToken)
|
||||||
|
|
||||||
|
notification := &apns2.Notification{}
|
||||||
|
@@ -156,6 +160,13 @@ func (apns *Apns) SendNotification(registration databa
|
||||||
|
notification.Topic = apns.Topic
|
||||||
|
composedPayload := []byte(`{"aps":{`)
|
||||||
|
composedPayload = append(composedPayload, []byte(`"account-id":"`+registration.AccountId+`"`)...)
|
||||||
|
+
|
||||||
|
+ if mailbox != "" {
|
||||||
|
+ hash := md5.Sum([]byte(mailbox))
|
||||||
|
+ mailbox_hash := hex.EncodeToString(hash[:])
|
||||||
|
+ composedPayload = append(composedPayload, []byte(`, "m":"`+mailbox_hash+`"`)...)
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
composedPayload = append(composedPayload, []byte(`}}`)...)
|
||||||
|
notification.Payload = composedPayload
|
||||||
|
notification.Expiration = time.Now().Add(24 * time.Hour)
|
44
net/xapsd/files/patch-internal_socket.go
Normal file
44
net/xapsd/files/patch-internal_socket.go
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
--- internal/socket.go.orig 2024-03-26 13:15:17 UTC
|
||||||
|
+++ internal/socket.go
|
||||||
|
@@ -2,12 +2,13 @@ package internal
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
+ "net/http"
|
||||||
|
+ "strings"
|
||||||
|
+
|
||||||
|
"github.com/freswa/dovecot-xaps-daemon/internal/config"
|
||||||
|
"github.com/freswa/dovecot-xaps-daemon/internal/database"
|
||||||
|
"github.com/julienschmidt/httprouter"
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
- "net/http"
|
||||||
|
- "strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
type httpHandler struct {
|
||||||
|
@@ -147,11 +148,11 @@ func (httpHandler *httpHandler) handleNotify(writer ht
|
||||||
|
}
|
||||||
|
|
||||||
|
// we don't know how to handle other mailboxes other than INBOX, so ignore them
|
||||||
|
- if notify.Mailbox != "INBOX" {
|
||||||
|
- log.Debugln("Ignoring non INBOX event for:", notify.Mailbox)
|
||||||
|
- writer.WriteHeader(http.StatusOK)
|
||||||
|
- return
|
||||||
|
- }
|
||||||
|
+ //if notify.Mailbox != "INBOX" {
|
||||||
|
+ // log.Debugln("Ignoring non INBOX event for:", notify.Mailbox)
|
||||||
|
+ // writer.WriteHeader(http.StatusOK)
|
||||||
|
+ // return
|
||||||
|
+ //}
|
||||||
|
|
||||||
|
// Find all the devices registered for this mailbox event
|
||||||
|
registrations, err := httpHandler.db.FindRegistrations(notify.Username, notify.Mailbox)
|
||||||
|
@@ -179,7 +180,7 @@ func (httpHandler *httpHandler) handleNotify(writer ht
|
||||||
|
// Send a notification to all registered devices. We ignore failures
|
||||||
|
// because there is not a lot we can do.
|
||||||
|
for _, registration := range registrations {
|
||||||
|
- httpHandler.apns.SendNotification(registration, !isMessageNew)
|
||||||
|
+ httpHandler.apns.SendNotification(registration, !isMessageNew, notify.Mailbox)
|
||||||
|
}
|
||||||
|
|
||||||
|
writer.WriteHeader(http.StatusOK)
|
|
@ -1,83 +0,0 @@
|
||||||
--- pkg/apple_xserver_certs/http.go.orig 2024-03-26 13:15:17 UTC
|
|
||||||
+++ pkg/apple_xserver_certs/http.go
|
|
||||||
@@ -1,11 +1,17 @@
|
|
||||||
package apple_xserver_certs
|
|
||||||
|
|
||||||
import (
|
|
||||||
+ "bufio"
|
|
||||||
"bytes"
|
|
||||||
+ "context"
|
|
||||||
+ "crypto/tls"
|
|
||||||
"encoding/pem"
|
|
||||||
+ "io"
|
|
||||||
"io/ioutil"
|
|
||||||
"log"
|
|
||||||
+ "math"
|
|
||||||
"net/http"
|
|
||||||
+ "time"
|
|
||||||
)
|
|
||||||
|
|
||||||
func NewCerts(username string, passwordhash string) *Certificates {
|
|
||||||
@@ -50,7 +56,6 @@ func handleResponse(certs *Certificates, response []by
|
|
||||||
}
|
|
||||||
|
|
||||||
func sendRequest(reqBody []byte, newCerts bool) (respBody []byte) {
|
|
||||||
- client := &http.Client{}
|
|
||||||
r := bytes.NewReader(reqBody)
|
|
||||||
url := "https://identity.apple.com/pushcert/caservice/renew"
|
|
||||||
if newCerts {
|
|
||||||
@@ -67,12 +72,51 @@ func sendRequest(reqBody []byte, newCerts bool) (respB
|
|
||||||
req.Header.Set("Accept", "*/*")
|
|
||||||
req.Header.Set("Accept-Language", "en-us")
|
|
||||||
|
|
||||||
- resp, err := client.Do(req)
|
|
||||||
+ req.Close = true
|
|
||||||
+
|
|
||||||
+ ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
|
|
||||||
+ defer cancel()
|
|
||||||
+
|
|
||||||
+ conn, err := new(tls.Dialer).DialContext(
|
|
||||||
+ ctx,
|
|
||||||
+ "tcp",
|
|
||||||
+ req.URL.Host+":443",
|
|
||||||
+ )
|
|
||||||
if err != nil {
|
|
||||||
- log.Fatalln(err)
|
|
||||||
+ log.Fatalln(err) // TODO: Handle error properly
|
|
||||||
}
|
|
||||||
+ defer func() {
|
|
||||||
+ _ = conn.Close() //nolint:errcheck,gosec // Ignored on purpose
|
|
||||||
+ }()
|
|
||||||
|
|
||||||
- defer resp.Body.Close()
|
|
||||||
+ if err := req.Write(conn); err != nil {
|
|
||||||
+ log.Fatalln(err) // TODO: Handle error properly
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ buf, err := io.ReadAll(io.LimitReader(conn, math.MaxInt64))
|
|
||||||
+ if err != nil {
|
|
||||||
+ log.Fatalln(err) // TODO: Handle error properly
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ const (
|
|
||||||
+ cr = "\r"
|
|
||||||
+ nl = "\n"
|
|
||||||
+ )
|
|
||||||
+ for _, ign := range []string{
|
|
||||||
+ "1;: mode=block",
|
|
||||||
+ "max-age=31536000;: includeSubdomains",
|
|
||||||
+ } {
|
|
||||||
+ buf = bytes.Replace(buf, []byte(nl+ign+cr+nl), []byte(nl), 1)
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ resp, err := http.ReadResponse(bufio.NewReader(bytes.NewReader(buf)), req)
|
|
||||||
+ if err != nil {
|
|
||||||
+ log.Fatalln(err) // TODO: Handle error properly
|
|
||||||
+ }
|
|
||||||
+ defer func() {
|
|
||||||
+ _ = resp.Body.Close() //nolint:errcheck,gosec // Ignored on purpose
|
|
||||||
+ }()
|
|
||||||
+
|
|
||||||
respBody, err = ioutil.ReadAll(resp.Body)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalln(err)
|
|
Loading…
Add table
Reference in a new issue