-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDynamicID.cpp
More file actions
72 lines (67 loc) · 1.64 KB
/
DynamicID.cpp
File metadata and controls
72 lines (67 loc) · 1.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#include "DynamicID.h"
#ifdef ESP8266
String DynamicID::Create (unsigned long EXP, String USR)
{
String X = F ("Created: ");
DID = sha1(String(millis()) + String(rand()));
ExpireAfter = EXP;
User = USR;
AccessTime = millis();
Log (X + String (DID), 4, LibLogSect);
X = F("User: ");
Log (X + String (User), 4, LibLogSect);
X = F("AccessTime: ");
Log (X + String(AccessTime), 4, LibLogSect);
X = F("Expire after: ");
X += String (ExpireAfter);
X += F(" Seconds");
Log (X, 4, LibLogSect);
Log ("", 4, LibLogSect);
return DID;
}
String DynamicID::Check (String PreviousID)
{
String X = F ("Checking: ");
X += PreviousID;
Log (X, 4, LibLogSect);
if (User != "")
{
unsigned long Time = millis ();
unsigned long EXP = ExpireAfter * 1000;
if(Time > AccessTime + EXP || Time < EXP && Time > EXP - (0xffffffff - AccessTime)) // Normal expiry case || Rollover expiry case
{
Log (F ("Expired!"), 4, LibLogSect);
Delete ();
}
else if (PreviousID == DID)
{
X = F ("User: ");
X += String (User);
Log (X, 4, LibLogSect);
AccessTime = millis();
DID = sha1(PreviousID + String(rand()));
X = F("New ID: ");
Log (X + String (DID), 4, LibLogSect);
X = F("AccessTime: ");
Log (X + String (AccessTime), 4, LibLogSect);
Log ("", 4, LibLogSect);
return DID;
}
else
{
Log (F ("No match..."), 4, LibLogSect);
Log ("", 4, LibLogSect);
}
}
return "";
}
void DynamicID::Delete ()
{
DID = "";
ExpireAfter = 0;
User = "";
AccessTime = 0;
Log (F("ID Deleted!"), 4, LibLogSect);
Log ("", 4, LibLogSect);
}
#endif