10 Commits

Author SHA1 Message Date
Ian Craggs
07a95121fc Add required Eclipse meta docs 2024-01-18 15:17:28 +00:00
Tomoaki Yamaguchi
59797127e7 Merge pull request #251 from agalliazzo/udp6_multicast_hop_bugfix
Fix issue #250
2021-12-26 16:20:44 +09:00
Tomoaki Yamaguchi
27b5c7623e Merge pull request #252 from fgrandel/bugfix/secure-flag
fix: secure client networks no longer work with pre-allocated client list
2021-12-26 16:20:21 +09:00
Tomoaki Yamaguchi
4508461fc1 Merge pull request #254 from fgrandel/bugfix/build-script-clean
fix: typo in build script clean command
2021-12-26 16:19:38 +09:00
Tomoaki Yamaguchi
b5f2fd655d Merge pull request #253 from fgrandel/bugfix/typo-in-config
fix: the sample configuration contains a non-existent configuration key
2021-12-26 16:18:19 +09:00
Florian Grandel
c4e2ac4026 fix: typo in build script clean command 2021-12-22 03:54:13 +01:00
Florian Grandel
273c71774b fix: the sample configuration contains a non-existent configuration key 2021-12-22 03:26:59 +01:00
Florian Grandel
135e79e4da fix: single point of truth for secure client network 2021-12-22 02:53:35 +01:00
Alessio Galliazzo
debc21760b Fix issue #250 2021-12-13 16:59:11 +00:00
Tomoaki Yamaguchi
59fd3ec598 Merge pull request #247 from eclipse/develop
Bugfix of  #246
2021-10-06 10:37:24 +09:00
12 changed files with 48 additions and 34 deletions

View File

@@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-190494363728860458" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-176156747064280842" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
@@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-190493586662438402" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-176157551606184930" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>

View File

