| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 | #ifndef ZEROCONFAUTHENTICATOR_H#define ZEROCONFAUTHENTICATOR_H#include <vector>#ifndef _WIN32#include <unistd.h>#endif#include <string>#include <BaseHTTPServer.h>#include <cstdlib>#include "Utils.h"#include "LoginBlob.h"#include "Crypto.h"#include "BellTask.h"#include "ConstantParameters.h"#ifdef ESP_PLATFORM#include "mdns.h"#elif defined(_WIN32)#include "mdnssvc.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 portstypedef std::function<void(std::shared_ptr<LoginBlob>)> authCallback;class ZeroconfAuthenticator {private:#ifdef _WIN32	struct mdnsd* service;#endif    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
 |