base lista
This commit is contained in:
parent
ad5a5ccf18
commit
56d63d0389
|
|
@ -90,7 +90,8 @@
|
||||||
"lowVoltageCutOff": 0,
|
"lowVoltageCutOff": 0,
|
||||||
"backupDigiMode": false,
|
"backupDigiMode": false,
|
||||||
"rebootMode": false,
|
"rebootMode": false,
|
||||||
"rebootModeTime": 6
|
"rebootModeTime": 6,
|
||||||
|
"blackList": ""
|
||||||
},
|
},
|
||||||
"personalNote": ""
|
"personalNote": ""
|
||||||
}
|
}
|
||||||
|
|
@ -50,7 +50,6 @@ public:
|
||||||
bool ecoMode;
|
bool ecoMode;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
class LoraModule {
|
class LoraModule {
|
||||||
public:
|
public:
|
||||||
long txFreq;
|
long txFreq;
|
||||||
|
|
@ -135,6 +134,7 @@ public:
|
||||||
bool rebootMode;
|
bool rebootMode;
|
||||||
int rebootModeTime;
|
int rebootModeTime;
|
||||||
String personalNote;
|
String personalNote;
|
||||||
|
String blackList;
|
||||||
std::vector<WiFi_AP> wifiAPs;
|
std::vector<WiFi_AP> wifiAPs;
|
||||||
WiFi_Auto_AP wifiAutoAP;
|
WiFi_Auto_AP wifiAutoAP;
|
||||||
BEACON beacon;
|
BEACON beacon;
|
||||||
|
|
|
||||||
|
|
@ -18,6 +18,8 @@ struct LastHeardStation {
|
||||||
|
|
||||||
namespace STATION_Utils {
|
namespace STATION_Utils {
|
||||||
|
|
||||||
|
void loadBlackList();
|
||||||
|
bool checkBlackList(const String& callsign);
|
||||||
void deleteNotHeard();
|
void deleteNotHeard();
|
||||||
void updateLastHeard(const String& station);
|
void updateLastHeard(const String& station);
|
||||||
bool wasHeard(const String& station);
|
bool wasHeard(const String& station);
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ ___________________________________________________________________*/
|
||||||
#include "A7670_utils.h"
|
#include "A7670_utils.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
String versionDate = "2024.12.31";
|
String versionDate = "2025.01.01";
|
||||||
Configuration Config;
|
Configuration Config;
|
||||||
WiFiClient espClient;
|
WiFiClient espClient;
|
||||||
#ifdef HAS_GPS
|
#ifdef HAS_GPS
|
||||||
|
|
@ -79,6 +79,7 @@ void setup() {
|
||||||
LoRa_Utils::setup();
|
LoRa_Utils::setup();
|
||||||
Utils::validateFreqs();
|
Utils::validateFreqs();
|
||||||
GPS_Utils::setup();
|
GPS_Utils::setup();
|
||||||
|
STATION_Utils::loadBlackList();
|
||||||
|
|
||||||
#ifdef STARTUP_DELAY // (TEST) just to wait for WiFi init of Routers
|
#ifdef STARTUP_DELAY // (TEST) just to wait for WiFi init of Routers
|
||||||
displayShow("", " STARTUP DELAY ...", "", "", 0);
|
displayShow("", " STARTUP DELAY ...", "", "", 0);
|
||||||
|
|
|
||||||
|
|
@ -178,7 +178,7 @@ namespace APRS_IS_Utils {
|
||||||
int firstColonIndex = packet.indexOf(":");
|
int firstColonIndex = packet.indexOf(":");
|
||||||
if (firstColonIndex > 5 && firstColonIndex < (packet.length() - 1) && packet[firstColonIndex + 1] != '}' && packet.indexOf("TCPIP") == -1) {
|
if (firstColonIndex > 5 && firstColonIndex < (packet.length() - 1) && packet[firstColonIndex + 1] != '}' && packet.indexOf("TCPIP") == -1) {
|
||||||
const String& Sender = packet.substring(3, packet.indexOf(">"));
|
const String& Sender = packet.substring(3, packet.indexOf(">"));
|
||||||
if (Sender != Config.callsign && Utils::checkValidCallsign(Sender)) {
|
if (Sender != Config.callsign && Utils::checkValidCallsign(Sender) && !STATION_Utils::checkBlackList(Sender)) {
|
||||||
STATION_Utils::updateLastHeard(Sender);
|
STATION_Utils::updateLastHeard(Sender);
|
||||||
Utils::typeOfPacket(packet.substring(3), 0); // LoRa-APRS
|
Utils::typeOfPacket(packet.substring(3), 0); // LoRa-APRS
|
||||||
const String& AddresseeAndMessage = packet.substring(packet.indexOf("::") + 2);
|
const String& AddresseeAndMessage = packet.substring(packet.indexOf("::") + 2);
|
||||||
|
|
|
||||||
|
|
@ -99,6 +99,8 @@ void Configuration::writeFile() {
|
||||||
|
|
||||||
data["personalNote"] = personalNote;
|
data["personalNote"] = personalNote;
|
||||||
|
|
||||||
|
data["blackList"] = blackList;
|
||||||
|
|
||||||
data["webadmin"]["active"] = webadmin.active;
|
data["webadmin"]["active"] = webadmin.active;
|
||||||
data["webadmin"]["username"] = webadmin.username;
|
data["webadmin"]["username"] = webadmin.username;
|
||||||
data["webadmin"]["password"] = webadmin.password;
|
data["webadmin"]["password"] = webadmin.password;
|
||||||
|
|
@ -221,6 +223,8 @@ bool Configuration::readFile() {
|
||||||
|
|
||||||
personalNote = data["personalNote"] | "personal note here...";
|
personalNote = data["personalNote"] | "personal note here...";
|
||||||
|
|
||||||
|
blackList = data["blackList"] | "";
|
||||||
|
|
||||||
if (wifiAPs.size() == 0) { // If we don't have any WiFi's from config we need to add "empty" SSID for AUTO AP
|
if (wifiAPs.size() == 0) { // If we don't have any WiFi's from config we need to add "empty" SSID for AUTO AP
|
||||||
WiFi_AP wifiap;
|
WiFi_AP wifiap;
|
||||||
wifiap.ssid = "";
|
wifiap.ssid = "";
|
||||||
|
|
@ -327,6 +331,8 @@ void Configuration::init() {
|
||||||
|
|
||||||
personalNote = "";
|
personalNote = "";
|
||||||
|
|
||||||
|
blackList = "";
|
||||||
|
|
||||||
webadmin.active = false;
|
webadmin.active = false;
|
||||||
webadmin.username = "admin";
|
webadmin.username = "admin";
|
||||||
webadmin.password = "";
|
webadmin.password = "";
|
||||||
|
|
|
||||||
|
|
@ -130,7 +130,7 @@ namespace DIGI_Utils {
|
||||||
temp = packet.substring(3);
|
temp = packet.substring(3);
|
||||||
Sender = packet.substring(3, packet.indexOf(">"));
|
Sender = packet.substring(3, packet.indexOf(">"));
|
||||||
}
|
}
|
||||||
if (Sender != Config.callsign) { // Avoid listening to own packets
|
if (Sender != Config.callsign && !STATION_Utils::checkBlackList(Sender)) { // Avoid listening to own packets
|
||||||
if (!thirdPartyPacket && !Utils::checkValidCallsign(Sender)) {
|
if (!thirdPartyPacket && !Utils::checkValidCallsign(Sender)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -16,12 +16,47 @@ uint32_t lastTxTime = millis();
|
||||||
std::vector<LastHeardStation> lastHeardStations;
|
std::vector<LastHeardStation> lastHeardStations;
|
||||||
std::vector<String> outputPacketBuffer;
|
std::vector<String> outputPacketBuffer;
|
||||||
std::vector<Packet25SegBuffer> packet25SegBuffer;
|
std::vector<Packet25SegBuffer> packet25SegBuffer;
|
||||||
|
std::vector<String> blackList;
|
||||||
|
|
||||||
bool saveNewDigiEcoModeConfig = false;
|
bool saveNewDigiEcoModeConfig = false;
|
||||||
|
|
||||||
|
|
||||||
namespace STATION_Utils {
|
namespace STATION_Utils {
|
||||||
|
|
||||||
|
void loadBlackList() {
|
||||||
|
if (Config.blackList != "") {
|
||||||
|
String callsigns = Config.blackList;
|
||||||
|
int spaceIndex = callsigns.indexOf(" ");
|
||||||
|
|
||||||
|
while (spaceIndex >= 0) {
|
||||||
|
blackList.push_back(callsigns.substring(0, spaceIndex));
|
||||||
|
callsigns = callsigns.substring(spaceIndex + 1);
|
||||||
|
spaceIndex = callsigns.indexOf(" ");
|
||||||
|
}
|
||||||
|
callsigns.trim();
|
||||||
|
if (callsigns.length() > 0) blackList.push_back(callsigns); // Add the last word if available
|
||||||
|
|
||||||
|
|
||||||
|
// Print the vector
|
||||||
|
if (!blackList.empty()) {
|
||||||
|
for (int i = 0; i < blackList.size(); i++) {
|
||||||
|
Serial.println(blackList[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool checkBlackList(const String& callsign) {
|
||||||
|
if (!blackList.empty()) {
|
||||||
|
for (int i = 0; i < blackList.size(); i++) {
|
||||||
|
if (blackList[i] == callsign) return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void deleteNotHeard() {
|
void deleteNotHeard() {
|
||||||
std::vector<LastHeardStation> lastHeardStation_temp;
|
std::vector<LastHeardStation> lastHeardStation_temp;
|
||||||
for (int i = 0; i < lastHeardStations.size(); i++) {
|
for (int i = 0; i < lastHeardStations.size(); i++) {
|
||||||
|
|
@ -72,6 +107,7 @@ namespace STATION_Utils {
|
||||||
Utils::println(" ---> Station not Heard for last 30 min (Not Tx)\n");
|
Utils::println(" ---> Station not Heard for last 30 min (Not Tx)\n");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void clean25SegBuffer() {
|
void clean25SegBuffer() {
|
||||||
if (!packet25SegBuffer.empty() && (millis() - packet25SegBuffer[0].receivedTime) > 25 * 1000) packet25SegBuffer.erase(packet25SegBuffer.begin());
|
if (!packet25SegBuffer.empty() && (millis() - packet25SegBuffer[0].receivedTime) > 25 * 1000) packet25SegBuffer.erase(packet25SegBuffer.begin());
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue