// Check whether the Cedar was build after the specified date bool IsLaterBuild(CEDAR *c, UINT64 t) { SYSTEMTIME sb, st; UINT64 b; // Validate arguments if (c == NULL) { return false; } Zero(&sb, sizeof(sb)); Zero(&st, sizeof(st)); UINT64ToSystem(&sb, c->BuiltDate); UINT64ToSystem(&st, t); // Ignore time of the day sb.wHour = sb.wMinute = sb.wSecond = sb.wMilliseconds = 0; st.wHour = st.wMinute = st.wSecond = st.wMilliseconds = 0; b = SystemToUINT64(&sb); t = SystemToUINT64(&st); if (b > t) { return true; } else { return false; } }
// Confirm whether the beta version has expired bool ElIsBetaExpired() { SYSTEMTIME st; UINT64 expires64; UINT64 now64; if (ELOG_IS_BETA == false) { return false; } Zero(&st, sizeof(st)); st.wYear = ELOG_BETA_EXPIRES_YEAR; st.wMonth = ELOG_BETA_EXPIRES_MONTH; st.wDay = ELOG_BETA_EXPIRES_DAY; expires64 = SystemToUINT64(&st); now64 = LocalTime64(); if (now64 >= expires64) { return true; } return false; }
// Get build date of current code UINT64 GetCurrentBuildDate() { SYSTEMTIME st; Zero(&st, sizeof(st)); st.wYear = BUILD_DATE_Y; st.wMonth = BUILD_DATE_M; st.wDay = BUILD_DATE_D; st.wHour = BUILD_DATE_HO; st.wMinute = BUILD_DATE_MI; st.wSecond = BUILD_DATE_SE; return SystemToUINT64(&st); }
// Convert the the CK_DATE to the 64 bit time UINT64 CkDateToUINT64(struct CK_DATE *ck_date) { SYSTEMTIME st; char year[32], month[32], day[32]; // Validate arguments if (ck_date == NULL) { return 0; } Zero(year, sizeof(year)); Zero(month, sizeof(month)); Zero(day, sizeof(day)); Copy(year, ck_date->year, 4); Copy(month, ck_date->month, 2); Copy(day, ck_date->day, 2); st.wYear = ToInt(year); st.wMonth = ToInt(month); st.wDay = ToInt(day); return SystemToUINT64(&st); }
// Create Cedar object CEDAR *NewCedar(X *server_x, K *server_k) { CEDAR *c; char tmp[MAX_SIZE]; char tmp2[MAX_SIZE]; char *beta_str; CedarForceLink(); c = ZeroMalloc(sizeof(CEDAR)); c->CurrentActiveLinks = NewCounter(); c->AcceptingSockets = NewCounter(); c->CedarSuperLock = NewLock(); c->CurrentRegionLock = NewLock(); StrCpy(c->OpenVPNDefaultClientOption, sizeof(c->OpenVPNDefaultClientOption), OVPN_DEF_CLIENT_OPTION_STRING); #ifdef BETA_NUMBER c->Beta = BETA_NUMBER; #endif // BETA_NUMBER InitNoSslList(c); c->AssignedBridgeLicense = NewCounter(); c->AssignedClientLicense = NewCounter(); c->CurrentTcpQueueSizeLock = NewLock(); c->QueueBudgetLock = NewLock(); c->FifoBudgetLock = NewLock(); Rand(c->UniqueId, sizeof(c->UniqueId)); c->CreatedTick = Tick64(); c->lock = NewLock(); c->ref = NewRef(); c->OpenVPNPublicPortsLock = NewLock(); c->CurrentTcpConnections = GetNumTcpConnectionsCounter(); c->ListenerList = NewList(CompareListener); c->UDPEntryList = NewList(CompareUDPEntry); c->HubList = NewList(CompareHub); c->ConnectionList = NewList(CompareConnection); c->ConnectionIncrement = NewCounter(); c->CurrentSessions = NewCounter(); if (server_k && server_x) { c->ServerK = CloneK(server_k); c->ServerX = CloneX(server_x); } c->Version = CEDAR_VER; c->Build = CEDAR_BUILD; c->ServerStr = CopyStr(CEDAR_SERVER_STR); GetMachineName(tmp, sizeof(tmp)); c->MachineName = CopyStr(tmp); c->HttpUserAgent = CopyStr(DEFAULT_USER_AGENT); c->HttpAccept = CopyStr(DEFAULT_ACCEPT); c->HttpAcceptLanguage = CopyStr("ja"); c->HttpAcceptEncoding = CopyStr(DEFAULT_ENCODING); c->Traffic = NewTraffic(); c->TrafficLock = NewLock(); c->CaList = NewList(CompareCert); c->TrafficDiffList = NewList(NULL); SetCedarCipherList(c, "RC4-MD5"); c->ClientId = _II("CLIENT_ID"); c->UdpPortList = NewIntList(false); InitNetSvcList(c); InitLocalBridgeList(c); InitCedarLayer3(c); c->WebUI = WuNewWebUI(c); #ifdef ALPHA_VERSION beta_str = "Alpha"; #else // ALPHA_VERSION #ifndef RELEASE_CANDIDATE beta_str = "Beta"; #else // RELEASE_CANDIDATE beta_str = "Release Candidate"; #endif // RELEASE_CANDIDATE #endif // ALPHA_VERSION ToStr(tmp2, c->Beta); Format(tmp, sizeof(tmp), "Version %u.%02u Build %u %s %s (%s)", CEDAR_VER / 100, CEDAR_VER - (CEDAR_VER / 100) * 100, CEDAR_BUILD, c->Beta == 0 ? "" : beta_str, c->Beta == 0 ? "" : tmp2, _SS("LANGSTR")); Trim(tmp); if (true) { SYSTEMTIME st; Zero(&st, sizeof(st)); st.wYear = BUILD_DATE_Y; st.wMonth = BUILD_DATE_M; st.wDay = BUILD_DATE_D; c->BuiltDate = SystemToUINT64(&st); } c->VerString = CopyStr(tmp); Format(tmp, sizeof(tmp), "Compiled %04u/%02u/%02u %02u:%02u:%02u by %s at %s", BUILD_DATE_Y, BUILD_DATE_M, BUILD_DATE_D, BUILD_DATE_HO, BUILD_DATE_MI, BUILD_DATE_SE, BUILDER_NAME, BUILD_PLACE); c->BuildInfo = CopyStr(tmp); return c; }