www/remark42: A privacy-focused lightweight commenting engine

Remark42 allows you to have a self-hosted, lightweight, and simple (yet
functional) comment engine, which doesn't spy on users. It can be embedded
into blogs, articles or any other place where readers add comments.
This commit is contained in:
Xin LI 2022-12-27 12:36:30 -08:00
parent 16cb2607fb
commit 59878ba8f5
5 changed files with 573 additions and 0 deletions

View File

@ -1819,6 +1819,7 @@
SUBDIR += rearx
SUBDIR += redmine42
SUBDIR += redmine50
SUBDIR += remark42
SUBDIR += rejik
SUBDIR += reportmagic
SUBDIR += repos-style

138
www/remark42/Makefile Normal file
View File

@ -0,0 +1,138 @@
PORTNAME= remark42
DISTVERSIONPREFIX= v
DISTVERSION= 1.11.2
CATEGORIES= www
MASTER_SITES= LOCAL/delphij:npmcache
DISTFILES= ${PORTNAME}-npm-cache-${DISTVERSION}${EXTRACT_SUFX}:npmcache
MAINTAINER= delphij@FreeBSD.org
COMMENT= Privacy-focused lightweight commenting engine
WWW= https://remark42.com/
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE
BUILD_DEPENDS+= npm-node16>0:www/npm-node16
USES= cpe go:modules tar:xz
GO_BUILDFLAGS= -ldflags "-s -w -X main.revision=${DISTVERSION}"
GO_TARGET= app:${PREFIX}/libexec/${PORTNAME}
GO_PKGNAME= github.com/${GH_ACCOUNT}/${PORTNAME}/backend
LD_FLAG_X_PREFIX= -X ${GO_PKGNAME}/version
MAKE_ENV+= npm_config_offline=true
USE_RC_SUBR= ${PORTNAME}
USE_GITHUB= yes
GH_ACCOUNT= umputun
PLIST_FILES= libexec/${PORTNAME}
GH_TUPLE= \
Depado:bfchroma:v2.0.0:depado_bfchroma_v2/vendor/github.com/Depado/bfchroma/v2 \
PuerkitoBio:goquery:v1.8.0:puerkitobio_goquery/vendor/github.com/PuerkitoBio/goquery \
ajg:form:v1.5.1:ajg_form/vendor/github.com/ajg/form \
alecthomas:chroma:v2.3.0:alecthomas_chroma_v2/vendor/github.com/alecthomas/chroma/v2 \
andybalholm:cascadia:v1.3.1:andybalholm_cascadia/vendor/github.com/andybalholm/cascadia \
aymerick:douceur:v0.2.0:aymerick_douceur/vendor/github.com/aymerick/douceur \
cespare:xxhash:v2.1.2:cespare_xxhash_v2/vendor/github.com/cespare/xxhash/v2 \
davecgh:go-spew:v1.1.1:davecgh_go_spew/vendor/github.com/davecgh/go-spew \
dghubble:oauth1:v0.7.1:dghubble_oauth1/vendor/github.com/dghubble/oauth1 \
dgryski:go-rendezvous:9f7001d12a5f:dgryski_go_rendezvous/vendor/github.com/dgryski/go-rendezvous \
didip:tollbooth:v7.0.1:didip_tollbooth_v7/vendor/github.com/didip/tollbooth/v7 \
didip:tollbooth_chi:d662a7f6928f:didip_tollbooth_chi/vendor/github.com/didip/tollbooth_chi \
dlclark:regexp2:v1.4.0:dlclark_regexp2/vendor/github.com/dlclark/regexp2 \
etcd-io:bbolt:v1.3.6:etcd_io_bbolt/vendor/go.etcd.io/bbolt \
go-chi:chi:v5.0.7:go_chi_chi_v5/vendor/github.com/go-chi/chi/v5 \
go-chi:cors:v1.2.1:go_chi_cors/vendor/github.com/go-chi/cors \
go-chi:render:v1.0.2:go_chi_render/vendor/github.com/go-chi/render \
go-oauth2:oauth2:v4.5.1:go_oauth2_oauth2_v4/vendor/github.com/go-oauth2/oauth2/v4 \
go-pkgz:auth:v1.20.0:go_pkgz_auth/vendor/github.com/go-pkgz/auth \
go-pkgz:email:v0.4.0:go_pkgz_email/vendor/github.com/go-pkgz/email \
go-pkgz:expirable-cache:v0.1.0:go_pkgz_expirable_cache/vendor/github.com/go-pkgz/expirable-cache \
go-pkgz:jrpc:v0.3.0:go_pkgz_jrpc/vendor/github.com/go-pkgz/jrpc \
go-pkgz:lcw:v1.0.1:go_pkgz_lcw/vendor/github.com/go-pkgz/lcw \
go-pkgz:lgr:v0.10.4:go_pkgz_lgr/vendor/github.com/go-pkgz/lgr \
go-pkgz:notify:v0.2.0:go_pkgz_notify/vendor/github.com/go-pkgz/notify \
go-pkgz:repeater:v1.1.3:go_pkgz_repeater/vendor/github.com/go-pkgz/repeater \
go-pkgz:rest:v1.16.0:go_pkgz_rest/vendor/github.com/go-pkgz/rest \
go-pkgz:syncs:v1.2.0:go_pkgz_syncs/vendor/github.com/go-pkgz/syncs \
go-redis:redis:v8.11.5:go_redis_redis_v8/vendor/github.com/go-redis/redis/v8 \
go-yaml:yaml:v3.0.1:go_yaml_yaml/vendor/gopkg.in/yaml.v3 \
golang-jwt:jwt:v3.2.2:golang_jwt_jwt/vendor/github.com/golang-jwt/jwt \
golang:appengine:v1.6.7:golang_appengine/vendor/google.golang.org/appengine \
golang:crypto:05595931fe9d:golang_crypto/vendor/golang.org/x/crypto \
golang:image:41969df76e82:golang_image/vendor/golang.org/x/image \
golang:net:83b083e8dc8b:golang_net/vendor/golang.org/x/net \
golang:oauth2:9780585627b5:golang_oauth2/vendor/golang.org/x/oauth2 \
golang:protobuf:v1.5.2:golang_protobuf/vendor/github.com/golang/protobuf \
golang:snappy:v0.0.4:golang_snappy/vendor/github.com/golang/snappy \
golang:sync:036812b2e83c:golang_sync/vendor/golang.org/x/sync \
golang:sys:3c1f35247d10:golang_sys/vendor/golang.org/x/sys \
golang:text:v0.3.7:golang_text/vendor/golang.org/x/text \
google:uuid:v1.3.0:google_uuid/vendor/github.com/google/uuid \
googleapis:google-cloud-go:compute/v1.6.1:googleapis_google_cloud_go_compute/vendor/cloud.google.com/go \
gorilla:css:v1.0.0:gorilla_css/vendor/github.com/gorilla/css \
gorilla:feeds:v1.1.1:gorilla_feeds/vendor/github.com/gorilla/feeds \
gorilla:websocket:v1.5.0:gorilla_websocket/vendor/github.com/gorilla/websocket \
hashicorp:errwrap:v1.1.0:hashicorp_errwrap/vendor/github.com/hashicorp/errwrap \
hashicorp:go-multierror:v1.1.1:hashicorp_go_multierror/vendor/github.com/hashicorp/go-multierror \
hashicorp:golang-lru:v0.5.4:hashicorp_golang_lru/vendor/github.com/hashicorp/golang-lru \
jessevdk:go-flags:v1.5.0:jessevdk_go_flags/vendor/github.com/jessevdk/go-flags \
klauspost:compress:v1.15.2:klauspost_compress/vendor/github.com/klauspost/compress \
kyokomi:emoji:v2.2.10:kyokomi_emoji_v2/vendor/github.com/kyokomi/emoji/v2 \
microcosm-cc:bluemonday:v1.0.20:microcosm_cc_bluemonday/vendor/github.com/microcosm-cc/bluemonday \
mongodb:mongo-go-driver:v1.10.2:mongodb_mongo_go_driver/vendor/go.mongodb.org/mongo-driver \
montanaflynn:stats:1bf9dbcd8cbe:montanaflynn_stats/vendor/github.com/montanaflynn/stats \
nullrocks:identicon:7875f45b0022:nullrocks_identicon/vendor/github.com/nullrocks/identicon \
pkg:errors:v0.9.1:pkg_errors/vendor/github.com/pkg/errors \
pmezard:go-difflib:v1.0.0:pmezard_go_difflib/vendor/github.com/pmezard/go-difflib \
protocolbuffers:protobuf-go:v1.28.0:protocolbuffers_protobuf_go/vendor/google.golang.org/protobuf \
rs:xid:v1.4.0:rs_xid/vendor/github.com/rs/xid \
russross:blackfriday:v2.1.0:russross_blackfriday_v2/vendor/github.com/russross/blackfriday/v2 \
skip2:go-qrcode:da1b6568686e:skip2_go_qrcode/vendor/github.com/skip2/go-qrcode \
slack-go:slack:v0.11.3:slack_go_slack/vendor/github.com/slack-go/slack \
stretchr:testify:v1.8.0:stretchr_testify/vendor/github.com/stretchr/testify \
uber-go:goleak:v1.2.0:uber_go_goleak/vendor/go.uber.org/goleak \
xdg-go:pbkdf2:v1.0.0:xdg_go_pbkdf2/vendor/github.com/xdg-go/pbkdf2 \
xdg-go:scram:v1.1.1:xdg_go_scram/vendor/github.com/xdg-go/scram \
xdg-go:stringprep:v1.0.3:xdg_go_stringprep/vendor/github.com/xdg-go/stringprep \
youmark:pkcs8:1326539a0a0a:youmark_pkcs8/vendor/github.com/youmark/pkcs8
REMARK_PIDDIR= /var/run/${PORTNAME}/
REMARK_USER?= www
REMARK_DATADIR?=/var/db/${PORTNAME}
REMARK_URL?= http://127.0.0.1:8080
USE_RC_SUBR= remark
SUB_LIST+= REMARK_PIDDIR=${REMARK_PIDDIR} \
REMARK_USER=${REMARK_USER} \
REMARK_DATADIR=${REMARK_DATADIR}
# (for maintainer) helper target to generate node_modules tarball
make-npm-cache: extract
@cd ${WRKDIR} && ${RM} -r .npm
@cd ${WRKSRC}/frontend/apps/${PORTNAME} \
&& ${SETENV} HOME=${WRKDIR} npm install
@cd ${WRKDIR} \
&& ${TAR} -cJf ${PORTNAME}-npm-cache-${DISTVERSION}${EXTRACT_SUFX} .npm \
${PORTNAME}-${DISTVERSION}/frontend/apps/remark42/package-lock.json \
&& ${ECHO} "Please upload the file ${WRKDIR}/${PORTNAME}-npm-cache-${DISTVERSION}${EXTRACT_SUFX}"
pre-build:
cd ${WRKSRC}/frontend/apps/${PORTNAME} && ${SETENV} HOME=${WRKDIR} npm install
cd ${WRKSRC}/frontend/apps/${PORTNAME} && ${SETENV} HOME=${WRKDIR} npm run build
${RM} -r ${WRKSRC}/backend/app/cmd/web/
${MV} ${WRKSRC}/frontend/apps/remark42/public ${WRKSRC}/backend/app/cmd/web
${FIND} ${WRKSRC}/backend/app/cmd/web -type f \( -name '*.html' -or -name '*.js' -or -name '*.mjs' \) \
-print -exec ${REINPLACE_CMD} -e "s|{% REMARK_URL %}|${REMARK_URL}|g" {} +
do-build:
cd ${WRKSRC}/backend && ${SETENV} ${MAKE_ENV} ${GO_ENV} GOPROXY=off ${GO_CMD} build ${GO_BUILDFLAGS} \
-o ${GO_WRKDIR_BIN}/${PORTNAME} ./app
.include <bsd.port.mk>

