Die folgenden Informationen sind unsortiert und das Ergebnis ersten Testens. Keine Garantie, daß am Ende etwas sinnvolles herauskommt.
Bereitgestellte Funktionen:
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:
Version 2.5:
Version 4.0.5:
Es gibt
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:
Ü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 );
<?xml version="1.0" encoding="utf-8"?> <Users> <User> <UserName>Bob</UserName> <UserID>bob</UserID> <Password>geheim</Password> <EMail>bob@piratenpartei-sh.de</EMail> <Roles>testparlament</Roles> </User> <User> <UserName>Alice</UserName> <UserID>alice</UserID> <Password>geheim</Password> <EMail>alice@piratenpartei-sh.de</EMail> <Roles>admin,testparlament/Roles> </User> </Users>
Rollen:
admin
ist eine spezielle Rollerepresentations.key
) entspricht einer Rolle
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 |
Status | Bezeichnung |
---|---|
0 | Inaktiv |
1 | Aktiv |
2 | Nur lesen |
4 | Beendet |
<?xml version="1.0" encoding="utf-8"?> <representations> <item id="999" key="testparlament" status="1" api-key="..." label="Test" color="#999" name="Test-Parlament" name2="Parlament (Test)" level="4" federal="SH" map-url="" group-type="1" group-name="Test" link="" phone="" twitter="" mail="test@mail.de" info-mail="test@mail.de"> <representatives> <item id="1" key="hans-mustermann" name="Hans Mustermann" mail="" phone="" twitter="" party="Piratenpartei" /> </representatives> <committees> <item id="1" key="c1" caption="C1test" name="Ausschuß A" url=""></item> <item id="2" key="c2" caption="C2" name="Ausschuß B" url=""></item> </committees> <process> <step id="1" def="eingang" caption="Eingang des Antrags" short-caption="Antragseingang"> <next> <step id="2" /> </next> </step> <step id="2" def="pruefung" caption="Antrag in Prüfung" short-caption="Antrag in Prüfung"> <next> <step id="3" /> </next> </step> <step id="3" def="erledigt" success-story="true" caption="Antrag erledigt" short-caption="Antrag erledigt"> <next /> </step> </process> </item> </representations>
Verbindung zur Datenbank:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <compilation debug="true" targetFramework="4.5.1" /> <httpRuntime targetFramework="4.5.1" /> <!-- PublicKeyToken aus der Assembly mit "sn -T <dllfile> extrahieren oder aus %windir\Microsoft.NET\assembly% auslesen --> <membership defaultProvider="AspNetReadOnlyXmlMembershipProvider"> <providers> <add name="AspNetReadOnlyXmlMembershipProvider" type="ReadOnlyXmlMembershipProvider, ReadOnlyXmlMembershipProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5f20f686ead4fa28" description="Read-only XML membership provider" xmlFileName="~/App_Data/Users.xml" /> </providers> </membership> <roleManager enabled="true" defaultProvider="AspNetReadOnlyXmlRoleProvider"> <providers> <add name="AspNetReadOnlyXmlRoleProvider" type="ReadOnlyXmlRoleProvider, ReadOnlyXmlRoleProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=6ae538083776793b" description="Read-only XML role provider" xmlFileName="~/App_Data/Users.xml" /> </providers> </roleManager> <authentication mode="Forms" /> </system.web> <connectionStrings> <add name="RavenDBServer" connectionString="Url=http://localhost:8080;Database=OpenAntrag"/> </connectionStrings> <appSettings> <add key="SendMail" value="False"/> <add key="SendTweets" value="False"/> <add key="SendPushoverNotification" value="False"/> <add key="DefaultPagerListPageSize" value="25"/> <add key="DefaultPagerListWingLength" value="10"/> <add key="RandomKey_AllowCapitalLetters" value="False"/> <add key="RandomKey_Letters " value="abcdefghijklmnopqrstuvwxyz"/> <add key="RandomKey_Numbers " value="0123456789"/> <add key="NotificationPageCount" value="25"/> <add key="ProposalListCount" value="25"/> </appSettings> </configuration>
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:
Veröffentlichen der Anwendung auf einem Server (ohne Entwicklungsumgebung). Erfolgreich getestet mit einem Windows 7 mit IIS.
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319 aspnet_regiis -i
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.
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
Ein Nachbau könnte im Stil von Openslides erstellt werden:
Damit könnte ggf. auch eine Interoperabilität geschaffen werden?