Mysql Registration Zeit Aus zeit sever vergleichen

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von seby1302.

    Mysql Registration Zeit Aus zeit sever vergleichen

    Hallo Ich baue mir grade ein lizenzserver zusammen, nun habe ich das Problem das ich nicht weiß wie ich die 2 Wichtigsten werte vergleiche.

    regtime, regexpiry

    hier bei ist regtime, die zeit wann man sich registriert hat aus den Zeit Server. Ausgabe ist
    30 NOV 2018

    regexpiry soll 7 tage später sein, wie kann ich nun überprüfen ob es 7 tage vergangen sind? bespielsweiße erst einmal berechnen serverzeit + 7 tagen und diese bei regexpiry eintragen.
    Oder ist es beser diese erst einmal in long unzuwandeln?

    Verschoben. ~Thunderbolt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Thunderbolt“ ()

    Hallo ich habe Mein Lizenz Server soweit schon fertig gestellt nun Folgendes Problem..

    MIT:

    VB.NET-Quellcode

    1. Dim expiryDate As Date = Date.Now.AddDays(7)
    2. Dim regtime As Date = Date.Now


    Verwendet man Die aktuellem zeit vom PC das ist.....
    Weil Nr1: Kann die zeit am pc zurück gedreht werden, und Damit die Lizenz Server umgangen werden.
    Nr2: Bei dem Ein pc Wird es im Format 00.00.0000 Bei dem Anderen Wiederum 00/00/0000 Somit ist ein Vergleich auch nicht möglich.

    Darum wollte ich nun die Beide oberen Werten So anpassen das diese sich die zeit Vom zeit Server holen.
    Wer kann mir da helfen?

    Ich habe jetzt eine Classe gefunden die mir den richte zeit ausgibt:

    VB.NET-Quellcode

    1. Public Class DayTime
    2. '
    3. Private Const THRESHOLD_SECONDS As Integer = 15 'Number of seconds
    4. ' that Windows clock can deviate from NIST and still be okay
    5. 'Server IP addresses from
    6. 'http://www.boulder.nist.gov/timefreq/service/time-servers.html
    7. Private Shared Servers() As String = {
    8. "129.6.15.28" _
    9. , "129.6.15.29" _
    10. , "132.163.4.101" _
    11. , "132.163.4.102" _
    12. , "132.163.4.103" _
    13. , "128.138.140.44" _
    14. , "192.43.244.18" _
    15. , "131.107.1.10" _
    16. , "66.243.43.21" _
    17. , "216.200.93.8" _
    18. , "208.184.49.9" _
    19. , "207.126.98.204" _
    20. , "205.188.185.33"
    21. }
    22. Public Shared LastHost As String = ""
    23. Public Shared LastSysTime As DateTime
    24. Public Shared Function GetTime() As DateTime
    25. Dim host As String
    26. Dim result As DateTime
    27. LastHost = ""
    28. For Each host In Servers
    29. result = GetNISTTime(host)
    30. If result > DateTime.MinValue Then
    31. LastHost = host
    32. Exit For
    33. End If
    34. Next
    35. If LastHost = "" Then
    36. 'No server in list was successful so use system time
    37. result = DateTime.UtcNow()
    38. End If
    39. Return result
    40. End Function
    41. Public Shared Function SecondsDifference(ByVal dt1 As DateTime, ByVal dt2 As DateTime) As Integer
    42. Dim span As TimeSpan = dt1.Subtract(dt2)
    43. Return span.Seconds + (span.Minutes * 60) + (span.Hours * 360)
    44. End Function
    45. Public Shared Function WindowsClockIncorrect() As Boolean
    46. Dim nist As DateTime = GetTime()
    47. If (Math.Abs(SecondsDifference(nist, LastSysTime)) > THRESHOLD_SECONDS) Then
    48. Return True
    49. End If
    50. Return False
    51. End Function
    52. Private Shared Function GetNISTTime(ByVal host As String) As DateTime
    53. 'Returns DateTime.MinValue if host unreachable or does not produce time
    54. Dim timeStr As String
    55. Try
    56. Dim reader As New StreamReader(New TcpClient(host, 13).GetStream, System.Text.Encoding.Default)
    57. LastSysTime = DateTime.UtcNow()
    58. timeStr = reader.ReadToEnd()
    59. reader.Close()
    60. Catch ex As SocketException
    61. 'Couldn't connect to server, transmission error
    62. 'Debug.WriteLine("Socket Exception [" & host & "]")
    63. Return DateTime.MinValue
    64. Catch ex As Exception
    65. 'Some other error, such as Stream under/overflow
    66. Return DateTime.MinValue
    67. End Try
    68. Try
    69. 'Parse timeStr
    70. If (timeStr.Substring(38, 9) <> "UTC(NIST)") Then
    71. 'This signature should be there
    72. Return DateTime.MinValue
    73. End If
    74. If (timeStr.Substring(30, 1) <> "0") Then
    75. 'Server reports non-optimum status, time off by as much as 5 seconds
    76. Return DateTime.MinValue 'Try a different server
    77. End If
    78. Dim jd As Integer = Integer.Parse(timeStr.Substring(1, 5))
    79. Dim yr As Integer = Integer.Parse(timeStr.Substring(7, 2))
    80. Dim mo As Integer = Integer.Parse(timeStr.Substring(10, 2))
    81. Dim dy As Integer = Integer.Parse(timeStr.Substring(13, 2))
    82. Dim hr As Integer = Integer.Parse(timeStr.Substring(16, 2))
    83. Dim mm As Integer = Integer.Parse(timeStr.Substring(19, 2))
    84. Dim sc As Integer = Integer.Parse(timeStr.Substring(22, 2))
    85. If (jd < 15020) Then
    86. 'Date is before 1900
    87. Return DateTime.MinValue
    88. End If
    89. If (jd > 51544) Then yr += 2000 Else yr += 1900
    90. Return New DateTime(yr, mo, dy, hr, mm, sc)
    91. Catch ex As Exception
    92. Return Date.Now
    93. End Try
    94. End Function
    95. <StructLayout(LayoutKind.Sequential)>
    96. Public Structure SYSTEMTIME
    97. Public wYear As Int16
    98. Public wMonth As Int16
    99. Public wDayOfWeek As Int16
    100. Public wDay As Int16
    101. Public wHour As Int16
    102. Public wMinute As Int16
    103. Public wSecond As Int16
    104. Public wMilliseconds As Int16
    105. End Structure
    106. Private Declare Function GetSystemTime Lib "kernel32.dll" (ByRef stru As SYSTEMTIME) As Int32
    107. Private Declare Function SetSystemTime Lib "kernel32.dll" (ByRef stru As SYSTEMTIME) As Int32
    108. Public Shared Sub SetWindowsClock(ByVal dt As DateTime)
    109. 'Sets system time. Note: Use UTC time; Windows will apply time zone
    110. Dim timeStru As SYSTEMTIME
    111. Dim result As Int32
    112. timeStru.wYear = CType(dt.Year, Int16)
    113. timeStru.wMonth = CType(dt.Month, Int16)
    114. timeStru.wDay = CType(dt.Day, Int16)
    115. timeStru.wDayOfWeek = CType(dt.DayOfWeek, Int16)
    116. timeStru.wHour = CType(dt.Hour, Int16)
    117. timeStru.wMinute = CType(dt.Minute, Int16)
    118. timeStru.wSecond = CType(dt.Second, Int16)
    119. timeStru.wMilliseconds = CType(dt.Millisecond, Int16)
    120. result = SetSystemTime(timeStru)
    121. End Sub
    122. End Class


    EDIT Nach stunden doch noch geschafft. Aber vieleicht kann das hier jemand gebrauchen :'D

    VB.NET-Quellcode

    1. Dim expiryDate As Date = DayTime.GetTime.AddDays(7)
    2. Dim regtime As Date = DayTime.GetTime

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „seby1302“ ()

    Da du von Lizenzserver sprichst, vermute ich mal, dass du auch eine Datenbank verwendest.
    Wieso lässt du die Datenbank nicht das Datum setzen, bei einem INSERT? So wird immer das Datum des Server genutzt, und das kann der Endnutzer nicht zurückstellen.
    Beispiel für MySQL
    Hallo Das Wäre Gut Datum ist soweit ok könnte ich machen allerdings habe ich mit den obrigen Classe immer noch das Problem das er mir nicht immer den selben Format rein packt.

    der ein pc 00.00.000 der andre 00/00/00/

    Sonst mößte ich die einzelnen werte auslesen splitt bei / wenn es exitiert wenn nicht bei . Oder wie stelle ich das an<X

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „seby1302“ ()

    Die ganze Klasse brauchst du nicht, wenn du mit einer Datenbank arbeitest. Wie bereits geschrieben, einfach die Datenbank das Datum setzen lassen.

    Die verschiedenen Datumsformate sind auch kein Problem, dank ToString.
    So einfach kann das sein xD

    VB.NET-Quellcode

    1. Dim Mytimestamp = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
    2. Dim Mytimestampexpiry = DateTime.Now.AddDays(7).ToString("yyyy-MM-dd HH:mm:ss")
    3. cmd.CommandText = "INSERT IGNORE INTO `tabelle1` (`userid`,`password`, `ispremium`, `regtime`,`regexpiry`,`serverid`) VALUES ('" & Userid & "','" & InvertPasswordToMd5(Password) & "','nopremium','" & Mytimestamp & "','" & Mytimestampexpiry & "','" & Getdoserverid() & "')"

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „seby1302“ ()