====== Openantrag ====== Die folgenden Informationen sind unsortiert und das Ergebnis ersten Testens. Keine Garantie, daß am Ende etwas sinnvolles herauskommt. Bereitgestellte Funktionen: * RSS-Feed * Schnittstelle zu Twitter * Benachrichtigungen * Pushbullet * Pushover ===== Windows ===== Es wird Visual Studio 2017 Community verwendet. RavenDB in der Version 2.5. Ziel ist es das ganze erst einmal lauffähig zu bekommen. Anschließend dann verwenden aktueller Versionen der verwendeten Komponenten. Nachdem die alte Konfiguration läuft, geht es an die Aktualisierung: * RavenDB 4.0.5 * Datenbank aus 2.5 kann über 3.5 nach 4 konvertiert werden * Anwendung muß auf .NET 4.6.1 umgestellt werden * Es gibt einige Änderungen, der Programmcode muß angepaßt werden. Insgesondere gibt es keinen Connectionstring mehr. ==== RavenDB ==== Version 2.5: * ZIP herunterladen * auspacken * starten * Datenbank anlegen * Dokument anlegen Version 4.0.5: * herunterladen Version 4.0.5 (Original war Version 2.5) * auspacken * starten über die Powershell (Version 4 benötigt) * Powershell Ausführungsrichtlinie: Set-ExecutionPolicy Unrestricted * Für Entwicklung: run.ps1 starten * Server: 127.0.0.1:8080 * Datenbank OpenAntrag anlegen * Neues Dokument anlegen ==== OpenAntrag ==== === Berechtigungen === Es gibt * Einen Administrator * Normale Benutzer * ''ID'' * ''User-Key'' * ''Benutzername'' * ''EMail'' * ''API-Key'' * ''Pushover-User-Key'' Die Berechtigungen werden aus der Datei ''Users.xml'' gelesen. Damit das ganze funktioniert wird noch ein Membership Provider benötigt. Dies ist ein eigenständiges Projekt. Siehe auch: [[https://docs.microsoft.com/en-us/iis/application-frameworks/building-and-running-aspnet-applications/how-to-use-the-sample-read-only-xml-membership-and-role-providers-with-iis|Über ASP.NET Xml Security Providers]] Der dort beschriebene Code muß geringfügig angepaßt werden, damit er für unsere Situation paßt. Insbesondere ist ein Verweis auf ''System.Web.ApplicationServices'' erforderlich. In ''ReadMembershipDataStore'' muß der providerUserKey (ein eindeutiger Schlüssel) aus der ''Users.xml'' übernommen werden. Wir verwenden ''UserID'' dazu: MembershipUser user = new MembershipUser( Name, // Provider name node["UserName"].InnerText, // Username node["UserID"].InnerText, // providerUserKey node["EMail"].InnerText, // Email String.Empty, // passwordQuestion node["Password"].InnerText, // Comment true, // isApproved false, // isLockedOut DateTime.Now, // creationDate DateTime.Now, // lastLoginDate DateTime.Now, // lastActivityDate DateTime.Now, // lastPasswordChangedDate new DateTime(1980, 1, 1) // lastLockoutDate ); Bob bob geheim bob@piratenpartei-sh.de testparlament Alice alice geheim alice@piratenpartei-sh.de admin,testparlament/Roles> Rollen: * ''admin'' ist eine spezielle Rolle * Jedes Parlament (''representations.key'') entspricht einer Rolle === Anwendungseinstellungen === Settings in ''web.config'' ^ Setting ^ Datentyp ^ Standard ^ Beschreibung ^ | PushbulletApiUrl | String | | | | PushbulletAccessToken | String | | | | PushoverApiUrl | String | | | | PushoverAppToken | String | | | | PushoverUserKey | String | | | | TwitterConsumerKey | String | | | | TwitterConsumerSecret | String | | | | TwitterAccessToken | String | | | | TwitterAccessTokenSecret | String | | | | TwitterRequestUrl | String | | | | PiratlyApiKey | String | | | | SendMail | Boolean | False | | | InfoMailCC | String | | | | MailSender | String | | | | SendTweets | Boolean | False | | | SendPushoverNotification | Boolean | False | | | DefaultPagerListPageSize | Integer | 25 | | | DefaultPagerListWingLength | Integer | 10 | | | RandomKey_AllowCapitalLetters | Boolean | | | | RandomKey_Letters | String | | | | RandomKey_Numbers | String | | | | NotificationPageCount | Integer | 10 | | | ProposalListCount | Integer | 10 | | ==== Parlamente ==== ^ Status ^ Bezeichnung ^ | 0 | Inaktiv | | 1 | Aktiv | | 2 | Nur lesen | | 4 | Beendet | ==== Datenbankanbindung ==== Verbindung zur Datenbank: Die Client-DLL von RavenDB muß zu der Version des Servers passen! Mit dem 2.5er Client kann keine Verbindung zum 4.0.5er Server hergestellt werden. Weitere anzulegende Dateien Z.B. in App_Data: * Verzeichnis XmlTemplates * die Dateien können in die übergeordnete Ebene "eingemischt werden" * vermutlich damit man nicht immer alles ausfüllen muß * Teaser.xml ==== Deploy ==== Veröffentlichen der Anwendung auf einem Server (ohne Entwicklungsumgebung). Erfolgreich getestet mit einem Windows 7 mit IIS. - IIS installieren - RavenDB 2.5 muß laufen - ASP.NET initialisieren cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 aspnet_regiis -i - Überkopieren der Daten * Am besten die Funktion "Veröffentlichen" von Visual-Studio verwenden, in ein lokales Verzeichnis. Anschließend können die Dateien dann auf den echten Webserver übertragen werden. ===== Linux ===== Basis für den ganzen Spaß ist .NET Core. Abhängigkeiten in Debian Stretch apt-get install liblttng-ust0 libcurl3 libkrb5-3 zlib1g libssl1.0.2 libicu57 libunwind8 libuuid1 .NET unter Debian. Über das folgende Repository kann man die Pakete manuell herunterladen ohne sich die Microsoft-Repositories in sein System einbinden zu müssen: https://packages.microsoft.com/debian/9/prod/pool/main/d/ Installieren der für RavenDB notwendigen Pakete: dpkg -i dotnet-host-2.0.7-debian.9-x64.deb dpkg -i dotnet-hostfxr-2.0.7-debian.9-x64.deb dpkg -i dotnet-runtime-2.0.7-debian.9-x64.deb RavenDB cd /tmp https://ravendb.net/download tar xjf RavenDB-4.0.5-linux-x64.tar.bz2 cd RavenDB ./run.sh Anschließend öffnet sich ein Browser über den die weitere Konfiguration vorgenommen werden kann. ==== ASP .NET ==== dpkg -i aspnetcore-store-2.0.0-debian.9-x64.deb dpkg -i aspnetcore-store-2.0.3-debian.9-x64.deb dpkg -i aspnetcore-store-2.0.5-debian.9-x64.deb dpkg -i aspnetcore-store-2.0.6-debian.9-x64.deb dpkg -i aspnetcore-store-2.0.7-debian.9-x64.deb dpkg -i dotnet-hosting-2.0.7-debian.9-x64.deb ==== Nachbau ==== Ein Nachbau könnte im Stil von Openslides erstellt werden: * Python * Django Damit könnte ggf. auch eine Interoperabilität geschaffen werden?