You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
94 lines
3.4 KiB
94 lines
3.4 KiB
/**
|
|
* @file XD0OTA.h
|
|
*
|
|
* @brief https Over-the-Air updates via xd0.de
|
|
*
|
|
* @author Hendrik Langer <hendrik+dev@xd0.de>
|
|
* @version 0.2
|
|
*
|
|
*/
|
|
|
|
#ifndef _XD0OTA_H
|
|
#define _XD0OTA_H
|
|
|
|
#include <Arduino.h>
|
|
|
|
class XD0OTA {
|
|
public:
|
|
XD0OTA(String deviceName);
|
|
void update(void);
|
|
int checkForUpdates(String url);
|
|
String getMAC(void);
|
|
private:
|
|
String deviceName;
|
|
const char* fwUrlBase = "https://fwupdate.xd0.de:444/fota/";
|
|
const char* httpsFingerprint = "37 42 61 B9 E6 EE 22 36 D1 59 67 7D 55 53 6E A4 C7 AA 60 26";
|
|
const char* rootCACertificate = \
|
|
"-----BEGIN CERTIFICATE-----\n" \
|
|
"MIID8DCCAtigAwIBAgIJAPSONy8RRejRMA0GCSqGSIb3DQEBCwUAMIGLMQswCQYD\n" \
|
|
"VQQGEwJERTEeMBwGA1UECAwVTm9ydGhyaGluZS1XZXN0cGhhbGlhMQ4wDAYDVQQH\n" \
|
|
"DAVFc3NlbjEPMA0GA1UECgwGeGQwLmRlMRgwFgYDVQQDDA9md3VwZGF0ZS54ZDAu\n" \
|
|
"ZGUxITAfBgkqhkiG9w0BCQEWEmhlbmRyaWsrZGV2QHhkMC5kZTAgFw0xODA2MTYx\n" \
|
|
"MTAzMTVaGA8yMDY4MDYxNjExMDMxNVowgYsxCzAJBgNVBAYTAkRFMR4wHAYDVQQI\n" \
|
|
"DBVOb3J0aHJoaW5lLVdlc3RwaGFsaWExDjAMBgNVBAcMBUVzc2VuMQ8wDQYDVQQK\n" \
|
|
"DAZ4ZDAuZGUxGDAWBgNVBAMMD2Z3dXBkYXRlLnhkMC5kZTEhMB8GCSqGSIb3DQEJ\n" \
|
|
"ARYSaGVuZHJpaytkZXZAeGQwLmRlMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB\n" \
|
|
"CgKCAQEAx37S1YgaG74IhTysaaZQMFI50TDeGkxxdpNoIBX0UBeVtKI/3u3MAqBz\n" \
|
|
"kKTDHFu4IQDj0PvBdlqPFGdSinFgrIvr49uAr+alNKUtkuSTT7nXI0fzqAxv1taj\n" \
|
|
"0mNhigVvYikX2BUU/rNLnQclyBdPNVsOf9cv0t5+UcOHRt6oEwk5nFtG7s7k4+wu\n" \
|
|
"wRdGlLy2LwLihYFon4LHAs05JW3qs0IQI4etc8E2JWjF2YwBg3+ooyzUFFIGjPSl\n" \
|
|
"Lpi7WvAAR19HITbt5FJXQkFZnFxnfbQv/5f7n8vWfFmzYsEgvldwMZv+Eg6wPb2h\n" \
|
|
"rgH7T6RSb55JrZE/JUY5C6pKvTJ3AwIDAQABo1MwUTAdBgNVHQ4EFgQUCnZywNj+\n" \
|
|
"djz6n0sIARPx8dp+7bQwHwYDVR0jBBgwFoAUCnZywNj+djz6n0sIARPx8dp+7bQw\n" \
|
|
"DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQsFAAOCAQEAto7IGXpNYTiPUgnA\n" \
|
|
"DE6osdgSV1yVYJj75v+Y8aUGgQ93Ipl/0+PQL99wbGgjDhfxGADLtljwoEAz/fep\n" \
|
|
"RqCh8swjL34XV9XjMzfhEMDCybSO6mK7ZmCKwhz9yBaK/Qjdj0YUoLhJ9Huzb70m\n" \
|
|
"lGzbOhY4JJKFVaA5AcZhYHqjCmzHCVJ/H0zeuPGyKutbvSx23a24LmebfY4q2D62\n" \
|
|
"U85ox3Ojek6Mc8J4V+RjORygDGAO4gZClEhAza4koAg7lCO/kSSk5PrXdlz2dqtA\n" \
|
|
"D5Npv9M5363apnO1VlVR+OuO1NEJusRK1aWk9RLZsTPxzwOWwdkifXxUEJ+f8mGn\n" \
|
|
"o+6SCw==\n" \
|
|
"-----END CERTIFICATE-----\n";
|
|
String getUpdateURL(String file, String extension);
|
|
void setClock(void);
|
|
};
|
|
|
|
#endif /* _XD0OTA_H */
|
|
|
|
|
|
/*
|
|
|
|
MAKE SURE TO RESET THE ESP8266 ONCE AFTER NORMAL FLASHING! OTHERWISE OTA WON'T WORK!
|
|
|
|
|
|
openssl req -x509 -nodes -days 18263 -newkey rsa:2048 -keyout /etc/ssl/private/xd0-fwupdate-selfsigned.key -out /etc/ssl/certs/xd0-fwupdate-selfsigned.crt
|
|
|
|
openssl x509 -noout -fingerprint -sha1 -inform pem -in /etc/ssl/certs/xd0-fwupdate-selfsigned.crt
|
|
|
|
|
|
scp .pioenvs/nodemcuv2/firmware.bin user@webserver:/var/www/fwupdate/fota/macaddress.bin
|
|
and change macaddress.version
|
|
|
|
|
|
server {
|
|
listen 444 ssl;
|
|
listen [::]:444 ssl;
|
|
server_name fwupdate.xd0.de;
|
|
|
|
# SSL configuration
|
|
ssl_certificate /etc/ssl/certs/xd0-fwupdate-selfsigned.crt;
|
|
ssl_certificate_key /etc/ssl/private/xd0-fwupdate-selfsigned.key;
|
|
ssl_buffer_size 4k;
|
|
|
|
root /var/www/fwupdate;
|
|
|
|
location / {
|
|
# First attempt to serve request as file, then
|
|
# as directory, then fall back to displaying a 404.
|
|
try_files $uri $uri/ =404;
|
|
}
|
|
|
|
access_log /var/log/nginx/fwupdate_access.log;
|
|
error_log /var/log/nginx/fwupdate_error.log;
|
|
}
|
|
|
|
*/
|
|
|