New port: Command-line and D-Bus interface for Signal and libsignal-service-java

signal-cli is a command-line interface for libsignal-service-java. It
supports registering, verifying, sending and receiving messages. To be able
to link to an existing Signal-Android/signal-cli instance, signal-cli uses
a patched libsignal-service-java, because libsignal-service-java does not
yet support provisioning as a slave device. For registering you need a
phone number where you can receive SMS or incoming calls. signal-cli is
primarily intended to be used on servers to notify admins of important
events. For this use-case, it has a dbus interface, that can be used to
send messages from any programming language that has dbus bindings.

WWW: https://github.com/AsamK/signal-cli
This commit is contained in:
Mateusz Piotrowski 2020-03-25 21:39:53 +00:00
parent 3de9c3aae1
commit fea232a260
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=529131
9 changed files with 247 additions and 2 deletions

2
GIDs
View File

@ -188,7 +188,7 @@ mastodon:*:244:
routinator:*:245:
fahclient:*:246:fahclient
fcron:*:247:
# free: 248
signal-cli:*:248:
# free: 249
sems:*:250:
# free: 251

2
UIDs
View File

@ -193,7 +193,7 @@ mastodon:*:244:244::0:0:Mastodon User:/usr/local/www/mastodon:/bin/sh
routinator:*:245:245::0:0:Routinator 3000 Pseudo User:/nonexistent:/usr/sbin/nologin
fahclient:*:246:246::0:0:Folding@home User:/nonexistent:/usr/sbin/nologin
fcron:*:247:247::0:0:fcron pseudo-user:/nonexistent:/usr/sbin/nologin
# free: 248
signal-cli:*:248:248::0:0:Signal CLI:/nonexistent:/usr/sbin/nologin
# free: 249
sems:*:250:250::0:0:SIP Express Media Server:/nonexistent:/usr/sbin/nologin
# free: 251

View File

@ -152,6 +152,7 @@
SUBDIR += sayaka
SUBDIR += scudcloud
SUBDIR += sendxmpp
SUBDIR += signal-cli
SUBDIR += slack-term
SUBDIR += spectral
SUBDIR += ssh-chat

121
net-im/signal-cli/Makefile Normal file
View File

