20 #include <znc/zncconfig.h> 31 static inline void SetFdCloseOnExec(
int fd) {
32 int flags = fcntl(fd, F_GETFD, 0);
33 if (flags < 0)
return;
35 fcntl(fd, F_SETFD, flags | FD_CLOEXEC);
38 static const char g_HexDigits[] =
"0123456789abcdef";
70 unsigned int uMin = 0,
unsigned int uMax = ~0,
71 unsigned int uDefault = ~0);
141 class CTable :
protected std::vector<std::vector<CString>> {
152 bool AddColumn(
const CString& sName);
168 size_type uRowIdx = ~0);
175 bool GetLine(
unsigned int uIdx,
CString& sLine)
const;
183 CString::size_type GetColumnWidth(
unsigned int uIdx)
const;
189 using std::vector<std::vector<CString>>::size;
192 using std::vector<std::vector<CString>>::empty;
195 unsigned int GetColumnIndex(
const CString& sName)
const;
204 #include <openssl/aes.h> 205 #include <openssl/blowfish.h> 206 #include <openssl/md5.h> 223 static unsigned char* MD5(
const unsigned char* input,
unsigned int ilen);
226 static CString MD5(
const CString& sInput,
bool bHexEncode =
false);
229 void Crypt(
unsigned char* input,
unsigned char* output,
230 unsigned int ibytes);
233 unsigned char* Crypt(
unsigned char* input,
unsigned int ibytes);
237 unsigned char* m_ivec;
239 int m_iEncrypt, m_num;
249 template <
typename K,
typename V =
bool>
252 TCacheMap(
unsigned int uTTL = 5000) : m_mItems(), m_uTTL(uTTL) {}
282 void AddItem(
const K& Item,
const V& Val,
unsigned int uTTL) {
300 return (m_mItems.find(Item) != m_mItems.end());
311 if (it == m_mItems.end())
return nullptr;
312 return &it->second.second;
320 bool RemItem(
const K& Item) {
return (m_mItems.erase(Item) != 0); }
328 while (it != m_mItems.end()) {
330 m_mItems.erase(it++);
347 std::map<K, V> mItems;
348 for (
const auto& it : m_mItems) {
349 mItems[it.first] = it.second.second;
355 void SetTTL(
unsigned int u) { m_uTTL = u; }
358 unsigned int GetTTL()
const {
return m_uTTL; }
361 typedef std::pair<unsigned long long, V>
value;
362 typedef typename std::map<K, value>::iterator
iterator;
368 #endif // !ZNC_UTILS_H std::map< K, V > GetItems()
Returns all entries.
Definition: Utils.h:345
void Cleanup()
Cycles through the queue removing all of the stale entries.
Definition: Utils.h:325
bool HasItem(const K &Item)
Performs a Cleanup() and then checks to see if your item exists.
Definition: Utils.h:298
static void PrintMessage(const CString &sMessage, bool bStrong=false)
void AddItem(const K &Item)
This function adds an item to the cache using the default time-to-live value.
Definition: Utils.h:260
V * GetItem(const K &Item)
Performs a Cleanup() and returns a pointer to the object, or nullptr.
Definition: Utils.h:308
EType m_eType
Definition: Utils.h:112
static CString GetSaltedHashPass(CString &sSalt)
static bool CheckCIDR(const CString &sIP, const CString &sRange)
CIDR notation checker, e.g.
does Blowfish w/64 bit feedback, no padding
Definition: Utils.h:208
unsigned int GetTTL() const
Definition: Utils.h:358
std::map< CString, CString::size_type > m_msuWidths
Definition: Utils.h:200
virtual ~CTable()
Definition: Utils.h:144
void SetTTL(unsigned int u)
Definition: Utils.h:355
static unsigned long long GetMillTime()
static void SetMessageTags(CString &sLine, const MCString &mssTags)
std::vector< CString > m_vsHeaders
Definition: Utils.h:198
static void PrintStatus(bool bSuccess, const CString &sMessage="")
static CString GetIP(unsigned long addr)
EType GetType() const
Definition: Utils.h:108
std::set< CString > SCString
Definition: ZNCString.h:35
static unsigned long GetLongIP(const CString &sIP)
virtual ~CException()
Definition: Utils.h:106
static bool GetNumInput(const CString &sPrompt, unsigned int &uRet, unsigned int uMin=0, unsigned int uMax=~0, unsigned int uDefault=~0)
static const CString sDefaultHash
Definition: Utils.h:56
static SCString GetEncodings()
static MCString GetMessageTags(const CString &sLine)
CException(EType e)
Definition: Utils.h:105
static CString FormatTime(time_t t, const CString &sFormat, const CString &sTZ)
String class that is used inside ZNC.
Definition: ZNCString.h:68
virtual ~TCacheMap()
Definition: Utils.h:254
static CString SaltedSHA256Hash(const CString &sPass, const CString &sSalt)
bool RemItem(const K &Item)
Removes a specific item from the cache.
Definition: Utils.h:320
static CString FormatServerTime(const timeval &tv)
static SCString GetTimezones()
static bool GetBoolInput(const CString &sPrompt, bool bDefault)
std::map< K, value > m_mItems
Map of cached items.
Definition: Utils.h:364
static void PrintAction(const CString &sMessage)
static void PrintError(const CString &sMessage)
void AddItem(const K &Item, const V &Val)
This function adds an item to the cache using the default time-to-live value.
Definition: Utils.h:274
A dictionary for strings.
Definition: ZNCString.h:595
static CString GetPass(const CString &sPrompt)
std::pair< unsigned long long, bool > value
Definition: Utils.h:361
void AddItem(const K &Item, unsigned int uTTL)
This function adds an item to the cache using a custom time-to-live value.
Definition: Utils.h:267
static CString CTime(time_t t, const CString &sTZ)
void AddItem(const K &Item, const V &Val, unsigned int uTTL)
This function adds an item to the cache using a custom time-to-live value.
Definition: Utils.h:282
Insert an object with a time-to-live and check later if it still exists.
Definition: Utils.h:250
unsigned int m_uTTL
Default time-to-live duration.
Definition: Utils.h:365
static timeval ParseServerTime(const CString &sTime)
TCacheMap(unsigned int uTTL=5000)
Definition: Utils.h:252
void Clear()
Clear all entries.
Definition: Utils.h:340
CTable()
Definition: Utils.h:143
std::map< CString, value >::iterator iterator
Definition: Utils.h:362
EType
Definition: Utils.h:103
Generate a grid-like output from a given input.
Definition: Utils.h:141
static void GenerateCert(FILE *pOut, const CString &sHost="")
static CString SaltedMD5Hash(const CString &sPass, const CString &sSalt)
static bool GetInput(const CString &sPrompt, CString &sRet, const CString &sDefault="", const CString &sHint="")
static void PrintPrompt(const CString &sMessage)