11 - 05 - 2024

DynDNS Service 2

Bewertung:  / 2

TextlogoDer DynDNS Service ist ein DynDNS-Client für Windows-Betriebssysteme, der sich als ein Windows Dienst installiert, permanent den aktuellen Status der öffentlichen IP-Adresse ihrer Internetverbindung überwacht und bei Bedarf das Update bei einem oder mehreren DynDNS-Providern ausführt.

Weiterlesen...

DynDNS Service aktualisieren

Bewertung:  / 1

Der DynDNS Service ist ein Tool das normalerweise still und im Hintergrund seinen Dienst ausführen und den Benutzer nur dann beschäftigen soll wenn es notwendig sein sollte, zum Beispiel weil das DynDNS Update nicht erfolgreich durchgeführt werden konnte. Aus diesem Grund ist keine automatische Update-Funktion in das Tool integriert und Sie sollten auch das manuelle Aktualisieren des DynDNS Service nur dann durchführen, wenn Sie Probleme lösen möchten und nicht nur alleine deswegen weil eine neuere Version des DynDNS Service verfügbar ist.

Wenn Sie den DynDNS Service aktualisieren möchten, beschreibt die nachfolgende Anleitung den Weg wie es geht:

1. Download der neuesten Version des DynDNS Service

Der DynDNS Service wird in vielen Software-Verzeichnissen im Internet zu Download angeboten, jedoch stellen diese oftmals nur mehr oder weniger stark veraltete Versionen zum Download bereit. Für den Fall, dass Sie den Download des DynDNS Service von einem vertrauenswürdigen Software-Verzeichnis bevorzugen habe ich im Download-Bereich auf meinem Blog auch Referenzen von Software-Verzeichnissen zusammengestellt, die ich regelmäßig aktualisiere, so dass Sie dort zumeist die neueste Version des DynDNS Service herunterladen können.

Die wirklich letzte Version des DynDNS Service finden Sie im Zweifelsfall jedoch nur hier in meinem Blog im Download-Bereich für den DynDNS Service.

2. Start und Installation

Nach dem Start des heruntergeladenen Installers erhalten Sie zunächst eine Übersicht der wählbaren Optionen:

 DynDNSService Update1

Wählen Sie bitte die Option "Aktualisieren". Die Aktualisierung betrifft nur die Programmdateien des DynDNS Service. Ihre Konfigurationseinstellungen oder Systemdateien werden dagegen nicht verändert.

ACHTUNG! Bitte beachten Sie, dass der Upgrade auf DynDNS Service V3.0 aufgrund der geänderten Stammdatenstrukturen irreversibel ist! Wenn Sie später wieder auf DynDNS Service V2.1 downgraden möchten, müssen Sie ihre Stammdaten erneut manuell eingeben.

Nach Bestätigung mit "Weiter" bestätigen Sie bitte, dass Sie die für den DynDNS Service geltenden Lizenzvereinbarungen akzeptieren:

DynDNSService Update2

Nach Bestätigung mit "Weiter" wird zunächst geprüft ob ihr System die Programm-Voraussetzungen für die Installation des DynDNS Service erfüllt.

DynDNSService Update3

Für den Fall, dass einzelnen Programm-Voraussetzungen nicht gegeben sind, können Sie die Installation des DynDNS Service an dieser Stelle nicht fortsetzen, solange die Voraussetzungen nicht erfüllt werden. Bitte klicken Sie auf der Link in der Spalte "Ergebnis" um mehr Informationen über die jeweilige Programm-Vorausetzung zu erhalten.

Nach Bestätigung mit "Weiter" zeigt der Installer ihnen zunächst eine Zusammenfassung der für die Installation des DynDNS Service anzuwendenden Einstellungen an:

DynDNSService Update4

Nach Bestätigung mit "Weiter" wird zunächst nur die ursprüngliche Installation des DynDNS Service deinstalliert.

DynDNSService Update5

ACHTUNG! Die Deinstallation betrifft nur die Programmdateien des DynDNS Service, nicht die Konfigurationseinstellungen des DynDNS Service!

Nach erfolgreicher Deinstallation beginnt die Neu-Installation des DynDNS Service wobei Sie einen alternativen Installationsort für die Programmdateien des DynDNS Service angeben können.

DynDNSService Update6

Nach Bestätigung mit "Weiter" startet die Neu-Installation des DynDNS Service.

DynDNSService Update7

Gratulation! Die Aktualisierung des DynDNS Service ist erfolgreich auf ihrem System abgeschlossen.

DynDNSService Update8

Der Installer kann beendet werden und Sie können die neue Version des DynDNS Service wie gewohnt verwenden.

 

Code Signing - OpenSSL

Bewertung:  / 2
Zurück zum Hauptartikel

 

Download von OpenSSL

Je nachdem ob Sie die 32- oder 64-Bit Version bevorzugen, laden Sie sich bitte die aktuellste Version (z.Z. 1.0.1e) herunter:

Download der Windows Version: http://slproweb.com/products/Win32OpenSSL.html

 

Installation und Konfiguration von OpenSSL