143
www/remark42/distinfo Normal file
View File

@ -0,0 +1,143 @@
TIMESTAMP = 1671646617
SHA256 (remark42-npm-cache-1.11.2.tar.xz) = fa998c535034402555e6922c0ff139568be9708cea793ee7aacc3694e349f793
SIZE (remark42-npm-cache-1.11.2.tar.xz) = 106273124
SHA256 (umputun-remark42-v1.11.2_GH0.tar.gz) = f05b5ef33e7642ad06ae28636a08080d0fb319e75ab118b1282ff8512752ccf9
SIZE (umputun-remark42-v1.11.2_GH0.tar.gz) = 5742684
SHA256 (Depado-bfchroma-v2.0.0_GH0.tar.gz) = d999d4cf56554c15fe8d1651e4b5e87dbd5b399a0d4c7af7bc7b682e93da4f18
SIZE (Depado-bfchroma-v2.0.0_GH0.tar.gz) = 7451
SHA256 (PuerkitoBio-goquery-v1.8.0_GH0.tar.gz) = 3b7c6f02d8ecea5f615d6b55a925403e51ae26b13dec93ccdbd7d99d79aff231
SIZE (PuerkitoBio-goquery-v1.8.0_GH0.tar.gz) = 105200
SHA256 (ajg-form-v1.5.1_GH0.tar.gz) = 085e8e98cf63d39241c6ba815b9a71d38808c3fadb6b522feb7fab6d123c44c7
SIZE (ajg-form-v1.5.1_GH0.tar.gz) = 14946
SHA256 (alecthomas-chroma-v2.3.0_GH0.tar.gz) = 1dc319a4b5f584858165900c94aa4cdef03f0f8e7a95fe3a3d0ab04bc0403c8c
SIZE (alecthomas-chroma-v2.3.0_GH0.tar.gz) = 875885
SHA256 (andybalholm-cascadia-v1.3.1_GH0.tar.gz) = ced0bf6f8daadb38619be1e70675c6920c994649b83cd0a20e9e096c3785eb72
SIZE (andybalholm-cascadia-v1.3.1_GH0.tar.gz) = 33071
SHA256 (aymerick-douceur-v0.2.0_GH0.tar.gz) = ceed015cddc99b600ccbbd6aa0ebe39063554049f70153887d3df7c21fefedbb
SIZE (aymerick-douceur-v0.2.0_GH0.tar.gz) = 20914
SHA256 (cespare-xxhash-v2.1.2_GH0.tar.gz) = 471399cfcf0b1bd188add8d34435b91e7011cedbfe76e29687803a9d74320352
SIZE (cespare-xxhash-v2.1.2_GH0.tar.gz) = 11244
SHA256 (davecgh-go-spew-v1.1.1_GH0.tar.gz) = 7d82b9bb7291adbe7498fe946920ab3e7fc9e6cbfc3b2294693fad00bf0dd17e
SIZE (davecgh-go-spew-v1.1.1_GH0.tar.gz) = 42152
SHA256 (dghubble-oauth1-v0.7.1_GH0.tar.gz) = 6f31adddfcaff9f52106a2cfefc274daf6eeec5d4439e8ab032ec1495e6c050e
SIZE (dghubble-oauth1-v0.7.1_GH0.tar.gz) = 22523
SHA256 (dgryski-go-rendezvous-9f7001d12a5f_GH0.tar.gz) = 29584550745fd4b8fce2e2f3def7b9d9ffe2b86cf9b6596b53a660c9bbfe27b6
SIZE (dgryski-go-rendezvous-9f7001d12a5f_GH0.tar.gz) = 1699
SHA256 (didip-tollbooth-v7.0.1_GH0.tar.gz) = fc8258f324a0232ee6fbbc327b3d5ead417349ef4c179fd04a9281fa9363fb99
SIZE (didip-tollbooth-v7.0.1_GH0.tar.gz) = 26431
SHA256 (didip-tollbooth_chi-d662a7f6928f_GH0.tar.gz) = a64242f72a7c7274ce3ba6416fe3028c9c9c13edbfd633a0c2748f8641cbf60a
SIZE (didip-tollbooth_chi-d662a7f6928f_GH0.tar.gz) = 1830
SHA256 (dlclark-regexp2-v1.4.0_GH0.tar.gz) = 774718cb87c5cc7b954e4f17056f6a189c8d542ecbf989330296bc7e3885851b
SIZE (dlclark-regexp2-v1.4.0_GH0.tar.gz) = 205882
SHA256 (etcd-io-bbolt-v1.3.6_GH0.tar.gz) = a2e524f7f32c44fa0765de192ac0789c585010cadd2c2ddcf9518e858a96ec1f
SIZE (etcd-io-bbolt-v1.3.6_GH0.tar.gz) = 98025
SHA256 (go-chi-chi-v5.0.7_GH0.tar.gz) = 23873c5982e0c9929d46f4432ff9c89dcfbce29ca2db54f2058e67e5361a2b1f
SIZE (go-chi-chi-v5.0.7_GH0.tar.gz) = 82798
SHA256 (go-chi-cors-v1.2.1_GH0.tar.gz) = d3fa42948b4b365db19c9a6639090c6869b968fa8c5ecb9635dce1a9bf4cf8d8
SIZE (go-chi-cors-v1.2.1_GH0.tar.gz) = 8827
SHA256 (go-chi-render-v1.0.2_GH0.tar.gz) = f81077eeae4fc649891ee4a8d6259f25dbeb01f179c0b89242f2f8c439e69e0a
SIZE (go-chi-render-v1.0.2_GH0.tar.gz) = 6240
SHA256 (go-oauth2-oauth2-v4.5.1_GH0.tar.gz) = 5939a767fb5a62ba88675dbf0eec297826c25126b6010b783df0cc0d49ffdd42
SIZE (go-oauth2-oauth2-v4.5.1_GH0.tar.gz) = 579131
SHA256 (go-pkgz-auth-v1.20.0_GH0.tar.gz) = 16a64d7ba01609ac29f0bba1c6a602377e1d2fedaaa39ddafa63687e7fafad3a
SIZE (go-pkgz-auth-v1.20.0_GH0.tar.gz) = 183489
SHA256 (go-pkgz-email-v0.4.0_GH0.tar.gz) = 5d7a3939143f0650569d34035239211cf78f07a1011c4eec967bc77ae3241971
SIZE (go-pkgz-email-v0.4.0_GH0.tar.gz) = 100651
SHA256 (go-pkgz-expirable-cache-v0.1.0_GH0.tar.gz) = 910bff8add2ce863a6bb1dc95ddf08e07322605f4dbd4b793ed53ba279e7f0a4
SIZE (go-pkgz-expirable-cache-v0.1.0_GH0.tar.gz) = 7161
SHA256 (go-pkgz-jrpc-v0.3.0_GH0.tar.gz) = 158ec6a2c711cee4608f5c55ecc0692c3e38b0c6c4f2af01aea008a64822d988
SIZE (go-pkgz-jrpc-v0.3.0_GH0.tar.gz) = 15188
SHA256 (go-pkgz-lcw-v1.0.1_GH0.tar.gz) = bcc39f9b32d71635640c322c9d88ed0ddc86a1cb63b4a19224570f0bcbbfc223
SIZE (go-pkgz-lcw-v1.0.1_GH0.tar.gz) = 29082
SHA256 (go-pkgz-lgr-v0.10.4_GH0.tar.gz) = c55109e8c62706e210bc960e5f18ffa020af362c6b17ac39cfefc4a88b387351
SIZE (go-pkgz-lgr-v0.10.4_GH0.tar.gz) = 14722
SHA256 (go-pkgz-notify-v0.2.0_GH0.tar.gz) = 558eecf2a17c45b1c66fbf88f7647c17f06450867e92f3dffeb55c59700f7077
SIZE (go-pkgz-notify-v0.2.0_GH0.tar.gz) = 18854
SHA256 (go-pkgz-repeater-v1.1.3_GH0.tar.gz) = d3c6bdece4cd305e33efc64369aaab9ebf0452dffb7bd841b9e5a8e861607f43
SIZE (go-pkgz-repeater-v1.1.3_GH0.tar.gz) = 6059
SHA256 (go-pkgz-rest-v1.16.0_GH0.tar.gz) = d093822737d543b36865a6afc943cdf857d25686ac87082e4fac62ef4a1e3390
SIZE (go-pkgz-rest-v1.16.0_GH0.tar.gz) = 30179
SHA256 (go-pkgz-syncs-v1.2.0_GH0.tar.gz) = 5b5dfca765afa5b80af4a8f721cf2c7143ae9962a52db72fa0a4246ad1d97bc8
SIZE (go-pkgz-syncs-v1.2.0_GH0.tar.gz) = 6931
SHA256 (go-redis-redis-v8.11.5_GH0.tar.gz) = 49f307ad85960c25d98bea3b2d155c893e43f41831c1bb4891e1eb867ead1245
SIZE (go-redis-redis-v8.11.5_GH0.tar.gz) = 168188
SHA256 (go-yaml-yaml-v3.0.1_GH0.tar.gz) = cf05411540d3e6ef8f1fd88434b34f94cedaceb540329031d80e23b74540c4e5
SIZE (go-yaml-yaml-v3.0.1_GH0.tar.gz) = 91173
SHA256 (golang-jwt-jwt-v3.2.2_GH0.tar.gz) = 4cd18a4bb5d949244f137fed0884f93695ff268cb9efaba71ddcf4c50b17efe0
SIZE (golang-jwt-jwt-v3.2.2_GH0.tar.gz) = 39887
SHA256 (golang-appengine-v1.6.7_GH0.tar.gz) = c623d81235f7c9699e299b328191d813337dd57dcc800d7afdb5130e8c321a8f
SIZE (golang-appengine-v1.6.7_GH0.tar.gz) = 333007
SHA256 (golang-crypto-05595931fe9d_GH0.tar.gz) = ce17e1237290dc1666351238e0ab42d2821b0a0bd48490402a1779be82d67910
SIZE (golang-crypto-05595931fe9d_GH0.tar.gz) = 1631418
SHA256 (golang-image-41969df76e82_GH0.tar.gz) = 2692f7c8621ea6ece3dabef5de26bf4b4b945ff11be6b4117bdb8e091e8098e7
SIZE (golang-image-41969df76e82_GH0.tar.gz) = 5038491
SHA256 (golang-net-83b083e8dc8b_GH0.tar.gz) = 39e58948d9d65c8f6be2b9fc0f5c2993179f740aad764fa8d7387ddf293d0121
SIZE (golang-net-83b083e8dc8b_GH0.tar.gz) = 1226340
SHA256 (golang-oauth2-9780585627b5_GH0.tar.gz) = 1c811dfb03781324c5a8bcd9124e437ed15253139fecbfe9f4106363bbe3b5c5
SIZE (golang-oauth2-9780585627b5_GH0.tar.gz) = 88428
SHA256 (golang-protobuf-v1.5.2_GH0.tar.gz) = 088cc0f3ba18fb8f9d00319568ff0af5a06d8925a6e6cb983bb837b4efb703b3
SIZE (golang-protobuf-v1.5.2_GH0.tar.gz) = 171702
SHA256 (golang-snappy-v0.0.4_GH0.tar.gz) = 77df678795596f9dfecb5744deb984633d780460a7e9a59e0c7ecfe2052b644f
SIZE (golang-snappy-v0.0.4_GH0.tar.gz) = 66129
SHA256 (golang-sync-036812b2e83c_GH0.tar.gz) = 75ac8fc16bdceb2496c4a9cc98584b70c29032d91a9e57a624acb073e3232fda
SIZE (golang-sync-036812b2e83c_GH0.tar.gz) = 18752
SHA256 (golang-sys-3c1f35247d10_GH0.tar.gz) = 27fdc75cc74da979f59142f1f5a1f08505c55918a0d5019ed4ebb04901834842
SIZE (golang-sys-3c1f35247d10_GH0.tar.gz) = 1336787
SHA256 (golang-text-v0.3.7_GH0.tar.gz) = 7cab2f6c3133ac1d422edd952b0dd2082fa55a73c2663fb2defd9bf83d649b26
SIZE (golang-text-v0.3.7_GH0.tar.gz) = 8354718
SHA256 (google-uuid-v1.3.0_GH0.tar.gz) = 7f7f37c47980e0afcc178a9ffc390bec29ed2371919b4c07658eb01791a7f921
SIZE (google-uuid-v1.3.0_GH0.tar.gz) = 16210
SHA256 (googleapis-google-cloud-go-compute-v1.6.1_GH0.tar.gz) = b93ea68f6191465d4ebb5885303eedc661eac1e3729f60d0af9335653897cfd0
SIZE (googleapis-google-cloud-go-compute-v1.6.1_GH0.tar.gz) = 7801792
SHA256 (gorilla-css-v1.0.0_GH0.tar.gz) = 9decf83063b85bcd5392f645fac322e986b5fc596b3e44c3be02ee5939106f4c
SIZE (gorilla-css-v1.0.0_GH0.tar.gz) = 6443
SHA256 (gorilla-feeds-v1.1.1_GH0.tar.gz) = 361482738014da53e03d0be5b22d39f3a4d9a8f258cf7e09faf3694ee63e091f
SIZE (gorilla-feeds-v1.1.1_GH0.tar.gz) = 14733
SHA256 (gorilla-websocket-v1.5.0_GH0.tar.gz) = 5d86f9e1c76ff7ceca0747f78b79864fbaec9d440f4fdb03197466e5102a86b0
SIZE (gorilla-websocket-v1.5.0_GH0.tar.gz) = 54155
SHA256 (hashicorp-errwrap-v1.1.0_GH0.tar.gz) = 0d73891a7a179e50a142ac8832db97b17c792d29ae205b0e6aeedde4c43d51a4
SIZE (hashicorp-errwrap-v1.1.0_GH0.tar.gz) = 8581
SHA256 (hashicorp-go-multierror-v1.1.1_GH0.tar.gz) = 8d1bb3377310e8ffe4c7b5672c5de1eaed153402aebd15d6e5b9673c356a065f
SIZE (hashicorp-go-multierror-v1.1.1_GH0.tar.gz) = 13803
SHA256 (hashicorp-golang-lru-v0.5.4_GH0.tar.gz) = d50c188af0cc8b22e7e4b79e9071694fa06428a9964b22d68dc997fa787a177a
SIZE (hashicorp-golang-lru-v0.5.4_GH0.tar.gz) = 13428
SHA256 (jessevdk-go-flags-v1.5.0_GH0.tar.gz) = d4bf30f729cbc16d2aa0095ac10ca4fadc8f092b9a28990c0cfca2345c3e7ffd
SIZE (jessevdk-go-flags-v1.5.0_GH0.tar.gz) = 59316
SHA256 (klauspost-compress-v1.15.2_GH0.tar.gz) = 025b574782b167ec1b25d5ab2ac38abf589feabe7e7236dbff4b8a007a2a9423
SIZE (klauspost-compress-v1.15.2_GH0.tar.gz) = 16074509
SHA256 (kyokomi-emoji-v2.2.10_GH0.tar.gz) = 1efa7937b408c979d18799290402bb7edfa9b5043801a250e4d7b4a9fafe8788
SIZE (kyokomi-emoji-v2.2.10_GH0.tar.gz) = 103029
SHA256 (microcosm-cc-bluemonday-v1.0.20_GH0.tar.gz) = 3664d074b28ec7929e248b39aeea9fdf93a5f96e8fb75c3346c4875810cd5c7e
SIZE (microcosm-cc-bluemonday-v1.0.20_GH0.tar.gz) = 171139
SHA256 (mongodb-mongo-go-driver-v1.10.2_GH0.tar.gz) = 5c2068ae9fd9fd7f59794396edc0c06a215743bb5cf5fe04d924358b19855630
SIZE (mongodb-mongo-go-driver-v1.10.2_GH0.tar.gz) = 4620702
SHA256 (montanaflynn-stats-1bf9dbcd8cbe_GH0.tar.gz) = f850d83c5404eb5c5995e95a54e7bde802d967f72b4e4ee82673865d5077a867
SIZE (montanaflynn-stats-1bf9dbcd8cbe_GH0.tar.gz) = 19343
SHA256 (nullrocks-identicon-7875f45b0022_GH0.tar.gz) = d1e5a569e2314748c2523ec8aa6603a9db09d128c408148add8630b7b0b44580
SIZE (nullrocks-identicon-7875f45b0022_GH0.tar.gz) = 24819
SHA256 (pkg-errors-v0.9.1_GH0.tar.gz) = 56bfd893023daa498508bfe161de1be83299fcf15376035e7df79cbd7d6fa608
SIZE (pkg-errors-v0.9.1_GH0.tar.gz) = 13415
SHA256 (pmezard-go-difflib-v1.0.0_GH0.tar.gz) = 28f3dc1b5c0efd61203ab07233f774740d3bf08da4d8153fb5310db6cea0ebda
SIZE (pmezard-go-difflib-v1.0.0_GH0.tar.gz) = 11398
SHA256 (protocolbuffers-protobuf-go-v1.28.0_GH0.tar.gz) = e59ae9ace31c3a84bddf1bc3f04a04c498adb9ea7f9fcde60db91bba33d55171
SIZE (protocolbuffers-protobuf-go-v1.28.0_GH0.tar.gz) = 1279757
SHA256 (rs-xid-v1.4.0_GH0.tar.gz) = e3fd89f7cbbc8bf8268235b353e9aa026c2aed741bb3a6d38ec34abd60883f01
SIZE (rs-xid-v1.4.0_GH0.tar.gz) = 10994
SHA256 (russross-blackfriday-v2.1.0_GH0.tar.gz) = a13af0fc5305713f5154693feaf654d024689efea76390091a5e8c757335b4f4
SIZE (russross-blackfriday-v2.1.0_GH0.tar.gz) = 92896
SHA256 (skip2-go-qrcode-da1b6568686e_GH0.tar.gz) = af179c37da861a43242fb4383186724b34866d7b5bd3e54ca44031a2b9f92046
SIZE (skip2-go-qrcode-da1b6568686e_GH0.tar.gz) = 36693
SHA256 (slack-go-slack-v0.11.3_GH0.tar.gz) = ab4f67822333c2897af33f62be49d637c0e7d9bb4370ac94ac595226ebbbe687
SIZE (slack-go-slack-v0.11.3_GH0.tar.gz) = 366052
SHA256 (stretchr-testify-v1.8.0_GH0.tar.gz) = c31f0bc88114cc11a3d1f2e837d2c0aa7b4cd28c7b81e1946d47c158ba3e6841
SIZE (stretchr-testify-v1.8.0_GH0.tar.gz) = 97595
SHA256 (uber-go-goleak-v1.2.0_GH0.tar.gz) = 360d6a48d28e003eac42e6b01f0550d9f870dcca074e7bd87216a3fa49b822c9
SIZE (uber-go-goleak-v1.2.0_GH0.tar.gz) = 13351
SHA256 (xdg-go-pbkdf2-v1.0.0_GH0.tar.gz) = 2eec55146447215eb58190e04c546c93cad7f369ac9b5aacd9dc11330d756757
SIZE (xdg-go-pbkdf2-v1.0.0_GH0.tar.gz) = 7758
SHA256 (xdg-go-scram-v1.1.1_GH0.tar.gz) = ead1bc7c262e7258c9e4c8fb05507e90f17a3bccfc289f6b2f81696329a22142
SIZE (xdg-go-scram-v1.1.1_GH0.tar.gz) = 17555
SHA256 (xdg-go-stringprep-v1.0.3_GH0.tar.gz) = 274337fc163cc1d2c30a85de51bd874c0caadd954a3e40f0de65eff883f3629d
SIZE (xdg-go-stringprep-v1.0.3_GH0.tar.gz) = 30127
SHA256 (youmark-pkcs8-1326539a0a0a_GH0.tar.gz) = fa6a73620cb59309acec57b0c8743cf19322c09da3aaa66e9dd55b5bbf57c309
SIZE (youmark-pkcs8-1326539a0a0a_GH0.tar.gz) = 14322

