====== 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?