Commit Graph

88 Commits

Author SHA1 Message Date
Roger A. Light
3731535298 Add SPDX license identifiers. 2020-12-01 20:46:56 +00:00
Roger A. Light
29c771cdd4 Add lib and client support for OS CA certs
- Add `MOSQ_OPT_TLS_USE_OS_CERTS` option, to instruct the client to load and  trust OS provided CA certificates for use with TLS connections.
- All clients now load OS provided CA certificates if used with `-L
  mqtts://...`, or if port is set to 8883 and no other CA certificates are
  used. Closes #1824.
- Add the `--tls-use-os-certs` option to all clients.

Closes #1824. Thanks to Jens Reimann.
2020-12-01 11:51:13 +00:00
Roger A. Light
584cf51ba7 Update to EPL-2.0 2020-11-25 17:34:21 +00:00
Dan White
a65242d74a mosquitto_pub: exit if broker actively refuses a connection
Fixes eclipse/mosquitto#1904

If the broker rejects the connection, as opposed to the broker being
down, then there is no hope to establish a connection.  This adds a
status flag so we can signal to the loop that we should just exit.

Signed-off-by: Dan White <dan.white@valpo.edu>
2020-11-18 15:42:35 +00:00
Dan White
61702d7acc mosquitto_pub: exit if server becomes unreachable and QOS > 0
Fixes eclipse/mosquitto#1899

In stdin line mode, mosquitto_pub will continue running and accepting
input even if/when/after publishing fails.  This condition is reached
when it first successfully establishes a connection and the server later
is unreachable.

Exiting with a non-zero exit code allows for much easier health
monitoring when used in a long-running pipe.

Signed-off-by: Dan White <dan.white@valpo.edu>
2020-11-18 15:42:21 +00:00
Roger A. Light
c90e49af1b Merge remote-tracking branch 'origin/fixes' into develop 2020-09-24 17:03:14 +01:00
Roger A. Light
e2123b2561 Add --version for all clients. 2020-09-10 15:49:08 +01:00
Roger A. Light
a224a8f217 Don't busy loop with mosquitto_pub -l on a slow connection. 2020-08-13 14:32:47 +01:00
Roger A. Light
9929ce0a26 All clients exit with an error exit code on CONNACK failure.
Closes #1778. Thanks to jflambert.
2020-08-12 09:44:42 +01:00
Roger A. Light
5b4b079105 mosquitto_pub: Print reason string on publish error, if it exists. 2020-07-10 17:10:23 +01:00
Roger A. Light
40bad1a999 Fix conversion warnings in client code
Issue #1653.
2020-04-16 23:26:14 +01:00
Roger A. Light
d96543c0b8 Merge branch 'fixes' into develop 2020-03-03 12:54:57 +00:00
Roger A. Light
b0a065f790 Update changelog. Release page. Bump copyright. 2020-02-27 23:26:58 +00:00
Roger A. Light
3671a6dfdb Add -x argument to all clients.
This allows the session-expiry-interval property to be easily set for
MQTT v5 clients.
2020-01-30 11:19:09 +00:00
Roger A. Light
d60e86d2a3 Add TCP_NODELAY support to lib and clients.
Closes #1526. Thanks to Felix Moessbauer.
2019-12-18 17:04:43 +00:00
Roger A. Light
c0443637e8 Merge branch 'master'
Conflicts:
	ChangeLog.txt
	config.mk
	src/context.c
	src/loop.c
	src/subs.c
	test/broker/01-connect-bad-packet.py
	test/broker/02-subpub-qos1-bad-pubcomp.py
	test/broker/02-subpub-qos1-bad-pubrec.py
	test/broker/02-subpub-qos2-bad-puback-1.py
	test/broker/02-subpub-qos2-bad-puback-2.py
	test/broker/02-subpub-qos2-bad-pubcomp.py
	test/broker/02-subpub-qos2.py
	test/broker/07-will-null-topic.py
2019-12-03 13:59:05 +00:00
Roger A. Light
1e04b22833 Fix mosquitto_pub -l not sending the final line of stdin
This would happen if the final line did not end with a new line.