View File

@ -0,0 +1,288 @@
#!/bin/sh
# PROVIDE: remark
# REQUIRE: LOGIN
# KEYWORD: shutdown
# Add the following lines to /etc/rc.conf to enable remark
# remark_enable="YES"
#
# Required settings:
# remark_enable (bool): Set to YES to enable remark
# Default: NO
# remark_url (str): URL to Remark42 server, required
#
# Options:
# remark_secret (str): 256-bit shared key used to sign JWT.
# Default: random string
# remark_site (str): site name(s), multi
# Default: remark
# remark_store_type (str): type of storage, bolt or rpc
# Default: bolt
# remark_store_bolt_path (str): parent directory for the bolt files
# Default: %%REMARK42_DATADIR%%
# remark_backup_path (str): backups location
# Default: %%REMARK_DATADIR%%/backup
# remark_avatar_fs_path (str): avatars location for fs store
# Default: %%REMARK_DATADIR%%/avatars
# remark_avatar_bolt_file (str):
# avatars bolt file location
# Default: %%REMARK_DATADIR%%/avatars.db
# remark_avatar_uri (str): avatars store URI
# Default: %%REMARK_DATADIR%%/avatars
# remark_image_fs_path (str): permanent location of images
# Default: %%REMARK_DATADIR%%/pictures
# remark_image_fs_staging (str):
# staging location of images
# Default: %%REMARK_DATADIR%%/pictures.staging
# remark_image_bolt_file (str): images bolt file location
# Default: %%REMARK_DATADIR%%/pictures.db
#
# Additional configuration variables available at https://remark42.com/docs/configuration/parameters/
# are exposed with similar naming convention.
. /etc/rc.subr
name=remark
rcvar=remark_enable
load_rc_config ${name}
: ${remark_enable:="NO"}
: ${remark_secret:="$(head -c32 /dev/urandom| uuencode -r -m -)"}
: ${remark_url:=""}
: ${remark_site:="remark"}
: ${remark_store_type:="bolt"}
: ${remark_store_bolt_path:="%%REMARK_DATADIR%%"}
: ${remark_store_bolt_timeout:="30s"}
: ${remark_store_rpc_api:=""}
: ${remark_store_rpc_timeout:=""}
: ${remark_store_rpc_auth_user:=""}
: ${remark_store_rpc_auth_passwd:=""}
: ${remark_admin_type:="shared"}
: ${remark_admin_rpc_api:=""}
: ${remark_admin_rpc_timeout:="5s"}
: ${remark_admin_shared_id:=""}
: ${remark_admin_shared_email:=""}
: ${remark_backup_path:="%%REMARK_DATADIR%%/backup"}
: ${remark_backup_max:="10"}
: ${remark_cache_type:="mem"}
: ${remark_avatar_type:="fs"}
: ${remark_avatar_fs_path:="%%REMARK_DATADIR%%/avatars"}
: ${remark_avatar_bolt_file:="%%REMARK_DATADIR%%/avatars.db"}
: ${remark_avatar_uri:=""}
: ${remark_avatar_resize_limit:="0"}
: ${remark_image_type:="fs"}
: ${remark_image_fs_path:="%%REMARK_DATADIR%%/pictures"}
: ${remark_image_fs_staging:="%%REMARK_DATADIR%%/pictures.staging"}
: ${remark_image_fs_partitions:="100"}
: ${remark_image_bolt_file:="%%REMARK_DATADIR%%/pictures.db"}
: ${remark_image_rpc_api:=""}
: ${remark_image_rpc_timeout:="5s"}
: ${remark_image_rpc_auth_user:=""}
: ${remark_image_rpc_auth_passwd:=""}
: ${remark_image_max_size:="5000000"}
: ${remark_image_resize_width:="2400"}
: ${remark_image_resize_height:="900"}
: ${remark_auth_same_site:="default"}
: ${remark_auth_google_cid:=""}
: ${remark_auth_google_csec:=""}
: ${remark_auth_facebook_cid:=""}
: ${remark_auth_facebook_csec:=""}
: ${remark_auth_microsoft_cid:=""}
: ${remark_auth_microsoft_csec:=""}
: ${remark_auth_github_cid:=""}
: ${remark_auth_github_csec:=""}
: ${remark_auth_twitter_cid:=""}
: ${remark_auth_twitter_csec:=""}
: ${remark_auth_patreon_cid:=""}
: ${remark_auth_patreon_csec:=""}
: ${remark_auth_yandex_cid:=""}
: ${remark_auth_yandex_csec:=""}
: ${remark_auth_telegram:=""}
: ${remark_user:="%%REMARK_USER%%"}
: ${remark_auth_anon:="false"}
: ${remark_auth_enable:="false"}
: ${remark_auth_email_from:=""}
: ${remark_auth_email_subject:="remark42 confirmation"}
: ${remark_auth_email_content_type:="text/html"}
: ${remark_notify_users:=""}
: ${remark_notify_admins:=""}
: ${remark_notify_queue:=""}
: ${remark_notify_telegram_chan:=""}
: ${remark_notify_slack_token:=""}
: ${remark_notify_slack_chan:=""}
: ${remark_notify_webhook_url:=""}
: ${remark_notify_webhook_template:=""}
: ${remark_notify_webhook_headers:=""}
: ${remark_notify_webhook_timeout:=""}
: ${remark_notify_email_from:=""}
: ${remark_notify_email_verification_subj:=""}
: ${remark_telegram_token:=""}
: ${remark_telegram_timeout:=""}
: ${remark_smtp_host:=""}
: ${remark_smtp_port:=""}
: ${remark_smtp_username:=""}
: ${remark_smtp_password:=""}
: ${remark_smtp_login_auth:=""}
: ${remark_smtp_tls:=""}
: ${remark_smtp_starttls:=""}
: ${remark_smtp_timeout:=""}
: ${remark_ssl_type:=""}
: ${remark_ssl_port:=""}
: ${remark_ssl_cert:=""}
: ${remark_ssl_key:=""}
: ${remark_ssl_acme_location:=""}
: ${remark_ssl_acme_email:=""}
: ${remark_max_comment_size:=""}
: ${remark_max_votes:=""}
: ${remark_votes_ip:=""}
: ${remark_anon_vote:=""}
: ${remark_votes_ip_time:=""}
: ${remark_low_score:=""}
: ${remark_critical_score:=""}
: ${remark_positive_score:=""}
: ${remark_restricted_words:=""}
: ${remark_restricted_names:=""}
: ${remark_edit_time:=""}
: ${remark_admin_edit:=""}
: ${remark_readonly_age:=""}
: ${remark_image_proxy_http2https:=""}
: ${remark_image_proxy_cache_external:=""}
: ${remark_emoji:=""}
: ${remark_simple_view:=""}
: ${remark_proxy_cors:=""}
: ${remark_allowed_hosts:=""}
: ${remark_remark_address:=""}
: ${remark_remark_port:=""}
: ${remark_remark_web_root:=""}
: ${remark_update_limit:=""}
: ${remark_subscribers_only:=""}
: ${remark_disable_signature:=""}
: ${remark_admin_passwd:=""}
: ${remark_debug:=""}
export_variable()
{
_var="remark_$(echo $1 | tr A-Z a-z)"
eval _val="\$${_var}"
[ -z "${_val}" ] || export "${1}"="${_val}"
}
export_variables()
{
for _v in $@; do
export_variable "${_v}"
done
}
remark_precmd()
{
install -d -o ${remark_user} %%REMARK_PIDDIR%%
install -o ${remark_user} /dev/null ${pidfile}
install -d -o ${remark_user} ${remark_store_bolt_path}
if [ -z "${remark_url}" ]; then
err 1 "remark_url must be set"
fi
export REMARK_URL="${remark_url}"
export REMARK_SITE="${remark_site}"
export_variables SECRET SITE STORE_TYPE
case "${STORE_TYPE}" in
bolt)
export_variables STORE_BOLT_PATH STORE_BOLT_TIMEOUT
;;
rpc)
export_variables STORE_RPC_API STORE_RPC_TIMEOUT STORE_RPC_AUTH_USER STORE_RPC_AUTH_PASSWD
;;
*)
err 1 "remark_store_type has to be either 'bolt' or 'rpc'"
;;
esac
export_variable ADMIN_TYPE
case "${ADMIN_TYPE}" in
shared)
;;
rpc)
export_variables ADMIN_RPC_API ADMIN_RPC_TIMEOUT ADMIN_RPC_AUTH_USER ADMIN_RPC_AUTH_PASSWD
;;
*)
err 1 "remark_admin_type has to be either 'shared' or 'rpc'"
;;
esac
export_variables ADMIN_SHARED_ID ADMIN_SHARED_EMAIL BACKUP_PATH
export MAX_BACKUP_FILES="${remark_backup_max}"
export_variables CACHE_TYPE AVATAR_TYPE
case "${AVATAR_TYPE}" in
fs)
export_variable AVATAR_FS_PATH
;;
bolt)
export_variable AVATAR_BOLT_FILE
;;
uri)
export_variable AVATAR_URI
;;
*)
err 1 "remark_avatar_path has to be 'fs', 'bolt' or 'uri'"
;;
esac
export AVATAR_RESIZE="${remark_avatar_resize_limit}"
export_variable IMAGE_TYPE
case "${remark_image_type}" in
fs)
export_variables IMAGE_FS_PATH IMAGE_FS_STAGING IMAGE_FS_PARTITIONS
;;
bolt)
export_variable IMAGE_BOLT_FILE
;;
rpc)
export_variables IMAGE_RPC_API IMAGE_RPC_TIMEOUT IMAGE_RPC_AUTH_USER IMAGE_RPC_AUTH_PASSWD
;;
*)
err 1 "remark_image_type has to be 'fs', 'bolt' or 'rpc'"
;;
esac
export_variables IMAGE_MAX_SIZE IMAGE_RESIZE_WIDTH IMAGE_RESIZE_HEIGHT AUTH_SAME_SITE AUTH_TELEGRAM
for _provider in google facebook microsoft github twitter patreon yandex; do
_provider_upper="$(echo ${_provider} | tr a-z A-Z)"
export_variables "AUTH_${_provider_upper}_CID" "AUTH_${_provider_upper}_CSEC"
done
export_variables AUTH_ANON AUTH_EMAIL_ENABLE AUTH_EMAIL_FROM AUTH_EMAIL_SUBJ AUTH_EMAIL_CONTENT_TYPE
export_variables NOTIFY_USERS NOTIFY_ADMINS NOTIFY_QUEUE NOTIFY_TELEGRAM_CHAN NOTIFY_SLACK_TOKEN NOTIFY_SLACK_CHAN
export_variables NOTIFY_WEBHOOK_URL NOTIFY_WEBHOOK_TEMPLATE NOTIFY_WEBHOOK_HEADERS NOTIFY_WEBHOOK_TIMEOUT
export_variables NOTIFY_EMAIL_FROM NOTIFY_EMAIL_VERIFICATION_SUBJ TELEGRAM_TOKEN TELEGRAM_TIMEOUT
export_variables SMTP_HOST SMTP_PORT SMTP_USERNAME SMTP_PASSWORD SMTP_LOGIN_AUTH SMTP_TLS
export_variables SMTP_STARTTLS SMTP_TIMEOUT SSL_TYPE SSL_PORT SSL_CERT SSL_KEY SSL_ACME_LOCATION
export_variables SSL_ACME_EMAIL MAX_COMMENT_SIZE MAX_VOTES VOTES_IP ANON_VOTE VOTES_IP_TIME
export_variables LOW_SCORE CRITICAL_SCORE POSITIVE_SCORE RESTRICTED_WORDS RESTRICTED_NAMES
export_variables EDIT_TIME ADMIN_EDIT READONLY_AGE IMAGE_PROXY_HTTP2HTTPS IMAGE_PROXY_CACHE_EXTERNAL
export_variables EMOJI SIMPLE_VIEW PROXY_CORS ALLOWED_HOSTS REMARK_ADDRESS REMARK_PORT REMARK_WEB_ROOT
export_variables UPDATE_LIMIT SUBSCRIBERS_ONLY DISABLE_SIGNATURE ADMIN_PASSWD DEBUG
}
pidfile="%%REMARK_PIDDIR%%${name}.pid"
procname="%%PREFIX%%/libexec/remark42"
command=/usr/sbin/daemon
command_args="-c -p ${pidfile} -T ${name} ${procname} server ${remark_options}"
start_precmd="remark_precmd"
extra_commands="backup restore cleanup"
cleanup_cmd="cleanup"
cleanup_precmd="remark_precmd"
backup_cmd="backup"
backup_precmd="remark_precmd"
restore_cmd="restore"
restore_precmd="remark_precmd"
cleanup() {
su -m ${remark_user} -c "${procname} cleanup $@"
}
backup() {
su -m ${remark_user} -c "${procname} backup $@"
}
restore() {
su -m ${remark_user} -c "${procname} restore $@"
}
run_rc_command $@

3
www/remark42/pkg-descr Normal file
View File

@ -0,0 +1,3 @@
Remark42 allows you to have a self-hosted, lightweight, and simple (yet
functional) comment engine, which doesn't spy on users. It can be embedded
into blogs, articles or any other place where readers add comments.