12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #ifndef ZEROCONFAUTHENTICATOR_H
- #define ZEROCONFAUTHENTICATOR_H
- #include <vector>
- #include <unistd.h>
- #include <string>
- #include <BaseHTTPServer.h>
- #include <cstdlib>
- #include "Utils.h"
- #include "LoginBlob.h"
- #include "Crypto.h"
- #include "Task.h"
- #include "ConstantParameters.h"
- #ifdef ESP_PLATFORM
- #include "mdns.h"
- #else
- #include "dns_sd.h"
- #include <unistd.h>
- #endif
- #ifndef SOCK_NONBLOCK
- #define SOCK_NONBLOCK O_NONBLOCK
- #endif
- #define SERVER_PORT_MAX 65535 // Max usable tcp port
- #define SERVER_PORT_MIN 1024 // 0-1024 services ports
- typedef std::function<void(std::shared_ptr<LoginBlob>)> authCallback;
- class ZeroconfAuthenticator {
- private:
- int serverPort;
- bool authorized = false;
- std::unique_ptr<Crypto> crypto;
- std::shared_ptr<bell::BaseHTTPServer> server;
- authCallback gotBlobCallback;
- void startServer();
- std::string buildJsonInfo();
- void handleAddUser(std::map<std::string, std::string>& queryMap);
- void registerZeroconf();
- std::string getParameterFromUrlEncoded(std::string data, std::string param);
- public:
- ZeroconfAuthenticator(authCallback callback, std::shared_ptr<bell::BaseHTTPServer> httpServer);
- void registerHandlers();
- };
- #endif
|