Closes #1473. Thanks to majekw.
2019-11-07 18:25:56 +00:00
Roger A. Light
22eb193309 Merge branch 'stdin-fix-1' of git://github.com/majekw/mosquitto into majekw-stdin-fix-1 2019-11-06 13:24:38 +00:00
Roger A. Light
aabf850a62 Separate pub client loops for better readability. 2019-11-06 12:16:56 +00:00
Roger A. Light
74e1f77310 Fix for previous commit
Stdin mode wouldn't work with normal compiler optimisation levels.
2019-11-06 11:51:25 +00:00
majekw
50c9a4b0b0 Fix mosquitto_pub -l hang when stdin stream ends. Closes #1448.
Signed-off-by: Marek Wodzinski <majek@w7i.pl>
2019-10-10 13:00:22 +02:00
Roger A. Light
499e2f2e98 Add support for unix sockets to broker, lib, and clients. 2019-10-08 20:55:31 +01:00
Marek Wodzinski
ede9f2a51d mosquitto_pub: split main loop.
Main loop has two different logics inside: one for stdin input,
second for all other cases. Exit loop condition is also different
for both variants. This commit splits these two variants into
two separate loops.

Signed-off-by: Marek Wodzinski <majek@w7i.pl>
2019-10-06 01:39:27 +02:00
Roger A. Light
a22ccbd884 Clients: improve error msgs when connecting v3.x broker with v5 client
Closes #1344. Thanks to HowJMay.
2019-08-01 11:40:55 +01:00
Roger Light
1079a1b697
Merge pull request #1342 from HowJMay/remove_redundant_reset
Remove redundant initialization in clients
2019-08-01 09:59:52 +01:00
Roger A. Light
b807daed28 Fix error codes not being returned when mosquitto_pub exits.
Closes #1354. Thanks to Ben Barbour.
2019-07-24 12:08:43 +01:00
YangHau
9bb9b6e721 Remove redundant initialization in clients
the `memset(&cfg, 0, sizeof(struct mosq_config));` already exsits in
`client_config_load()`'s `init_config()` function call.
So calling it in main function is totally unnecessary.

Signed-off-by: YangHau <vulxj0j8j8@gmail.com>
2019-07-12 16:53:29 +08:00
Roger A. Light
7d954fa52e Fix mosquitto_pub -l not handling network failures.
Closes #1152. Thanks to Dustin Sallings.
2019-05-29 18:49:08 +01:00
Roger A. Light
1bafe0ee2e Fix double free on exit in mosquitto_pub.
Closes #1280. Thanks to Lucky Saini.
2019-05-29 18:42:38 +01:00
Roger A. Light
b4dfeb3767 Fix MQTT v5 clients not being able to specify a password without a username.
Thanks to Erik Moqvist.

Closes #1274.
2019-05-21 23:56:22 +01:00
Roger A. Light
999c478c88 Fixes for bug #1273
* Fix Will message for a persistent client incorrectly being sent when the client reconnects after a clean disconnect.
* Fix Will message for a persistent client not being sent on disconnect.
* Fix mosquitto_pub not using the `-c` option.

Thanks to Yannic Schröder.

Closes #1273.
2019-05-21 17:08:52 +01:00
Roger A. Light
29cf965b4f Fix mosquitto_pub exiting with error code 0 when an error occurred.
Thanks to janniswarnat.

Closes #1285.
2019-05-21 11:39:19 +01:00
Roger A. Light
7a33a129d6 Stop some error messages being printed even when --quiet was used.
Thanks to Rob de Jonge.

