Ausblenden des WLAN-Passworts beim Push an GitHub


8

Ich habe begonnen, GitHub zum Speichern von Arduino-Code zu verwenden. Ein Teil meines Codes verwendet jedoch die SSID und das Passwort für mein WLAN, die ich nicht veröffentlichen möchte.

Eine übliche Methode, dies in der nicht eingebetteten Programmierung zu handhaben, ist die Verwendung einer Konfigurationsdatei. Dies scheint jedoch kein praktikabler Ansatz für die Programmierung des Arduino zu sein. Ich kommentiere derzeit nur die vertraulichen Informationen aus, bevor ich sie an GitHub weitergebe, aber eines Tages werde ich sie sicher vergessen.

Gibt es eine andere - bessere - Möglichkeit, damit umzugehen?

Antworten:


4

Sicher können Sie eine Konfigurationsdatei verwenden. Es wird als "Header" -Datei bezeichnet, und Sie haben es nur #includein Ihrer Skizze.

[config.h (not pushed)]

const char *password = "DOD982yp398fhgpwbn09tupf0p04";

[sketch.ino (pushed)]

#include "config.h"

// Now you can use the password variable.

Eine andere Methode, die besser ist, wenn Ihre Skizze mehrere Dateien enthält, besteht darin, #defineanstelle von Variablen in Ihrer Header-Datei Folgendes zu verwenden:

[config.h]

#define WIFI_PASSWORD "348r0yp80ytwp85tpj8yjp98y97t8t"

[sketch.ino]

#include "config.h"

const char *password = WIFI_PASSWORD;

Na sicher! Es ist mir nie in den Sinn gekommen, eine Header-Datei auf diese Weise zu verwenden. Vielen Dank für die Antwort.
Andrew Doble

1
Wenn Sie mehrere Dateien in Ihrer Skizze haben und diese Konfigurationsdatei in jede aufnehmen, erhalten Sie Fehler zu mehreren Definitionen. In diesem Fall ist es wahrscheinlich besser, #define zu verwenden, als die Variablen direkt zu definieren. Ich werde ein Beispiel posten.
Majenko

6

Sie können die folgende Datei mit dem Namen credentials.h in Ihr Projekt übernehmen:

// Replace with your actual SSID and password:

#define WIFI_SSID "Your SSID here"
#define WIFI_PASSWD "WLAN AP password here"

Am Anfang Ihrer Skizze fügen Sie hinzu:

#include "credentials.h"

const char ssid[] = WIFI_SSID;
const char password[] = WIFI_PASSWD;

Jetzt können Sie credentials.h bearbeiten, um Ihre echte SSID und Ihr Kennwort hinzuzufügen, und mit Ihrem normalen Git-Workflow fortfahren, mit einer Ausnahme: nie git add credentials.hwieder, noch git commit -a.

Jetzt wird git Sie immer daran erinnern, dass credentials.h geändert wurde und nicht für das Festschreiben bereitgestellt wird. Dies ist auch dann der Fall, wenn Sie die Datei zu Ihrem .gitignore hinzufügen. Wenn Sie Ihre Änderungen immer überprüfen, bevor Sie sie festschreiben, ist dies nur eine geringfügige Unannehmlichkeit. Wenn Sie andererseits dazu neigen, git commit -aohne zu überprüfen, was Sie begehen, ist diese Lösung wahrscheinlich nicht für Sie.


Bearbeiten : Eine Idee, die ich durch das Lesen von Chris Strattons Kommentaren bekam. Wenn Sie ein Makefile in Ihrem eigenen Workflow verwenden (dies wurde auf dieser Site bereits einige Male erläutert), können Sie diese Anmeldeinformationen in Ihr Repo übertragen:

#ifndef CREDENTIALS_H
#define CREDENTIALS_H

// Replace with your actual SSID and password:
#define WIFI_SSID "Your SSID here"
#define WIFI_PASSWD "WLAN AP password here"