@ -0,0 +1,121 @@
# $FreeBSD$
PORTNAME= signal-cli
DISTVERSIONPREFIX= v
DISTVERSION= 0.6.5
CATEGORIES= net-im java
MASTER_SITES= https://raw.github.com/AsamK/maven/master/releases/org/freedesktop/dbus/dbus-java/2.7.0/:_dbus_java \
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.9.0/:_jackson_annotations \
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.9.9/:_jackson_core \
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-databind/2.9.9.2/:_jackson_databind \
https://repo.maven.apache.org/maven2/com/github/turasa/signal-service-java/2.13.9_unofficial_1/:_signal_service_java \
https://repo.maven.apache.org/maven2/com/google/protobuf/protobuf-java/2.5.0/:_protobuf_java \
https://repo.maven.apache.org/maven2/com/googlecode/libphonenumber/libphonenumber/8.10.7/:_libphonenumber \
https://repo.maven.apache.org/maven2/com/squareup/okhttp3/okhttp/3.12.1/:_okhttp \
https://repo.maven.apache.org/maven2/com/squareup/okio/okio/1.15.0/:_okio \
https://repo.maven.apache.org/maven2/net/sourceforge/argparse4j/argparse4j/0.8.1/:_argparse4j \
https://repo.maven.apache.org/maven2/org/bouncycastle/bcprov-jdk15on/1.64/:_bcprov_jdk15on \
https://repo.maven.apache.org/maven2/org/signal/signal-metadata-java/0.0.3/:_signal_metadata_java \
https://repo.maven.apache.org/maven2/org/threeten/threetenbp/1.3.6/:_threetenbp \
https://repo.maven.apache.org/maven2/org/whispersystems/curve25519-java/0.5.0/:_curve25519_java \
https://repo.maven.apache.org/maven2/org/whispersystems/signal-protocol-java/2.7.1/:_signal_protocol_java
DISTFILES= argparse4j-0.8.1.jar:_argparse4j \
bcprov-jdk15on-1.64.jar:_bcprov_jdk15on \
curve25519-java-0.5.0.jar:_curve25519_java \
dbus-java-2.7.0.jar:_dbus_java \
jackson-annotations-2.9.0.jar:_jackson_annotations \
jackson-core-2.9.9.jar:_jackson_core \
jackson-databind-2.9.9.2.jar:_jackson_databind \
libphonenumber-8.10.7.jar:_libphonenumber \
okhttp-3.12.1.jar:_okhttp \
okio-1.15.0.jar:_okio \
protobuf-java-2.5.0.jar:_protobuf_java \
signal-metadata-java-0.0.3.jar:_signal_metadata_java \
signal-protocol-java-2.7.1.jar:_signal_protocol_java \
signal-service-java-2.13.9_unofficial_1.jar:_signal_service_java \
threetenbp-1.3.6.jar:_threetenbp
EXTRACT_ONLY= ${DISTNAME}${EXTRACT_SUFX}
MAINTAINER= 0mp@FreeBSD.org
COMMENT= Command-line and D-Bus interface for Signal and libsignal-service-java
LICENSE= GPLv3
BUILD_DEPENDS= ${LOCALBASE}/lib/jni/libunix-java.so:devel/libmatthew \
asciidoc>0:textproc/asciidoc \
gradle>0:devel/gradle
RUN_DEPENDS= ${LOCALBASE}/lib/jni/libunix-java.so:devel/libmatthew
USES= gmake
USE_GITHUB= yes
GH_ACCOUNT= AsamK
USE_JAVA= yes
JAVA_VERSION= 7+
NO_ARCH= yes
SUB_FILES= ${PORTNAME}
USERS= signal-cli
GROUPS= signal-cli
OPTIONS_DEFINE= DBUS
OPTIONS_DEFAULT= DBUS
DBUS_PLIST_FILES= etc/dbus-1/system.d/org.asamk.Signal.conf \
share/dbus-1/services/org.asamk.Signal.service
_GRADLE_CMD= ${LOCALBASE}/bin/gradle
_GRADLE_ARGS= --no-daemon --offline --quiet
_GRADLE_DEPS_DIR= ${WRKDIR}/gradle-deps
post-extract:
@${MKDIR} ${_GRADLE_DEPS_DIR}
.for distfile in ${DISTFILES:N${DISTNAME}:C/:_[0-9A-Za-z_]*$//}
@${CP} ${DISTDIR}/${distfile} ${_GRADLE_DEPS_DIR}/
.endfor
@${MV} ${WRKSRC}/build.gradle ${WRKSRC}/original-build.gradle
@${SED} -e 's|%%GRADLE_DEPS_DIR%%|${_GRADLE_DEPS_DIR}|g' \
${FILESDIR}/build.gradle.in \
> ${WRKSRC}/build.gradle
do-build:
(cd ${WRKSRC} && \
${SETENV} GRADLE_USER_HOME=${WRKDIR} \
${_GRADLE_CMD} ${_GRADLE_ARGS} build installDist distTar)
${SETENV} ${MAKE_ENV} ${LOCALBASE}/bin/gmake -C ${WRKSRC}/man
do-install:
@${MKDIR} ${STAGEDIR}${DATADIR}
${TAR} -x -f ${WRKSRC}/build/distributions/${PORTNAME}-${DISTVERSION}.tar \
-C ${STAGEDIR}${DATADIR} --strip-components 1 \
--exclude '*/bin/*.bat'
@${REINPLACE_CMD} -e 's|#!/usr/bin/env sh|#!/bin/sh|g' \
${STAGEDIR}${DATADIR}/bin/${PORTNAME}
# ${RLN} ${STAGEDIR}${DATADIR}/bin/${PORTNAME} # ${STAGEDIR}${PREFIX}/bin/${PORTNAME}
${INSTALL_SCRIPT} ${WRKDIR}/${PORTNAME} \
${STAGEDIR}${PREFIX}/bin/${PORTNAME}
${INSTALL_MAN} ${WRKSRC}/man/signal-cli.1 \
${STAGEDIR}${MAN1PREFIX}/share/man/man1
post-install-DBUS-on:
@${MKDIR} ${STAGEDIR}${PREFIX}/share/dbus-1/services
${INSTALL_DATA} ${WRKSRC}/data/org.asamk.Signal.service \
${STAGEDIR}${PREFIX}/share/dbus-1/services
@${MKDIR} ${STAGEDIR}${PREFIX}/etc/dbus-1/system.d
${INSTALL_DATA} ${WRKSRC}/data/org.asamk.Signal.conf \
${STAGEDIR}${PREFIX}/etc/dbus-1/system.d
# This target can be used by the maintainer to regenerate MASTER_SITES and
# DISTFILES from project's build.gradle.
#
# Make sure not to add the following JARs from the vendored libmatthew:
# debug-*.jar, hexdump-*.jar, and unix-*.jar.
_get-links: extract
@(cd ${WRKSRC} && \
${_GRADLE_CMD} \
--build-file ${WRKSRC}/build.gradle \
getURLofDependencyArtifact | \
${AWK} '/^MASTER_SITES/,/^$$/{print}' | ${SORT})
.include <bsd.port.mk>

View File

@ -0,0 +1,39 @@
TIMESTAMP = 1585155138
SHA256 (signal-service-java-2.13.9_unofficial_1.jar) = 0f8680dad82826cf156c0878a291f7d8e878c5f11232711d2a2a914d51b058cd
SIZE (signal-service-java-2.13.9_unofficial_1.jar) = 939644
SHA256 (bcprov-jdk15on-1.64.jar) = a4f463ce552b908a722fa198ef4892a226b3225e453f8df10d5c0a5bfe5db6b6
SIZE (bcprov-jdk15on-1.64.jar) = 4771726
SHA256 (argparse4j-0.8.1.jar) = 98cb5468cac609f3bc07856f2e34088f50dc114181237c48d20ca69c3265d044
SIZE (argparse4j-0.8.1.jar) = 110140
SHA256 (dbus-java-2.7.0.jar) = 83db0cc9e7c72ff68cc5790fba76af1b3289fbdd10897609cec85c662207cc38
SIZE (dbus-java-2.7.0.jar) = 151953
SHA256 (signal-metadata-java-0.0.3.jar) = 2ce71cc4ec5dacfbaef4a265fceef61b8a09696b541994106a22a946762cbdcc
SIZE (signal-metadata-java-0.0.3.jar) = 88407
SHA256 (signal-protocol-java-2.7.1.jar) = 7f6df67a963acbab7716424b01b12fa7279f18a9623a2a7c8ba7b1c285830168
SIZE (signal-protocol-java-2.7.1.jar) = 379527
SHA256 (protobuf-java-2.5.0.jar) = e0c1c64575c005601725e7c6a02cebf9e1285e888f756b2a1d73ffa8d725cc74
SIZE (protobuf-java-2.5.0.jar) = 533455
SHA256 (libphonenumber-8.10.7.jar) = dbf4bf566d17a60044c19e282a619684e4b4abb0f9f9f24f843c55d19826ab5e
SIZE (libphonenumber-8.10.7.jar) = 338097
SHA256 (jackson-databind-2.9.9.2.jar) = fb262d42ea2de98044b62d393950a5aa050435fec38bbcadf2325cf7dc41b848
SIZE (jackson-databind-2.9.9.2.jar) = 1348331
SHA256 (okhttp-3.12.1.jar) = 07c3d82ca7eaf4722f00b2da807dc7860f6169ae60cfedcf5d40218f90880a46
SIZE (okhttp-3.12.1.jar) = 422787
SHA256 (threetenbp-1.3.6.jar) = f4c23ffaaed717c3b99c003e0ee02d6d66377fd47d866fec7d971bd8644fc1a7
SIZE (threetenbp-1.3.6.jar) = 514875
SHA256 (unix-0.5.1.jar) = 6e4afe48baf01c036a2f11d99aa94410aede15c62636c6516fcecd458c96d123
SIZE (unix-0.5.1.jar) = 10873
SHA256 (jackson-annotations-2.9.0.jar) = 45d32ac61ef8a744b464c54c2b3414be571016dd46bfc2bec226761cf7ae457a
SIZE (jackson-annotations-2.9.0.jar) = 66519
SHA256 (jackson-core-2.9.9.jar) = 3083079be6088db2ed0a0c6ff92204e0aa48fa1de9db5b59c468f35acf882c2c
SIZE (jackson-core-2.9.9.jar) = 325632
SHA256 (okio-1.15.0.jar) = 693fa319a7e8843300602b204023b7674f106ebcb577f2dd5807212b66118bd2
SIZE (okio-1.15.0.jar) = 88732
SHA256 (debug-1.1.1.jar) = 866458f4a8ce216ca4bb8685c5bf7c7d3403267f8841dd5eae89ff4312397e11
SIZE (debug-1.1.1.jar) = 5481
SHA256 (hexdump-0.2.1.jar) = 9c8c798b2be389fb9bf6413d231e5ca36816339f0aafeedc976b41972000e49d
SIZE (hexdump-0.2.1.jar) = 3478
SHA256 (curve25519-java-0.5.0.jar) = 0aadd43cf01d11e9b58f867b3c4f25c3194e8b0623d1953d32dfbfbee009e38d
SIZE (curve25519-java-0.5.0.jar) = 124921
SHA256 (AsamK-signal-cli-v0.6.5_GH0.tar.gz) = 1b6fda64ff24e7c5d97506b4b01988d1572cc706fd7fcec7b50555b691f31994
SIZE (AsamK-signal-cli-v0.6.5_GH0.tar.gz) = 116626

View File

@ -0,0 +1,48 @@
/*
* $FreeBSD$
*/
apply from: 'original-build.gradle'
repositories {
flatDir {
dirs '%%GRADLE_DEPS_DIR%%'
}
}
dependencies {
compile fileTree(dir: '%%GRADLE_DEPS_DIR%%', include: '*.jar')
}
/*
* Based on the scripts written by andforce and pczeus.
* Original scripts:
* - https://stackoverflow.com/a/58748741
* - https://stackoverflow.com/a/36538091/4694621
* License: CC BY-SA 4.0
*/
task getURLofDependencyArtifact() {
doFirst {
project.configurations.runtime.resolvedConfiguration.resolvedArtifacts.each { artifact ->
def dependency = artifact.moduleVersion.id
for (ArtifactRepository repository : project.repositories.asList()) {
def url = repository.properties.get('url')
def master_site = String.format("%s%s/%s/%s/", url.toString(),
dependency.group.replace('.', '/'), dependency.name, dependency.version)
def distfile = String.format("%s-%s.jar", dependency.name, dependency.version)
def group = "_" + dependency.name.replaceAll('[^0-9A-Za-z_]', '_')
try {
def jarfile = new URL(master_site + distfile)
def inStream = jarfile.openStream();
if (inStream != null) {
println("MASTER_SITES+= " + master_site + ":" + group)
println("DISTFILES+= " + distfile + ":" + group)
return
}
} catch (Exception ignored) {
}
}
}
}
}

View File

@ -0,0 +1,6 @@
#! /bin/sh -
# $FreeBSD$
: "${JAVA_OPTS:=-Djava.library.path=%%LOCALBASE%%/lib/jni}"
export JAVA_OPTS
exec %%DATADIR%%/bin/signal-cli "$@"

View File

@ -0,0 +1,11 @@
signal-cli is a command-line interface for libsignal-service-java. It supports
registering, verifying, sending and receiving messages. To be able to link to
an existing Signal-Android/signal-cli instance, signal-cli uses a patched
libsignal-service-java, because libsignal-service-java does not yet support
provisioning as a slave device. For registering you need a phone number where
you can receive SMS or incoming calls. signal-cli is primarily intended to be
used on servers to notify admins of important events. For this use-case, it has
a dbus interface, that can be used to send messages from any programming
language that has dbus bindings.
WWW: https://github.com/AsamK/signal-cli

View File

@ -0,0 +1,19 @@
bin/signal-cli
share/man/man1/signal-cli.1.gz
%%DATADIR%%/bin/signal-cli
%%DATADIR%%/lib/argparse4j-0.8.1.jar
%%DATADIR%%/lib/bcprov-jdk15on-1.64.jar
%%DATADIR%%/lib/curve25519-java-0.5.0.jar
%%DATADIR%%/lib/dbus-java-2.7.0.jar
%%DATADIR%%/lib/jackson-annotations-2.9.0.jar
%%DATADIR%%/lib/jackson-core-2.9.9.jar
%%DATADIR%%/lib/jackson-databind-2.9.9.2.jar
%%DATADIR%%/lib/libphonenumber-8.10.7.jar
%%DATADIR%%/lib/okhttp-3.12.1.jar
%%DATADIR%%/lib/okio-1.15.0.jar
%%DATADIR%%/lib/protobuf-java-2.5.0.jar
%%DATADIR%%/lib/signal-cli-0.6.5.jar
%%DATADIR%%/lib/signal-metadata-java-0.0.3.jar
%%DATADIR%%/lib/signal-protocol-java-2.7.1.jar
%%DATADIR%%/lib/signal-service-java-2.13.9_unofficial_1.jar
%%DATADIR%%/lib/threetenbp-1.3.6.jar