Closes #1284.
2019-05-21 11:23:00 +01:00
Roger A. Light
4dcd977932 Windows build fixes. 2019-04-17 20:09:59 +01:00
Roger A. Light
4995436b5a Add --repeat and --repeat-delay to mosquitto_pub. 2019-04-11 19:13:59 +01:00
Roger A. Light
dec769ce33 Client and doc ALPN additions
Add ALPN support for all clients, update documentation, and add to ChangeLog.
2019-04-11 11:52:34 +01:00
Roger A. Light
925debb8a5 Add mosquitto_rr, the "request-response" client. 2019-04-01 22:31:05 +01:00
Roger A. Light
320ddc1303 Merge branch 'master'
Conflicts:
	CMakeLists.txt
	ChangeLog.txt
	client/Makefile
	config.mk
	installer/mosquitto.nsi
	installer/mosquitto64.nsi
	lib/mosquitto.h
	lib/mqtt3_protocol.h
	lib/util_mosq.c
	set-version.sh
	snap/snapcraft.yaml
	src/bridge.c
	src/database.c
	src/handle_connack.c
	src/loop.c
	src/persist.c
	test/broker/Makefile
2019-03-16 10:05:38 +00:00
Roger A. Light
2dd24449ad Fix "unused parameter" warnings. 2019-03-13 14:46:05 +00:00
Roger A. Light
ce31269e05 Update changelog, bump version, bump copyright year. 2019-02-28 16:56:15 +00:00
Roger A. Light
1924afe49e Add explicit support for TLS v1.3 and drop TLS v1.0. 2019-02-27 22:50:01 +00:00
Roger A. Light
5aabc171b0 Merge branch 'mqtt5' into develop 2019-02-26 18:51:31 +00:00
Roger A. Light
e862a047a8 Rework TLS engine support. 2019-02-26 17:11:29 +00:00
Nicolás Pernas Maradei
20894fcbce Add engine private key password support
Some OpenSSL engines (selectable via tls_engine option) may require a
password to make use of private keys created with them in the first place.

The TPM engine for example, will require a password to access the underlying
TPM's Storage Root Key (SRK), which is the root key of a hierarchy of keys
associated with a TPM; it is generated within a TPM and is a non-migratable
key. Each owned TPM contains a SRK, generated by the TPM at the request
of the Owner. [1]

By default, the engine will prompt the user to introduce the SRK password
before any private keys created with the engine can be used. This could
be inconvenient when running on an unattended system.

Here's where the new tls_engine_kpass_sha option comes in handy. The user
can specify a SHA1 hash of its engine private key password via command
line or config file and it will be passed on to the engine directly.

This commit adds support for both clients (libmosquitto) and broker.

[1] https://goo.gl/qQoXBY

Signed-off-by: Nicolás Pernas Maradei <nicopernas@gmail.com>
2019-02-26 15:50:37 +00:00
Nicolás Pernas Maradei
f88cc06435 Add TLS engine and keyform support to libmosquitto
- Clients can now offload crypto tasks to an external crypto device through
  the OpenSSL ENGINE API.
- The keyfiles can now be treated as PEM or ENGINE keys.
- Two new functions were added to libmosquitto to set up the previously
  mentioned features.
- Both mosquitto_sub and mosquitto_pub include support to turn on the mentioned
  features through command line options.

Signed-off-by: Nicolás Pernas Maradei <nicopernas@gmail.com>
2019-02-26 15:48:00 +00:00
Roger A. Light
326292681a Add maximum-qos support to broker and client.
This comes in the form of:

* Per listener maximum_qos option, which can be in the range 0-2.
* Changes to mosquitto_publish*() to return MOSQ_ERR_QOS_NOT_SUPPORTED
  if attempting to publish with a higher QoS than supported.
* Bridges will downgrade messages to match the maximum QoS.

More tests on the broker side (specifically bridges) are required. This
needs bridge support for MQTT 5 first.
2019-01-09 18:03:01 +00:00
Roger Light
930a314caf Add reason_code to on_publish_v5 callback. 2019-01-09 17:06:43 +00:00
Roger A. Light
fcf4cd0b27 Merge branch 'master' into mqtt5 2018-12-19 14:11:11 +00:00
Roger A. Light
a00dd29af8 Fix building where TLS-PSK is not available.
Closes #68.
2018-12-11 10:55:31 +00:00
Roger A. Light
5073d83bf8 Don't generate client ids in v5 mode. 2018-12-05 21:26:22 +00:00