#endif

Erstellen Sie eine Kopie dieser Datei mit dem Namen true-credentials.h und legen Sie die tatsächlichen Anmeldeinformationen dort ab (benennen Sie den Include Guard jedoch nicht um). Dann füge es deinem Makefile hinzu

CFLAGS += -include true-credentials.h

Halten Sie true-credentials.h und das Makefile aus dem Repo heraus. Sie können sie zu Ihrem .gitignore oder, noch besser, zu .git / info / exclude hinzufügen.

Jetzt haben Sie eine kompilierbare Version mit Dummy-Anmeldeinformationen im Repository. Sie haben die wahren Anmeldeinformationen, wenn Sie auf Ihrem eigenen Computer kompilieren, und Git stört Sie nicht daran, dass Anmeldeinformationen geändert werden.


Interessante Punkte und danke. Sieht so aus, als müsste ich vorsichtiger mit Git umgehen.
Andrew Doble

Dies ist eine bessere Lösung, aber keine, git nicht Sie über Änderungen an Dateien in .gitignore sagen , wenn Sie sie explizit hinzufügen. Das Hinzufügen einer von .gitignore explizit ausgeschlossenen Datei erfordert normalerweise das Hinzufügen mit einem Force-Flag.
Chris Stratton

@ChrisStratton: In meinem Test habe ich die Dummy-Anmeldeinformationen hinzugefügt und festgeschrieben.h, dann die Datei geändert und zu .gitignore hinzugefügt. Git sagte mir immer wieder: "Änderungen, die nicht für das Festschreiben bereitgestellt wurden: geändert: credentials.h". Mein Punkt war, eine kompilierbare Version auf dem Repo zu haben, daher die Dummy-Anmeldeinformationen.
Edgar Bonet

1
Wenn Sie eine Dummy-Version festschreiben, ja. Möglicherweise möchten Sie der Dummy-Version einen anderen Namen geben, z. B. credentials.h.CUSTOMIZE_MEoder so, und sie möglicherweise mit einer #ifndef #errorAnweisung zum Erstellen einer Kopie ohne Suffix und Bearbeiten sichern.
Chris Stratton

Eigentlich, egal, meine Idee wird nicht funktionieren, da die #includeohne die benutzerdefinierte Nachricht fehlschlagen wird. Zeigt wirklich die Primitivität der Arduino IDE im Vergleich zu etwas, das eine sinnvolle Projektdatei oder ein benutzerdefiniertes Makefile zulässt.
Chris Stratton

3

Aufbauend auf den Schultern der Riesen nahm ich Edger Bonets Antwort und benutzte eine etwas andere Wendung. Ich bin diesen Weg gegangen, weil ich kein Makefile verwende und festgestellt habe, dass diese Lösung für mich in meinem Projekt gut funktioniert.

Ich habe eine Platzhalter-Datei credentials.h mit den folgenden Informationen erstellt (Antwort von Edger).

#ifndef CREDENTIALS_H
#define CREDENTIALS_H

// Replace with your actual SSID and password:
#define WIFI_SSID "Your SSID here"
#define WIFI_PASSWD "WLAN AP password here"

#endif

Ich habe den Verweis auf diese neue Datei in der .ino-Datei hinzugefügt.

#include "credentials.h"

const char ssid[] = WIFI_SSID;
const char pass[] = WIFI_PASSWD;

Jetzt die Wendung. Ich habe ausgeschlossen, dass die Datei mit dem Befehl --assume-unverändert auf Änderungen überprüft wird.

git update-index --assume-unveränderte Anmeldeinformationen.h

Sie können dann die Datei credentials.h ändern und werden nicht aufgefordert, sie zu github hinzuzufügen.

Beachten Sie, dass Sie zum erneuten Überprüfen der Datei --no-accept-unverändert verwenden.


Ein großes Lob für den --assumed-unchangedTipp!
Rebellion
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.