Skip to content

Commit 02eab05

Browse files
committed
Merge branch 'develop'
2 parents e83ab52 + d3ef470 commit 02eab05

28 files changed

+1338
-125
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
OpenLI -- open source ETSI-compliant Lawful Intercept software
22

3-
Version: 1.1.12
3+
Version: 1.1.13
44

55
---------------------------------------------------------------------------
66

configure.ac

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Super primitive configure script
22

3-
AC_INIT([openli],[1.1.12],[[email protected]])
3+
AC_INIT([openli],[1.1.13],[[email protected]])
44

55
AM_INIT_AUTOMAKE([subdir-objects])
66
AC_CONFIG_SRCDIR(src/collector/collector.c)

debian/changelog

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,18 @@
1+
openli (1.1.13-1) unstable; urgency=medium
2+
3+
* REST API: added new endpoints for collectors/ and mediators/ to
4+
provide basic details on existing collectors and mediators and
5+
when they were last active.
6+
* X2/X3: a single intercept can now have multiple XIDs configured
7+
for it.
8+
* Provisioner: fix bug where encrypt-intercept-config option was
9+
ignored if the provisioner was run with the -K option set.
10+
* Provisioner: fix issue where bad encryption configuration would
11+
cause changes to the intercept configuration made via the REST API
12+
to not persist.
13+
14+
-- Shane Alcock <[email protected]> Thu, 5 Jun 2025 14:42:19 +1200
15+
116
openli (1.1.12-1) unstable; urgency=medium
217

318
* Collector: improved handling of situations where a libtrace

doc/ProvisionerDoc.md

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -527,10 +527,10 @@ An IP intercept must contain the following key-value elements:
527527
default to 'undefined' if not set
528528
* `mobileident` -- (required for mobile intercepts only) the type
529529
of identifier specified in the `user` element
530-
* `xid` -- (required for interception over X2/X3 only) the XID
531-
that was defined for this intercept when the X1
532-
interface was used to configure it on your
533-
network
530+
* `xids` -- (required for interception over X2/X3) the XIDs
531+
that have been defined for this intercept when
532+
the X1 interface was used to configure it on your
533+
network, expressed as a YAML sequence
534534

535535
Valid access types are:
536536
'dialup', 'adsl', 'vdsl', 'fiber', 'wireless', 'lan', 'satellite', 'wimax',
@@ -588,10 +588,10 @@ A VOIP intercept must contain the following key-value elements:
588588
intercept
589589
* `agencyid` -- the internal identifier of the agency that
590590
requested the intercept
591-
* `xid` -- (required for interception over X2/X3 only) the XID
592-
that was defined for this intercept when the X1
593-
interface was used to configure it on your
594-
network
591+
* `xids` -- (required for interception over X2/X3) the XIDs
592+
that have been defined for this intercept when
593+
the X1 interface was used to configure it on your
594+
network, expressed as a YAML sequence
595595
* `siptargets` -- (not required if interception is over X2/X3)
596596
a list of identities that can be used to recognise
597597
SIP activity related to the target

doc/exampleconfigs/running-intercept-example.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,9 @@ voipintercepts:
259259
deliverycountrycode: NZ # Delivery country code
260260
mediator: 6001 # ID of the mediator to send intercept via
261261
agencyid: "Police" # ID of agency to send intercept to
262-
xid: "29f28e1c-f230-486a-a860-f5a784ab9172" # XID for this intercept
262+
xids:
263+
- "29f28e1c-f230-486a-a860-f5a784ab9172" # XID for this intercept
264+
# add more XIDs here if required
263265

264266

265267
# List of active email intercepts

rpm/openli.spec

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
Name: openli
2-
Version: 1.1.12
2+
Version: 1.1.13
33
Release: 1%{?dist}
44
Summary: Software for performing ETSI-compliant lawful intercept
55

@@ -141,6 +141,18 @@ if [ $1 -eq 1 ]; then
141141

142142
fi
143143

