mirror of
https://github.com/richonguzman/LoRa_APRS_iGate.git
synced 2026-01-23 01:00:15 +01:00
start1
This commit is contained in:
parent
b00fba9693
commit
4c63dd8bb7
|
|
@ -84,6 +84,10 @@
|
|||
"ntp": {
|
||||
"gmtCorrection": 0.0
|
||||
},
|
||||
"remoteManagement": {
|
||||
"managers": "",
|
||||
"rfOnly": true
|
||||
},
|
||||
"other": {
|
||||
"rememberStationTime": 30,
|
||||
"lowPowerMode": false,
|
||||
|
|
@ -93,5 +97,5 @@
|
|||
"rebootModeTime": 6
|
||||
},
|
||||
"personalNote": "",
|
||||
"blackList": ""
|
||||
"blacklist": ""
|
||||
}
|
||||
|
|
@ -596,14 +596,14 @@
|
|||
<div class="row">
|
||||
<div class="col-12">
|
||||
<label
|
||||
for="blackList"
|
||||
for="blacklist"
|
||||
class="form-label"
|
||||
>Black List</label
|
||||
>Blacklist</label
|
||||
>
|
||||
<input
|
||||
type="text"
|
||||
name="blackList"
|
||||
id="blackList"
|
||||
name="blacklist"
|
||||
id="blacklist"
|
||||
class="form-control"
|
||||
placeholder="Station Callsign"
|
||||
oninput="this.value = this.value.toUpperCase();"
|
||||
|
|
|
|||
|
|
@ -138,7 +138,7 @@ function loadSettings(settings) {
|
|||
document.getElementById("beacon.gpsAmbiguity").checked = settings.beacon.gpsAmbiguity;
|
||||
|
||||
// Black List
|
||||
document.getElementById("blackList").value = settings.blackList;
|
||||
document.getElementById("blacklist").value = settings.blacklist;
|
||||
|
||||
// Digi
|
||||
document.getElementById("digi.mode").value = settings.digi.mode;
|
||||
|
|
|
|||
|
|
@ -122,6 +122,11 @@ public:
|
|||
float gmtCorrection;
|
||||
};
|
||||
|
||||
class REMOTE_MANAGEMENT {
|
||||
public:
|
||||
String managers;
|
||||
bool rfOnly;
|
||||
};
|
||||
|
||||
class Configuration {
|
||||
public:
|
||||
|
|
@ -133,7 +138,7 @@ public:
|
|||
bool rebootMode;
|
||||
int rebootModeTime;
|
||||
String personalNote;
|
||||
String blackList;
|
||||
String blacklist;
|
||||
std::vector<WiFi_AP> wifiAPs;
|
||||
WiFi_Auto_AP wifiAutoAP;
|
||||
BEACON beacon;
|
||||
|
|
@ -147,7 +152,8 @@ public:
|
|||
TNC tnc;
|
||||
OTA ota;
|
||||
WEBADMIN webadmin;
|
||||
NTP ntp;
|
||||
NTP ntp;
|
||||
REMOTE_MANAGEMENT remoteManagement;
|
||||
|
||||
void init();
|
||||
void writeFile();
|
||||
|
|
|
|||
|
|
@ -18,8 +18,10 @@ struct LastHeardStation {
|
|||
|
||||
namespace STATION_Utils {
|
||||
|
||||
void loadBlackList();
|
||||
bool checkBlackList(const String& callsign);
|
||||
void loadBlacklist();
|
||||
void loadManagers();
|
||||
bool isBlacklisted(const String& callsign);
|
||||
bool isManager(const String& callsign);
|
||||
bool checkObjectTime(const String& packet);
|
||||
void deleteNotHeard();
|
||||
void updateLastHeard(const String& station);
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ ___________________________________________________________________*/
|
|||
#include "A7670_utils.h"
|
||||
#endif
|
||||
|
||||
String versionDate = "2025.03.03";
|
||||
String versionDate = "2025.03.09";
|
||||
Configuration Config;
|
||||
WiFiClient espClient;
|
||||
#ifdef HAS_GPS
|
||||
|
|
@ -85,7 +85,8 @@ void setup() {
|
|||
LoRa_Utils::setup();
|
||||
Utils::validateFreqs();
|
||||
GPS_Utils::setup();
|
||||
STATION_Utils::loadBlackList();
|
||||
STATION_Utils::loadBlacklist();
|
||||
STATION_Utils::loadManagers();
|
||||
|
||||
#ifdef STARTUP_DELAY // (TEST) just to wait for WiFi init of Routers
|
||||
displayShow("", " STARTUP DELAY ...", "", "", 0);
|
||||
|
|
|
|||
|
|
@ -99,7 +99,7 @@ void Configuration::writeFile() {
|
|||
|
||||
data["personalNote"] = personalNote;
|
||||
|
||||
data["blackList"] = blackList;
|
||||
data["blacklist"] = blacklist;
|
||||
|
||||
data["webadmin"]["active"] = webadmin.active;
|
||||
data["webadmin"]["username"] = webadmin.username;
|
||||
|
|
@ -107,6 +107,9 @@ void Configuration::writeFile() {
|
|||
|
||||
data["ntp"]["gmtCorrection"] = ntp.gmtCorrection;
|
||||
|
||||
data["remoteManagement"]["managers"] = remoteManagement.managers;
|
||||
data["remoteManagement"]["rfOnly"] = remoteManagement.rfOnly;
|
||||
|
||||
serializeJson(data, configFile);
|
||||
|
||||
configFile.close();
|
||||
|
|
@ -223,7 +226,10 @@ bool Configuration::readFile() {
|
|||
|
||||
personalNote = data["personalNote"] | "personal note here";
|
||||
|
||||
blackList = data["blackList"] | "station callsign";
|
||||
blacklist = data["blacklist"] | "station callsign";
|
||||
|
||||
remoteManagement.managers = data["remoteManagement"]["managers"] | "";
|
||||
remoteManagement.rfOnly = data["remoteManagement"]["rfOnly"] | true;
|
||||
|
||||
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;
|
||||
|
|
@ -331,7 +337,7 @@ void Configuration::init() {
|
|||
|
||||
personalNote = "";
|
||||
|
||||
blackList = "";
|
||||
blacklist = "";
|
||||
|
||||
webadmin.active = false;
|
||||
webadmin.username = "admin";
|
||||
|
|
@ -339,6 +345,9 @@ void Configuration::init() {
|
|||
|
||||
ntp.gmtCorrection = 0.0;
|
||||
|
||||
remoteManagement.managers = "";
|
||||
remoteManagement.rfOnly = true;
|
||||
|
||||
Serial.println("All is Written!");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -185,7 +185,7 @@ namespace LoRa_Utils {
|
|||
if (packet != "") {
|
||||
|
||||
String sender = packet.substring(3, packet.indexOf(">"));
|
||||
if (packet.substring(0,3) == "\x3c\xff\x01" && !STATION_Utils::checkBlackList(sender)){ // avoid processing BlackListed stations
|
||||
if (packet.substring(0,3) == "\x3c\xff\x01" && !STATION_Utils::isBlacklisted(sender)){ // avoid processing BlackListed stations
|
||||
rssi = radio.getRSSI();
|
||||
snr = radio.getSNR();
|
||||
freqError = radio.getFrequencyError();
|
||||
|
|
|
|||
|
|
@ -16,7 +16,8 @@ uint32_t lastTxTime = millis();
|
|||
std::vector<LastHeardStation> lastHeardStations;
|
||||
std::vector<String> outputPacketBuffer;
|
||||
std::vector<Packet25SegBuffer> packet25SegBuffer;
|
||||
std::vector<String> blackList;
|
||||
std::vector<String> blacklist;
|
||||
std::vector<String> managers;
|
||||
std::vector<LastHeardStation> lastHeardObjects;
|
||||
|
||||
bool saveNewDigiEcoModeConfig = false;
|
||||
|
|
@ -24,31 +25,52 @@ bool saveNewDigiEcoModeConfig = false;
|
|||
|
||||
namespace STATION_Utils {
|
||||
|
||||
void loadBlackList() {
|
||||
if (Config.blackList != "") {
|
||||
String callsigns = Config.blackList;
|
||||
int spaceIndex = callsigns.indexOf(" ");
|
||||
std::vector<String> loadCallSignList(const String& list) {
|
||||
std::vector<String> loadedList;
|
||||
|
||||
while (spaceIndex >= 0) {
|
||||
blackList.push_back(callsigns.substring(0, spaceIndex));
|
||||
callsigns = callsigns.substring(spaceIndex + 1);
|
||||
spaceIndex = callsigns.indexOf(" ");
|
||||
String callsigns = list;
|
||||
callsigns.trim();
|
||||
|
||||
while (callsigns.length() > 0) { // != ""
|
||||
int spaceIndex = callsigns.indexOf(" ");
|
||||
if (spaceIndex == -1) { // No more spaces, add the last part
|
||||
loadedList.push_back(callsigns);
|
||||
break;
|
||||
}
|
||||
callsigns.trim();
|
||||
if (callsigns.length() > 0) blackList.push_back(callsigns); // Add the last word if available
|
||||
loadedList.push_back(callsigns.substring(0, spaceIndex));
|
||||
callsigns = callsigns.substring(spaceIndex + 1);
|
||||
callsigns.trim(); // Trim in case of multiple spaces
|
||||
}
|
||||
return loadedList;
|
||||
}
|
||||
|
||||
bool checkBlackList(const String& callsign) {
|
||||
for (int i = 0; i < blackList.size(); i++) {
|
||||
if (blackList[i].indexOf("*") >= 0) { // use wild card
|
||||
String wildCard = blackList[i].substring(0, blackList[i].indexOf("*"));
|
||||
if (callsign.startsWith(wildCard))return true;
|
||||
void loadBlacklist() {
|
||||
blacklist = loadCallSignList(Config.blacklist);
|
||||
}
|
||||
|
||||
void loadManagers() {
|
||||
managers = loadCallSignList(Config.remoteManagement.managers);
|
||||
}
|
||||
|
||||
bool checkCallsignList(const std::vector<String>& list, const String& callsign) {
|
||||
for (int i = 0; i < list.size(); i++) {
|
||||
int wildcardIndex = list[i].indexOf("*");
|
||||
if (wildcardIndex >= 0) {
|
||||
String wildcard = list[i].substring(0, wildcardIndex);
|
||||
if (callsign.startsWith(wildcard)) return true;
|
||||
} else {
|
||||
if (blackList[i] == callsign) return true;
|
||||
if (list[i] == callsign) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool isBlacklisted(const String& callsign) {
|
||||
return checkCallsignList(blacklist, callsign);
|
||||
}
|
||||
|
||||
bool isManager(const String& callsign) {
|
||||
return checkCallsignList(managers, callsign);
|
||||
}
|
||||
|
||||
void cleanObjectsHeard() {
|
||||
|
|
|
|||
|
|
@ -206,7 +206,7 @@ namespace WEB_Utils {
|
|||
|
||||
Config.personalNote = request->getParam("personalNote", true)->value();
|
||||
|
||||
Config.blackList = request->getParam("blackList", true)->value();
|
||||
Config.blacklist = request->getParam("blacklist", true)->value();
|
||||
|
||||
Config.webadmin.active = request->hasParam("webadmin.active", true);
|
||||
if (Config.webadmin.active) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue