Skip to content

Commit 2052a2e

Browse files
committed
upd
1 parent 0777771 commit 2052a2e

File tree

7 files changed

+99
-101
lines changed

7 files changed

+99
-101
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -375,6 +375,7 @@ void LED(Text label, bool value);
375375
bool Input(size_t id, Text label, Text value = Text());
376376
377377
// ввод пароля
378+
// можно установить "заглушку" для пароля, например "***", чтобы пароль не отображался в браузере
378379
bool Pass(size_t id, Text label, Text value = Text());
379380
380381
// ввод цвета, результат в обычном 24-бит формате

src/SettingsAsync.h

Lines changed: 12 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,13 @@
1515

1616
#include "SettingsBase.h"
1717
#include "core/DnsWrapper.h"
18-
#include "core/ota.h"
1918
#include "core/fs.h"
19+
#include "core/ota.h"
2020
#include "web/settings.h"
2121

22-
class SettingsAsync : public SettingsBase {
22+
class SettingsAsync : public sets::SettingsBase {
2323
public:
24-
SettingsAsync(const String &title = "", GyverDB *db = nullptr) : SettingsBase(title, db), server(80) {}
24+
SettingsAsync(const String &title = "", GyverDB *db = nullptr) : sets::SettingsBase(title, db), server(80) {}
2525

2626
void begin() {
2727
_dns.begin();
@@ -45,7 +45,7 @@ class SettingsAsync : public SettingsBase {
4545
String auth, path;
4646
if (request->hasParam("auth")) auth = request->getParam("auth")->value();
4747
if (request->hasParam("path")) path = request->getParam("path")->value();
48-
48+
4949
if (authenticate(auth)) {
5050
AsyncWebServerResponse *response = request->beginResponse(ST_FS, path);
5151
cors_h(response);
@@ -55,33 +55,24 @@ class SettingsAsync : public SettingsBase {
5555
}
5656
});
5757

58-
server.on("/upload", HTTP_POST,
59-
[this](AsyncWebServerRequest* request) {
60-
sendCode(200, request);
61-
},
62-
[this](AsyncWebServerRequest* request, String filename, size_t index, uint8_t* data, size_t len, bool final) {
58+
server.on("/upload", HTTP_POST, [this](AsyncWebServerRequest *request) { sendCode(200, request); }, [this](AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
6359
String auth, path;
6460
if (request->hasParam("auth")) auth = request->getParam("auth")->value();
6561
if (request->hasParam("path")) path = request->getParam("path")->value();
6662
if (!authenticate(auth)) return;
67-
if (!index) _file = openFileWrite(path);
63+
if (!index) _file = sets::FS.openWrite(path);
6864
if (len && _file) _file.write(data, len);
69-
if (final && _file) _file.close();
70-
});
65+
if (final && _file) _file.close(); });
7166

72-
server.on("/ota", HTTP_POST,
73-
[this](AsyncWebServerRequest* request) {
67+
server.on("/ota", HTTP_POST, [this](AsyncWebServerRequest *request) {
7468
sendCode(Update.hasError() ? 500 : 200, request);
75-
if (!Update.hasError()) restart();
76-
},
77-
[this](AsyncWebServerRequest* request, String filename, size_t index, uint8_t* data, size_t len, bool final) {
69+
if (!Update.hasError()) restart(); }, [this](AsyncWebServerRequest *request, String filename, size_t index, uint8_t *data, size_t len, bool final) {
7870
String auth;
7971
if (request->hasParam("auth")) auth = request->getParam("auth")->value();
8072
if (!authenticate(auth)) return;
8173
if (!index) sets::beginOta(true, true);
8274
if (len) Update.write(data, len);
83-
if (final) Update.end(true);
84-
});
75+
if (final) Update.end(true); });
8576

8677
server.onNotFound([this](AsyncWebServerRequest *request) {
8778
AsyncWebServerResponse *response = request->beginResponse_P(200, "text/html", settings_index_gz, settings_index_gz_len);
@@ -111,7 +102,7 @@ class SettingsAsync : public SettingsBase {
111102

112103
void tick() {
113104
_dns.tick();
114-
SettingsBase::tick();
105+
sets::SettingsBase::tick();
115106
}
116107

117108
private:
@@ -123,7 +114,7 @@ class SettingsAsync : public SettingsBase {
123114
void send(uint8_t *data, size_t len) {
124115
if (_response) _response->write(data, len);
125116
}
126-
void sendCode(int code, AsyncWebServerRequest* request) {
117+
void sendCode(int code, AsyncWebServerRequest *request) {
127118
AsyncWebServerResponse *response = request->beginResponse(code);
128119
cors_h(response);
129120
request->send(response);

src/SettingsBase.h

Lines changed: 34 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@
1414

1515
#define SETS_RESERVE 512
1616

17+
namespace sets {
18+
1719
class SettingsBase {
18-
typedef std::function<void(sets::Builder& b)> BuildCallback;
19-
typedef std::function<void(sets::Updater& upd)> UpdateCallback;
20+
typedef std::function<void(Builder& b)> BuildCallback;
21+
typedef std::function<void(Updater& upd)> UpdateCallback;
2022

2123
public:
2224
SettingsBase(const String& title = "", GyverDB* db = nullptr) : _title(title), _db(db) {}
@@ -74,14 +76,6 @@ class SettingsBase {
7476
// отправка для родительского класса
7577
virtual void send(uint8_t* data, size_t len) {}
7678

77-
File openFileWrite(Text path) {
78-
return _fs.openWrite(path.c_str());
79-
}
80-
81-
File openFileRead(Text path) {
82-
return _fs.openRead(path.c_str());
83-
}
84-
8579
bool authenticate(Text passh) {
8680
return !_passh || (_passh == passh.toInt32HEX());
8781
}
@@ -107,8 +101,8 @@ class SettingsBase {
107101
if (_dbupdates) _db->useUpdates(true);
108102
}
109103
if (_build_cb) {
110-
sets::Build action(sets::Build::Type::Set, granted, id, value);
111-
sets::Builder b(action);
104+
Build action(Build::Type::Set, granted, id, value);
105+
Builder b(action);
112106
_build_cb(b);
113107
if (b.isReload()) _sendBuild(granted);
114108
else _answerEmpty();
@@ -119,8 +113,8 @@ class SettingsBase {
119113

120114
case SH("click"):
121115
if (_build_cb) {
122-
sets::Build action(sets::Build::Type::Click, granted, id);
123-
sets::Builder b(action);
116+
Build action(Build::Type::Click, granted, id);
117+
Builder b(action);
124118
_build_cb(b);
125119
if (b.isReload()) _sendBuild(granted);
126120
else _answerEmpty();
@@ -131,17 +125,17 @@ class SettingsBase {
131125

132126
case SH("ping"):
133127
if (_upd_cb || _db) {
134-
sets::Packet p;
135-
sets::Updater upd(p);
128+
Packet p;
129+
Updater upd(p);
136130
p.beginObj();
137-
p.addCode(sets::Code::type, sets::Code::update);
138-
p.beginArr(sets::Code::content);
131+
p.addCode(Code::type, Code::update);
132+
p.beginArr(Code::content);
139133
if (_db && _dbupdates) {
140134
while (_db->updatesAvailable()) {
141135
size_t id = _db->updateNext();
142136
p.beginObj();
143-
p.addUint(sets::Code::id, id);
144-
p.addKey(sets::Code::value);
137+
p.addUint(Code::id, id);
138+
p.addKey(Code::value);
145139
p.addFromDB(_db, id);
146140
p.endObj();
147141
}
@@ -167,7 +161,7 @@ class SettingsBase {
167161

168162
case SH("remove"):
169163
if (granted) {
170-
_fs.remove(value.c_str());
164+
FS.remove(value);
171165
_sendFs(true);
172166
}
173167
break;
@@ -180,7 +174,6 @@ class SettingsBase {
180174
String _title;
181175
size_t _passh = 0;
182176
GyverDB* _db = nullptr;
183-
sets::FS _fs;
184177
uint16_t _updPeriod = 2500;
185178
bool _dbupdates = true;
186179
bool _rst = false;
@@ -193,34 +186,34 @@ class SettingsBase {
193186

194187
void _sendFs(bool granted) {
195188
String str;
196-
if (granted) _fs.list(str, "/");
189+
if (granted) FS.listDir(str, "/", true);
197190

198-
sets::Packet p;
191+
Packet p;
199192
p.beginObj();
200-
p.addCode(sets::Code::type, sets::Code::fs);
201-
p.addText(sets::Code::content, str);
202-
p.addUint(sets::Code::used, _fs.usedSpace());
203-
p.addUint(sets::Code::total, _fs.totalSpace());
204-
if (!granted) p.addText(sets::Code::error, "Access denied");
193+
p.addCode(Code::type, Code::fs);
194+
p.addText(Code::content, str);
195+
p.addUint(Code::used, FS.usedSpace());
196+
p.addUint(Code::total, FS.totalSpace());
197+
if (!granted) p.addText(Code::error, "Access denied");
205198
p.endObj();
206199
send(p.buf(), p.length());
207200
}
208201

209202
void _sendBuild(bool granted) {
210203
if (_build_cb) {
211-
sets::Packet p;
204+
Packet p;
212205
p.reserve(SETS_RESERVE);
213206
p.beginObj();
214-
p.addCode(sets::Code::type, sets::Code::build);
215-
p.addUint(sets::Code::ping, _updPeriod);
216-
if (_title.length()) p.addText(sets::Code::title, _title);
217-
if (_passh) p.addBool(sets::Code::granted, granted);
207+
p.addCode(Code::type, Code::build);
208+
p.addUint(Code::ping, _updPeriod);
209+
if (_title.length()) p.addText(Code::title, _title);
210+
if (_passh) p.addBool(Code::granted, granted);
218211
#ifdef ATOMIC_FS_UPDATE
219-
p.addBool(sets::Code::gzip, true);
212+
p.addBool(Code::gzip, true);
220213
#endif
221-
p.beginArr(sets::Code::content);
222-
sets::Build action(sets::Build::Type::Build, granted);
223-
sets::Builder builder(action, _db, &p);
214+
p.beginArr(Code::content);
215+
Build action(Build::Type::Build, granted);
216+
Builder builder(action, _db, &p);
224217
_build_cb(builder);
225218
p.endArr();
226219
p.endObj();
@@ -229,4 +222,6 @@ class SettingsBase {
229222
_answerEmpty();
230223
}
231224
}
232-
};
225+
};
226+
227+
}

src/SettingsESP.h

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,13 @@
1414

1515
#include "SettingsBase.h"
1616
#include "core/DnsWrapper.h"
17+
#include "core/fs.h"
1718
#include "core/ota.h"
1819
#include "web/settings.h"
1920

20-
class SettingsESP : public SettingsBase {
21+
class SettingsESP : public sets::SettingsBase {
2122
public:
22-
SettingsESP(const String& title = "", GyverDB* db = nullptr) : SettingsBase(title, db), server(80) {}
23+
SettingsESP(const String& title = "", GyverDB* db = nullptr) : sets::SettingsBase(title, db), server(80) {}
2324

2425
void begin() {
2526
_dns.begin();
@@ -42,38 +43,33 @@ class SettingsESP : public SettingsBase {
4243
server.send(401);
4344
return;
4445
}
45-
46+
4647
String path = server.arg(F("path"));
47-
File f = openFileRead(path);
48+
File f = sets::FS.openRead(path);
4849
if (f) server.streamFile(f, "text/plain");
4950
else server.send(500);
5051
});
5152

52-
server.on("/upload", HTTP_POST,
53-
[this]() {
53+
server.on("/upload", HTTP_POST, [this]() {
5454
cors_h();
55-
server.send(200);
56-
}, [this]() {
55+
server.send(200); }, [this]() {
5756
String auth = server.arg(F("auth"));
5857
if (!authenticate(auth)) return;
5958

6059
HTTPUpload& upload = server.upload();
6160
if (upload.status == UPLOAD_FILE_START) {
6261
String path = server.arg(F("path"));
63-
_file = openFileWrite(path);
62+
_file = sets::FS.openWrite(path);
6463
} else if (upload.status == UPLOAD_FILE_WRITE) {
6564
if (_file) _file.write(upload.buf, upload.currentSize);
6665
} else if (upload.status == UPLOAD_FILE_END) {
6766
if (_file) _file.close();
68-
}
69-
});
67+
} });
7068

71-
server.on("/ota", HTTP_POST,
72-
[this]() {
69+
server.on("/ota", HTTP_POST, [this]() {
7370
cors_h();
7471
server.send(Update.hasError() ? 500 : 200);
75-
if (!Update.hasError()) restart();
76-
}, [this]() {
72+
if (!Update.hasError()) restart(); }, [this]() {
7773
String auth = server.arg(F("auth"));
7874
if (!authenticate(auth)) return;
7975

@@ -84,8 +80,7 @@ class SettingsESP : public SettingsBase {
8480
Update.write(upload.buf, upload.currentSize);
8581
} else if (upload.status == UPLOAD_FILE_END) {
8682
Update.end(true);
87-
}
88-
});
83+
} });
8984

9085
server.onNotFound([this]() {
9186
gzip_h();
@@ -112,7 +107,7 @@ class SettingsESP : public SettingsBase {
112107
void tick() {
113108
_dns.tick();
114109
server.handleClient();
115-
SettingsBase::tick();
110+
sets::SettingsBase::tick();
116111
}
117112

118113
#ifdef ESP8266

src/SettingsGyver.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,13 @@
1313

1414
#include "SettingsBase.h"
1515
#include "core/DnsWrapper.h"
16+
#include "core/fs.h"
1617
#include "core/ota.h"
1718
#include "web/settings.h"
1819

19-
class SettingsGyver : public SettingsBase {
20+
class SettingsGyver : public sets::SettingsBase {
2021
public:
21-
SettingsGyver(const String& title = "", GyverDB* db = nullptr) : SettingsBase(title, db), server(80) {}
22+
SettingsGyver(const String& title = "", GyverDB* db = nullptr) : sets::SettingsBase(title, db), server(80) {}
2223

2324
void begin() {
2425
_dns.begin();
@@ -36,7 +37,7 @@ class SettingsGyver : public SettingsBase {
3637

3738
case SH("/fetch"):
3839
if (authenticate(req.param("auth"))) {
39-
File f = openFileRead(req.param("path").decodeUrl());
40+
File f = sets::FS.openRead(req.param("path").decodeUrl());
4041
if (f) server.sendFile(f);
4142
else server.send(500);
4243
} else {
@@ -46,7 +47,7 @@ class SettingsGyver : public SettingsBase {
4647

4748
case SH("/upload"):
4849
if (authenticate(req.param("auth"))) {
49-
File f = openFileWrite(req.param("path").decodeUrl());
50+
File f = sets::FS.openWrite(req.param("path").decodeUrl());
5051
if (f) {
5152
req.body().writeTo(f);
5253
server.send(200);
@@ -89,7 +90,7 @@ class SettingsGyver : public SettingsBase {
8990
void tick() {
9091
_dns.tick();
9192
server.tick();
92-
SettingsBase::tick();
93+
sets::SettingsBase::tick();
9394
}
9495

9596
ghttp::Server<WiFiServer, WiFiClient> server;

src/core/fs.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#include "fs.h"
2+
3+
namespace sets {
4+
5+
FSClass FS;
6+
7+
} // namespace sets

0 commit comments

Comments
 (0)