144+
if [ ! -f /etc/openli/.intercept-encrypt ]; then
145+
# Set up password for encrypting the intercept config file
146+
s=""
147+
until s+=$(dd bs=64 count=1 if=/dev/urandom 2>/dev/null | LC_ALL=C tr -cd 'a-zA-Z0-9')
148+
((${#s} >= 32)); do :; done
149+
ENCPHRASE=${s:0:32}
150+
echo ${ENCPHRASE} > /etc/openli/.intercept-encrypt
151+
chmod 0640 /etc/openli/.intercept-encrypt
152+
fi
153+
154+
155+
144156
chown -R openli: /etc/openli
145157
chown -R openli: /var/lib/openli
146158

@@ -298,6 +310,9 @@ fi
298310

299311

300312
%changelog
313+
* Thu Jun 5 2025 Shane Alcock <[email protected]> - 1.1.13-1
314+
- Updated for 1.1.13 release
315+
301316
* Thu May 1 2025 Shane Alcock <[email protected]> - 1.1.12-1
302317
- Updated for 1.1.12 release
303318

src/Makefile.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ openliprovisioner_SOURCES=provisioner/provisioner.c provisioner/provisioner.h \
1919
provisioner/updateserver_jsonparsing.c \
2020
provisioner/updateserver_jsoncreation.c \
2121
provisioner/hup_reload.c \
22+
provisioner/clientdb.c \
2223
provisioner/intercept_timers.c provisioner/intercept_timers.h
2324

2425
openliprovisioner_LDFLAGS = -lpthread @PROVISIONER_LIBS@

src/collector/collector_publish.c

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,15 @@ openli_export_recv_t *create_intercept_details_msg(intercept_common_t *common,
7171
expmsg->data.cept.encryptmethod = common->encrypt;
7272
expmsg->data.cept.cepttype = cepttype;
7373
expmsg->data.cept.targetagency = strdup(common->targetagency);
74-
uuid_copy(expmsg->data.cept.xid, common->xid);
74+
75+
if (common->xid_count > 0) {
76+
expmsg->data.cept.xids = calloc(common->xid_count, sizeof(uuid_t));
77+
memcpy(expmsg->data.cept.xids, common->xids,
78+
sizeof(uuid_t) * common->xid_count);
79+
} else {
80+
expmsg->data.cept.xids = NULL;
81+
}
82+
expmsg->data.cept.xid_count = common->xid_count;
7583

7684
if (common->encryptkey) {
7785
expmsg->data.cept.encryptkey = strdup(common->encryptkey);
@@ -111,6 +119,9 @@ void free_published_message(openli_export_recv_t *msg) {
111119
if (msg->data.cept.targetagency) {
112120
free(msg->data.cept.targetagency);
113121
}
122+
if (msg->data.cept.xids) {
123+
free(msg->data.cept.xids);
124+
}
114125

115126
} else if (msg->type == OPENLI_EXPORT_IPCC ||
116127
msg->type == OPENLI_EXPORT_UMTSCC) {

src/collector/collector_publish.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,8 @@ typedef struct published_intercept_msg {
211211
int seqtrackerid;
212212
payload_encryption_method_t encryptmethod;
213213
char *encryptkey;
214-
uuid_t xid;
214+
uuid_t *xids;
215+
size_t xid_count;
215216
openli_intercept_types_t cepttype;
216217
char *targetagency;
217218

src/collector/collector_seqtracker.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -288,13 +288,13 @@ static int modify_tracked_intercept(seqtracker_thread_data_t *seqdata,
288288
if (intstate->details.authcc) {
289289
free(intstate->details.authcc);
290290
}
291-
intstate->details.authcc = msg->authcc;
291+
intstate->details.authcc = strdup(msg->authcc);
292292
intstate->details.authcc_len = strlen(msg->authcc);
293293

294294
if (intstate->details.delivcc) {
295295
free(intstate->details.delivcc);
296296
}
297-
intstate->details.delivcc = msg->delivcc;
297+
intstate->details.delivcc = strdup(msg->delivcc);
298298
intstate->details.delivcc_len = strlen(msg->delivcc);
299299

300300
if (intstate->details.encryptkey) {
@@ -308,9 +308,6 @@ static int modify_tracked_intercept(seqtracker_thread_data_t *seqdata,
308308
preencode_etsi_fields(seqdata, intstate);
309309
intstate->version ++;
310310

311-
if (msg->liid) {
312-
free(msg->liid);
313-
}
314311
return 0;
315312
}
316313

0 commit comments

Comments
 (0)