Installieren Sie die Software entsprechend Installations-Assistent in das Verzeichnis "C:\OpenSSL-Win32\". Beantworten Sie die Fragen des Installation-Assistenten nach folgender Anleitung:

CodeSigning-OpenSSL1

Die aktuellen OpenSSL Version benötigt die "Microsoft Visual C++ 2008 Redistributables". Neuere Version können ggf. auch neuere Redistributabeles benötigen. Sie können die gewünschte Version bei Microsoft herunterladen und sollten sicherstellen, dass diese installiert ist, bevor Sie die Installation fortsetzen.

CodeSigning-OpenSSL2

Nach dem Willkommens-Dialog müssen Sie den Lizenzvereinbarungen zustimmen...

CodeSigning-OpenSSL3

... und das Zielverzeichnis ("C:\OpenSSL-Win32") auswählen:

CodeSigning-OpenSSL4

OpenSSL installiert auch ein Menü-Ordner im Startmenü; allerdings nutzen wir OpenSSL später nur per Scripting, weshalb das OpenSSL-Menü nicht gebraucht wird. Übernehmen Sie den Eintrag dann einfach so wie er ist:

CodeSigning-OpenSSL5

Alle Code-Beispiele in meinem Blog gehen davon aus, dass die OpenSSL-Biblitheken kopiert wurden in das Verzeichnis ("C:\OpenSSL-Win32\bin\"). Übernehmen Sie deshalb bitte die Einstellung "The OpenSSL binaries (/bin) directory". Wenn Sie dagegen die OpenSSL-Bibliotheken in das Windows system Verzeichnis oder an einen anderen Ort kopieren möchten, denken Sie bitte daran die Code-Beispiele entsprechend anzupassen.

CodeSigning-OpenSSL6

Die Zusammenfassung zeigt noch einmal alle Installations-Einstellungen auf einen Blick. Sobald Sie mit Button "Install" bestätigen wird OpenSSL auf ihrem System installiert.

CodeSigning-OpenSSL7
Zurück zum Hauptartikel

{jcomments off}

DynDNS Service - Konfiguration für NameCheap.com

Bewertung:  / 0

Die Konfiguration des DynDNS Service für den DynDNS Provider NameCheap.com ist etwas kniffelig, weil der Provider nicht dem DynDNS V2 Protokoll folgt sondern das DynDNS-Update stattdessen nach einem eigenen Protokoll ermöglicht.

Insbesondere macht die Übergabe des Hostname Probleme, denn laut DynDNS V2 Protokoll wird normalerweise der Domainname inklusive Hostname als ein Parameter erwartet; NameCheap.com dagegen erwartet den Hostname und den Domänensuffix in zwei voneinander getrennten Parametern. Allerdings kann der DynDNS Service dennoch mit einigen kleineren Anpassungen in der Update-URI leicht so konfiguriert werden, dass das DynDNS-Update mit dem DynDNS Service auch mit dem Provider NameCheap.com funktioniert.

Zunächst sind hier nochmal die Eckdaten für Erkennung und Update für den Provider NameCheap.com:

AnbieterTypURI
NameCheap.com Erkennung
Unbekannt / Nicht angeboten. Benutzen Sie eine allgemeine URI, wie z.B.
http://www.wieistmeineip.de
Update
https://dynamicdns.park-your-domain.com/update?host=www&domain=example.com&password=[PASSWORD]&ip=[PUBLICIP]

In dieser URI wurde die Domain 'www.example.com' nicht aus dem Platzhalter [FQDN] übernommen sondern stattdessen einfach direkt hart in die URI codiert: Der Parameter 'host=www' enthält den Hostname 'www' aus der Domain 'www.example.com' während der Parameter 'domain=example.com' den Domänensuffix 'example.com' enthält. Wenn Sie ihre Domain, die sie bei NameCheap.com hosten, nicht in das Eingabefeld für die Full Qualified Domain Name eintragen sondern stattdessen direkt in die Update-URI integrieren, klappt das DynDNS-Update mit dem DynDNS Service auch bei NameCheap.com problemlos.

Beispiel

Ihre Domain lautet: 'mail.bumelux.com'. Ändern Sie die Update-URI oben wie folgt:
https://dynamicdns.park-your-domain.com/update?host=mail&domain=bumelux.com&password=[PASSWORD]&ip=[PUBLICIP]

Als Responsecode zum Erkennen eines erfolgreichen Update geben Sie ein: 'good'. Alle übrigen Parameter können Sie, wie gewohnt über den Provider-Editor ausfüllen und werden von den jeweiligen Platzhalter in der Update-URI übernommen.

CSharp Security-Editor - Structs

Bewertung:  / 2
Zurück zum Hauptartikel
Implementation von Struct-Elementen für den CSharp - Security-Editor:
	
	[StructLayout(LayoutKind.Sequential)]
    public struct GENERIC_MAPPING 
    {
        public int GenericRead;
        public int GenericWrite;
        public int GenericExecute;
        public int GenericAll;
    }
	
	/// <summary>
    /// The SI_OBJECT_INFO structure is used by the ISecurityInformation::GetObjectInformation method to specify information used to initialize the access control editor.
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct SI_OBJECT_INFO
    {
        /// <summary>
        /// A set of bit flags that determine the editing options available to the user. This member can be a combination of the following values. 
        /// </summary>
        public SI_OBJECT_FLAGS dwFlags;
        
        /// <summary>
        /// Identifies a module that contains string resources to be used in the property sheet. The ISecurityInformation::GetAccessRights and ISecurityInformation::GetInheritTypes methods can specify string resource identifiers for display names.
        /// </summary>
        private IntPtr hInstance;
		
        /// <summary>
        /// A pointer to a null-terminated, Unicode string that names the computer on which to look up account names and SIDs. This value can be NULL to specify the local computer. The access control editor does not free this pointer.
        /// </summary>
        [MarshalAs(UnmanagedType.LPWStr)]
        public string szServerName;
		
        /// <summary>
        /// A pointer to a null-terminated, Unicode string that names the object being edited. This name appears in the title of the advanced security property sheet and any error message boxes displayed by the access control editor. The access control editor does not free this pointer.
        /// </summary>
        [MarshalAs(UnmanagedType.LPWStr)]
        public string szObjectName;
		
        /// <summary>
        /// A pointer to a null-terminated, Unicode string used as the title of the basic security property page. This member is ignored unless the SI_PAGE_TITLE flag is set in dwFlags. If the page title is not provided, a default title is used. The access control editor does not free this pointer.
        /// </summary>
        [MarshalAs(UnmanagedType.LPWStr)]
        public string szPageTitle;
        
		/// <summary>
        /// A GUID for the object. This member is ignored unless the SI_OBJECT_GUID flag is set in dwFlags.
        /// </summary>
        private IntPtr guidObjectType;
		
        public SI_OBJECT_INFO(SI_OBJECT_FLAGS flags, IntPtr hInstance, string servername, string objectname, string pagetitle)
        {
            dwFlags = flags;
            this.hInstance = hInstance;
            szServerName = servername;
            szObjectName = objectname;
            szPageTitle = pagetitle;
            guidObjectType = IntPtr.Zero;
        }
    }
    
	/// <summary>
    /// The SI_ACCESS structure contains information about an access right or default access mask for a securable object. The ISecurityInformation::GetAccessRights method uses this structure to specify information that the access control editor uses to initialize its property pages.
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct SI_ACCESS
    {
        /// <summary>
        /// A pointer to a GUID structure that identifies the type of object to which the access right or default access mask applies. The GUID can identify a property set or property on the object, or a type of child object that can be contained by the object. If this member points to GUID_NULL, the access right applies to the object itself.
        /// </summary>
        private IntPtr pguid;
		
        /// <summary>
        /// A bitmask that specifies the access right described by this structure. The mask can contain any combination of standard and specific rights, but should not contain generic rights such as GENERIC_ALL.
        /// </summary>
        public SI_ACCESS_MASK mask;
		
        /// <summary>
        /// A pointer to a null-terminated Unicode string containing a display string that describes the access right. Alternatively, pszName can be a string resource identifier returned by the MAKEINTRESOURCE macro. Use the ISecurityInformation::GetObjectInformation method to identify the module that contains the string resource.
        /// </summary>
        [MarshalAs(UnmanagedType.LPWStr)]
        public string szName;
        
        /// <summary>
        /// A set of bit flags that indicate where the access right is displayed. This member can be a combination of the following. 
        /// </summary>
        public SI_ACCESS_FLAG dwFlags;
        
        public static readonly int SizeOf = Marshal.SizeOf(typeof(SI_ACCESS));
		
        public SI_ACCESS(SI_ACCESS_MASK mask, string name, SI_ACCESS_FLAG flags)
        {
            pguid = IntPtr.Zero;
            this.mask = mask;
            szName = name;
            dwFlags = flags;
        }
    }
	
	/// <summary>
    /// The SI_INHERIT_TYPE structure contains information about how access control entries (ACEs) can be inherited by child objects. The ISecurityInformation::GetInheritTypes method uses this structure to specify display strings that the access control editor uses to initialize its property pages.
    /// </summary>
    [StructLayout(LayoutKind.Sequential)]
    public struct SI_INHERIT_TYPE
    {
        /// <summary>
        /// A pointer to a GUID structure that identifies the type of child object. This member can be a pointer to GUID_NULL. The GUID corresponds to the InheritedObjectType member of an object-specific ACE.
        /// </summary>
        private IntPtr pguid;
        
        /// <summary>
        /// A set of inheritance flags that indicate the types of ACEs that can be inherited by the pguid object type. These flags correspond to the AceFlags member of an ACE_HEADER structure. This member can be a combination of the following values. 
        /// </summary>
        public SI_INHERIT_FLAGS dwFlags;

		/// <summary>
        /// A pointer to a null-terminated Unicode string containing a display string that describes the child object.
        /// Alternatively, pszName can be a string resource identifier returned by the MAKEINTRESOURCE macro. Use the ISecurityInformation::GetObjectInformation method to identify the module that contains the string resource.
        /// </summary>
        [MarshalAs(UnmanagedType.LPWStr)]
        public string pszName;
    }
Zurück zum Hauptartikel

{jcomments off}