@@ -81,8 +81,8 @@ RFCOMMCONF = { "GatewayTestClient", // ClientId
MQTTSNCONF = { 60, //KeepAlive [seconds]
true, //Clean session
300, //Sleep duration [seconds]
"willtopic", //WillTopic
"willmsg", //WillMessage
"", //WillTopic
"", //WillMessage
0, //WillQos
false //WillRetain
};

View File

@@ -69,17 +69,17 @@ BrokerSecurePortNo=8883
**BrokerSecurePortNo** is a broker's port no of TLS connection.
```
#
# CertsKey for TLS connections to a broker
# CertKey for TLS connections to a broker
#
#RootCAfile=/etc/ssl/certs/ca-certificates.crt
#RootCApath=/etc/ssl/certs/
#CertsKey=/path/to/certKey.pem
#CertKey=/path/to/certKey.pem
#PrivateKey=/path/to/privateKey.pem
```
**RootCAfile** is a CA file name.
**RootCApath** is a CA path. **SSL_CTX_load_verify_locations(ctx, CAfile, CApath)** function requires these parameters.
**CertsKey** is a certificate pem file.
**CertKey** is a certificate pem file.
**PrivateKey** is a private key pem file.
Clients can connect to the broker via TLS by setting '**Secure Connection**' for each client in the client conf file.
```

View File

@@ -1,10 +1,13 @@
#!/bin/bash
WORK_DIR=$(realpath $(dirname "$0")/..)
BDIR=build.gateway
ODIR=bin/
build () {
echo "Start building MQTT-SN Gateway $1"
cd $SCRIPT_DIR/..
BDIR='build.gateway'
pushd "$WORK_DIR"
if [ ! -d ./$BDIR ]; then
mkdir $BDIR
fi
@@ -13,12 +16,10 @@ build () {
make MQTTSNPacket
make MQTT-SNGateway
make MQTT-SNLogmonitor
cd ../MQTTSNGateway
cp *.conf ./bin/
popd
cp *.conf ./$ODIR
}
SCRIPT_DIR=$(cd $(dirname $0); pwd)
if [ $1 == "udp" ] ; then
build $1 $2 $3
elif [ $1 == "udp6" ] ; then
@@ -34,7 +35,10 @@ elif [ $1 == "dtls" ] ; then
elif [ $1 == "dtls6" ] ; then
build dtls "${2} ${3} -DDTLS6"
elif [ $1 == "clean" ] ; then
rm -rf ../builg.gateway
pushd "$WORK_DIR"
rm -rf ./$BDIR
popd
rm -rf ./$ODIR
else
echo "Usage: build.sh [ udp | udp6 | xbee | loralink | rfcomm | dtls | dtls6 | clean]"
fi

View File

@@ -31,7 +31,7 @@ BrokerSecurePortNo=8883
#RootCAfile=/etc/ssl/certs/ca-certificates.crt
#RootCApath=/etc/ssl/certs/
#CertsKey=/path/to/certKey.pem
#CertKey=/path/to/certKey.pem
#PrivateKey=/path/to/privateKey.pem
#

View File

@@ -34,7 +34,7 @@ char* currentDateTime(void);
static const char* theClientStatus[] = { "InPool", "Disconnected", "TryConnecting", "Connecting", "Active", "Asleep", "Awake",
"Lost" };
Client::Client(bool secure)
Client::Client()
{
_packetId = 0;
_snMsgId = 0;
@@ -45,8 +45,7 @@ Client::Client(bool secure)
_willTopic = nullptr;
_willMsg = nullptr;
_connectData = MQTTPacket_Connect_Initializer;
_network = new Network(secure);
_secureNetwork = secure;
_network = new Network();
_sensorNetype = true;
_connAck = nullptr;
_waitWillMsgFlg = false;
@@ -426,7 +425,7 @@ bool Client::isConnecting(void)
bool Client::isSecureNetwork(void)
{
return _secureNetwork;
return _network->isSecure();
}
bool Client::isSensorNetStable(void)

View File

@@ -179,8 +179,7 @@ class Client
friend class ClientList;
friend class ClientsPool;
public:
Client(bool secure = false);
Client(uint8_t maxInflightMessages, bool secure);
Client();
~Client();
Connect* getConnectData(void);

View File

@@ -149,7 +149,7 @@ void ClientRecvTask::run()
{
log(client, packet, 0);
if (client->isDisconnect() && packet->getType() != MQTTSN_CONNECT && packet->getType() != MQTTSN_WILLTOPIC && packet->getType() != MQTTSN_WILLMSG)
if (client->isDisconnect() && packet->getType() != MQTTSN_CONNECT)
{
WRITELOG("%s MQTTSNGWClientRecvTask %s is not connecting.%s\n",
ERRMSG_HEADER, client->getClientId(), ERRMSG_FOOTER);

View File

@@ -17,6 +17,6 @@
#ifndef MQTTSNGWVERSION_H_IN_
#define MQTTSNGWVERSION_H_IN_
#define PAHO_GATEWAY_VERSION "1.6.0"
#define PAHO_GATEWAY_VERSION "1.5.1"
#endif /* MQTTSNGWVERSION_H_IN_ */

View File

@@ -238,11 +238,11 @@ int Network::_numOfInstance = 0;
SSL_CTX* Network::_ctx = 0;
SSL_SESSION* Network::_session = 0;
Network::Network(bool secure) :
Network::Network() :
TCPStack()
{
_ssl = 0;
_secureFlg = secure;
_secureFlg = false;
_busy = false;
_sslValid = false;
}

View File

@@ -68,7 +68,7 @@ private:
class Network: public TCPStack
{
public:
Network(bool secure);
Network();
virtual ~Network();
bool connect(const char* host, const char* port, const char* caPath, const char* caFile, const char* cert, const char* prvkey);

View File

@@ -416,12 +416,24 @@ int UDPPort6::unicast(const uint8_t* buf, uint32_t length, SensorNetAddress* add
int UDPPort6::broadcast(const uint8_t* buf, uint32_t length)
{
int err = unicast(buf, length, &_grpAddr);
sockaddr_in6 dest;
memset(&dest, 0, sizeof(dest));
dest.sin6_family = AF_INET6;
dest.sin6_port = _grpAddr.getPortNo();
memcpy(dest.sin6_addr.s6_addr, (const void*) &_grpAddr.getIpAddress()->sin6_addr, sizeof(in6_addr));
if (err < 0)
#ifdef DEBUG_NW
char addrBuf[INET6_ADDRSTRLEN];
addr->sprint(addrBuf);
D_NWSTACK("sendto %s\n", addrBuf);
#endif
int status = ::sendto(_pollfds[1].fd, buf, length, 0, (const sockaddr*) &dest, sizeof(dest));
if (status < 0)
{
D_NWSTACK("UDP6::broadcast - sendto: %s", strerror(errno));
return err;
return status;
}
return 0;