diff --git a/.gitignore b/.gitignore
index 60434a88..6413e521 100644
--- a/.gitignore
+++ b/.gitignore
@@ -58,4 +58,8 @@ Output/Vocaluxe_x64.exe
/WebserverInitalConfig/bin/Release
/Output/Photos
/Output/Screenshots
-/Output/Website
\ No newline at end of file
+/Output/Website
+/Output/VocaluxeServerConfig.exe
+/Output/VocaluxeServerConfig.exe.config
+/PhoneGap/
+/Output/Profiles
diff --git a/ClientServerLib/ClientServerLib/CDiscover.cs b/ClientServerLib/ClientServerLib/CDiscover.cs
index ba327e2d..9dd5aa3d 100644
--- a/ClientServerLib/ClientServerLib/CDiscover.cs
+++ b/ClientServerLib/ClientServerLib/CDiscover.cs
@@ -1,4 +1,21 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
@@ -10,116 +27,115 @@ using System.Timers;
namespace ServerLib
{
- public delegate void OnServerDiscovered(string IPAddress, string Hostname);
+ public delegate void OnServerDiscovered(string IPAddress, string Hostname);
- public class CDiscover
- {
- public static readonly string sTimeout = "Timeout";
- public static readonly string sFinished = "Finished";
+ public class CDiscover
+ {
+ public static readonly string sTimeout = "Timeout";
+ public static readonly string sFinished = "Finished";
- private string _Keyword;
- private string _BroadcastAddress;
- private int _Port;
+ private string _Keyword;
+ private string _BroadcastAddress;
+ private int _Port;
- private Thread _DiscoverThread;
- private bool _DiscoverRunning;
- private OnServerDiscovered _OnDiscovered;
+ private Thread _DiscoverThread;
+ private bool _DiscoverRunning;
+ private OnServerDiscovered _OnDiscovered;
+ private System.Timers.Timer _BroadcastTimer;
- private System.Timers.Timer _BroadcastTimer;
+ public CDiscover(int Port, string Keyword, string BroadcastAddress = "255.255.255.255")
+ {
+ _BroadcastAddress = BroadcastAddress;
+ _Port = Port;
+ _Keyword = Keyword;
- public CDiscover(int Port, string Keyword, string BroadcastAddress = "255.255.255.255")
- {
- _BroadcastAddress = BroadcastAddress;
- _Port = Port;
- _Keyword = Keyword;
+ _DiscoverRunning = false;
+ _BroadcastTimer = new System.Timers.Timer();
+ _BroadcastTimer.Elapsed += OnBroadcastEvent;
+ _BroadcastTimer.Interval = 2500;
+ }
- _DiscoverRunning = false;
- _BroadcastTimer = new System.Timers.Timer();
- _BroadcastTimer.Elapsed += new ElapsedEventHandler(OnBroadcastEvent);
- _BroadcastTimer.Interval = 2500;
- }
+ public void StartBroadcasting()
+ {
+ _BroadcastTimer.Start();
+ }
- public void StartBroadcasting()
- {
- _BroadcastTimer.Start();
- }
+ public void Stop()
+ {
+ _BroadcastTimer.Stop();
+ _DiscoverRunning = false;
+ }
- public void Stop()
- {
- _BroadcastTimer.Stop();
- _DiscoverRunning = false;
- }
+ public void Discover(OnServerDiscovered OnDiscovered, int Timeout = 5000)
+ {
+ if (_DiscoverRunning)
+ return;
- public void Discover(OnServerDiscovered OnDiscovered, int Timeout = 5000)
- {
- if (_DiscoverRunning)
- return;
+ _DiscoverRunning = true;
+ _DiscoverThread = new Thread(() => _Discover(Timeout));
+ _OnDiscovered = OnDiscovered;
+ _DiscoverThread.Start();
+ }
- _DiscoverRunning = true;
- _DiscoverThread = new Thread(() => _Discover(Timeout));
- _OnDiscovered = OnDiscovered;
- _DiscoverThread.Start();
- }
+ private void OnBroadcastEvent(object source, ElapsedEventArgs e)
+ {
+ Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
+ s.EnableBroadcast = true;
+ IPAddress broadcast = IPAddress.Parse(_BroadcastAddress);
+ byte[] sendbuf = Encoding.UTF8.GetBytes(_Keyword);
+ IPEndPoint ep = new IPEndPoint(broadcast, _Port);
- private void OnBroadcastEvent(object source, ElapsedEventArgs e)
- {
- Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
- s.EnableBroadcast = true;
- IPAddress broadcast = IPAddress.Parse(_BroadcastAddress);
- byte[] sendbuf = Encoding.UTF8.GetBytes(_Keyword);
- IPEndPoint ep = new IPEndPoint(broadcast, _Port);
+ s.SendTo(sendbuf, ep);
+ s.Close();
+ }
- s.SendTo(sendbuf, ep);
- s.Close();
- }
+ private void _Discover(int Timeout)
+ {
+ UdpClient listener = null;
+ Stopwatch timer = new Stopwatch();
- private void _Discover(int Timeout)
- {
- UdpClient listener = null;
- Stopwatch timer = new Stopwatch();
+ List knownServer = new List();
+ bool foundSomething = false;
+ timer.Start();
+ while (_DiscoverRunning && timer.ElapsedMilliseconds < Timeout * 2)
+ {
+ try
+ {
+ listener = new UdpClient(_Port);
+ IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, _Port);
+ listener.Client.ReceiveTimeout = Timeout;
- List knownServer = new List();
- bool foundSomething = false;
- timer.Start();
- while (_DiscoverRunning && timer.ElapsedMilliseconds < Timeout * 2)
- {
- try
- {
- listener = new UdpClient(_Port);
- IPEndPoint groupEP = new IPEndPoint(IPAddress.Any, _Port);
- listener.Client.ReceiveTimeout = Timeout;
+ byte[] bytes = listener.Receive(ref groupEP);
+ string message = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
- byte[] bytes = listener.Receive(ref groupEP);
- string message = Encoding.UTF8.GetString(bytes, 0, bytes.Length);
+ foundSomething = true;
+ if (!knownServer.Contains(groupEP.Address.ToString()))
+ {
+ knownServer.Add(groupEP.Address.ToString());
+ if (_OnDiscovered != null)
+ {
+ IPHostEntry e = Dns.GetHostEntry(groupEP.Address);
+ string hostname = e.HostName;
- foundSomething = true;
- if (!knownServer.Contains(groupEP.Address.ToString()))
- {
- knownServer.Add(groupEP.Address.ToString());
- if (_OnDiscovered != null)
- {
- IPHostEntry e = Dns.GetHostEntry(groupEP.Address);
- string hostname = e.HostName;
+ _OnDiscovered(groupEP.Address.ToString(), hostname);
+ }
+ }
- _OnDiscovered(groupEP.Address.ToString(), hostname);
- }
- }
+ listener.Close();
+ }
+ catch (Exception)
+ {
+ if (listener != null)
+ listener.Close();
+ }
+ }
+ _DiscoverRunning = false;
- listener.Close();
- }
- catch (Exception)
- {
- if (listener != null)
- listener.Close();
- }
- }
- _DiscoverRunning = false;
-
- if (!foundSomething)
- _OnDiscovered(sTimeout, String.Empty);
- else
- _OnDiscovered(sFinished, String.Empty);
- }
- }
-}
+ if (!foundSomething)
+ _OnDiscovered(sTimeout, String.Empty);
+ else
+ _OnDiscovered(sFinished, String.Empty);
+ }
+ }
+}
\ No newline at end of file
diff --git a/ClientServerLib/ClientServerLib/CServer.cs b/ClientServerLib/ClientServerLib/CServer.cs
index ac50a6d5..ab704a95 100644
--- a/ClientServerLib/ClientServerLib/CServer.cs
+++ b/ClientServerLib/ClientServerLib/CServer.cs
@@ -1,4 +1,21 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Diagnostics;
@@ -10,194 +27,66 @@ namespace ServerLib
{
private ServiceHost _Host;
private Uri _BaseAddress;
- private bool _Encrypted = false;
+ private bool _Encrypted;
- private static SendKeyEventDelegate _SendKeyEvent;
- public static SendKeyEventDelegate SendKeyEvent
- {
- internal get { return CServer._SendKeyEvent; }
- set { CServer._SendKeyEvent = value; }
- }
+ public static SendKeyEventDelegate SendKeyEvent { internal get; set; }
#region profile
+ public static GetProfileDataDelegate GetProfileData { internal get; set; }
- private static GetProfileDataDelegate _GetProfileData;
- public static GetProfileDataDelegate GetProfileData
- {
- internal get { return CServer._GetProfileData; }
- set { CServer._GetProfileData = value; }
- }
-
- private static SendProfileDataDelegate _SendProfileData;
- public static SendProfileDataDelegate SendProfileData
- {
- internal get { return CServer._SendProfileData; }
- set { CServer._SendProfileData = value; }
- }
-
- private static GetProfileListDelegate _GetProfileList;
- public static GetProfileListDelegate GetProfileList
- {
- internal get { return CServer._GetProfileList; }
- set { CServer._GetProfileList = value; }
- }
+ public static SendProfileDataDelegate SendProfileData { internal get; set; }
+ public static GetProfileListDelegate GetProfileList { internal get; set; }
#endregion
#region photo
- private static SendPhotoDelegate _SendPhoto;
- public static SendPhotoDelegate SendPhoto
- {
- get { return CServer._SendPhoto; }
- set { CServer._SendPhoto = value; }
- }
-
+ public static SendPhotoDelegate SendPhoto { get; set; }
#endregion
#region website
+ public static GetSiteFileDelegate GetSiteFile { internal get; set; }
- private static GetSiteFileDelegate _GetSiteFile;
- public static GetSiteFileDelegate GetSiteFile
- {
- internal get { return CServer._GetSiteFile; }
- set { CServer._GetSiteFile = value; }
- }
-
- private static GetDelayedImageDelegate _GetDelayedImage;
- public static GetDelayedImageDelegate GetDelayedImage
- {
- internal get { return CServer._GetDelayedImage; }
- set { CServer._GetDelayedImage = value; }
- }
-
+ public static GetDelayedImageDelegate GetDelayedImage { internal get; set; }
#endregion
#region songs
+ public static GetSongDelegate GetSong { internal get; set; }
- private static GetSongDelegate _GetSong;
- public static GetSongDelegate GetSong
- {
- internal get { return CServer._GetSong; }
- set { CServer._GetSong = value; }
- }
-
- private static GetAllSongsDelegate _GetAllSongs;
- public static GetAllSongsDelegate GetAllSongs
- {
- internal get { return CServer._GetAllSongs; }
- set { CServer._GetAllSongs = value; }
- }
-
- private static GetCurrentSongIdDelegate _GetCurrentSongId;
- public static GetCurrentSongIdDelegate GetCurrentSongId
- {
- internal get { return CServer._GetCurrentSongId; }
- set { CServer._GetCurrentSongId = value; }
- }
-
+ public static GetAllSongsDelegate GetAllSongs { internal get; set; }
+ public static GetCurrentSongIdDelegate GetCurrentSongId { internal get; set; }
#endregion
#region playlist
+ public static GetPlaylistsDelegate GetPlaylists { internal get; set; }
- private static GetPlaylistsDelegate _GetPlaylists;
- public static GetPlaylistsDelegate GetPlaylists
- {
- internal get { return _GetPlaylists; }
- set { _GetPlaylists = value; }
- }
+ public static GetPlaylistDelegate GetPlaylist { internal get; set; }
+ public static AddSongToPlaylistDelegate AddSongToPlaylist { internal get; set; }
- private static GetPlaylistDelegate _GetPlaylist;
- public static GetPlaylistDelegate GetPlaylist
- {
- internal get { return _GetPlaylist; }
- set { _GetPlaylist = value; }
- }
+ public static RemoveSongFromPlaylistDelegate RemoveSongFromPlaylist { internal get; set; }
- private static AddSongToPlaylistDelegate _AddSongToPlaylist;
- public static AddSongToPlaylistDelegate AddSongToPlaylist
- {
- internal get { return _AddSongToPlaylist; }
- set { _AddSongToPlaylist = value; }
- }
+ public static MoveSongInPlaylistDelegate MoveSongInPlaylist { internal get; set; }
- private static RemoveSongFromPlaylistDelegate _RemoveSongFromPlaylist;
- public static RemoveSongFromPlaylistDelegate RemoveSongFromPlaylist
- {
- internal get { return _RemoveSongFromPlaylist; }
- set { _RemoveSongFromPlaylist = value; }
- }
+ public static PlaylistContainsSongDelegate PlaylistContainsSong { internal get; set; }
- private static MoveSongInPlaylistDelegate _MoveSongInPlaylist;
- public static MoveSongInPlaylistDelegate MoveSongInPlaylist
- {
- internal get { return _MoveSongInPlaylist; }
- set { _MoveSongInPlaylist = value; }
- }
+ public static GetPlaylistSongsDelegate GetPlaylistSongs { internal get; set; }
- private static PlaylistContainsSongDelegate _PlaylistContainsSong;
- public static PlaylistContainsSongDelegate PlaylistContainsSong
- {
- internal get { return _PlaylistContainsSong; }
- set { _PlaylistContainsSong = value; }
- }
-
- private static GetPlaylistSongsDelegate _GetPlaylistSongs;
- public static GetPlaylistSongsDelegate GetPlaylistSongs
- {
- internal get { return _GetPlaylistSongs; }
- set { _GetPlaylistSongs = value; }
- }
-
- private static RemovePlaylistDelegate _RemovePlaylist;
- public static RemovePlaylistDelegate RemovePlaylist
- {
- internal get { return _RemovePlaylist; }
- set { _RemovePlaylist = value; }
- }
-
- private static AddPlaylistDelegate _AddPlaylist;
- public static AddPlaylistDelegate AddPlaylist
- {
- internal get { return _AddPlaylist; }
- set { _AddPlaylist = value; }
- }
+ public static RemovePlaylistDelegate RemovePlaylist { internal get; set; }
+ public static AddPlaylistDelegate AddPlaylist { internal get; set; }
#endregion
#region user management
+ public static ValidatePasswordDelegate ValidatePassword { internal get; set; }
- private static ValidatePasswordDelegate _ValidatePassword;
- public static ValidatePasswordDelegate ValidatePassword
- {
- internal get { return CServer._ValidatePassword; }
- set { CServer._ValidatePassword = value; }
- }
+ public static GetUserRoleDelegate GetUserRole { internal get; set; }
- private static GetUserRoleDelegate _GetUserRole;
- public static GetUserRoleDelegate GetUserRole
- {
- internal get { return CServer._GetUserRole; }
- set { CServer._GetUserRole = value; }
- }
+ public static SetUserRoleDelegate SetUserRole { internal get; set; }
- private static SetUserRoleDelegate _SetUserRole;
- public static SetUserRoleDelegate SetUserRole
- {
- internal get { return CServer._SetUserRole; }
- set { CServer._SetUserRole = value; }
- }
-
- private static GetUserIdFromUsernameDelegate _GetUserIdFromUsername;
- public static GetUserIdFromUsernameDelegate GetUserIdFromUsername
- {
- internal get { return CServer._GetUserIdFromUsername; }
- set { CServer._GetUserIdFromUsername = value; }
- }
-
+ public static GetUserIdFromUsernameDelegate GetUserIdFromUsername { internal get; set; }
#endregion
-
+
public CServer(int port, bool encrypted)
{
_Init(port, encrypted);
@@ -206,11 +95,11 @@ namespace ServerLib
public string GetBaseAddress()
{
return _BaseAddress.AbsoluteUri;
-
+
/*IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName());
foreach (IPAddress ip in ips)
{
- if (ip.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
+ if (ip.AddressFamily == AddressFamily.InterNetwork)
return ip.ToString();
}
return "";*/
@@ -222,32 +111,25 @@ namespace ServerLib
}
#region server control
-
private void _Init(int port, bool encrypted)
{
string hostname = Dns.GetHostName();
- if (encrypted)
- {
- _BaseAddress = new Uri("https://" + hostname + ":" + port + "/");
- }
- else
- {
- _BaseAddress = new Uri("http://" + hostname + ":" + port + "/");
- }
- this._Encrypted = encrypted;
+ string protocol = (encrypted) ? "https" : "http";
+ _BaseAddress = new Uri(protocol + "://" + hostname + ":" + port + "/");
+ _Encrypted = encrypted;
_Host = new WebServiceHost(typeof(CWebservice), _BaseAddress);
WebHttpBinding wb = new WebHttpBinding
- {
- MaxReceivedMessageSize = 10485760,
- MaxBufferSize = 10485760,
- MaxBufferPoolSize = 10485760,
- ReaderQuotas = { MaxStringContentLength = 10485760, MaxArrayLength = 10485760, MaxBytesPerRead = 10485760 }
- };
+ {
+ MaxReceivedMessageSize = 10485760,
+ MaxBufferSize = 10485760,
+ MaxBufferPoolSize = 10485760,
+ ReaderQuotas = {MaxStringContentLength = 10485760, MaxArrayLength = 10485760, MaxBytesPerRead = 10485760}
+ };
if (encrypted)
{
wb.Security.Mode = WebHttpSecurityMode.Transport;
- wb.Security.Transport = new HttpTransportSecurity { ClientCredentialType = HttpClientCredentialType.None };
+ wb.Security.Transport = new HttpTransportSecurity {ClientCredentialType = HttpClientCredentialType.None};
}
_Host.AddServiceEndpoint(typeof(ICWebservice), wb, "");
}
@@ -260,7 +142,7 @@ namespace ServerLib
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
smb.HttpGetEnabled = true;
host.Description.Behaviors.Add(smb);*/
-
+ _RegisterUrlAndCert(_BaseAddress.Port);
_Host.Open();
}
catch (CommunicationException e)
@@ -274,15 +156,13 @@ namespace ServerLib
_Init(_BaseAddress.Port, _Encrypted);
_Host.Open();
}
- catch (CommunicationException e2)
+ catch (CommunicationException)
{
_Host.Abort();
}
}
else
- {
_Host.Abort();
- }
}
}
@@ -292,7 +172,7 @@ namespace ServerLib
{
_Host.Close();
}
- catch (CommunicationException e)
+ catch (CommunicationException)
{
_Host.Abort();
}
@@ -303,29 +183,24 @@ namespace ServerLib
#if WIN
ProcessStartInfo info = new ProcessStartInfo
- {
- FileName = "VocaluxeServerConfig.exe",
- Arguments = port.ToString() + " " + (_Encrypted?"true":"false"),
- UseShellExecute = true,
- CreateNoWindow = true,
- WindowStyle = ProcessWindowStyle.Hidden,
- Verb = "runas"
- };
+ {
+ FileName = "VocaluxeServerConfig.exe",
+ Arguments = port + " " + (_Encrypted ? "true" : "false"),
+ UseShellExecute = true,
+ CreateNoWindow = true,
+ WindowStyle = ProcessWindowStyle.Hidden,
+ Verb = "runas"
+ };
Process p = Process.Start(info);
- if (p != null)
- {
- p.WaitForExit();
- p.Close();
- }
+ p.WaitForExit();
+ p.Close();
#else
- //Required?
+ //Required?
#endif
}
-
#endregion
-
}
-}
+}
\ No newline at end of file
diff --git a/ClientServerLib/ClientServerLib/CWebservice.cs b/ClientServerLib/ClientServerLib/CWebservice.cs
index 8da01ab2..97a8962c 100644
--- a/ClientServerLib/ClientServerLib/CWebservice.cs
+++ b/ClientServerLib/ClientServerLib/CWebservice.cs
@@ -1,4 +1,21 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
using System.Net;
using System.ServiceModel;
using System.ServiceModel.Web;
@@ -15,42 +32,33 @@ namespace ServerLib
string sessionHeader =
((HttpRequestMessageProperty)OperationContext.Current.IncomingMessageProperties["httpRequest"]).Headers["session"];
if (string.IsNullOrEmpty(sessionHeader))
- {
return sessionKey;
- }
try
{
sessionKey = Guid.Parse(sessionHeader);
}
- catch (Exception e)
- {
- }
+ catch (Exception) {}
return sessionKey;
}
public void SendKeyEvent(string key)
{
if (!_CheckRight(EUserRights.UseKeyboard))
- {
return;
- }
if (CServer.SendKeyEvent == null)
{
if (WebOperationContext.Current != null)
{
- WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.NotFound;
+ WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NotFound;
WebOperationContext.Current.OutgoingResponse.StatusDescription = "Not found";
}
}
else
- {
CServer.SendKeyEvent(key);
- }
}
#region profile
-
public int GetOwnProfileId()
{
Guid sessionKey = _GetSession();
@@ -58,7 +66,7 @@ namespace ServerLib
{
if (WebOperationContext.Current != null)
{
- WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Forbidden;
+ WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Forbidden;
WebOperationContext.Current.OutgoingResponse.StatusDescription = "No session";
}
return -1;
@@ -68,7 +76,7 @@ namespace ServerLib
{
if (WebOperationContext.Current != null)
{
- WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Forbidden;
+ WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Forbidden;
WebOperationContext.Current.OutgoingResponse.StatusDescription = "No session";
}
return -1;
@@ -82,18 +90,16 @@ namespace ServerLib
if (profile.ProfileId != -1) //-1 is the id for a new profile
{
- if (CSessionControl.GetUserIdFromSession(sessionKey) != profile.ProfileId
- && !(_CheckRight(EUserRights.EditAllProfiles) ))
- {
+ if (CSessionControl.GetUserIdFromSession(sessionKey) != profile.ProfileId
+ && !(_CheckRight(EUserRights.EditAllProfiles)))
return;
- }
}
if (CServer.SendProfileData == null)
{
if (WebOperationContext.Current != null)
{
- WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.NotFound;
+ WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NotFound;
WebOperationContext.Current.OutgoingResponse.StatusDescription = "Not found";
}
return;
@@ -108,9 +114,7 @@ namespace ServerLib
if (_CheckRight(EUserRights.ViewOtherProfiles) || CSessionControl.GetUserIdFromSession(sessionKey) == profileId)
{
if (CServer.GetProfileData == null)
- {
return new SProfileData();
- }
bool isReadonly = (!CSessionControl.RequestRight(sessionKey, EUserRights.EditAllProfiles) &&
CSessionControl.GetUserIdFromSession(sessionKey) != profileId);
@@ -118,36 +122,26 @@ namespace ServerLib
return CServer.GetProfileData(profileId, isReadonly);
}
else
- {
return new SProfileData();
- }
}
public SProfileData[] GetProfileList()
{
if (CServer.GetProfileList == null)
- {
- return new SProfileData[] { };
- }
+ return new SProfileData[] {};
return CServer.GetProfileList();
}
-
#endregion
#region photo
-
public void SendPhoto(SPhotoData photo)
{
if (_CheckRight(EUserRights.UploadPhotos))
- {
CServer.SendPhoto(photo);
- }
}
-
#endregion
#region website
-
public Guid Login(string username, string password)
{
Guid sessionId = CSessionControl.OpenSession(username, password);
@@ -155,7 +149,7 @@ namespace ServerLib
{
if (WebOperationContext.Current != null)
{
- WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Forbidden;
+ WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Forbidden;
WebOperationContext.Current.OutgoingResponse.StatusDescription = "Wrong username or password";
}
}
@@ -165,9 +159,7 @@ namespace ServerLib
public Stream Index()
{
if (WebOperationContext.Current != null)
- {
WebOperationContext.Current.OutgoingResponse.ContentType = "text/html";
- }
return new MemoryStream(CServer.GetSiteFile("index.html"));
}
@@ -186,14 +178,10 @@ namespace ServerLib
byte[] data = CServer.GetSiteFile("js/" + filename);
if (data != null)
- {
return new MemoryStream(data);
- }
if (WebOperationContext.Current != null)
- {
- WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.NotFound;
- }
+ WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NotFound;
return null;
}
@@ -211,13 +199,9 @@ namespace ServerLib
byte[] data = CServer.GetSiteFile("css/" + filename);
if (data != null)
- {
return new MemoryStream(data);
- }
if (WebOperationContext.Current != null)
- {
- WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.NotFound;
- }
+ WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NotFound;
return null;
}
@@ -235,13 +219,9 @@ namespace ServerLib
byte[] data = CServer.GetSiteFile("css\\images\\" + filename);
if (data != null)
- {
return new MemoryStream(data);
- }
if (WebOperationContext.Current != null)
- {
- WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.NotFound;
- }
+ WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NotFound;
return null;
}
@@ -259,13 +239,9 @@ namespace ServerLib
byte[] data = CServer.GetSiteFile("img/" + filename);
if (data != null)
- {
return new MemoryStream(data);
- }
if (WebOperationContext.Current != null)
- {
- WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.NotFound;
- }
+ WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NotFound;
return null;
}
@@ -283,14 +259,10 @@ namespace ServerLib
byte[] data = CServer.GetSiteFile("locales/" + filename);
if (data != null)
- {
return new MemoryStream(data);
- }
if (WebOperationContext.Current != null)
- {
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.NotFound;
- }
return null;
}
@@ -303,11 +275,9 @@ namespace ServerLib
{
return true;
}
-
#endregion
#region songs
-
public SSongInfo GetSong(int songId)
{
return CServer.GetSong(songId);
@@ -325,7 +295,6 @@ namespace ServerLib
#endregion
#region playlist
-
public SPlaylistInfo[] GetPlaylists()
{
return CServer.GetPlaylists();
@@ -339,25 +308,19 @@ namespace ServerLib
public void AddSongToPlaylist(int songId, int playlistId, bool allowDuplicates)
{
if (_CheckRight(EUserRights.AddSongToPlaylist))
- {
CServer.AddSongToPlaylist(songId, playlistId, allowDuplicates);
- }
}
public void RemoveSongFromPlaylist(int position, int playlistId, int songId)
{
if (_CheckRight(EUserRights.RemoveSongsFromPlaylists))
- {
CServer.RemoveSongFromPlaylist(position, playlistId, songId);
- }
}
public void MoveSongInPlaylist(int newPosition, int playlistId, int songId)
{
if (_CheckRight(EUserRights.ReorderPlaylists))
- {
CServer.MoveSongInPlaylist(newPosition, playlistId, songId);
- }
}
public bool PlaylistContainsSong(int songId, int playlistId)
@@ -373,24 +336,18 @@ namespace ServerLib
public void RemovePlaylist(int playlistId)
{
if (_CheckRight(EUserRights.DeletePlaylists))
- {
CServer.RemovePlaylist(playlistId);
- }
}
public int AddPlaylist(string playlistName)
{
if (_CheckRight(EUserRights.CreatePlaylists))
- {
return CServer.AddPlaylist(playlistName);
- }
return -1;
}
-
#endregion
#region user management
-
public int GetUserRole(int profileId)
{
return CServer.GetUserRole(profileId);
@@ -399,11 +356,9 @@ namespace ServerLib
public void SetUserRole(int profileId, int userRole)
{
if (_CheckRight(EUserRights.EditAllProfiles))
- {
CServer.SetUserRole(profileId, userRole);
- }
}
-
+
public bool HasUserRight(int right)
{
return _CheckRightWithNoErrorMessage((EUserRights)right);
@@ -417,7 +372,7 @@ namespace ServerLib
{
if (WebOperationContext.Current != null)
{
- WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Forbidden;
+ WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Forbidden;
WebOperationContext.Current.OutgoingResponse.StatusDescription = "No session";
}
return false;
@@ -427,7 +382,7 @@ namespace ServerLib
{
if (WebOperationContext.Current != null)
{
- WebOperationContext.Current.OutgoingResponse.StatusCode = System.Net.HttpStatusCode.Forbidden;
+ WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Forbidden;
WebOperationContext.Current.OutgoingResponse.StatusDescription = "Not allowed";
}
return false;
@@ -440,19 +395,13 @@ namespace ServerLib
Guid sessionKey = _GetSession();
if (sessionKey == Guid.Empty)
- {
return false;
- }
if (!CSessionControl.RequestRight(sessionKey, requestedRight))
- {
return false;
- }
return true;
}
-
#endregion
-
}
-}
+}
\ No newline at end of file
diff --git a/ClientServerLib/ClientServerLib/DataStructs.cs b/ClientServerLib/ClientServerLib/DataStructs.cs
index cf52fd80..4d4bbed7 100644
--- a/ClientServerLib/ClientServerLib/DataStructs.cs
+++ b/ClientServerLib/ClientServerLib/DataStructs.cs
@@ -1,4 +1,21 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
using System.Linq;
using System.Runtime.Serialization;
using System.Drawing;
@@ -10,64 +27,49 @@ namespace ServerLib
{
public delegate bool SendKeyEventDelegate(string key);
-
#region profile
-
public delegate SProfileData GetProfileDataDelegate(int profileId, bool isReadonly);
+
public delegate bool SendProfileDataDelegate(SProfileData profile);
+
public delegate SProfileData[] GetProfileListDelegate();
[DataContract]
public struct SProfileData
{
- [DataMember]
- public CBase64Image Avatar;
- [DataMember]
- public string PlayerName;
- [DataMember]
- public int Type;
- [DataMember]
- public int Difficulty;
- [DataMember]
- public int ProfileId;
- [DataMember]
- public bool IsEditable;
- [DataMember]
- public string Password;
+ [DataMember] public CBase64Image Avatar;
+ [DataMember] public string PlayerName;
+ [DataMember] public int Type;
+ [DataMember] public int Difficulty;
+ [DataMember] public int ProfileId;
+ [DataMember] public bool IsEditable;
+ [DataMember] public string Password;
}
-
#endregion
#region photo
-
public delegate bool SendPhotoDelegate(SPhotoData photo);
[DataContract]
public struct SPhotoData
{
- [DataMember]
- public CBase64Image Photo;
+ [DataMember] public CBase64Image Photo;
//Add infomation about the user who took this image??
}
-
#endregion
#region website
-
public delegate byte[] GetSiteFileDelegate(string filename);
public delegate CBase64Image GetDelayedImageDelegate(string hashedFilename);
-
#endregion
[DataContract]
public class CBase64Image
{
- [DataMember]
- private string base64Data = "";
+ [DataMember] private string base64Data = "";
- [DataMember]
- private string imageId = "";
+ [DataMember] private string imageId = "";
public CBase64Image(Image img, ImageFormat format)
{
@@ -97,28 +99,21 @@ namespace ServerLib
Match match = Regex.Match(base64Data, "(?<=data:image/)[a-zA-Z]+(?=;base64)");
return match.Success ? match.Groups[0].Value : "";
}
-
-
}
#region songs
-
public delegate SSongInfo GetSongDelegate(int songId);
public delegate SSongInfo[] GetAllSongsDelegate();
public delegate int GetCurrentSongIdDelegate();
-
-
+
[DataContract]
public struct SSongInfo
{
- [DataMember]
- public string Title;
- [DataMember]
- public string Artist;
- [DataMember]
- public CBase64Image Cover;
+ [DataMember] public string Title;
+ [DataMember] public string Artist;
+ [DataMember] public CBase64Image Cover;
[DataMember]
public string Genre { get; set; }
[DataMember]
@@ -130,7 +125,6 @@ namespace ServerLib
[DataMember]
public int SongId { get; set; }
}
-
#endregion
#region playlists
@@ -155,33 +149,23 @@ namespace ServerLib
[DataContract]
public struct SPlaylistSongInfo
{
- [DataMember]
- public SSongInfo Song;
- [DataMember]
- public int PlaylistId;
- [DataMember]
- public int PlaylistPosition;
- [DataMember]
- public int GameMode;
+ [DataMember] public SSongInfo Song;
+ [DataMember] public int PlaylistId;
+ [DataMember] public int PlaylistPosition;
+ [DataMember] public int GameMode;
}
-
+
[DataContract]
public struct SPlaylistInfo
{
- [DataMember]
- public int PlaylistId;
- [DataMember]
- public string PlaylistName;
- [DataMember]
- public int SongCount;
- [DataMember]
- public string LastChanged;
+ [DataMember] public int PlaylistId;
+ [DataMember] public string PlaylistName;
+ [DataMember] public int SongCount;
+ [DataMember] public string LastChanged;
}
-
#endregion
#region user management
-
public delegate void SetPasswordDelegate(int profileId, string newPassword);
public delegate bool ValidatePasswordDelegate(int profileId, string password);
@@ -191,6 +175,5 @@ namespace ServerLib
public delegate void SetUserRoleDelegate(int profileId, int userRole);
public delegate int GetUserIdFromUsernameDelegate(string username);
-
#endregion
-}
+}
\ No newline at end of file
diff --git a/ClientServerLib/ClientServerLib/ICWebservice.cs b/ClientServerLib/ClientServerLib/ICWebservice.cs
index 3e79d8ce..38f1d5d0 100644
--- a/ClientServerLib/ClientServerLib/ICWebservice.cs
+++ b/ClientServerLib/ClientServerLib/ICWebservice.cs
@@ -1,4 +1,21 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
using System.IO;
using System.ServiceModel;
using System.ServiceModel.Web;
@@ -8,207 +25,195 @@ namespace ServerLib
[ServiceContract]
public interface ICWebservice
{
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/sendKeyEvent?key={key}")]
+
void SendKeyEvent(string key);
#region profile
-
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/getOwnProfileId")]
+
int GetOwnProfileId();
- [OperationContract]
- [WebInvoke(Method = "POST",
+ [OperationContract, WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/sendProfile")]
+
void SendProfile(SProfileData profile);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/getProfile?profileId={profileId}")]
+
SProfileData GetProfile(int profileId);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/getProfileList")]
+
SProfileData[] GetProfileList();
-
#endregion
#region photo
-
- [OperationContract]
- [WebInvoke(Method = "POST",
+ [OperationContract, WebInvoke(Method = "POST",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/sendPhoto")]
+
void SendPhoto(SPhotoData photo);
-
#endregion
#region website
-
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/login?username={username}&password={password}")]
+
Guid Login(string username, string password);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "")]
+
Stream Index();
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/js/{filename}")]
+
Stream GetJsFile(String filename);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/css/{filename}")]
+
Stream GetCssFile(String filename);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/css/images/{filename}")]
+
Stream GetCssImageFile(String filename);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/img/{filename}")]
+
Stream GetImgFile(String filename);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/locales/{filename}")]
+
Stream GetLocaleFile(String filename);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/delayedImage?id={id}")]
+
CBase64Image GetDelayedImage(String id);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/isServerOnline")]
+
bool IsServerOnline();
-
#endregion
#region songs
-
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/getSong?songId={songId}")]
+
SSongInfo GetSong(int songId);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/getCurrentSongId")]
+
int GetCurrentSongId();
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/getAllSongs")]
+
SSongInfo[] GetAllSongs();
-
#endregion
#region playlist
-
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/getPlaylists")]
+
SPlaylistInfo[] GetPlaylists();
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/getPlaylist?id={playlistId}")]
+
SPlaylistInfo GetPlaylist(int playlistId);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/addSongToPlaylist?songId={songId}&playlistId={playlistId}&duplicates={allowDuplicates}")]
+
void AddSongToPlaylist(int songId, int playlistId, bool allowDuplicates);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/removeSongFromPlaylist?position={position}&playlistId={playlistId}&songId={songId}")]
+
void RemoveSongFromPlaylist(int position, int playlistId, int songId);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/moveSongInPlaylist?newPosition={newPosition}&playlistId={playlistId}&songId={songId}")]
+
void MoveSongInPlaylist(int newPosition, int playlistId, int songId);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/playlistContainsSong?songId={songId}&playlistId={playlistId}")]
+
bool PlaylistContainsSong(int songId, int playlistId);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/getPlaylistSongs?playlistId={playlistId}")]
+
SPlaylistSongInfo[] GetPlaylistSongs(int playlistId);
[OperationContract, WebInvoke(Method = "GET",
- ResponseFormat = WebMessageFormat.Json,
- UriTemplate = "/removePlaylist?playlistId={playlistId}")]
+ ResponseFormat = WebMessageFormat.Json,
+ UriTemplate = "/removePlaylist?playlistId={playlistId}")]
void RemovePlaylist(int playlistId);
[OperationContract, WebInvoke(Method = "GET",
- ResponseFormat = WebMessageFormat.Json,
- UriTemplate = "/addPlaylist?playlistName={playlistName}")]
+ ResponseFormat = WebMessageFormat.Json,
+ UriTemplate = "/addPlaylist?playlistName={playlistName}")]
int AddPlaylist(string playlistName);
-
#endregion
#region user management
-
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/getUserRole?profileId={profileId}")]
+
int GetUserRole(int profileId);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/setUserRole?profileId={profileId}&userRole={userRole}")]
+
void SetUserRole(int profileId, int userRole);
- [OperationContract]
- [WebInvoke(Method = "GET",
+ [OperationContract, WebInvoke(Method = "GET",
ResponseFormat = WebMessageFormat.Json,
UriTemplate = "/hasUserRight?right={right}")]
+
bool HasUserRight(int right);
-
#endregion
}
}
\ No newline at end of file
diff --git a/ClientServerLib/ClientServerLib/Properties/AssemblyInfo.cs b/ClientServerLib/ClientServerLib/Properties/AssemblyInfo.cs
index 64cd33c7..fe3863d2 100644
--- a/ClientServerLib/ClientServerLib/Properties/AssemblyInfo.cs
+++ b/ClientServerLib/ClientServerLib/Properties/AssemblyInfo.cs
@@ -1,10 +1,28 @@
-using System.Reflection;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Allgemeine Informationen über eine Assembly werden über die folgenden
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
// die mit einer Assembly verknüpft sind.
+
[assembly: AssemblyTitle("ClientServerLib")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
@@ -17,9 +35,11 @@ using System.Runtime.InteropServices;
// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar
// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von
// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest.
+
[assembly: ComVisible(false)]
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
+
[assembly: Guid("53f89645-1948-420f-b64a-7dc705ca8820")]
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
@@ -32,5 +52,6 @@ using System.Runtime.InteropServices;
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
+
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
\ No newline at end of file
diff --git a/ClientServerLib/ClientServerLib/Session.cs b/ClientServerLib/ClientServerLib/Session.cs
index b482fe53..ad0f612f 100644
--- a/ClientServerLib/ClientServerLib/Session.cs
+++ b/ClientServerLib/ClientServerLib/Session.cs
@@ -1,22 +1,39 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
namespace ServerLib
{
- internal class CSession
+ class CSession
{
- readonly Guid _ID;
+ private readonly Guid _ID;
public Guid Id
{
get { return _ID; }
}
- readonly int _ProfileId;
+ private readonly int _ProfileId;
public int ProfileId
{
get { return _ProfileId; }
}
- readonly EUserRoles _Roles;
+ private readonly EUserRoles _Roles;
internal EUserRoles Roles
{
get { return _Roles; }
@@ -24,9 +41,9 @@ namespace ServerLib
public CSession(Guid id, int profileId, EUserRoles roles)
{
- this._ID = id;
- this._ProfileId = profileId;
- this._Roles = roles;
+ _ID = id;
+ _ProfileId = profileId;
+ _Roles = roles;
}
}
-}
+}
\ No newline at end of file
diff --git a/ClientServerLib/ClientServerLib/SessionControl.cs b/ClientServerLib/ClientServerLib/SessionControl.cs
index eee8fc2a..80bd2e66 100644
--- a/ClientServerLib/ClientServerLib/SessionControl.cs
+++ b/ClientServerLib/ClientServerLib/SessionControl.cs
@@ -1,19 +1,34 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
using System.Collections.Generic;
using System.Linq;
namespace ServerLib
{
- internal static class CSessionControl
+ static class CSessionControl
{
private static readonly Dictionary _ActiveSessions = new Dictionary();
public static Guid OpenSession(string userName, string password)
{
if (!_ValidateUserAndPassword(userName, password))
- {
return Guid.Empty;
- }
Guid newId = Guid.NewGuid();
int id = _GetProfileIdFormUsername(userName);
@@ -42,27 +57,23 @@ namespace ServerLib
internal static void InvalidateSessions(int profileId)
{
- foreach (var s in (from kv in _ActiveSessions
- where kv.Value.ProfileId == profileId
- select kv).ToList())
- {
+ foreach (KeyValuePair s in (from kv in _ActiveSessions
+ where kv.Value.ProfileId == profileId
+ select kv).ToList())
_ActiveSessions.Remove(s.Key);
- }
}
internal static bool RequestRight(Guid sessionId, EUserRights requestedRight)
{
return ((CUserRoleControl.GetUserRightsFromUserRole(_ActiveSessions[sessionId].Roles)
- .HasFlag(requestedRight)));
+ .HasFlag(requestedRight)));
}
internal static int GetUserIdFromSession(Guid sessionId)
{
if (!_ActiveSessions.ContainsKey(sessionId))
- {
return -1;
- }
return _ActiveSessions[sessionId].ProfileId;
}
}
-}
+}
\ No newline at end of file
diff --git a/ClientServerLib/ClientServerLib/UserRights.cs b/ClientServerLib/ClientServerLib/UserRights.cs
index d5d71fbe..56b42d81 100644
--- a/ClientServerLib/ClientServerLib/UserRights.cs
+++ b/ClientServerLib/ClientServerLib/UserRights.cs
@@ -1,9 +1,26 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
namespace ServerLib
{
[Flags]
- internal enum EUserRights
+ enum EUserRights
{
None = 0,
EditAllProfiles = 1,
@@ -16,4 +33,4 @@ namespace ServerLib
DeletePlaylists = 128,
RemoveSongsFromPlaylists = 256
}
-}
+}
\ No newline at end of file
diff --git a/ClientServerLib/ClientServerLib/UserRoleControl.cs b/ClientServerLib/ClientServerLib/UserRoleControl.cs
index 8bff242a..a66212d3 100644
--- a/ClientServerLib/ClientServerLib/UserRoleControl.cs
+++ b/ClientServerLib/ClientServerLib/UserRoleControl.cs
@@ -1,46 +1,77 @@
-using System.Collections.Generic;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System.Collections.Generic;
using System.Linq;
namespace ServerLib
{
- internal static class CUserRoleControl
+ static class CUserRoleControl
{
- private static readonly Dictionary _RoleRightsMapping = new Dictionary {
- {EUserRoles.TR_USERROLE_ADMIN,
- (EUserRights.EditAllProfiles|
- EUserRights.UploadPhotos|
- EUserRights.ViewOtherProfiles|
- EUserRights.UseKeyboard|
- EUserRights.AddSongToPlaylist|
- EUserRights.ReorderPlaylists|
- EUserRights.CreatePlaylists|
- EUserRights.DeletePlaylists|
- EUserRights.RemoveSongsFromPlaylists)},
- {EUserRoles.TR_USERROLE_GUEST,
- EUserRights.None},
- {EUserRoles.TR_USERROLE_NORMAL,
- (EUserRights.UploadPhotos|
- EUserRights.ViewOtherProfiles)},
- {EUserRoles.TR_USERROLE_KEYBOARDUSER,
- EUserRights.UseKeyboard},
- {EUserRoles.TR_USERROLE_ADDSONGSUSER,
- EUserRights.AddSongToPlaylist},
- {EUserRoles.TR_USERROLE_PLAYLISTEDITOR,
- (EUserRights.AddSongToPlaylist|
- EUserRights.ReorderPlaylists|
- EUserRights.CreatePlaylists|
- EUserRights.DeletePlaylists|
- EUserRights.RemoveSongsFromPlaylists)},
- {EUserRoles.TR_USERROLE_PROFILEEDITOR,
- EUserRights.EditAllProfiles}
- };
-
+ private static readonly Dictionary _RoleRightsMapping = new Dictionary
+ {
+ {
+ EUserRoles.TR_USERROLE_ADMIN,
+ (EUserRights.EditAllProfiles |
+ EUserRights.UploadPhotos |
+ EUserRights.ViewOtherProfiles |
+ EUserRights.UseKeyboard |
+ EUserRights.AddSongToPlaylist |
+ EUserRights.ReorderPlaylists |
+ EUserRights.CreatePlaylists |
+ EUserRights.DeletePlaylists |
+ EUserRights.RemoveSongsFromPlaylists)
+ },
+ {
+ EUserRoles.TR_USERROLE_GUEST,
+ EUserRights.None
+ },
+ {
+ EUserRoles.TR_USERROLE_NORMAL,
+ (EUserRights.UploadPhotos |
+ EUserRights.ViewOtherProfiles)
+ },
+ {
+ EUserRoles.TR_USERROLE_KEYBOARDUSER,
+ EUserRights.UseKeyboard
+ },
+ {
+ EUserRoles.TR_USERROLE_ADDSONGSUSER,
+ EUserRights.AddSongToPlaylist
+ },
+ {
+ EUserRoles.TR_USERROLE_PLAYLISTEDITOR,
+ (EUserRights.AddSongToPlaylist |
+ EUserRights.ReorderPlaylists |
+ EUserRights.CreatePlaylists |
+ EUserRights.DeletePlaylists |
+ EUserRights.RemoveSongsFromPlaylists)
+ },
+ {
+ EUserRoles.TR_USERROLE_PROFILEEDITOR,
+ EUserRights.EditAllProfiles
+ }
+ };
internal static EUserRights GetUserRightsFromUserRole(EUserRoles userRole)
{
return _RoleRightsMapping.Where(role => userRole.HasFlag(role.Key))
- .Select(role => role.Value)
- .Aggregate(EUserRights.None, (current, r) => current | r);
+ .Select(role => role.Value)
+ .Aggregate(EUserRights.None, (current, r) => current | r);
}
}
-}
+}
\ No newline at end of file
diff --git a/ClientServerLib/ClientServerLib/UserRoles.cs b/ClientServerLib/ClientServerLib/UserRoles.cs
index bcdb0988..860b9d7f 100644
--- a/ClientServerLib/ClientServerLib/UserRoles.cs
+++ b/ClientServerLib/ClientServerLib/UserRoles.cs
@@ -1,9 +1,26 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
namespace ServerLib
{
[Flags]
- internal enum EUserRoles
+ enum EUserRoles
{
TR_USERROLE_GUEST = 0,
TR_USERROLE_NORMAL = 1,
@@ -13,4 +30,4 @@ namespace ServerLib
TR_USERROLE_PLAYLISTEDITOR = 16,
TR_USERROLE_PROFILEEDITOR = 32
}
-}
+}
\ No newline at end of file
diff --git a/ConfigHttpApi/ConfigHttpApi.cs b/ConfigHttpApi/ConfigHttpApi.cs
deleted file mode 100644
index f8353f72..00000000
--- a/ConfigHttpApi/ConfigHttpApi.cs
+++ /dev/null
@@ -1,84 +0,0 @@
-using Security.Cryptography;
-using Security.Cryptography.X509Certificates;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net;
-using System.Security.Cryptography;
-using System.Security.Cryptography.X509Certificates;
-using System.Security.Permissions;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace ConfigHttpApi
-{
- public static class ConfigHttpApi
- {
- [PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
- public static void reserveURL(string networkString)
- {
- HttpApi.ReserveURL(networkString, "D:(A;;GX;;;S-1-1-0)");
- }
-
- [PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
- public static void bindCert(string ip, int port, X509Certificate2 cert)
- {
- IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse(ip), port);
- if (HttpApi.QuerySslCertificateInfo(endpoint) != null)
- {
- HttpApi.DeleteCertificateBinding(endpoint);
- }
-
- HttpApi.BindCertificate(endpoint, cert.GetCertHash(), StoreName.My, new Guid("7baf41f1-48b7-42cb-b145-f815499cb48f"));
- }
-
- [PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
- public static void addCertToStore(X509Certificate2 cert)
- {
- X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
- store.Open(OpenFlags.ReadWrite);
- store.Add(cert);
- store.Close();
- }
-
- [PrincipalPermission(SecurityAction.Demand, Role = @"BUILTIN\Administrators")]
- public static X509Certificate2 getSelfSignedCert(string subjectName)
- {
- CngKey key = CngKey.Create(CngAlgorithm2.Rsa);
- X509CertificateCreationParameters param = new X509CertificateCreationParameters(
- new X500DistinguishedName("CN=Vocaluxe Server"));
- param.SubjectName = new X500DistinguishedName("CN=localhost");
- param.EndTime = DateTime.Today.AddYears(20);
- param.SignatureAlgorithm = X509CertificateSignatureAlgorithm.RsaSha512;
- OidCollection oc = new OidCollection();
- oc.Add(new Oid("1.3.6.1.5.5.7.3.1"));
- X509Extension eku = new X509EnhancedKeyUsageExtension(oc, true);
- param.Extensions.Add(eku);
-
- return key.CreateSelfSignedCertificate(param);
- }
-
- /*public static X509Certificate2 getCert(string subject)
- {
- RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
-
- Mono.Security.Authenticode.PrivateKey key = new Mono.Security.Authenticode.PrivateKey { RSA=RSA.Create()};
-
-
- Mono.Security.X509.X509CertificateBuilder x509 = new Mono.Security.X509.X509CertificateBuilder();
- x509.IssuerName = "CN=Vocaluxe Server";
- x509.NotAfter = DateTime.Today.AddYears(20);
- x509.NotBefore = DateTime.Today.AddDays(-1);
- x509.SubjectName = subject;
- x509.SerialNumber = new byte[] { 1 };
- x509.Version = 3;
- x509.SubjectPublicKey = rsa;
-
- ExtendedKeyUsageExtension eku = new ExtendedKeyUsageExtension();
- eku.KeyPurpose.Add("1.3.6.1.5.5.7.3.1");
- x509.Extensions.Add(eku);
-
- return new X509Certificate2(x509.Sign(rsa));
- }*/
- }
-}
diff --git a/ConfigHttpApi/ConfigHttpApi.csproj b/ConfigHttpApi/ConfigHttpApi.csproj
deleted file mode 100644
index 368c0a49..00000000
--- a/ConfigHttpApi/ConfigHttpApi.csproj
+++ /dev/null
@@ -1,64 +0,0 @@
-
-
-
-
- Debug
- AnyCPU
- {EC28CFA6-35A8-4971-AB07-37A54E010F69}
- Exe
- Properties
- ConfigHttpApi
- ConfigHttpApi
- v4.0
- 512
-
-
-
- true
- full
- false
- bin\Debug\
- DEBUG;TRACE
- prompt
- 4
-
-
- pdbonly
- true
- bin\Release\
- TRACE
- prompt
- 4
-
-
-
-
-
-
- ..\..\..\..\..\Program Files (x86)\Microsoft Visual Studio 11.0\Libs\clrsecurity_june10\Security.dll
-
-
- ..\..\..\..\..\Program Files (x86)\Microsoft Visual Studio 11.0\Libs\clrsecurity_june10\Security.Cryptography.dll
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/ConfigHttpApi/HttpApi.cs b/ConfigHttpApi/HttpApi.cs
deleted file mode 100644
index e5d104a0..00000000
--- a/ConfigHttpApi/HttpApi.cs
+++ /dev/null
@@ -1,643 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Linq;
-using System.Net;
-using System.Net.Sockets;
-using System.Runtime.InteropServices;
-using System.Security.Cryptography.X509Certificates;
-using System.Text;
-using System.Threading.Tasks;
-
-namespace ConfigHttpApi
-{
- internal static class HttpApi
- {
- private static readonly HTTPAPI_VERSION HttpApiVersion = new HTTPAPI_VERSION(1, 0);
-
- #region DllImport
-
- [DllImport("httpapi.dll", SetLastError = true)]
- static extern uint HttpInitialize(
- HTTPAPI_VERSION version,
- uint flags,
- IntPtr pReserved);
-
- [DllImport("httpapi.dll", SetLastError = true)]
- static extern uint HttpSetServiceConfiguration(
- IntPtr serviceIntPtr,
- HTTP_SERVICE_CONFIG_ID configId,
- IntPtr pConfigInformation,
- int configInformationLength,
- IntPtr pOverlapped);
-
- [DllImport("httpapi.dll", SetLastError = true)]
- static extern uint HttpDeleteServiceConfiguration(
- IntPtr serviceIntPtr,
- HTTP_SERVICE_CONFIG_ID configId,
- IntPtr pConfigInformation,
- int configInformationLength,
- IntPtr pOverlapped);
-
- [DllImport("httpapi.dll", SetLastError = true)]
- static extern uint HttpTerminate(
- uint Flags,
- IntPtr pReserved);
-
- [DllImport("httpapi.dll", SetLastError = true)]
- static extern uint HttpQueryServiceConfiguration(
- IntPtr serviceIntPtr,
- HTTP_SERVICE_CONFIG_ID configId,
- IntPtr pInputConfigInfo,
- int inputConfigInfoLength,
- IntPtr pOutputConfigInfo,
- int outputConfigInfoLength,
- [Optional]
- out int pReturnLength,
- IntPtr pOverlapped);
-
-
- enum HTTP_SERVICE_CONFIG_ID
- {
-
- HttpServiceConfigIPListenList = 0,
- HttpServiceConfigSSLCertInfo,
- HttpServiceConfigUrlAclInfo,
- HttpServiceConfigMax
- }
-
- [StructLayout(LayoutKind.Sequential)]
- struct HTTP_SERVICE_CONFIG_SSL_SET
- {
- public HTTP_SERVICE_CONFIG_SSL_KEY KeyDesc;
- public HTTP_SERVICE_CONFIG_SSL_PARAM ParamDesc;
- }
-
- [StructLayout(LayoutKind.Sequential)]
- struct HTTP_SERVICE_CONFIG_SSL_KEY
- {
- public IntPtr pIpPort;
-
- public HTTP_SERVICE_CONFIG_SSL_KEY(IntPtr pIpPort)
- {
- this.pIpPort = pIpPort;
- }
- }
-
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- struct HTTP_SERVICE_CONFIG_SSL_PARAM
- {
- public int SslHashLength;
- public IntPtr pSslHash;
- public Guid AppId;
- [MarshalAs(UnmanagedType.LPWStr)]
- public string pSslCertStoreName;
- public uint DefaultCertCheckMode;
- public int DefaultRevocationFreshnessTime;
- public int DefaultRevocationUrlRetrievalTimeout;
- [MarshalAs(UnmanagedType.LPWStr)]
- public string pDefaultSslCtlIdentifier;
- [MarshalAs(UnmanagedType.LPWStr)]
- public string pDefaultSslCtlStoreName;
- public uint DefaultFlags;
- }
-
- [StructLayout(LayoutKind.Sequential, Pack = 2)]
- struct HTTPAPI_VERSION
- {
- public ushort HttpApiMajorVersion;
- public ushort HttpApiMinorVersion;
-
- public HTTPAPI_VERSION(ushort majorVersion, ushort minorVersion)
- {
- HttpApiMajorVersion = majorVersion;
- HttpApiMinorVersion = minorVersion;
- }
- }
-
- [StructLayout(LayoutKind.Sequential)]
- struct HTTP_SERVICE_CONFIG_SSL_QUERY
- {
- public HTTP_SERVICE_CONFIG_QUERY_TYPE QueryDesc;
- public HTTP_SERVICE_CONFIG_SSL_KEY KeyDesc;
- public uint dwToken;
- }
-
- enum HTTP_SERVICE_CONFIG_QUERY_TYPE
- {
- HttpServiceConfigQueryExact = 0,
- HttpServiceConfigQueryNext,
- HttpServiceConfigQueryMax
- }
-
- [StructLayout(LayoutKind.Sequential)]
- struct HTTP_SERVICE_CONFIG_URLACL_SET
- {
- public HTTP_SERVICE_CONFIG_URLACL_KEY KeyDesc;
- public HTTP_SERVICE_CONFIG_URLACL_PARAM ParamDesc;
- }
-
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- public struct HTTP_SERVICE_CONFIG_URLACL_KEY
- {
- [MarshalAs(UnmanagedType.LPWStr)]
- public string pUrlPrefix;
-
- public HTTP_SERVICE_CONFIG_URLACL_KEY(string urlPrefix)
- {
- pUrlPrefix = urlPrefix;
- }
- }
-
- [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- struct HTTP_SERVICE_CONFIG_URLACL_PARAM
- {
- [MarshalAs(UnmanagedType.LPWStr)]
- public string pStringSecurityDescriptor;
-
- public HTTP_SERVICE_CONFIG_URLACL_PARAM(string securityDescriptor)
- {
- pStringSecurityDescriptor = securityDescriptor;
- }
- }
-
- #endregion
-
- #region Constants
-
- public const uint HTTP_INITIALIZE_CONFIG = 0x00000002;
- public const uint HTTP_SERVICE_CONFIG_SSL_FLAG_NEGOTIATE_CLIENT_CERT = 0x00000002;
- public const uint HTTP_SERVICE_CONFIG_SSL_FLAG_NO_RAW_FILTER = 0x00000004;
- private const uint NOERROR = 0;
- private const uint ERROR_INSUFFICIENT_BUFFER = 122;
- private const uint ERROR_ALREADY_EXISTS = 183;
- private const uint ERROR_FILE_NOT_FOUND = 2;
- private const int ERROR_NO_MORE_ITEMS = 259;
-
- #endregion
-
- #region Public methods
-
- public class SslCertificateInfo
- {
- public byte[] Hash { get; set; }
- public Guid AppId { get; set; }
- public string StoreName { get; set; }
- public IPEndPoint IpPort { get; set; }
- }
-
- public static SslCertificateInfo QuerySslCertificateInfo(IPEndPoint ipPort)
- {
- SslCertificateInfo result = null;
-
- uint retVal;
- CallHttpApi(delegate
- {
- GCHandle sockAddrHandle = CreateSockaddrStructure(ipPort);
- IntPtr pIpPort = sockAddrHandle.AddrOfPinnedObject();
- HTTP_SERVICE_CONFIG_SSL_KEY sslKey = new HTTP_SERVICE_CONFIG_SSL_KEY(pIpPort);
-
- HTTP_SERVICE_CONFIG_SSL_QUERY inputConfigInfoQuery =
- new HTTP_SERVICE_CONFIG_SSL_QUERY
- {
- QueryDesc = HTTP_SERVICE_CONFIG_QUERY_TYPE.HttpServiceConfigQueryExact,
- KeyDesc = sslKey
- };
-
- IntPtr pInputConfigInfo =
- Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_SSL_QUERY)));
- Marshal.StructureToPtr(inputConfigInfoQuery, pInputConfigInfo, false);
-
- IntPtr pOutputConfigInfo = IntPtr.Zero;
- int returnLength = 0;
-
- try
- {
- HTTP_SERVICE_CONFIG_ID queryType = HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo;
- int inputConfigInfoSize = Marshal.SizeOf(inputConfigInfoQuery);
- retVal = HttpQueryServiceConfiguration(IntPtr.Zero,
- queryType,
- pInputConfigInfo,
- inputConfigInfoSize,
- pOutputConfigInfo,
- returnLength,
- out returnLength,
- IntPtr.Zero);
- if (retVal == ERROR_FILE_NOT_FOUND)
- return;
-
- if (ERROR_INSUFFICIENT_BUFFER == retVal) // ERROR_INSUFFICIENT_BUFFER = 122
- {
- pOutputConfigInfo = Marshal.AllocCoTaskMem(returnLength);
-
- try
- {
- retVal = HttpQueryServiceConfiguration(IntPtr.Zero,
- queryType,
- pInputConfigInfo,
- inputConfigInfoSize,
- pOutputConfigInfo,
- returnLength,
- out returnLength,
- IntPtr.Zero);
- ThrowWin32ExceptionIfError(retVal);
-
- var outputConfigInfo =
- (HTTP_SERVICE_CONFIG_SSL_SET)
- Marshal.PtrToStructure(pOutputConfigInfo, typeof(HTTP_SERVICE_CONFIG_SSL_SET));
-
- byte[] hash = new byte[outputConfigInfo.ParamDesc.SslHashLength];
- Marshal.Copy(outputConfigInfo.ParamDesc.pSslHash, hash, 0, hash.Length);
-
- Guid appId = outputConfigInfo.ParamDesc.AppId;
- string storeName = outputConfigInfo.ParamDesc.pSslCertStoreName;
-
- result = new SslCertificateInfo { AppId = appId, Hash = hash, StoreName = storeName, IpPort = ipPort };
- }
- finally
- {
- Marshal.FreeCoTaskMem(pOutputConfigInfo);
- }
- }
- else
- {
- ThrowWin32ExceptionIfError(retVal);
- }
-
- }
- finally
- {
- Marshal.FreeCoTaskMem(pInputConfigInfo);
- if (sockAddrHandle.IsAllocated)
- sockAddrHandle.Free();
- }
-
- });
-
- return result;
- }
-
- public static void BindCertificate(IPEndPoint ipPort, byte[] hash, StoreName storeName, Guid appId)
- {
- if (ipPort == null) throw new ArgumentNullException("ipPort");
- if (hash == null) throw new ArgumentNullException("hash");
-
- CallHttpApi(
- delegate
- {
- HTTP_SERVICE_CONFIG_SSL_SET configSslSet = new HTTP_SERVICE_CONFIG_SSL_SET();
-
- GCHandle sockAddrHandle = CreateSockaddrStructure(ipPort);
- IntPtr pIpPort = sockAddrHandle.AddrOfPinnedObject();
- HTTP_SERVICE_CONFIG_SSL_KEY httpServiceConfigSslKey =
- new HTTP_SERVICE_CONFIG_SSL_KEY(pIpPort);
- HTTP_SERVICE_CONFIG_SSL_PARAM configSslParam = new HTTP_SERVICE_CONFIG_SSL_PARAM();
-
-
- GCHandle handleHash = GCHandle.Alloc(hash, GCHandleType.Pinned);
- configSslParam.AppId = appId;
- configSslParam.DefaultCertCheckMode = 0;
- configSslParam.DefaultFlags = 0; //HTTP_SERVICE_CONFIG_SSL_FLAG_NEGOTIATE_CLIENT_CERT;
- configSslParam.DefaultRevocationFreshnessTime = 0;
- configSslParam.DefaultRevocationUrlRetrievalTimeout = 0;
- configSslParam.pSslCertStoreName = storeName.ToString();
- configSslParam.pSslHash = handleHash.AddrOfPinnedObject();
- configSslParam.SslHashLength = hash.Length;
- configSslSet.ParamDesc = configSslParam;
- configSslSet.KeyDesc = httpServiceConfigSslKey;
-
- IntPtr pInputConfigInfo =
- Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_SSL_SET)));
- Marshal.StructureToPtr(configSslSet, pInputConfigInfo, false);
-
- try
- {
- uint retVal = HttpSetServiceConfiguration(IntPtr.Zero,
- HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo,
- pInputConfigInfo,
- Marshal.SizeOf(configSslSet),
- IntPtr.Zero);
-
- if (ERROR_ALREADY_EXISTS != retVal)
- {
- ThrowWin32ExceptionIfError(retVal);
- }
- else
- {
- retVal = HttpDeleteServiceConfiguration(IntPtr.Zero,
- HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo,
- pInputConfigInfo,
- Marshal.SizeOf(configSslSet),
- IntPtr.Zero);
- ThrowWin32ExceptionIfError(retVal);
-
- retVal = HttpSetServiceConfiguration(IntPtr.Zero,
- HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo,
- pInputConfigInfo,
- Marshal.SizeOf(configSslSet),
- IntPtr.Zero);
- ThrowWin32ExceptionIfError(retVal);
- }
- }
- finally
- {
- Marshal.FreeCoTaskMem(pInputConfigInfo);
- if (handleHash.IsAllocated)
- handleHash.Free();
- if (sockAddrHandle.IsAllocated)
- sockAddrHandle.Free();
- }
- });
- }
-
- public static void DeleteCertificateBinding(params IPEndPoint[] ipPorts)
- {
- if (ipPorts == null || ipPorts.Length == 0)
- return;
-
- CallHttpApi(
- delegate
- {
- foreach (var ipPort in ipPorts)
- {
- HTTP_SERVICE_CONFIG_SSL_SET configSslSet =
- new HTTP_SERVICE_CONFIG_SSL_SET();
-
- GCHandle sockAddrHandle = CreateSockaddrStructure(ipPort);
- IntPtr pIpPort = sockAddrHandle.AddrOfPinnedObject();
- HTTP_SERVICE_CONFIG_SSL_KEY httpServiceConfigSslKey =
- new HTTP_SERVICE_CONFIG_SSL_KEY(pIpPort);
- configSslSet.KeyDesc = httpServiceConfigSslKey;
-
- IntPtr pInputConfigInfo =
- Marshal.AllocCoTaskMem(
- Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_SSL_SET)));
- Marshal.StructureToPtr(configSslSet, pInputConfigInfo, false);
-
- try
- {
- uint retVal = HttpDeleteServiceConfiguration(IntPtr.Zero,
- HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo,
- pInputConfigInfo,
- Marshal.SizeOf(configSslSet),
- IntPtr.Zero);
- ThrowWin32ExceptionIfError(retVal);
- }
- finally
- {
- Marshal.FreeCoTaskMem(pInputConfigInfo);
- if (sockAddrHandle.IsAllocated)
- sockAddrHandle.Free();
- }
- }
- });
- }
-
- public static SslCertificateInfo[] QuerySslCertificateInfo()
- {
- var result = new List();
-
- CallHttpApi(
- delegate
- {
- uint token = 0;
-
- uint retVal;
- do
- {
- HTTP_SERVICE_CONFIG_SSL_QUERY inputConfigInfoQuery =
- new HTTP_SERVICE_CONFIG_SSL_QUERY
- {
- QueryDesc = HTTP_SERVICE_CONFIG_QUERY_TYPE.HttpServiceConfigQueryNext,
- dwToken = token,
- };
-
- IntPtr pInputConfigInfo =
- Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_SSL_QUERY)));
- Marshal.StructureToPtr(inputConfigInfoQuery, pInputConfigInfo, false);
-
- IntPtr pOutputConfigInfo = IntPtr.Zero;
- int returnLength = 0;
-
- const HTTP_SERVICE_CONFIG_ID queryType = HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo;
-
- try
- {
- int inputConfigInfoSize = Marshal.SizeOf(inputConfigInfoQuery);
- retVal = HttpQueryServiceConfiguration(IntPtr.Zero,
- queryType,
- pInputConfigInfo,
- inputConfigInfoSize,
- pOutputConfigInfo,
- returnLength,
- out returnLength,
- IntPtr.Zero);
- if (ERROR_NO_MORE_ITEMS == retVal)
- break;
- if (ERROR_INSUFFICIENT_BUFFER == retVal) // ERROR_INSUFFICIENT_BUFFER = 122
- {
- pOutputConfigInfo = Marshal.AllocCoTaskMem(returnLength);
-
- try
- {
- retVal = HttpQueryServiceConfiguration(IntPtr.Zero,
- queryType,
- pInputConfigInfo,
- inputConfigInfoSize,
- pOutputConfigInfo,
- returnLength,
- out returnLength,
- IntPtr.Zero);
- ThrowWin32ExceptionIfError(retVal);
-
- var outputConfigInfo = (HTTP_SERVICE_CONFIG_SSL_SET)Marshal.PtrToStructure(
- pOutputConfigInfo, typeof(HTTP_SERVICE_CONFIG_SSL_SET));
-
- byte[] hash = new byte[outputConfigInfo.ParamDesc.SslHashLength];
- Marshal.Copy(outputConfigInfo.ParamDesc.pSslHash, hash, 0, hash.Length);
-
- Guid appId = outputConfigInfo.ParamDesc.AppId;
- string storeName = outputConfigInfo.ParamDesc.pSslCertStoreName;
- IPEndPoint ipPort = ReadSockaddrStructure(outputConfigInfo.KeyDesc.pIpPort);
-
- var resultItem = new SslCertificateInfo
- {
- AppId = appId,
- Hash = hash,
- StoreName = storeName,
- IpPort = ipPort
- };
- result.Add(resultItem);
- token++;
- }
- finally
- {
- Marshal.FreeCoTaskMem(pOutputConfigInfo);
- }
- }
- else
- {
- ThrowWin32ExceptionIfError(retVal);
- }
- }
- finally
- {
- Marshal.FreeCoTaskMem(pInputConfigInfo);
- }
-
- } while (NOERROR == retVal);
-
- });
-
- return result.ToArray();
- }
-
- public static void ReserveURL(string networkURL, string securityDescriptor)
- {
- if (String.IsNullOrEmpty(networkURL)) throw new ArgumentNullException("networkURL");
- if (String.IsNullOrEmpty(securityDescriptor)) throw new ArgumentNullException("securityDescriptor");
-
- CallHttpApi(
- delegate
- {
- uint retVal = (uint)NOERROR; // NOERROR = 0
-
- HTTP_SERVICE_CONFIG_URLACL_KEY keyDesc = new HTTP_SERVICE_CONFIG_URLACL_KEY(networkURL);
- HTTP_SERVICE_CONFIG_URLACL_PARAM paramDesc = new HTTP_SERVICE_CONFIG_URLACL_PARAM(securityDescriptor);
-
- HTTP_SERVICE_CONFIG_URLACL_SET inputConfigInfoSet = new HTTP_SERVICE_CONFIG_URLACL_SET();
- inputConfigInfoSet.KeyDesc = keyDesc;
- inputConfigInfoSet.ParamDesc = paramDesc;
-
- IntPtr pInputConfigInfo = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_URLACL_SET)));
- Marshal.StructureToPtr(inputConfigInfoSet, pInputConfigInfo, false);
- try
- {
- retVal = HttpApi.HttpSetServiceConfiguration(IntPtr.Zero,
- HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo,
- pInputConfigInfo,
- Marshal.SizeOf(inputConfigInfoSet),
- IntPtr.Zero);
-
- if ((uint)ERROR_ALREADY_EXISTS == retVal) // ERROR_ALREADY_EXISTS = 183
- {
- retVal = HttpApi.HttpDeleteServiceConfiguration(IntPtr.Zero,
- HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo,
- pInputConfigInfo,
- Marshal.SizeOf(inputConfigInfoSet),
- IntPtr.Zero);
-
- if ((uint)NOERROR == retVal)
- {
- retVal = HttpApi.HttpSetServiceConfiguration(IntPtr.Zero,
- HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo,
- pInputConfigInfo,
- Marshal.SizeOf(inputConfigInfoSet),
- IntPtr.Zero);
- }
- }
- }
- finally
- {
- Marshal.FreeCoTaskMem(pInputConfigInfo);
- HttpApi.HttpTerminate(HttpApi.HTTP_INITIALIZE_CONFIG, IntPtr.Zero);
- }
- if ((uint)NOERROR != retVal)
- {
- ThrowWin32ExceptionIfError(retVal);
- }
- });
- }
-
- #endregion
-
- private static void ThrowWin32ExceptionIfError(uint retVal)
- {
- if (NOERROR != retVal)
- {
- throw new Win32Exception(Convert.ToInt32(retVal));
- }
- }
-
- private static void CallHttpApi(Action body)
- {
- uint retVal = HttpInitialize(HttpApiVersion, HTTP_INITIALIZE_CONFIG, IntPtr.Zero);
- ThrowWin32ExceptionIfError(retVal);
-
- try
- {
- body();
- }
- finally
- {
- HttpTerminate(HTTP_INITIALIZE_CONFIG, IntPtr.Zero);
- }
- }
-
- ///
- /// Creates an unmanaged sockaddr structure to pass to a WinAPI function.
- ///
- /// IP address and port number
- /// a handle for the structure. Use the AddrOfPinnedObject Method to get a stable pointer to the object.
- /// When the handle goes out of scope you must explicitly release it by calling the Free method; otherwise, memory leaks may occur.
- private static GCHandle CreateSockaddrStructure(IPEndPoint ipEndPoint)
- {
- SocketAddress socketAddress = ipEndPoint.Serialize();
-
- // use an array of bytes instead of the sockaddr structure
- byte[] sockAddrStructureBytes = new byte[socketAddress.Size];
- GCHandle sockAddrHandle = GCHandle.Alloc(sockAddrStructureBytes, GCHandleType.Pinned);
- for (int i = 0; i < socketAddress.Size; ++i)
- {
- sockAddrStructureBytes[i] = socketAddress[i];
- }
- return sockAddrHandle;
- }
-
- ///
- /// Reads the unmanaged sockaddr structure returned by a WinAPI function
- ///
- /// pointer to the unmanaged sockaddr structure
- /// IP address and port number
- private static IPEndPoint ReadSockaddrStructure(IntPtr pSockaddrStructure)
- {
- short sAddressFamily = Marshal.ReadInt16(pSockaddrStructure);
- AddressFamily addressFamily = (AddressFamily)sAddressFamily;
-
- int sockAddrSructureSize;
- IPEndPoint ipEndPointAny;
- switch (addressFamily)
- {
- case AddressFamily.InterNetwork:
- // IP v4 address
- sockAddrSructureSize = 16;
- ipEndPointAny = new IPEndPoint(IPAddress.Any, 0);
- break;
- case AddressFamily.InterNetworkV6:
- // IP v6 address
- sockAddrSructureSize = 28;
- ipEndPointAny = new IPEndPoint(IPAddress.IPv6Any, 0);
- break;
- default:
- throw new ArgumentOutOfRangeException("pSockaddrStructure", "Unknown address family");
- }
-
-
- // get bytes of the sockadrr structure
- byte[] sockAddrSructureBytes = new byte[sockAddrSructureSize];
- Marshal.Copy(pSockaddrStructure, sockAddrSructureBytes, 0, sockAddrSructureSize);
-
- // create SocketAddress from bytes
- var socketAddress = new SocketAddress(AddressFamily.Unspecified, sockAddrSructureSize);
- for (int i = 0; i < sockAddrSructureSize; i++)
- {
- socketAddress[i] = sockAddrSructureBytes[i];
- }
-
- // create IPEndPoint from SocketAddress
- IPEndPoint result = (IPEndPoint)ipEndPointAny.Create(socketAddress);
-
- return result;
- }
- }
-}
diff --git a/ConfigHttpApi/Properties/AssemblyInfo.cs b/ConfigHttpApi/Properties/AssemblyInfo.cs
deleted file mode 100644
index c63c94dd..00000000
--- a/ConfigHttpApi/Properties/AssemblyInfo.cs
+++ /dev/null
@@ -1,36 +0,0 @@
-using System.Reflection;
-using System.Runtime.CompilerServices;
-using System.Runtime.InteropServices;
-
-// Allgemeine Informationen über eine Assembly werden über die folgenden
-// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
-// die mit einer Assembly verknüpft sind.
-[assembly: AssemblyTitle("ConfigHttpApi")]
-[assembly: AssemblyDescription("")]
-[assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("ConfigHttpApi")]
-[assembly: AssemblyCopyright("Copyright © 2013")]
-[assembly: AssemblyTrademark("")]
-[assembly: AssemblyCulture("")]
-
-// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar
-// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von
-// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest.
-[assembly: ComVisible(false)]
-
-// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
-[assembly: Guid("89f719af-3a0d-4704-be7f-16e5b4e19c02")]
-
-// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
-//
-// Hauptversion
-// Nebenversion
-// Buildnummer
-// Revision
-//
-// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
-// übernehmen, indem Sie "*" eingeben:
-// [assembly: AssemblyVersion("1.0.*")]
-[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/Output/Languages/Czech.xml b/Output/Languages/Czech.xml
index 1d87ef79..918fe778 100644
--- a/Output/Languages/Czech.xml
+++ b/Output/Languages/Czech.xml
@@ -200,7 +200,7 @@
Chování nahrávání obalu
Nastavení textu písně
Styl
- Poloha textu písně
+ Poloha textu písně
Nastavení obrazu
Pozadí obrazu
Náhled obrazu
diff --git a/Output/Languages/Dutch.xml b/Output/Languages/Dutch.xml
index 02a3ae1c..a50c8be9 100644
--- a/Output/Languages/Dutch.xml
+++ b/Output/Languages/Dutch.xml
@@ -194,7 +194,7 @@
Gedrag Laden Covers
Songtekstopties
Stijl
- Positie songteksten
+ Positie songteksten
Video-opties
Videoachtergronden
Videopreview
diff --git a/Output/Languages/English.xml b/Output/Languages/English.xml
index ec88de0d..ea889529 100644
--- a/Output/Languages/English.xml
+++ b/Output/Languages/English.xml
@@ -29,6 +29,7 @@
Guest
Normal User
Administrator
+ Keyboard User
Software
OpenGL
Direct3D
@@ -199,7 +200,7 @@
Cover Loading Behavior
Lyrics Options
Style
- Lyrics position
+ Lyrics position
Video Options
Video Backgrounds
Video Preview
diff --git a/Output/Languages/French.xml b/Output/Languages/French.xml
index 8510cac0..ceab4219 100644
--- a/Output/Languages/French.xml
+++ b/Output/Languages/French.xml
@@ -200,7 +200,7 @@
Chargement des couvertures
Options des paroles
Style
- Position des paroles
+ Position des paroles
Options Vidéo
Vidéo en arrière plan
Prévisualisation des Vidéos
diff --git a/Output/Languages/German.xml b/Output/Languages/German.xml
index cee0fe66..3025f8e1 100644
--- a/Output/Languages/German.xml
+++ b/Output/Languages/German.xml
@@ -30,6 +30,7 @@
Gast
Normaler Benutzer
Administrator
+ Tastatursteuerer
Software
OpenGL
Direct3D
@@ -200,7 +201,7 @@
Cover Ladeverhalten
Songtexteinstellungen
Stil
- Songtext-Position
+ Songtext-Position
Videoeinstellungen
Video-Hintergründe
Video-Vorschau
diff --git a/Output/Languages/Swedish.xml b/Output/Languages/Swedish.xml
index 52ed8221..9d4068f9 100644
--- a/Output/Languages/Swedish.xml
+++ b/Output/Languages/Swedish.xml
@@ -200,7 +200,7 @@
Beteende För Hur Omslag Laddas
Låttext Alternativ
Utseende
- Text position
+ Text position
Video Alternativ
Video Bakgrund
Video Förhandsvisning
diff --git a/PartyModes/PartyModeChallenge/CPartyScreenChallengeNames.cs b/PartyModes/PartyModeChallenge/CPartyScreenChallengeNames.cs
index 449deba3..46d00571 100644
--- a/PartyModes/PartyModeChallenge/CPartyScreenChallengeNames.cs
+++ b/PartyModes/PartyModeChallenge/CPartyScreenChallengeNames.cs
@@ -60,7 +60,7 @@ namespace VocaluxeLib.PartyModes.Challenge
while (_Data.ScreenNames.ProfileIDs.Count > _NumPlayer)
_Data.ScreenNames.ProfileIDs.RemoveAt(_Data.ScreenNames.ProfileIDs.Count - 1);
- List[] ids = new List[] { _Data.ScreenNames.ProfileIDs };
+ List[] ids = new List[] {_Data.ScreenNames.ProfileIDs};
SetPartyModeProfiles(ids);
}
catch (Exception e)
@@ -77,7 +77,7 @@ namespace VocaluxeLib.PartyModes.Challenge
public override void Back()
{
SPartyNameOptions options = GetData();
- if(options.TeamList.Length == 1)
+ if (options.TeamList.Length == 1)
_Data.ScreenNames.ProfileIDs = options.TeamList[0];
_Data.ScreenNames.FadeBack = true;
_PartyMode.DataFromScreen(ThemeName, _Data);
diff --git a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs
index 73da860e..3858de80 100644
--- a/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs
+++ b/PartyModes/PartyModeChallengeMedley/CPartyScreenChallengeMedleyNames.cs
@@ -61,7 +61,7 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
while (_Data.ScreenNames.ProfileIDs.Count > _NumPlayer)
_Data.ScreenNames.ProfileIDs.RemoveAt(_Data.ScreenNames.ProfileIDs.Count - 1);
- List[] ids = new List[] { _Data.ScreenNames.ProfileIDs };
+ List[] ids = new List[] {_Data.ScreenNames.ProfileIDs};
SetPartyModeProfiles(ids);
}
catch (Exception e)
@@ -70,7 +70,6 @@ namespace VocaluxeLib.PartyModes.ChallengeMedley
}
}
-
public override void Back()
{
SPartyNameOptions options = GetData();
diff --git a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeNames.cs b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeNames.cs
index ec039ba7..00f99acc 100644
--- a/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeNames.cs
+++ b/PartyModes/PartyModeTicTacToe/CPartyScreenTicTacToeNames.cs
@@ -77,11 +77,10 @@ namespace VocaluxeLib.PartyModes.TicTacToe
}
}
-
public override void OnShow()
{
base.OnShow();
- SetPartyModeData(2, _NumPlayerTeam1 + _NumPlayerTeam2, new int[] { _NumPlayerTeam1, _NumPlayerTeam2 });
+ SetPartyModeData(2, _NumPlayerTeam1 + _NumPlayerTeam2, new int[] {_NumPlayerTeam1, _NumPlayerTeam2});
List[] ids = new List[] {_Data.ScreenNames.ProfileIDsTeam1, _Data.ScreenNames.ProfileIDsTeam2};
SetPartyModeProfiles(ids);
}
@@ -89,7 +88,7 @@ namespace VocaluxeLib.PartyModes.TicTacToe
public override void Back()
{
SPartyNameOptions options = GetData();
- if(options.TeamList.Length == 2)
+ if (options.TeamList.Length == 2)
{
_Data.ScreenNames.ProfileIDsTeam1 = options.TeamList[0];
_Data.ScreenNames.ProfileIDsTeam2 = options.TeamList[1];
diff --git a/Vocaluxe.sln.DotSettings b/Vocaluxe.sln.DotSettings
index edc4800a..0a1c7cf8 100644
--- a/Vocaluxe.sln.DotSettings
+++ b/Vocaluxe.sln.DotSettings
@@ -9,7 +9,7 @@
DO_NOT_SHOW
DO_NOT_SHOW
DO_NOT_SHOW
- <?xml version="1.0" encoding="utf-16"?><Profile name="Cleanup"><CSArrangeThisQualifier>True</CSArrangeThisQualifier><CSRemoveCodeRedundancies>True</CSRemoveCodeRedundancies><CSMakeFieldReadonly>True</CSMakeFieldReadonly><CSUseVar><BehavourStyle>CAN_CHANGE_TO_EXPLICIT</BehavourStyle><LocalVariableStyle>IMPLICIT_WHEN_INITIALIZER_HAS_TYPE</LocalVariableStyle><ForeachVariableStyle>ALWAYS_EXPLICIT</ForeachVariableStyle></CSUseVar><CSOptimizeUsings><OptimizeUsings>False</OptimizeUsings><EmbraceInRegion>False</EmbraceInRegion><RegionName></RegionName></CSOptimizeUsings><CSReformatCode>True</CSReformatCode><CSharpFormatDocComments>True</CSharpFormatDocComments><CSShortenReferences>True</CSShortenReferences><StyleCop.Documentation><SA1600ElementsMustBeDocumented>False</SA1600ElementsMustBeDocumented><SA1604ElementDocumentationMustHaveSummary>False</SA1604ElementDocumentationMustHaveSummary><SA1609PropertyDocumentationMustHaveValueDocumented>False</SA1609PropertyDocumentationMustHaveValueDocumented><SA1611ElementParametersMustBeDocumented>False</SA1611ElementParametersMustBeDocumented><SA1615ElementReturnValueMustBeDocumented>False</SA1615ElementReturnValueMustBeDocumented><SA1617VoidReturnValueMustNotBeDocumented>False</SA1617VoidReturnValueMustNotBeDocumented><SA1618GenericTypeParametersMustBeDocumented>False</SA1618GenericTypeParametersMustBeDocumented><SA1626SingleLineCommentsMustNotUseDocumentationStyleSlashes>False</SA1626SingleLineCommentsMustNotUseDocumentationStyleSlashes><SA1628DocumentationTextMustBeginWithACapitalLetter>False</SA1628DocumentationTextMustBeginWithACapitalLetter><SA1629DocumentationTextMustEndWithAPeriod>False</SA1629DocumentationTextMustEndWithAPeriod><SA1633SA1641UpdateFileHeader>Ignore</SA1633SA1641UpdateFileHeader><SA1639FileHeaderMustHaveSummary>False</SA1639FileHeaderMustHaveSummary><SA1642ConstructorSummaryDocumentationMustBeginWithStandardText>False</SA1642ConstructorSummaryDocumentationMustBeginWithStandardText><SA1643DestructorSummaryDocumentationMustBeginWithStandardText>False</SA1643DestructorSummaryDocumentationMustBeginWithStandardText><SA1644DocumentationHeadersMustNotContainBlankLines>False</SA1644DocumentationHeadersMustNotContainBlankLines></StyleCop.Documentation><StyleCop.Layout><SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine>False</SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine><SA1509OpeningCurlyBracketsMustNotBePrecededByBlankLine>True</SA1509OpeningCurlyBracketsMustNotBePrecededByBlankLine><SA1510ChainedStatementBlocksMustNotBePrecededByBlankLine>True</SA1510ChainedStatementBlocksMustNotBePrecededByBlankLine><SA1511WhileDoFooterMustNotBePrecededByBlankLine>True</SA1511WhileDoFooterMustNotBePrecededByBlankLine><SA1512SingleLineCommentsMustNotBeFollowedByBlankLine>True</SA1512SingleLineCommentsMustNotBeFollowedByBlankLine><SA1513ClosingCurlyBracketMustBeFollowedByBlankLine>False</SA1513ClosingCurlyBracketMustBeFollowedByBlankLine><SA1514ElementDocumentationHeaderMustBePrecededByBlankLine>False</SA1514ElementDocumentationHeaderMustBePrecededByBlankLine><SA1515SingleLineCommentMustBeProceededByBlankLine>False</SA1515SingleLineCommentMustBeProceededByBlankLine></StyleCop.Layout><StyleCop.Readability><SA1100DoNotPrefixCallsWithBaseUnlessLocalImplementationExists>True</SA1100DoNotPrefixCallsWithBaseUnlessLocalImplementationExists><SA1106CodeMustNotContainEmptyStatements>True</SA1106CodeMustNotContainEmptyStatements><SA1108BlockStatementsMustNotContainEmbeddedComments>True</SA1108BlockStatementsMustNotContainEmbeddedComments><SA1109BlockStatementsMustNotContainEmbeddedRegions>True</SA1109BlockStatementsMustNotContainEmbeddedRegions><SA1120CommentsMustContainText>False</SA1120CommentsMustContainText><SA1121UseBuiltInTypeAlias>False</SA1121UseBuiltInTypeAlias><SA1122UseStringEmptyForEmptyStrings>False</SA1122UseStringEmptyForEmptyStrings><SA1123DoNotPlaceRegionsWithinElements>False</SA1123DoNotPlaceRegionsWithinElements><SA1124CodeMustNotContainEmptyRegions>True</SA1124CodeMustNotContainEmptyRegions></StyleCop.Readability><StyleCop.Spacing><SA1001CommasMustBeSpacedCorrectly>False</SA1001CommasMustBeSpacedCorrectly><SA1005SingleLineCommentsMustBeginWithSingleSpace>False</SA1005SingleLineCommentsMustBeginWithSingleSpace><SA1006PreprocessorKeywordsMustNotBePrecededBySpace>True</SA1006PreprocessorKeywordsMustNotBePrecededBySpace><SA1021NegativeSignsMustBeSpacedCorrectly>True</SA1021NegativeSignsMustBeSpacedCorrectly><SA1022PositiveSignsMustBeSpacedCorrectly>True</SA1022PositiveSignsMustBeSpacedCorrectly><SA1025CodeMustNotContainMultipleWhitespaceInARow>True</SA1025CodeMustNotContainMultipleWhitespaceInARow></StyleCop.Spacing><StyleCop.Ordering><AlphabeticalUsingDirectives>Ignore</AlphabeticalUsingDirectives><ExpandUsingDirectives>Ignore</ExpandUsingDirectives><SA1212PropertyAccessorsMustFollowOrder>True</SA1212PropertyAccessorsMustFollowOrder><SA1213EventAccessorsMustFollowOrder>True</SA1213EventAccessorsMustFollowOrder></StyleCop.Ordering><CSUpdateFileHeader>True</CSUpdateFileHeader><CSUseAutoProperty>True</CSUseAutoProperty></Profile>
+ <?xml version="1.0" encoding="utf-16"?><Profile name="Cleanup"><CSArrangeThisQualifier>True</CSArrangeThisQualifier><CSRemoveCodeRedundancies>True</CSRemoveCodeRedundancies><CSUseVar><BehavourStyle>CAN_CHANGE_TO_EXPLICIT</BehavourStyle><LocalVariableStyle>IMPLICIT_WHEN_INITIALIZER_HAS_TYPE</LocalVariableStyle><ForeachVariableStyle>ALWAYS_EXPLICIT</ForeachVariableStyle></CSUseVar><CSOptimizeUsings><OptimizeUsings>False</OptimizeUsings><EmbraceInRegion>False</EmbraceInRegion><RegionName></RegionName></CSOptimizeUsings><CSReformatCode>True</CSReformatCode><CSharpFormatDocComments>True</CSharpFormatDocComments><CSShortenReferences>True</CSShortenReferences><StyleCop.Documentation><SA1600ElementsMustBeDocumented>False</SA1600ElementsMustBeDocumented><SA1604ElementDocumentationMustHaveSummary>False</SA1604ElementDocumentationMustHaveSummary><SA1609PropertyDocumentationMustHaveValueDocumented>False</SA1609PropertyDocumentationMustHaveValueDocumented><SA1611ElementParametersMustBeDocumented>False</SA1611ElementParametersMustBeDocumented><SA1615ElementReturnValueMustBeDocumented>False</SA1615ElementReturnValueMustBeDocumented><SA1617VoidReturnValueMustNotBeDocumented>False</SA1617VoidReturnValueMustNotBeDocumented><SA1618GenericTypeParametersMustBeDocumented>False</SA1618GenericTypeParametersMustBeDocumented><SA1626SingleLineCommentsMustNotUseDocumentationStyleSlashes>False</SA1626SingleLineCommentsMustNotUseDocumentationStyleSlashes><SA1628DocumentationTextMustBeginWithACapitalLetter>False</SA1628DocumentationTextMustBeginWithACapitalLetter><SA1629DocumentationTextMustEndWithAPeriod>False</SA1629DocumentationTextMustEndWithAPeriod><SA1633SA1641UpdateFileHeader>Ignore</SA1633SA1641UpdateFileHeader><SA1639FileHeaderMustHaveSummary>False</SA1639FileHeaderMustHaveSummary><SA1642ConstructorSummaryDocumentationMustBeginWithStandardText>False</SA1642ConstructorSummaryDocumentationMustBeginWithStandardText><SA1643DestructorSummaryDocumentationMustBeginWithStandardText>False</SA1643DestructorSummaryDocumentationMustBeginWithStandardText><SA1644DocumentationHeadersMustNotContainBlankLines>False</SA1644DocumentationHeadersMustNotContainBlankLines></StyleCop.Documentation><StyleCop.Layout><SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine>False</SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine><SA1509OpeningCurlyBracketsMustNotBePrecededByBlankLine>True</SA1509OpeningCurlyBracketsMustNotBePrecededByBlankLine><SA1510ChainedStatementBlocksMustNotBePrecededByBlankLine>True</SA1510ChainedStatementBlocksMustNotBePrecededByBlankLine><SA1511WhileDoFooterMustNotBePrecededByBlankLine>True</SA1511WhileDoFooterMustNotBePrecededByBlankLine><SA1512SingleLineCommentsMustNotBeFollowedByBlankLine>True</SA1512SingleLineCommentsMustNotBeFollowedByBlankLine><SA1513ClosingCurlyBracketMustBeFollowedByBlankLine>False</SA1513ClosingCurlyBracketMustBeFollowedByBlankLine><SA1514ElementDocumentationHeaderMustBePrecededByBlankLine>False</SA1514ElementDocumentationHeaderMustBePrecededByBlankLine><SA1515SingleLineCommentMustBeProceededByBlankLine>False</SA1515SingleLineCommentMustBeProceededByBlankLine></StyleCop.Layout><StyleCop.Readability><SA1100DoNotPrefixCallsWithBaseUnlessLocalImplementationExists>True</SA1100DoNotPrefixCallsWithBaseUnlessLocalImplementationExists><SA1106CodeMustNotContainEmptyStatements>True</SA1106CodeMustNotContainEmptyStatements><SA1108BlockStatementsMustNotContainEmbeddedComments>True</SA1108BlockStatementsMustNotContainEmbeddedComments><SA1109BlockStatementsMustNotContainEmbeddedRegions>True</SA1109BlockStatementsMustNotContainEmbeddedRegions><SA1120CommentsMustContainText>False</SA1120CommentsMustContainText><SA1121UseBuiltInTypeAlias>False</SA1121UseBuiltInTypeAlias><SA1122UseStringEmptyForEmptyStrings>False</SA1122UseStringEmptyForEmptyStrings><SA1123DoNotPlaceRegionsWithinElements>False</SA1123DoNotPlaceRegionsWithinElements><SA1124CodeMustNotContainEmptyRegions>True</SA1124CodeMustNotContainEmptyRegions></StyleCop.Readability><StyleCop.Spacing><SA1001CommasMustBeSpacedCorrectly>False</SA1001CommasMustBeSpacedCorrectly><SA1005SingleLineCommentsMustBeginWithSingleSpace>False</SA1005SingleLineCommentsMustBeginWithSingleSpace><SA1006PreprocessorKeywordsMustNotBePrecededBySpace>True</SA1006PreprocessorKeywordsMustNotBePrecededBySpace><SA1021NegativeSignsMustBeSpacedCorrectly>True</SA1021NegativeSignsMustBeSpacedCorrectly><SA1022PositiveSignsMustBeSpacedCorrectly>True</SA1022PositiveSignsMustBeSpacedCorrectly><SA1025CodeMustNotContainMultipleWhitespaceInARow>True</SA1025CodeMustNotContainMultipleWhitespaceInARow></StyleCop.Spacing><StyleCop.Ordering><AlphabeticalUsingDirectives>Ignore</AlphabeticalUsingDirectives><ExpandUsingDirectives>Ignore</ExpandUsingDirectives><SA1212PropertyAccessorsMustFollowOrder>True</SA1212PropertyAccessorsMustFollowOrder><SA1213EventAccessorsMustFollowOrder>True</SA1213EventAccessorsMustFollowOrder></StyleCop.Ordering><CSUpdateFileHeader>True</CSUpdateFileHeader><CSUseAutoProperty>True</CSUseAutoProperty></Profile>
<?xml version="1.0" encoding="utf-16"?><Profile name="Simple Reformat"><CSOptimizeUsings><OptimizeUsings>False</OptimizeUsings><EmbraceInRegion>False</EmbraceInRegion><RegionName></RegionName></CSOptimizeUsings><CSReformatCode>True</CSReformatCode><StyleCop.Documentation><SA1600ElementsMustBeDocumented>False</SA1600ElementsMustBeDocumented><SA1604ElementDocumentationMustHaveSummary>False</SA1604ElementDocumentationMustHaveSummary><SA1609PropertyDocumentationMustHaveValueDocumented>False</SA1609PropertyDocumentationMustHaveValueDocumented><SA1611ElementParametersMustBeDocumented>False</SA1611ElementParametersMustBeDocumented><SA1615ElementReturnValueMustBeDocumented>False</SA1615ElementReturnValueMustBeDocumented><SA1617VoidReturnValueMustNotBeDocumented>False</SA1617VoidReturnValueMustNotBeDocumented><SA1618GenericTypeParametersMustBeDocumented>False</SA1618GenericTypeParametersMustBeDocumented><SA1626SingleLineCommentsMustNotUseDocumentationStyleSlashes>False</SA1626SingleLineCommentsMustNotUseDocumentationStyleSlashes><SA1628DocumentationTextMustBeginWithACapitalLetter>False</SA1628DocumentationTextMustBeginWithACapitalLetter><SA1629DocumentationTextMustEndWithAPeriod>False</SA1629DocumentationTextMustEndWithAPeriod><SA1633SA1641UpdateFileHeader>Ignore</SA1633SA1641UpdateFileHeader><SA1639FileHeaderMustHaveSummary>False</SA1639FileHeaderMustHaveSummary><SA1642ConstructorSummaryDocumentationMustBeginWithStandardText>False</SA1642ConstructorSummaryDocumentationMustBeginWithStandardText><SA1643DestructorSummaryDocumentationMustBeginWithStandardText>False</SA1643DestructorSummaryDocumentationMustBeginWithStandardText><SA1644DocumentationHeadersMustNotContainBlankLines>False</SA1644DocumentationHeadersMustNotContainBlankLines></StyleCop.Documentation><StyleCop.Spacing><SA1001CommasMustBeSpacedCorrectly>False</SA1001CommasMustBeSpacedCorrectly><SA1005SingleLineCommentsMustBeginWithSingleSpace>False</SA1005SingleLineCommentsMustBeginWithSingleSpace><SA1006PreprocessorKeywordsMustNotBePrecededBySpace>True</SA1006PreprocessorKeywordsMustNotBePrecededBySpace><SA1021NegativeSignsMustBeSpacedCorrectly>True</SA1021NegativeSignsMustBeSpacedCorrectly><SA1022PositiveSignsMustBeSpacedCorrectly>True</SA1022PositiveSignsMustBeSpacedCorrectly><SA1025CodeMustNotContainMultipleWhitespaceInARow>True</SA1025CodeMustNotContainMultipleWhitespaceInARow></StyleCop.Spacing><StyleCop.Readability><SA1100DoNotPrefixCallsWithBaseUnlessLocalImplementationExists>True</SA1100DoNotPrefixCallsWithBaseUnlessLocalImplementationExists><SA1106CodeMustNotContainEmptyStatements>True</SA1106CodeMustNotContainEmptyStatements><SA1108BlockStatementsMustNotContainEmbeddedComments>True</SA1108BlockStatementsMustNotContainEmbeddedComments><SA1109BlockStatementsMustNotContainEmbeddedRegions>True</SA1109BlockStatementsMustNotContainEmbeddedRegions><SA1120CommentsMustContainText>False</SA1120CommentsMustContainText><SA1121UseBuiltInTypeAlias>False</SA1121UseBuiltInTypeAlias><SA1122UseStringEmptyForEmptyStrings>False</SA1122UseStringEmptyForEmptyStrings><SA1123DoNotPlaceRegionsWithinElements>False</SA1123DoNotPlaceRegionsWithinElements><SA1124CodeMustNotContainEmptyRegions>True</SA1124CodeMustNotContainEmptyRegions></StyleCop.Readability><StyleCop.Layout><SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine>False</SA1500CurlyBracketsForMultiLineStatementsMustNotShareLine><SA1509OpeningCurlyBracketsMustNotBePrecededByBlankLine>True</SA1509OpeningCurlyBracketsMustNotBePrecededByBlankLine><SA1510ChainedStatementBlocksMustNotBePrecededByBlankLine>True</SA1510ChainedStatementBlocksMustNotBePrecededByBlankLine><SA1511WhileDoFooterMustNotBePrecededByBlankLine>True</SA1511WhileDoFooterMustNotBePrecededByBlankLine><SA1512SingleLineCommentsMustNotBeFollowedByBlankLine>True</SA1512SingleLineCommentsMustNotBeFollowedByBlankLine><SA1513ClosingCurlyBracketMustBeFollowedByBlankLine>False</SA1513ClosingCurlyBracketMustBeFollowedByBlankLine><SA1514ElementDocumentationHeaderMustBePrecededByBlankLine>False</SA1514ElementDocumentationHeaderMustBePrecededByBlankLine><SA1515SingleLineCommentMustBeProceededByBlankLine>False</SA1515SingleLineCommentMustBeProceededByBlankLine></StyleCop.Layout><StyleCop.Ordering><AlphabeticalUsingDirectives>Ignore</AlphabeticalUsingDirectives><ExpandUsingDirectives>Ignore</ExpandUsingDirectives><SA1212PropertyAccessorsMustFollowOrder>True</SA1212PropertyAccessorsMustFollowOrder><SA1213EventAccessorsMustFollowOrder>True</SA1213EventAccessorsMustFollowOrder></StyleCop.Ordering><CSShortenReferences>True</CSShortenReferences><CSUseVar><BehavourStyle>CAN_CHANGE_TO_EXPLICIT</BehavourStyle><LocalVariableStyle>IMPLICIT_WHEN_INITIALIZER_HAS_TYPE</LocalVariableStyle><ForeachVariableStyle>ALWAYS_EXPLICIT</ForeachVariableStyle></CSUseVar></Profile>
Cleanup
Simple Reformat
@@ -41,22 +41,20 @@
False
False
license
- /*
- This file is part of $SOLUTION$.
+ This file is part of $SOLUTION$.
- $SOLUTION$ is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
+$SOLUTION$ is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
- $SOLUTION$ is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
+$SOLUTION$ is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with $SOLUTION$. If not, see <http://www.gnu.org/licenses/>.
- */
+You should have received a copy of the GNU General Public License
+along with $SOLUTION$. If not, see <http://www.gnu.org/licenses/>.
AA
AC
AL
diff --git a/Vocaluxe/Base/CConfig.cs b/Vocaluxe/Base/CConfig.cs
index 5f23e8c9..c5024d1e 100644
--- a/Vocaluxe/Base/CConfig.cs
+++ b/Vocaluxe/Base/CConfig.cs
@@ -34,7 +34,7 @@ namespace Vocaluxe.Base
static class CConfig
{
///
- /// Uniform settings for writing XML files. ALWAYS use this!
+ /// Uniform settings for writing XML files. ALWAYS use this!
///
public static readonly XmlWriterSettings XMLSettings = new XmlWriterSettings
{
diff --git a/Vocaluxe/Base/CGame.cs b/Vocaluxe/Base/CGame.cs
index 356c9192..4953a767 100644
--- a/Vocaluxe/Base/CGame.cs
+++ b/Vocaluxe/Base/CGame.cs
@@ -276,7 +276,8 @@ namespace Vocaluxe.Base
{
int tone = notes[note].Tone;
int tonePlayer = CSound.RecordGetTone(p);
- if (DEBUG_HIT) tonePlayer = tone;
+ if (DEBUG_HIT)
+ tonePlayer = tone;
while (tonePlayer - tone > 6)
tonePlayer -= 12;
diff --git a/Vocaluxe/Base/CGraphics.cs b/Vocaluxe/Base/CGraphics.cs
index 99a43471..60356193 100644
--- a/Vocaluxe/Base/CGraphics.cs
+++ b/Vocaluxe/Base/CGraphics.cs
@@ -79,7 +79,7 @@ namespace Vocaluxe.Base
_Screens.Add(new CScreenHighscore());
_Screens.Add(new CScreenOptionsGame());
_Screens.Add(new CScreenOptionsSound());
- _Screens.Add(new CScreenOptionsRecord());
+ _Screens.Add(new CScreenOptionsRecord());
_Screens.Add(new CScreenOptionsVideo());
_Screens.Add(new CScreenOptionsVideoAdjustments());
_Screens.Add(new CScreenOptionsLyrics());
@@ -375,7 +375,8 @@ namespace Vocaluxe.Base
if (!eventsAvailable)
keyEvent = inputKeyEvent;
- if (keyEvent.Key == Keys.Left || keyEvent.Key == Keys.Right || keyEvent.Key == Keys.Up || keyEvent.Key == Keys.Down || keyEvent.Key == Keys.NumPad0 || keyEvent.Key == Keys.D0 )
+ if (keyEvent.Key == Keys.Left || keyEvent.Key == Keys.Right || keyEvent.Key == Keys.Up || keyEvent.Key == Keys.Down || keyEvent.Key == Keys.NumPad0 ||
+ keyEvent.Key == Keys.D0)
{
CSettings.MouseInactive();
_Cursor.FadeOut();
diff --git a/Vocaluxe/Base/CPlaylists.cs b/Vocaluxe/Base/CPlaylists.cs
index 9f0793c1..e73dbd2b 100644
--- a/Vocaluxe/Base/CPlaylists.cs
+++ b/Vocaluxe/Base/CPlaylists.cs
@@ -1,18 +1,18 @@
#region license
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -125,7 +125,7 @@ namespace Vocaluxe.Base
public static int NewPlaylist()
{
- CPlaylistFile pl = new CPlaylistFile { PlaylistName = "New Playlist", Id = _Playlists.Count };
+ CPlaylistFile pl = new CPlaylistFile {PlaylistName = "New Playlist", Id = _Playlists.Count};
_Playlists.Add(pl);
return _Playlists.Count - 1;
}
diff --git a/Vocaluxe/Base/CProfiles.cs b/Vocaluxe/Base/CProfiles.cs
index a57412a9..b4f4ae50 100644
--- a/Vocaluxe/Base/CProfiles.cs
+++ b/Vocaluxe/Base/CProfiles.cs
@@ -1,18 +1,18 @@
#region license
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -202,7 +202,7 @@ namespace Vocaluxe.Base
public static void LoadProfiles()
{
- var change = new SChange { Action = EAction.LoadProfiles };
+ var change = new SChange {Action = EAction.LoadProfiles};
lock (_QueueMutex)
{
@@ -212,7 +212,7 @@ namespace Vocaluxe.Base
public static void LoadAvatars()
{
- var change = new SChange { Action = EAction.LoadAvatars };
+ var change = new SChange {Action = EAction.LoadAvatars};
lock (_QueueMutex)
{
@@ -225,7 +225,7 @@ namespace Vocaluxe.Base
if (newProfile == null)
return;
- var change = new SChange { Action = EAction.AddProfile, Profile = newProfile };
+ var change = new SChange {Action = EAction.AddProfile, Profile = newProfile};
lock (_QueueMutex)
{
@@ -238,7 +238,7 @@ namespace Vocaluxe.Base
if (editProfile == null)
return;
- var change = new SChange { Action = EAction.EditProfile, Profile = editProfile };
+ var change = new SChange {Action = EAction.EditProfile, Profile = editProfile};
lock (_QueueMutex)
{
@@ -251,7 +251,7 @@ namespace Vocaluxe.Base
if (!IsProfileIDValid(profileID))
return;
- var change = new SChange { Action = EAction.DeleteProfile, ProfileID = profileID };
+ var change = new SChange {Action = EAction.DeleteProfile, ProfileID = profileID};
lock (_QueueMutex)
{
@@ -264,7 +264,7 @@ namespace Vocaluxe.Base
if (newAvatar == null)
return;
- var change = new SChange { Action = EAction.AddAvatar, Avatar = newAvatar };
+ var change = new SChange {Action = EAction.AddAvatar, Avatar = newAvatar};
lock (_QueueMutex)
{
@@ -277,7 +277,7 @@ namespace Vocaluxe.Base
if (editAvatar == null)
return;
- var change = new SChange { Action = EAction.EditAvatar, Avatar = editAvatar };
+ var change = new SChange {Action = EAction.EditAvatar, Avatar = editAvatar};
lock (_QueueMutex)
{
@@ -298,9 +298,7 @@ namespace Vocaluxe.Base
public static CProfile GetProfile(int profileID)
{
if (!IsProfileIDValid(profileID))
- {
return null;
- }
return _Profiles[profileID];
}
diff --git a/Vocaluxe/Base/CSettings.cs b/Vocaluxe/Base/CSettings.cs
index bfd0aa35..e70a0d0c 100644
--- a/Vocaluxe/Base/CSettings.cs
+++ b/Vocaluxe/Base/CSettings.cs
@@ -1,18 +1,18 @@
#region license
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/Vocaluxe/Base/CSongs.cs b/Vocaluxe/Base/CSongs.cs
index 9477224e..7aa205c9 100644
--- a/Vocaluxe/Base/CSongs.cs
+++ b/Vocaluxe/Base/CSongs.cs
@@ -226,13 +226,13 @@ namespace Vocaluxe.Base
totalCounts += song.NumPlayedSession;
int averageCount = totalCounts / NumSongsVisible;
- foreach(CSong song in VisibleSongs)
+ foreach (CSong song in VisibleSongs)
{
if (song.NumPlayedSession <= averageCount)
_SongsForRandom.Add(song);
}
-
- if(_SongsForRandom.Count == 0)
+
+ if (_SongsForRandom.Count == 0)
_SongsForRandom.AddRange(VisibleSongs);
}
@@ -295,7 +295,7 @@ namespace Vocaluxe.Base
}
///
- /// Gets category with given index or null for invalid index
+ /// Gets category with given index or null for invalid index
///
///
/// category with given index or null for invalid index
@@ -308,7 +308,7 @@ namespace Vocaluxe.Base
}
///
- /// Gets visible song with given index or null for invalid index or song not visible
+ /// Gets visible song with given index or null for invalid index or song not visible
///
///
/// visible song with given index or null for invalid index or song not visible
diff --git a/Vocaluxe/Base/Server/CCommands.cs b/Vocaluxe/Base/Server/CCommands.cs
index 6e6f0e66..be2b0bae 100644
--- a/Vocaluxe/Base/Server/CCommands.cs
+++ b/Vocaluxe/Base/Server/CCommands.cs
@@ -97,7 +97,7 @@ namespace Vocaluxe.Base.Server
stream.Write(cmd, 0, cmd.Length);
byte[] data;
- string json = JsonConvert.SerializeObject(obj);
+ string json = JsonConvert.SerializeObject(obj);
data = _Encoder.GetBytes(json);
stream.Write(data, 0, data.Length);
return stream.ToArray();
@@ -115,16 +115,16 @@ namespace Vocaluxe.Base.Server
var data = new byte[message.Length - 4];
Array.Copy(message, 4, data, 0, data.Length);
- try
- {
+ try
+ {
obj = JsonConvert.DeserializeObject(_Encoder.GetString(data));
- return true;
- }
- catch
- {
- return false;
+ return true;
+ }
+ catch
+ {
+ return false;
}
}
#endregion Serializing
}
-}
+}
\ No newline at end of file
diff --git a/Vocaluxe/Base/Server/CVocaluxeServer.cs b/Vocaluxe/Base/Server/CVocaluxeServer.cs
index 13072356..03ede100 100644
--- a/Vocaluxe/Base/Server/CVocaluxeServer.cs
+++ b/Vocaluxe/Base/Server/CVocaluxeServer.cs
@@ -1,18 +1,18 @@
#region license
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
@@ -137,7 +137,7 @@ namespace Vocaluxe.Base.Server
result = true;
break;
default:
- foreach (char c in key.ToCharArray())
+ foreach (char c in key)
{
bool shift = true;
char keyChar;
@@ -147,17 +147,13 @@ namespace Vocaluxe.Base.Server
shift = false;
}
else
- {
keyChar = c;
- }
if ((keyChar >= 0x30 && keyChar <= 0x39) || (keyChar >= 0x41 && keyChar <= 0x5A))
{
Keys keys = (Keys)keyChar;
if (shift)
- {
keys |= Keys.Shift;
- }
Controller.AddKeyEvent(new SKeyEvent(ESender.Keyboard, false, false, false, false, Char.MinValue, keys));
result = true;
}
@@ -167,18 +163,14 @@ namespace Vocaluxe.Base.Server
}
return result;
-
}
#region profile
-
private static SProfileData _GetProfileData(int profileId, bool isReadonly)
{
CProfile profile = CProfiles.GetProfile(profileId);
if (profile == null)
- {
return new SProfileData();
- }
return _CreateProfileData(profile, isReadonly);
}
@@ -190,31 +182,28 @@ namespace Vocaluxe.Base.Server
if (existingProfile != null)
{
newProfile = new CProfile
- {
- ID = existingProfile.ID,
- FileName = existingProfile.FileName,
- Active = existingProfile.Active,
- AvatarFileName = existingProfile.AvatarFileName,
- Avatar = existingProfile.Avatar,
- Difficulty = existingProfile.Difficulty,
- UserRole = existingProfile.UserRole,
- PlayerName = existingProfile.PlayerName
- };
+ {
+ ID = existingProfile.ID,
+ FileName = existingProfile.FileName,
+ Active = existingProfile.Active,
+ AvatarFileName = existingProfile.AvatarFileName,
+ Avatar = existingProfile.Avatar,
+ Difficulty = existingProfile.Difficulty,
+ UserRole = existingProfile.UserRole,
+ PlayerName = existingProfile.PlayerName
+ };
}
else
{
newProfile = new CProfile
- {
- Active = EOffOn.TR_CONFIG_ON,
- UserRole = EUserRole.TR_USERROLE_NORMAL
- };
+ {
+ Active = EOffOn.TR_CONFIG_ON,
+ UserRole = EUserRole.TR_USERROLE_NORMAL
+ };
}
if (profile.Avatar != null)
- {
newProfile.Avatar = _AddAvatar(profile.Avatar);
-
- }
else if (newProfile.Avatar == null || newProfile.Avatar.ID == -1)
{
newProfile.Avatar = CProfiles.GetAvatars().First();
@@ -226,22 +215,16 @@ namespace Vocaluxe.Base.Server
}
if (!string.IsNullOrEmpty(profile.PlayerName))
- {
newProfile.PlayerName = profile.PlayerName;
- }
else if (!string.IsNullOrEmpty(newProfile.PlayerName))
- {
newProfile.PlayerName = "DummyName";
- }
if (profile.Difficulty >= 0 && profile.Difficulty <= 2)
- {
newProfile.Difficulty = (EGameDifficulty)profile.Difficulty;
- }
if (profile.Type >= 0 && profile.Type <= 1)
{
- var option = profile.Type == 0 ? EUserRole.TR_USERROLE_GUEST : EUserRole.TR_USERROLE_NORMAL;
+ EUserRole option = profile.Type == 0 ? EUserRole.TR_USERROLE_GUEST : EUserRole.TR_USERROLE_NORMAL;
//Only allow the change of TR_USERROLE_GUEST and TR_USERROLE_NORMAL
const EUserRole mask = EUserRole.TR_USERROLE_NORMAL;
newProfile.UserRole = (newProfile.UserRole & mask) | option;
@@ -274,9 +257,7 @@ namespace Vocaluxe.Base.Server
CProfiles.SaveProfiles();
}
else
- {
CProfiles.AddProfile(newProfile);
- }
return true;
}
@@ -293,22 +274,20 @@ namespace Vocaluxe.Base.Server
private static SProfileData _CreateProfileData(CProfile profile, bool isReadonly)
{
SProfileData profileData = new SProfileData
- {
- IsEditable = !isReadonly,
- ProfileId = profile.ID,
- PlayerName = profile.PlayerName,
- //Is TR_USERROLE_GUEST or TR_USERROLE_NORMAL?
- Type = (profile.UserRole.HasFlag(EUserRole.TR_USERROLE_NORMAL)?1:0),
- Difficulty = (int)profile.Difficulty
- };
-
+ {
+ IsEditable = !isReadonly,
+ ProfileId = profile.ID,
+ PlayerName = profile.PlayerName,
+ //Is TR_USERROLE_GUEST or TR_USERROLE_NORMAL?
+ Type = (profile.UserRole.HasFlag(EUserRole.TR_USERROLE_NORMAL) ? 1 : 0),
+ Difficulty = (int)profile.Difficulty
+ };
+
CAvatar avatar = profile.Avatar;
if (avatar != null)
{
if (File.Exists(avatar.FileName))
- {
profileData.Avatar = new CBase64Image(_CreateDelayedImage(avatar.FileName));
- }
}
return profileData;
}
@@ -332,19 +311,15 @@ namespace Vocaluxe.Base.Server
return null;
}
}
-
#endregion
#region photo
-
private static List photosOfThisRound = new List();
private static bool _SendPhoto(SPhotoData photoData)
{
if (photoData.Photo == null)
- {
return false;
- }
string name = DateTime.Now.ToString("yyyy-MM-dd_HH-mm-ss");
string filePath = _SaveImage(photoData.Photo, name, CSettings.FolderPhotos);
@@ -359,15 +334,13 @@ namespace Vocaluxe.Base.Server
internal static string[] getPhotosOfThisRound()
{
- var result = photosOfThisRound.ToArray();
+ string[] result = photosOfThisRound.ToArray();
photosOfThisRound.Clear();
return result;
}
-
#endregion
#region website
-
private static readonly Dictionary _DelayedImagePath = new Dictionary();
private static byte[] _GetSiteFile(string filename)
@@ -376,9 +349,7 @@ namespace Vocaluxe.Base.Server
path = path.Replace("..", "");
if (!File.Exists(path))
- {
return null;
- }
/*string content = File.ReadAllText(path);
@@ -395,25 +366,19 @@ namespace Vocaluxe.Base.Server
byte[] by = SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(filename));
var sb = new StringBuilder();
foreach (byte b in by)
- {
sb.Append(b.ToString("x2"));
- }
string hashedFilename = sb.ToString();
if (!_DelayedImagePath.ContainsKey(hashedFilename))
- {
_DelayedImagePath.Add(hashedFilename, filename);
- }
return hashedFilename;
}
private static CBase64Image _GetDelayedImage(string hashedFilename)
{
if (!_DelayedImagePath.ContainsKey(hashedFilename))
- {
throw new FileNotFoundException("Image not found");
- }
string fileName = _DelayedImagePath[hashedFilename];
@@ -424,11 +389,9 @@ namespace Vocaluxe.Base.Server
}
throw new FileNotFoundException("Image not found");
}
-
#endregion
#region songs
-
private static SSongInfo _GetSong(int songId)
{
CSong song = CSongs.GetSong(songId);
@@ -437,7 +400,7 @@ namespace Vocaluxe.Base.Server
private static SSongInfo[] _GetAllSongs()
{
- var songs = CSongs.Songs;
+ List songs = CSongs.Songs;
return (from s in songs
select _GetSongInfo(s, false)).ToArray();
}
@@ -446,9 +409,7 @@ namespace Vocaluxe.Base.Server
{
CSong song = CGame.GetSong();
if (song == null)
- {
return -1;
- }
return song.ID;
}
@@ -465,17 +426,13 @@ namespace Vocaluxe.Base.Server
result.IsDuet = song.IsDuet;
result.SongId = song.ID;
if (includeCover)
- {
result.Cover = new CBase64Image(_CreateDelayedImage(song.Folder + "\\" + song.CoverFileName));
- }
}
return result;
}
-
#endregion
#region playlist
-
private static SPlaylistInfo[] _GetPlaylists()
{
return (from p in CPlaylists.Playlists
@@ -485,18 +442,14 @@ namespace Vocaluxe.Base.Server
private static SPlaylistInfo _GetPlaylist(int playlistId)
{
if (CPlaylists.Playlists.Length <= playlistId || playlistId < 0)
- {
throw new ArgumentException("invalid playlistId");
- }
return _GetPlaylistInfo(CPlaylists.Playlists[playlistId]);
}
private static void _AddSongToPlaylist(int songId, int playlistId, bool allowDuplicates)
{
if (CPlaylists.Playlists.Length <= playlistId || playlistId < 0)
- {
throw new ArgumentException("invalid playlistId");
- }
if (allowDuplicates || !_PlaylistContainsSong(songId, playlistId))
{
@@ -504,26 +457,18 @@ namespace Vocaluxe.Base.Server
CPlaylists.SavePlaylist(playlistId);
}
else
- {
throw new ArgumentException("song exists in this playlist");
- }
}
private static void _RemoveSongFromPlaylist(int position, int playlistId, int songId)
{
if (CPlaylists.Playlists.Length <= playlistId || playlistId < 0)
- {
throw new ArgumentException("invalid playlistId");
- }
if (!_PlaylistContainsSong(songId, playlistId))
- {
throw new ArgumentException("invalid songId");
- }
if (position < 0 || CPlaylists.Playlists[playlistId].Songs.Count <= position
|| CPlaylists.Playlists[playlistId].Songs[position].SongID != songId)
- {
throw new ArgumentException("invalid position");
- }
CPlaylists.Playlists[playlistId].DeleteSong(position);
CPlaylists.SavePlaylist(playlistId);
}
@@ -531,18 +476,12 @@ namespace Vocaluxe.Base.Server
private static void _MoveSongInPlaylist(int newPosition, int playlistId, int songId)
{
if (CPlaylists.Playlists.Length <= playlistId || playlistId < 0)
- {
throw new ArgumentException("invalid playlistId");
- }
if (!_PlaylistContainsSong(songId, playlistId))
- {
throw new ArgumentException("invalid songId");
- }
if (CPlaylists.Playlists[playlistId].Songs.Count < newPosition)
- {
throw new ArgumentException("invalid newPosition");
- }
int oldPosition = CPlaylists.Playlists[playlistId].Songs.FindIndex(s => s.SongID == songId);
CPlaylists.MovePlaylistSong(playlistId, oldPosition, newPosition);
@@ -552,18 +491,14 @@ namespace Vocaluxe.Base.Server
private static bool _PlaylistContainsSong(int songId, int playlistId)
{
if (CPlaylists.Playlists.Length <= playlistId || playlistId < 0)
- {
throw new ArgumentException("invalid playlistId");
- }
return CPlaylists.Playlists[playlistId].Songs.Any(s => s.SongID == songId);
}
private static SPlaylistSongInfo[] _GetPlaylistSongs(int playlistId)
{
if (CPlaylists.Playlists.Length <= playlistId || playlistId < 0)
- {
throw new ArgumentException("invalid playlistId");
- }
return _GetPlaylistSongInfos(CPlaylists.Playlists[playlistId]);
}
@@ -585,29 +520,25 @@ namespace Vocaluxe.Base.Server
{
SPlaylistSongInfo[] result = new SPlaylistSongInfo[playlist.Songs.Count];
for (int i = 0; i < playlist.Songs.Count; i++)
- {
result[i] = _GetPlaylistSongInfo(playlist.Songs[i], playlist.Id, i);
- }
return result;
}
private static SPlaylistInfo _GetPlaylistInfo(CPlaylistFile playlist)
{
return new SPlaylistInfo
- {
- PlaylistId = playlist.Id,
- PlaylistName = playlist.PlaylistName,
- SongCount = playlist.Songs.Count,
- LastChanged = DateTime.Now.ToLongDateString()
- };
+ {
+ PlaylistId = playlist.Id,
+ PlaylistName = playlist.PlaylistName,
+ SongCount = playlist.Songs.Count,
+ LastChanged = DateTime.Now.ToLongDateString()
+ };
}
private static void _RemovePlaylist(int playlistId)
{
if (CPlaylists.Playlists.Length <= playlistId || playlistId < 0)
- {
throw new ArgumentException("invalid playlistId");
- }
CPlaylists.DeletePlaylist(playlistId);
}
@@ -619,25 +550,19 @@ namespace Vocaluxe.Base.Server
return newPlaylistId;
}
-
#endregion
#region user management
-
private static bool _ValidatePassword(int profileId, string password)
{
CProfile profile = CProfiles.GetProfile(profileId);
if (profile == null)
- {
throw new ArgumentException("Invalid profileId");
- }
if (profile.PasswordHash == null)
{
if (string.IsNullOrEmpty(password))
- {
return true; //Allow emty passwords
- }
return false;
}
@@ -649,16 +574,12 @@ namespace Vocaluxe.Base.Server
{
CProfile profile = CProfiles.GetProfile(profileId);
if (profile == null)
- {
throw new ArgumentException("Invalid profileId");
- }
if (profile.PasswordHash == null)
{
if (hashedPassword == null)
- {
return true; //Allow emty passwords
- }
return false;
}
@@ -670,14 +591,10 @@ namespace Vocaluxe.Base.Server
{
CProfile profile = CProfiles.GetProfile(profileId);
if (profile == null)
- {
throw new ArgumentException("Invalid profileId");
- }
if (profile.PasswordHash == null)
- {
throw new ArgumentException("Emty password");
- }
return profile.PasswordSalt;
}
@@ -686,9 +603,7 @@ namespace Vocaluxe.Base.Server
{
CProfile profile = CProfiles.GetProfile(profileId);
if (profile == null)
- {
throw new ArgumentException("Invalid profileId");
- }
//Hide TR_USERROLE_GUEST and TR_USERROLE_NORMAL
//const EUserRole mask = (EUserRole.TR_USERROLE_GUEST | EUserRole.TR_USERROLE_NORMAL);
@@ -700,9 +615,7 @@ namespace Vocaluxe.Base.Server
{
CProfile profile = CProfiles.GetProfile(profileId);
if (profile == null)
- {
throw new ArgumentException("Invalid profileId");
- }
var option = (EUserRole)userRole;
@@ -719,13 +632,11 @@ namespace Vocaluxe.Base.Server
private static int _GetUserIdFromUsername(string username)
{
- var playerIds = (from p in CProfiles.GetProfiles()
- where String.Equals(p.PlayerName, username, StringComparison.OrdinalIgnoreCase)
- select p.ID);
+ IEnumerable playerIds = (from p in CProfiles.GetProfiles()
+ where String.Equals(p.PlayerName, username, StringComparison.OrdinalIgnoreCase)
+ select p.ID);
if (!playerIds.Any())
- {
throw new ArgumentException("Invalid playername");
- }
return playerIds.First();
}
@@ -741,7 +652,6 @@ namespace Vocaluxe.Base.Server
return hashAlgo.ComputeHash(data);
}
-
#endregion
private static string _SaveImage(CBase64Image imageDate, string name, string folder)
@@ -750,24 +660,18 @@ namespace Vocaluxe.Base.Server
string extension = imageDate.GetImageType();
if (!Directory.Exists(folder))
- {
Directory.CreateDirectory(folder);
- }
string filename = Path.Combine(folder, name);
if (File.Exists(filename + "." + extension))
{
int i = 0;
while (File.Exists(filename + "_" + i + "." + extension))
- {
i++;
- }
filename = filename + "_" + i + "." + extension;
}
else
- {
filename = filename + "." + extension;
- }
avatarImage.Save(filename);
return filename;
diff --git a/Vocaluxe/CProgrammHelper.cs b/Vocaluxe/CProgrammHelper.cs
index de0a61a9..12cf6753 100644
--- a/Vocaluxe/CProgrammHelper.cs
+++ b/Vocaluxe/CProgrammHelper.cs
@@ -1,4 +1,21 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
@@ -11,7 +28,7 @@ using Vocaluxe.Base;
namespace Vocaluxe
{
///
- /// Some helper functions for the programm
+ /// Some helper functions for the programm
///
static class CProgrammHelper
{
@@ -37,7 +54,7 @@ namespace Vocaluxe
}
///
- /// Checks if a given program is installed by checking the Uninstall registry key.
+ /// Checks if a given program is installed by checking the Uninstall registry key.
///
/// Name of the programm. Got to equal the displayname in the key or one needs to be the start of the other one. NOT case sensitive.
///
diff --git a/Vocaluxe/Lib/Draw/CDirect3D.cs b/Vocaluxe/Lib/Draw/CDirect3D.cs
index cf8048ef..11b11c21 100644
--- a/Vocaluxe/Lib/Draw/CDirect3D.cs
+++ b/Vocaluxe/Lib/Draw/CDirect3D.cs
@@ -65,10 +65,10 @@ namespace Vocaluxe.Lib.Draw
private int _Y;
private int _X;
- private int _BorderLeft = 0;
- private int _BorderRight = 0;
- private int _BorderTop = 0;
- private int _BorderBottom = 0;
+ private int _BorderLeft;
+ private int _BorderRight;
+ private int _BorderTop;
+ private int _BorderBottom;
private CTexture _BlankTexture;
@@ -416,7 +416,7 @@ namespace Vocaluxe.Lib.Draw
if (_Device.SetStreamSource(0, _VertexBuffer, 0, Marshal.SizeOf(typeof(STexturedColoredVertex))).IsFailure)
CLog.LogError("Failed to set stream source");
_Device.VertexDeclaration = STexturedColoredVertex.GetDeclaration(_Device);
-
+
if (_Device.SetRenderState(RenderState.CullMode, Cull.None).IsFailure)
CLog.LogError("Failed to set cull mode");
if (_Device.SetRenderState(RenderState.AlphaBlendEnable, true).IsFailure)
diff --git a/Vocaluxe/Lib/Playlist/CPlaylistFile.cs b/Vocaluxe/Lib/Playlist/CPlaylistFile.cs
index 58d2f575..954cc6a7 100644
--- a/Vocaluxe/Lib/Playlist/CPlaylistFile.cs
+++ b/Vocaluxe/Lib/Playlist/CPlaylistFile.cs
@@ -1,18 +1,18 @@
#region license
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using System;
diff --git a/Vocaluxe/Lib/Sound/CGstreamerAudio.cs b/Vocaluxe/Lib/Sound/CGstreamerAudio.cs
index d9aeea6e..e29937de 100644
--- a/Vocaluxe/Lib/Sound/CGstreamerAudio.cs
+++ b/Vocaluxe/Lib/Sound/CGstreamerAudio.cs
@@ -160,7 +160,6 @@ namespace Vocaluxe.Lib.Sound
CGstreamerAudioWrapper.Update();
}
-
public void FadeAndStop(int stream, float targetVolume, float seconds)
{
throw new NotImplementedException();
diff --git a/Vocaluxe/Lib/Sound/CGstreamerSharpAudio.cs b/Vocaluxe/Lib/Sound/CGstreamerSharpAudio.cs
index 3d5ace6e..b8270b32 100644
--- a/Vocaluxe/Lib/Sound/CGstreamerSharpAudio.cs
+++ b/Vocaluxe/Lib/Sound/CGstreamerSharpAudio.cs
@@ -1,11 +1,28 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
using System.Collections.Generic;
using Gst;
using GLib;
using System.Runtime.InteropServices;
using System.Diagnostics;
using Vocaluxe.Base;
-using Thread = System.Threading.Thread;
+using Thread = System.Threading.Thread;
namespace Vocaluxe.Lib.Sound
{
@@ -29,16 +46,14 @@ namespace Vocaluxe.Lib.Sound
Application.Init();
Registry reg = Registry.Get();
reg.ScanPath(path);
-
+
return Application.IsInitialized;
}
public void SetGlobalVolume(float volume)
{
foreach (CGstreamerSharpAudioStream stream in _Streams.Values)
- {
stream.Volume = volume;
- }
}
public int GetStreamCount()
@@ -49,9 +64,7 @@ namespace Vocaluxe.Lib.Sound
public void CloseAll()
{
foreach (CGstreamerSharpAudioStream stream in _Streams.Values)
- {
stream.Close();
- }
}
public int Load(string media)
@@ -61,7 +74,7 @@ namespace Vocaluxe.Lib.Sound
public int Load(string media, bool prescan)
{
- var stream = new CGstreamerSharpAudioStream (media, prescan);
+ var stream = new CGstreamerSharpAudioStream(media, prescan);
_Streams[_IDCount] = stream;
return _IDCount++;
}
@@ -188,16 +201,14 @@ namespace Vocaluxe.Lib.Sound
public void Update()
{
var streamsToDelete = new List();
- foreach (KeyValuePair stream in _Streams)
+ foreach (KeyValuePair stream in _Streams)
{
if (stream.Value.Closed)
streamsToDelete.Add(stream.Key);
stream.Value.Update();
}
foreach (int key in streamsToDelete)
- {
_Streams.Remove(key);
- }
}
private class CGstreamerSharpAudioStream
@@ -221,10 +232,11 @@ namespace Vocaluxe.Lib.Sound
private volatile float _Duration = -1f;
private volatile float _Position;
private volatile bool _QueryingDuration;
+
public CGstreamerSharpAudioStream(string media, bool prescan)
{
- var convert = ElementFactory.Make("audioconvert", "convert");
- var audiosink = ElementFactory.Make("directsoundsink", "audiosink");
+ Element convert = ElementFactory.Make("audioconvert", "convert");
+ Element audiosink = ElementFactory.Make("directsoundsink", "audiosink");
var audioSinkBin = new Bin("Audiosink");
if (convert == null || audiosink == null)
@@ -257,8 +269,8 @@ namespace Vocaluxe.Lib.Sound
// if it takes more than 500ms, duration queries will be performed asynchronously
if (prescan)
{
- var msg = _Element.Bus.TimedPopFiltered(0xffffffffffffffff, MessageType.AsyncDone);
- if(msg.Handle != IntPtr.Zero)
+ Message msg = _Element.Bus.TimedPopFiltered(0xffffffffffffffff, MessageType.AsyncDone);
+ if (msg.Handle != IntPtr.Zero)
_UpdateDuration();
}
}
@@ -274,7 +286,7 @@ namespace Vocaluxe.Lib.Sound
Position = 0;
else
Finished = true;
- Close();
+ Close();
break;
case MessageType.Error:
GException error;
@@ -289,18 +301,15 @@ namespace Vocaluxe.Lib.Sound
msg.Unref();
}
-
public void Close()
{
if (!Closed)
{
-
Closed = true;
Finished = true;
var t = new Thread(_TerminateStream);
t.Start();
}
-
}
private void _TerminateStream()
@@ -354,10 +363,7 @@ namespace Vocaluxe.Lib.Sound
public float Volume
{
- get
- {
- return _Element != null ? (float)(double)_Element["volume"] : 0;
- }
+ get { return _Element != null ? (float)(double)_Element["volume"] : 0; }
set
{
_Volume = value;
@@ -368,10 +374,7 @@ namespace Vocaluxe.Lib.Sound
public float MaxVolume
{
- get
- {
- return _MaxVolume;
- }
+ get { return _MaxVolume; }
set
{
_MaxVolume = value;
@@ -412,10 +415,7 @@ namespace Vocaluxe.Lib.Sound
public bool Paused
{
- get
- {
- return _Element == null || _Element.TargetState == State.Paused;
- }
+ get { return _Element == null || _Element.TargetState == State.Paused; }
set
{
if (value && _Element != null)
@@ -425,13 +425,10 @@ namespace Vocaluxe.Lib.Sound
public bool Playing
{
- get
- {
- return _Element != null && (_Element.TargetState == State.Playing && !Finished);
- }
+ get { return _Element != null && (_Element.TargetState == State.Playing && !Finished); }
set
{
- if(value && _Element != null)
+ if (value && _Element != null)
_Element.SetState(State.Playing);
}
}
@@ -439,9 +436,7 @@ namespace Vocaluxe.Lib.Sound
public void Update()
{
while (_Element != null && _Element.Bus != null && _Element.Bus.HavePending())
- {
_OnMessage(_Element.Bus.Pop());
- }
if (_Fading)
{
@@ -481,4 +476,4 @@ namespace Vocaluxe.Lib.Sound
}
}
}
-}
+}
\ No newline at end of file
diff --git a/Vocaluxe/Lib/Sound/COpenALPlay.cs b/Vocaluxe/Lib/Sound/COpenALPlay.cs
index 131a7ff7..caecc663 100644
--- a/Vocaluxe/Lib/Sound/COpenALPlay.cs
+++ b/Vocaluxe/Lib/Sound/COpenALPlay.cs
@@ -346,7 +346,6 @@ namespace Vocaluxe.Lib.Sound
_Context = null;
}
-
public void FadeAndStop(int stream, float targetVolume, float seconds)
{
throw new NotImplementedException();
diff --git a/Vocaluxe/Lib/Video/Acinerella/CDecoder.cs b/Vocaluxe/Lib/Video/Acinerella/CDecoder.cs
index e922e565..9591eaaa 100644
--- a/Vocaluxe/Lib/Video/Acinerella/CDecoder.cs
+++ b/Vocaluxe/Lib/Video/Acinerella/CDecoder.cs
@@ -446,4 +446,4 @@ namespace Vocaluxe.Lib.Video.Acinerella
}
#endregion Threading
}
-}
+}
\ No newline at end of file
diff --git a/Vocaluxe/Lib/Video/IVideoDecoder.cs b/Vocaluxe/Lib/Video/IVideoDecoder.cs
index 72d12ecd..b1da1feb 100644
--- a/Vocaluxe/Lib/Video/IVideoDecoder.cs
+++ b/Vocaluxe/Lib/Video/IVideoDecoder.cs
@@ -22,57 +22,61 @@ namespace Vocaluxe.Lib.Video
interface IVideoDecoder
{
///
- /// Initializes videodecoder. Got to be called before usage
+ /// Initializes videodecoder. Got to be called before usage
///
/// True on success, false if something went wrong.
bool Init();
///
- /// Close all video streams
+ /// Close all video streams
///
void CloseAll();
///
- /// Loads the file with the given file path.
+ /// Loads the file with the given file path.
///
/// Absolute file path of the video file
/// StreamID >=0 on success or -1 on failure
int Load(string videoFileName);
///
- /// Closes the stream with the given ID
+ /// Closes the stream with the given ID
///
/// ID of the stream
/// true if stream was closed, false if stream doesn't exist or already closed
bool Close(int streamID);
///
- /// Gets the number of streams currently active
+ /// Gets the number of streams currently active
///
///
int GetNumStreams();
///
- /// Gets the length of the video in s
+ /// Gets the length of the video in s
///
/// Id of the stream
/// Length of the video in s
float GetLength(int streamID);
///
- /// Gets a frame of the video and sets the current video time
+ /// Gets a frame of the video and sets the current video time
///
/// Id of the stream
- /// Reference to already initialized video texture (from previous calls). If null, one will be created.
- /// Returns the current video frame which might be outdated if time != current (internal) video position or unchanged (even null) if none is available.
- /// The position in s of the video you want to get a frame of. If != current (internal) video position, it will seek to get to right position.
- /// Note:Will be ignored for looped playback!
+ ///
+ /// Reference to already initialized video texture (from previous calls). If null, one will be created.
+ /// Returns the current video frame which might be outdated if time != current (internal) video position or unchanged (even null) if none is available.
+ ///
+ ///
+ /// The position in s of the video you want to get a frame of. If != current (internal) video position, it will seek to get to right position.
+ /// Note:Will be ignored for looped playback!
+ ///
/// The actual position in s of the returned frame. Should be ~ time+VideoGap
/// True if frame is valid, false: frame and videoTime might be unchanged or invalid
bool GetFrame(int streamID, ref CTexture frame, float time, out float videoTime);
///
- /// Seeks to given position
+ /// Seeks to given position
///
/// Id of the stream
/// Position to seek to
@@ -81,33 +85,33 @@ namespace Vocaluxe.Lib.Video
bool Skip(int streamID, float start, float gap);
///
- /// Set if the video should be looped
+ /// Set if the video should be looped
///
/// Id of the stream
/// True if it should be looped
void SetLoop(int streamID, bool loop);
///
- /// Pauses the video (no new frames will be decoded)
+ /// Pauses the video (no new frames will be decoded)
///
/// Id of the stream
void Pause(int streamID);
///
- /// Resumes a paused video
+ /// Resumes a paused video
///
/// Id of the stream
void Resume(int streamID);
///
- /// Check if the given video is finished
+ /// Check if the given video is finished
///
/// Id of the stream
/// True if all frames are shown
bool Finished(int streamID);
///
- /// Do a step of the decoder in unthreaded decoders. Should be called once every frame.
+ /// Do a step of the decoder in unthreaded decoders. Should be called once every frame.
///
void Update();
}
diff --git a/Vocaluxe/Program.cs b/Vocaluxe/Program.cs
index f85b67d9..5d254c13 100644
--- a/Vocaluxe/Program.cs
+++ b/Vocaluxe/Program.cs
@@ -326,9 +326,9 @@ namespace Vocaluxe
Process currentProcess = Process.GetCurrentProcess();
Process[] processes = Process.GetProcessesByName(currentProcess.ProcessName);
- foreach (var process in processes.Where(t => t.Id != currentProcess.Id))
+ foreach (Process process in processes.Where(t => t.Id != currentProcess.Id))
{
- var wnd = process.MainWindowHandle;
+ IntPtr wnd = process.MainWindowHandle;
if (wnd != IntPtr.Zero)
SetForegroundWindow(wnd);
}
diff --git a/Vocaluxe/Screens/CPopupScreenServerQR.cs b/Vocaluxe/Screens/CPopupScreenServerQR.cs
index fbf4a8e8..94ad9f74 100644
--- a/Vocaluxe/Screens/CPopupScreenServerQR.cs
+++ b/Vocaluxe/Screens/CPopupScreenServerQR.cs
@@ -52,8 +52,8 @@ namespace Vocaluxe.Screens
{
base.Init();
- _ThemeStatics = new string[] { _StaticQRServer, _StaticQRAndroid, _StaticQRSymbian, _StaticQRWebOS, _StaticQRWindowsPhone };
- _ThemeTexts = new string[] { _TextServerAddress, _TextServerNotRunning };
+ _ThemeStatics = new string[] {_StaticQRServer, _StaticQRAndroid, _StaticQRSymbian, _StaticQRWebOS, _StaticQRWindowsPhone};
+ _ThemeTexts = new string[] {_TextServerAddress, _TextServerNotRunning};
}
public override void LoadTheme(string xmlPath)
@@ -127,4 +127,4 @@ namespace Vocaluxe.Screens
_QRWindowsPhoneLink = CDraw.AddTexture(qrcode.GetGraphic(20));
}
}
-}
+}
\ No newline at end of file
diff --git a/Vocaluxe/Screens/CScreenOptionsVideo.cs b/Vocaluxe/Screens/CScreenOptionsVideo.cs
index 4e7d9a61..d1b446c8 100644
--- a/Vocaluxe/Screens/CScreenOptionsVideo.cs
+++ b/Vocaluxe/Screens/CScreenOptionsVideo.cs
@@ -146,7 +146,7 @@ namespace Vocaluxe.Screens
_SaveConfig();
if (_Buttons[_ButtonExit].Selected)
CGraphics.FadeTo(EScreens.ScreenOptions);
- if(_Buttons[_ButtonScreenAdjustments].Selected)
+ if (_Buttons[_ButtonScreenAdjustments].Selected)
CGraphics.FadeTo(EScreens.ScreenOptionsVideoAdjustments);
}
return true;
diff --git a/Vocaluxe/Screens/CScreenOptionsVideoAdjustments.cs b/Vocaluxe/Screens/CScreenOptionsVideoAdjustments.cs
index ff70fa43..774ef686 100644
--- a/Vocaluxe/Screens/CScreenOptionsVideoAdjustments.cs
+++ b/Vocaluxe/Screens/CScreenOptionsVideoAdjustments.cs
@@ -38,14 +38,14 @@ namespace Vocaluxe.Screens
{
base.Init();
- _ThemeButtons = new string[] { _ButtonExit };
+ _ThemeButtons = new string[] {_ButtonExit};
}
public override bool HandleInput(SKeyEvent keyEvent)
{
base.HandleInput(keyEvent);
- if (keyEvent.KeyPressed) { }
+ if (keyEvent.KeyPressed) {}
else
{
switch (keyEvent.Key)
@@ -102,4 +102,4 @@ namespace Vocaluxe.Screens
CConfig.SaveConfig();
}
}
-}
+}
\ No newline at end of file
diff --git a/Vocaluxe/Screens/CScreenProfiles.cs b/Vocaluxe/Screens/CScreenProfiles.cs
index 7e567a38..d3b06914 100644
--- a/Vocaluxe/Screens/CScreenProfiles.cs
+++ b/Vocaluxe/Screens/CScreenProfiles.cs
@@ -179,7 +179,7 @@ namespace Vocaluxe.Screens
else if (_SelectSlides[_SelectSlideUserRole].Selected)
{
CProfiles.SetUserRoleProfile(_SelectSlides[_SelectSlideProfiles].ValueIndex,
- (EUserRole)_SelectSlides[_SelectSlideUserRole].Selection);
+ (EUserRole)_SelectSlides[_SelectSlideUserRole].Selection);
}
else if (_SelectSlides[_SelectSlideActive].Selected)
{
@@ -228,7 +228,7 @@ namespace Vocaluxe.Screens
else if (_SelectSlides[_SelectSlideUserRole].Selected)
{
CProfiles.SetUserRoleProfile(_SelectSlides[_SelectSlideProfiles].ValueIndex,
- (EUserRole)_SelectSlides[_SelectSlideUserRole].Selection);
+ (EUserRole)_SelectSlides[_SelectSlideUserRole].Selection);
}
else if (_SelectSlides[_SelectSlideActive].Selected)
{
diff --git a/Vocaluxe/Screens/CScreenSing.cs b/Vocaluxe/Screens/CScreenSing.cs
index b9a363aa..4eb21fbd 100644
--- a/Vocaluxe/Screens/CScreenSing.cs
+++ b/Vocaluxe/Screens/CScreenSing.cs
@@ -565,7 +565,7 @@ namespace Vocaluxe.Screens
}
CDraw.RemoveTexture(ref _Background);
- if(_SlideShow != null)
+ if (_SlideShow != null)
_SlideShow.RemoveSlideShowTextures();
_Lyrics[_LyricMain].Clear();
@@ -637,7 +637,7 @@ namespace Vocaluxe.Screens
if (song.BackgroundFileNames.Count > 1)
{
_SlideShow = GetNewBackground();
- foreach(string bgFile in song.BackgroundFileNames)
+ foreach (string bgFile in song.BackgroundFileNames)
_SlideShow.AddSlideShowTexture(Path.Combine(song.Folder, bgFile));
_Background = null;
}
@@ -887,7 +887,7 @@ namespace Vocaluxe.Screens
_Buttons[_ButtonContinue].Visible = false;
_Buttons[_ButtonSkip].Visible = false;
CSound.Play(_CurrentStream);
- if(_Webcam)
+ if (_Webcam)
CWebcam.Start();
}
}
@@ -1309,7 +1309,7 @@ namespace Vocaluxe.Screens
float currentTime = _CurrentTime - song.Start;
if (_Length < 0 && totalTime > 0)
- _PrepareTimeLine();
+ _PrepareTimeLine();
if (totalTime <= 0f)
return;
diff --git a/VocaluxeLib/CHelper.cs b/VocaluxeLib/CHelper.cs
index a0ad24d8..6d0bc3ae 100644
--- a/VocaluxeLib/CHelper.cs
+++ b/VocaluxeLib/CHelper.cs
@@ -161,7 +161,7 @@ namespace VocaluxeLib
return files;
}
- public static bool TryParse(string value, out T result, bool ignoreCase=false)
+ public static bool TryParse(string value, out T result, bool ignoreCase = false)
where T : struct
{
result = default(T);
diff --git a/VocaluxeLib/Extensions.cs b/VocaluxeLib/Extensions.cs
index d6c78529..8def331c 100644
--- a/VocaluxeLib/Extensions.cs
+++ b/VocaluxeLib/Extensions.cs
@@ -1,4 +1,21 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
@@ -9,7 +26,7 @@ namespace VocaluxeLib
public static class Extensions
{
///
- /// Resizes the given list to the given size. Removes elements or adds default values
+ /// Resizes the given list to the given size. Removes elements or adds default values
///
///
///
@@ -25,7 +42,7 @@ namespace VocaluxeLib
}
///
- /// Makes the list at least the given size adding the given default values.
+ /// Makes the list at least the given size adding the given default values.
///
///
///
@@ -39,7 +56,7 @@ namespace VocaluxeLib
}
///
- /// Makes the list at least the given size adding a new instance of T
+ /// Makes the list at least the given size adding a new instance of T
///
///
///
@@ -51,7 +68,7 @@ namespace VocaluxeLib
}
///
- /// Gets all set bits starting from lowest (Bit 0)
+ /// Gets all set bits starting from lowest (Bit 0)
///
///
///
@@ -100,7 +117,7 @@ namespace VocaluxeLib
}
///
- /// Converts value to a string in fixed point notation using invariant formating (english style decimal point)
+ /// Converts value to a string in fixed point notation using invariant formating (english style decimal point)
///
/// Value to be converted
/// String representation of value
diff --git a/VocaluxeLib/IBasic.cs b/VocaluxeLib/IBasic.cs
index 3c3725ad..682597b4 100644
--- a/VocaluxeLib/IBasic.cs
+++ b/VocaluxeLib/IBasic.cs
@@ -57,7 +57,7 @@ namespace VocaluxeLib
int GetMaxNumMics();
///
- /// Get the uniform settings for writing XML files. ALWAYS use this!
+ /// Get the uniform settings for writing XML files. ALWAYS use this!
///
XmlWriterSettings GetXMLSettings();
}
diff --git a/VocaluxeLib/Menu/CBackground.cs b/VocaluxeLib/Menu/CBackground.cs
index fe0943cf..b63de885 100644
--- a/VocaluxeLib/Menu/CBackground.cs
+++ b/VocaluxeLib/Menu/CBackground.cs
@@ -138,9 +138,7 @@ namespace VocaluxeLib.Menu
writer.WriteComment(": Texture name for slide-show");
for (int i = 0; i < _Theme.SlideShowTextures.Count; i++)
- {
writer.WriteElementString("SlideShow" + (i + 1), _Theme.SlideShowTextures[i]);
- }
writer.WriteComment(": Background color for type \"Color\" from ColorScheme (high priority)");
writer.WriteComment("or , , , (lower priority)");
@@ -193,9 +191,7 @@ namespace VocaluxeLib.Menu
if (_Theme.Type == EBackgroundTypes.SlideShow && _Theme.SlideShowTextures.Count > 0)
- {
ok = _DrawSlideShow();
- }
if (!String.IsNullOrEmpty(_Theme.TextureName) &&
(_Theme.Type == EBackgroundTypes.Texture ||
@@ -209,7 +205,10 @@ namespace VocaluxeLib.Menu
return true;
}
- public void UnloadTextures() { _SlideShowTextures.Clear(); }
+ public void UnloadTextures()
+ {
+ _SlideShowTextures.Clear();
+ }
public void LoadTextures()
{
@@ -226,7 +225,7 @@ namespace VocaluxeLib.Menu
if (!String.IsNullOrEmpty(image))
{
CTexture texture = CBase.Drawing.AddTexture(image);
- if(texture != null)
+ if (texture != null)
_SlideShowTextures.Add(texture);
}
}
@@ -273,7 +272,7 @@ namespace VocaluxeLib.Menu
private bool _DrawSlideShow()
{
- if (_SlideShowTextures.Count > 0)
+ if (_SlideShowTextures.Count > 0)
{
if (!_SlideShowTimer.IsRunning)
{
@@ -314,10 +313,10 @@ namespace VocaluxeLib.Menu
{
float alpha = (_SlideShowTimer.ElapsedMilliseconds - CBase.Settings.GetSlideShowImageTime()) / CBase.Settings.GetSlideShowFadeTime();
CHelper.SetRect(bounds, out rect, texture.OrigAspect, EAspect.Crop);
- CBase.Drawing.DrawTexture(texture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, (CBase.Settings.GetZFar() / 4) - 1), new SColorF(1,1,1, alpha));
+ CBase.Drawing.DrawTexture(texture, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, (CBase.Settings.GetZFar() / 4) - 1), new SColorF(1, 1, 1, alpha));
}
}
-
+
return true;
}
return false;
diff --git a/VocaluxeLib/Menu/CLyric.cs b/VocaluxeLib/Menu/CLyric.cs
index 4c6366a8..f4315702 100644
--- a/VocaluxeLib/Menu/CLyric.cs
+++ b/VocaluxeLib/Menu/CLyric.cs
@@ -38,7 +38,7 @@ namespace VocaluxeLib.Menu
private bool _ThemeLoaded;
///
- /// Holds a reference to Songline. DO NOT MODIFY
+ /// Holds a reference to Songline. DO NOT MODIFY
///
private CSongLine _Line;
private CText _Text;
diff --git a/VocaluxeLib/Menu/CMenuPartyNameSelection.cs b/VocaluxeLib/Menu/CMenuPartyNameSelection.cs
index 95a7f972..1b8686a4 100644
--- a/VocaluxeLib/Menu/CMenuPartyNameSelection.cs
+++ b/VocaluxeLib/Menu/CMenuPartyNameSelection.cs
@@ -30,6 +30,7 @@ namespace VocaluxeLib.Menu
public int[] NumPlayerTeams;
public List[] TeamList;
}
+
public abstract class CMenuPartyNameSelection : CMenuParty
{
private bool _Teams;
@@ -40,7 +41,7 @@ namespace VocaluxeLib.Menu
protected bool _AllowChangeTeamNum = true;
protected bool _ChangePlayerNumDynamic = true;
protected bool _ChangeTeamNumDynamic = true;
- private int _CurrentTeam = 0;
+ private int _CurrentTeam;
private bool _AvatarsChanged;
private bool _ProfilesChanged;
@@ -70,9 +71,9 @@ namespace VocaluxeLib.Menu
public override void Init()
{
base.Init();
- _ThemeButtons = new string[] { _ButtonBack, _ButtonNext, _ButtonRandom, _ButtonIncreaseTeams, _ButtonDecreaseTeams, _ButtonIncreasePlayer, _ButtonDecreasePlayer };
- _ThemeSelectSlides = new string[] { _SelectSlideTeams, _SelectSlidePlayer };
- _ThemeNameSelections = new string[] { _NameSelection };
+ _ThemeButtons = new string[] {_ButtonBack, _ButtonNext, _ButtonRandom, _ButtonIncreaseTeams, _ButtonDecreaseTeams, _ButtonIncreasePlayer, _ButtonDecreasePlayer};
+ _ThemeSelectSlides = new string[] {_SelectSlideTeams, _SelectSlidePlayer};
+ _ThemeNameSelections = new string[] {_NameSelection};
_ChooseAvatarStatic = GetNewStatic();
_ChooseAvatarStatic.Visible = false;
@@ -83,11 +84,11 @@ namespace VocaluxeLib.Menu
public void SetPartyModeData(int numPlayer)
{
- SetPartyModeData(1, numPlayer, new int[] { numPlayer });
+ SetPartyModeData(1, numPlayer, new int[] {numPlayer});
_CurrentTeam = 0;
}
- public void SetPartyModeData(int numTeams, int numPlayer, int[] numPlayerTeams)
+ public void SetPartyModeData(int numTeams, int numPlayer, int[] numPlayerTeams)
{
_NumTeams = numTeams;
_NumPlayer = numPlayer;
@@ -141,13 +142,14 @@ namespace VocaluxeLib.Menu
_AddPlayer(_CurrentTeam, _SelectedProfileID);
}
//Started selecting with 'P'
- if (_SelectingFast) {
+ if (_SelectingFast)
+ {
if (!_ChangePlayerNumDynamic && _TeamList[_CurrentTeam].Count == _NumPlayerTeams[_CurrentTeam])
resetSelection = true;
else if (_TeamList[_CurrentTeam].Count == _PartyMode.GetMaxPlayerPerTeam())
resetSelection = true;
}
- else if(!_SelectingFast)
+ else if (!_SelectingFast)
resetSelection = true;
break;
@@ -292,14 +294,15 @@ namespace VocaluxeLib.Menu
else if (_SelectSlides[_SelectSlidePlayer].Selected)
IncreasePlayerNum(_CurrentTeam);
break;
-
}
if (numPressed > 0)
{
if (_ChangeTeamNumDynamic && numPressed < _PartyMode.GetMaxTeams() && numPressed > _SelectSlides[_SelectSlideTeams].NumValues)
+ {
while (numPressed < _PartyMode.GetMaxTeams())
IncreaseTeamNum();
+ }
if (numPressed <= _SelectSlides[_SelectSlideTeams].NumValues)
_SelectSlides[_SelectSlideTeams].SetSelectionByValueIndex(numPressed - 1);
}
@@ -353,7 +356,7 @@ namespace VocaluxeLib.Menu
_OldMouseX = mouseEvent.X;
_OldMouseY = mouseEvent.Y;
}
- // LeftButton isn't hold anymore, but Select-Mode is still active -> "Drop" of Avatar
+ // LeftButton isn't hold anymore, but Select-Mode is still active -> "Drop" of Avatar
else if (_SelectedProfileID >= 0 && !_SelectingFast)
{
//Check if mouse is in drop-area
@@ -439,7 +442,7 @@ namespace VocaluxeLib.Menu
else if (mouseEvent.RB)
{
bool exit = true;
- if (_SelectSlides[_SelectSlidePlayer].Selected && _TeamList[_CurrentTeam].Count > 0 )
+ if (_SelectSlides[_SelectSlidePlayer].Selected && _TeamList[_CurrentTeam].Count > 0)
{
int currentSelection = _SelectSlides[_SelectSlidePlayer].Selection;
int id = _TeamList[_CurrentTeam][currentSelection];
@@ -447,7 +450,7 @@ namespace VocaluxeLib.Menu
_UpdatePlayerSlide();
exit = false;
}
-
+
if (exit)
Back();
}
@@ -568,9 +571,7 @@ namespace VocaluxeLib.Menu
return;
if (_NumTeams - 1 >= _PartyMode.GetMinTeams())
- {
_NumTeams--;
- }
_UpdateButtonState();
}
@@ -601,9 +602,8 @@ namespace VocaluxeLib.Menu
}
_UpdateButtonState();
}
-
- #region private methods
+ #region private methods
private void _OnProfileChanged(EProfileChangedFlags flags)
{
if (EProfileChangedFlags.Avatar == (EProfileChangedFlags.Avatar & flags))
@@ -650,9 +650,7 @@ namespace VocaluxeLib.Menu
_SelectSlides[_SelectSlidePlayer].AddValue(name, avatar);
}
for (int i = _TeamList[_CurrentTeam].Count; i < _NumPlayerTeams[_CurrentTeam]; i++)
- {
_SelectSlides[_SelectSlidePlayer].AddValue("", _NameSelections[_NameSelection].TextureEmptyTile);
- }
if (selection >= _TeamList[_CurrentTeam].Count)
selection = _TeamList[_CurrentTeam].Count - 1;
_SelectSlides[_SelectSlidePlayer].SetSelectionByValueIndex(selection);
@@ -664,13 +662,12 @@ namespace VocaluxeLib.Menu
_SelectSlides[_SelectSlideTeams].Clear();
for (int i = 1; i <= _NumTeams; i++)
_SelectSlides[_SelectSlideTeams].AddValue("Team " + i);
-
}
private void _UpdateButtonVisibility()
{
- _Buttons[_ButtonIncreaseTeams].Visible = _AllowChangePlayerNum && _Teams && _PartyMode.GetMinTeams() != _PartyMode.GetMaxTeams();
- _Buttons[_ButtonDecreaseTeams].Visible = _AllowChangePlayerNum && _Teams && _PartyMode.GetMinTeams() != _PartyMode.GetMaxTeams();
+ _Buttons[_ButtonIncreaseTeams].Visible = _AllowChangePlayerNum && _Teams && _PartyMode.GetMinTeams() != _PartyMode.GetMaxTeams();
+ _Buttons[_ButtonDecreaseTeams].Visible = _AllowChangePlayerNum && _Teams && _PartyMode.GetMinTeams() != _PartyMode.GetMaxTeams();
_Buttons[_ButtonIncreasePlayer].Visible = _AllowChangePlayerNum;
_Buttons[_ButtonDecreasePlayer].Visible = _AllowChangePlayerNum;
}
@@ -711,9 +708,7 @@ namespace VocaluxeLib.Menu
List ids = new List();
ids.AddRange(_TeamList[t]);
for (int p = 0; p < ids.Count; p++)
- {
_RemovePlayer(t, ids[p]);
- }
}
}
@@ -745,7 +740,6 @@ namespace VocaluxeLib.Menu
}
}
}
-
- #endregion
+ #endregion
}
-}
+}
\ No newline at end of file
diff --git a/VocaluxeLib/Menu/CNameSelection.cs b/VocaluxeLib/Menu/CNameSelection.cs
index 9e08262b..301c2d04 100644
--- a/VocaluxeLib/Menu/CNameSelection.cs
+++ b/VocaluxeLib/Menu/CNameSelection.cs
@@ -376,7 +376,7 @@ namespace VocaluxeLib.Menu
_Player = player;
_PlayerSelector.Color = CBase.Theme.GetPlayerColor(player);
}
- //Normal activation
+ //Normal activation
else if (active)
{
Selection = 0;
@@ -385,7 +385,7 @@ namespace VocaluxeLib.Menu
_PlayerSelector.Color = CBase.Theme.GetPlayerColor(player);
_PlayerSelector.Visible = true;
}
- //Deactivate
+ //Deactivate
else
{
Selection = -1;
@@ -415,7 +415,8 @@ namespace VocaluxeLib.Menu
{
_Tiles[i].Avatar.Texture = CBase.Profiles.GetAvatar(_VisibleProfiles[i + offset * _Tiles.Count]);
_Tiles[i].Avatar.Color = new SColorF(1, 1, 1, 1);
- _Tiles[i].Name.Text = CBase.Profiles.GetPlayerName(_VisibleProfiles[i + offset * _Tiles.Count]); ;
+ _Tiles[i].Name.Text = CBase.Profiles.GetPlayerName(_VisibleProfiles[i + offset * _Tiles.Count]);
+ ;
_Tiles[i].ProfileID = _VisibleProfiles[i + offset * _Tiles.Count];
}
else
@@ -462,7 +463,7 @@ namespace VocaluxeLib.Menu
return new CStatic(_PartyModeID);
}
- public void UnloadTextures() { }
+ public void UnloadTextures() {}
public void LoadTextures()
{
@@ -486,12 +487,14 @@ namespace VocaluxeLib.Menu
public void UseProfile(int id)
{
- if(id > -1)
+ if (id > -1)
+ {
if (!_UsedProfiles.Contains(id) && CBase.Profiles.IsProfileIDValid(id) && !CBase.Profiles.IsGuest(id))
{
_UsedProfiles.Add(id);
UpdateList();
}
+ }
}
public void RemoveUsedProfile(int id)
@@ -513,7 +516,7 @@ namespace VocaluxeLib.Menu
if (_VisibleProfiles.Count == _UsedProfiles.Count)
return id;
- while(id == -1)
+ while (id == -1)
{
int rand = CBase.Game.GetRandom(_VisibleProfiles.Count);
if (_UsedProfiles.Contains(_VisibleProfiles[rand]))
@@ -532,7 +535,7 @@ namespace VocaluxeLib.Menu
for (int j = 0; j < _NumW; j++)
{
var rect = new SRectF(Rect.X + j * (_TileW + _SpaceW), Rect.Y + i * (_TileH + _SpaceH), _TileW, _TileH, Rect.Z);
- var tileStatic = new CStatic(_PartyModeID, _TextureEmptyTile, ColorEmptyTile, rect) { Aspect = EAspect.Crop };
+ var tileStatic = new CStatic(_PartyModeID, _TextureEmptyTile, ColorEmptyTile, rect) {Aspect = EAspect.Crop};
var tileText = new CText(rect.X + rect.W / 2, rect.Y + rect.H + _Theme.NameSpace, rect.Z, _Theme.NameHeight, rect.W, EAlignment.Center, _Theme.NameStyle,
_Theme.NameFont, _Theme.NameColor, "");
_Tiles.Add(new CTile(tileStatic, tileText, -1));
diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs b/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs
index 68ee6513..2beb4e95 100644
--- a/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs
+++ b/VocaluxeLib/Menu/SongMenu/CSongMenuTileBoard.cs
@@ -71,10 +71,7 @@ namespace VocaluxeLib.Menu.SongMenu
base._PreviewIdInternal = value;
_UpdatePreview();
}
- get
- {
- return base._PreviewIdInternal;
- }
+ get { return base._PreviewIdInternal; }
}
public override int GetActualSelection()
@@ -375,7 +372,7 @@ namespace VocaluxeLib.Menu.SongMenu
}
if (!keyEvent.Handled)
- {
+ {
_ActualSelection = _Locked;
if (_PreviewId != _Locked)
_PreviewId = _Locked;
diff --git a/VocaluxeLib/Profile/CAvatar.cs b/VocaluxeLib/Profile/CAvatar.cs
index 35aff61e..716884c6 100644
--- a/VocaluxeLib/Profile/CAvatar.cs
+++ b/VocaluxeLib/Profile/CAvatar.cs
@@ -1,18 +1,18 @@
#region license
-// This file is part of Vocaluxe.
+// This file is part of Vocaluxe.
//
-// Vocaluxe is free software: you can redistribute it and/or modify
-// it under the terms of the GNU General Public License as published by
-// the Free Software Foundation, either version 3 of the License, or
-// (at your option) any later version.
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
//
-// Vocaluxe is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
//
-// You should have received a copy of the GNU General Public License
-// along with Vocaluxe. If not, see .
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
#endregion
using VocaluxeLib.Draw;
diff --git a/VocaluxeLib/Profile/CProfile.cs b/VocaluxeLib/Profile/CProfile.cs
index 4e27614c..7d4e2b54 100644
--- a/VocaluxeLib/Profile/CProfile.cs
+++ b/VocaluxeLib/Profile/CProfile.cs
@@ -121,7 +121,7 @@ namespace VocaluxeLib.Profile
string filename = string.Empty;
// ReSharper disable LoopCanBeConvertedToQuery
foreach (char chr in PlayerName)
- // ReSharper restore LoopCanBeConvertedToQuery
+ // ReSharper restore LoopCanBeConvertedToQuery
{
if (char.IsLetter(chr))
filename += chr.ToString();
@@ -166,13 +166,9 @@ namespace VocaluxeLib.Profile
writer.WriteElementString("UserRole", Enum.GetName(typeof(EUserRole), UserRole));
writer.WriteElementString("Active", Enum.GetName(typeof(EOffOn), Active));
if (PasswordHash != null)
- {
writer.WriteElementString("PasswordHash", Convert.ToBase64String(PasswordHash));
- }
if (PasswordSalt != null)
- {
writer.WriteElementString("PasswordSalt", Convert.ToBase64String(PasswordSalt));
- }
writer.WriteEndElement();
writer.WriteEndElement(); //end of root
diff --git a/VocaluxeLib/Songs/CBaseNote.cs b/VocaluxeLib/Songs/CBaseNote.cs
index 45043aa7..271283c3 100644
--- a/VocaluxeLib/Songs/CBaseNote.cs
+++ b/VocaluxeLib/Songs/CBaseNote.cs
@@ -49,7 +49,7 @@ namespace VocaluxeLib.Songs
public int StartBeat { get; set; }
///
- /// Last beat of this note. First valid beat for a note after that is at EndBeat+1
+ /// Last beat of this note. First valid beat for a note after that is at EndBeat+1
///
public int EndBeat
{
diff --git a/VocaluxeLib/Songs/CLineBase.cs b/VocaluxeLib/Songs/CLineBase.cs
index 53826d83..16023f42 100644
--- a/VocaluxeLib/Songs/CLineBase.cs
+++ b/VocaluxeLib/Songs/CLineBase.cs
@@ -80,7 +80,7 @@ namespace VocaluxeLib.Songs
#region Methods
///
- /// Find last note with StartBeat
+ /// Find last note with StartBeat
///
///
/// Note index of last note with StartBeat or -1 if all notes start after beat
diff --git a/VocaluxeLib/Songs/CSong.cs b/VocaluxeLib/Songs/CSong.cs
index 53d2dde8..e711cd94 100644
--- a/VocaluxeLib/Songs/CSong.cs
+++ b/VocaluxeLib/Songs/CSong.cs
@@ -134,21 +134,21 @@ namespace VocaluxeLib.Songs
public readonly List UnknownTags = new List();
///
- /// Start of the song in s (s in txt)
+ /// Start of the song in s (s in txt)
///
public float Start;
///
- /// End of the song in s (ms in txt)
+ /// End of the song in s (ms in txt)
///
public float Finish;
public float BPM = 1f;
///
- /// Gap of the mp3 in s (ms in txt)
+ /// Gap of the mp3 in s (ms in txt)
///
public float Gap;
///
- /// Gap of the video in s (s in txt)
+ /// Gap of the video in s (s in txt)
///
public float VideoGap;
@@ -194,7 +194,7 @@ namespace VocaluxeLib.Songs
}
///
- /// Returns true if the requested game mode is available
+ /// Returns true if the requested game mode is available
///
///
/// true if the requested game mode is available
diff --git a/VocaluxeLib/Songs/CSongLoader.cs b/VocaluxeLib/Songs/CSongLoader.cs
index 26e1dea1..98ba075c 100644
--- a/VocaluxeLib/Songs/CSongLoader.cs
+++ b/VocaluxeLib/Songs/CSongLoader.cs
@@ -1,4 +1,21 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
using System.IO;
using System.Linq;
using System.Text;
@@ -6,12 +23,12 @@ using System.Text;
namespace VocaluxeLib.Songs
{
///
- /// Part of CSong that is required for note loading
+ /// Part of CSong that is required for note loading
///
public partial class CSong
{
///
- /// Factor the bpm given in the txt is multiplied with
+ /// Factor the bpm given in the txt is multiplied with
///
private const int _BPMFactor = 4;
@@ -54,7 +71,7 @@ namespace VocaluxeLib.Songs
}
///
- /// Logs a given message with file name and line#
+ /// Logs a given message with file name and line#
///
/// Message
/// True prepends "Error: "; False prepends "Warning: "
@@ -470,9 +487,9 @@ namespace VocaluxeLib.Songs
private const int _MaxOverlapNoteCt = 3;
///
- /// Read notes. First try to read notes normally (assume standard)
- /// If there are more than _MaxZeroNoteCt with length < 1, try to read notes adding 1 to length
- /// Then if there are more than _MaxOverlapNoteCt fallback to first version ignoring notes with length < 1
+ /// Read notes. First try to read notes normally (assume standard)
+ /// If there are more than _MaxZeroNoteCt with length < 1, try to read notes adding 1 to length
+ /// Then if there are more than _MaxOverlapNoteCt fallback to first version ignoring notes with length < 1
///
///
///
diff --git a/VocaluxeLib/Songs/CSongWriter.cs b/VocaluxeLib/Songs/CSongWriter.cs
index 9d7328b7..1e3221d8 100644
--- a/VocaluxeLib/Songs/CSongWriter.cs
+++ b/VocaluxeLib/Songs/CSongWriter.cs
@@ -1,4 +1,21 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
using System.Collections.Generic;
using System.IO;
diff --git a/VocaluxeLib/Songs/CVoice.cs b/VocaluxeLib/Songs/CVoice.cs
index 47433e95..27aaeae0 100644
--- a/VocaluxeLib/Songs/CVoice.cs
+++ b/VocaluxeLib/Songs/CVoice.cs
@@ -69,7 +69,7 @@ namespace VocaluxeLib.Songs
#region Methods
///
- /// Find last line with StartBeat
+ /// Find last line with StartBeat
///
///
///
@@ -128,7 +128,7 @@ namespace VocaluxeLib.Songs
{
CSongLine prevLine = _Lines[insPos];
//We already have a line break here
- if (prevLine.StartBeat == startBeat && (prevLine.NoteCount==0 || prevLine.FirstNoteBeat == startBeat))
+ if (prevLine.StartBeat == startBeat && (prevLine.NoteCount == 0 || prevLine.FirstNoteBeat == startBeat))
return false;
//Maybe we have to split the previous line
while (prevLine.NoteCount > 0 && prevLine.LastNote.StartBeat >= startBeat)
diff --git a/WebserverInitalConfig/CConfigHttpApi.cs b/WebserverInitalConfig/CConfigHttpApi.cs
new file mode 100644
index 00000000..4bbd3ed9
--- /dev/null
+++ b/WebserverInitalConfig/CConfigHttpApi.cs
@@ -0,0 +1,171 @@
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using Security.Cryptography;
+using Security.Cryptography.X509Certificates;
+using System;
+using System.Linq;
+using System.Net;
+using System.Security.Cryptography;
+using System.Security.Cryptography.X509Certificates;
+using NetFwTypeLib;
+
+namespace WebserverInitalConfig
+{
+ public static class CConfigHttpApi
+ {
+ // ReSharper disable InconsistentNaming
+ private const String CLSID_NetFwMgr = "{304CE942-6E39-40D8-943A-B913C40C9CD4}";
+ private const String CLSID_NetAuthApp = "{EC9846B3-2762-4A6B-A214-6ACB603462D2}";
+ private const String CLSID_NetOpenPort = "{0CA545C6-37AD-4A6C-BF92-9F7610067EF5}";
+ // ReSharper restore InconsistentNaming
+ public static void ReserveUrl(string networkString)
+ {
+ HttpApi.ReserveURL(networkString, "D:(A;;GX;;;S-1-1-0)");
+ }
+
+ public static void BindCert(string ip, int port, X509Certificate2 cert)
+ {
+ IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse(ip), port);
+ if (HttpApi.QuerySslCertificateInfo(endpoint) != null)
+ HttpApi.DeleteCertificateBinding(endpoint);
+
+ HttpApi.BindCertificate(endpoint, cert.GetCertHash(), StoreName.My, new Guid("{7baf41f1-48b7-42cb-b145-f815499cb48f}"));
+ }
+
+ public static void AddCertToStore(X509Certificate2 cert)
+ {
+ X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
+ store.Open(OpenFlags.ReadWrite);
+
+ X509Certificate2Collection oldCerts = store.Certificates.Find(X509FindType.FindBySubjectDistinguishedName,
+ cert.SubjectName.Name, false);
+
+ foreach (X509Certificate2 oldCert in oldCerts)
+ store.Remove(oldCert);
+
+ store.Add(cert);
+ store.Close();
+ }
+
+ public static X509Certificate2 GetSelfSignedCert(string subjectName)
+ {
+ var keyParam = new CngKeyCreationParameters
+ {
+ ExportPolicy = CngExportPolicies.AllowExport,
+ KeyCreationOptions = CngKeyCreationOptions.MachineKey | CngKeyCreationOptions.OverwriteExistingKey,
+ KeyUsage = CngKeyUsages.AllUsages,
+ Provider = CngProvider.MicrosoftSoftwareKeyStorageProvider,
+ };
+
+ keyParam.Parameters.Add(new CngProperty("Length", BitConverter.GetBytes(2048), CngPropertyOptions.None));
+
+ CngKey key = CngKey.Create(CngAlgorithm2.Rsa, Guid.NewGuid().ToString(), keyParam);
+
+ X509CertificateCreationParameters param = new X509CertificateCreationParameters(new X500DistinguishedName(subjectName))
+ {
+ SubjectName = new X500DistinguishedName(subjectName),
+ EndTime = DateTime.Today.AddYears(20) //,SignatureAlgorithm = X509CertificateSignatureAlgorithm.RsaSha512
+ };
+
+ OidCollection oc = new OidCollection {new Oid("1.3.6.1.5.5.7.3.1")};
+ X509Extension eku = new X509EnhancedKeyUsageExtension(oc, true);
+ param.Extensions.Add(eku);
+
+ param.TakeOwnershipOfKey = true;
+
+ byte[] rawData = key.CreateSelfSignedCertificate(param).Export(X509ContentType.Pfx, "");
+ var cert = new X509Certificate2(rawData, "", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet)
+ {
+ FriendlyName = "Vocaluxe Server Certificate"
+ };
+ return cert;
+ }
+
+ private static void _AddFirewallRuleForProfile(INetFwProfile profile, string exePath, int port, bool isTCP)
+ {
+ bool isFirewallEnabled = profile.FirewallEnabled;
+
+ if (!isFirewallEnabled)
+ return;
+ INetFwAuthorizedApplications applications = profile.AuthorizedApplications;
+ if (!(from INetFwAuthorizedApplication a in applications
+ where a.ProcessImageFileName == exePath
+ select a).Any())
+ {
+ INetFwAuthorizedApplication application = (INetFwAuthorizedApplication)Activator.CreateInstance(
+ Type.GetTypeFromCLSID(new Guid(CLSID_NetAuthApp)));
+
+ application.Name = "Vocaluxe";
+ application.ProcessImageFileName = exePath;
+ application.Enabled = true;
+ application.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_ALL;
+ applications.Add(application);
+ }
+ INetFwOpenPorts openPorts = profile.GloballyOpenPorts;
+ NET_FW_IP_PROTOCOL_ protocol = isTCP ? NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP : NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP;
+ if (!(from INetFwOpenPort p in openPorts
+ where (p.Port == port &&
+ (p.Protocol == protocol))
+ select p).Any())
+ {
+ INetFwOpenPort openPort = (INetFwOpenPort)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid(CLSID_NetOpenPort)));
+ openPort.Enabled = true;
+ openPort.Port = port;
+ openPort.Protocol = protocol;
+ openPort.Name = "Vocaluxe(" + port + ")";
+ openPort.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_ALL;
+
+ openPorts.Add(openPort);
+ }
+ }
+
+ public static void AddFirewallRule(string exePath, int port, bool isTCP)
+ {
+ INetFwMgr manage = (INetFwMgr)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid(CLSID_NetFwMgr)));
+ //AddFirewallRuleForProfile(manage.LocalPolicy.CurrentProfile, exePath, port, isTCP);
+ //if (manage.CurrentProfileType != NET_FW_PROFILE_TYPE_.NET_FW_PROFILE_STANDARD)
+ //Add to Home/Work(Private) and current net
+ //TODO: This somewhow adds 2 entries each instead of only one that is activated for Home/Work and public nets
+ _AddFirewallRuleForProfile(manage.LocalPolicy.GetProfileByType(NET_FW_PROFILE_TYPE_.NET_FW_PROFILE_STANDARD), exePath, port, isTCP);
+ _AddFirewallRuleForProfile(manage.LocalPolicy.GetProfileByType(NET_FW_PROFILE_TYPE_.NET_FW_PROFILE_CURRENT), exePath, port, isTCP);
+ }
+
+ /*public static X509Certificate2 getCert(string subject)
+ {
+ RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
+
+ Mono.Security.Authenticode.PrivateKey key = new Mono.Security.Authenticode.PrivateKey { RSA=RSA.Create()};
+
+
+ Mono.Security.X509.X509CertificateBuilder x509 = new Mono.Security.X509.X509CertificateBuilder();
+ x509.IssuerName = "CN=Vocaluxe Server";
+ x509.NotAfter = DateTime.Today.AddYears(20);
+ x509.NotBefore = DateTime.Today.AddDays(-1);
+ x509.SubjectName = subject;
+ x509.SerialNumber = new byte[] { 1 };
+ x509.Version = 3;
+ x509.SubjectPublicKey = rsa;
+
+ ExtendedKeyUsageExtension eku = new ExtendedKeyUsageExtension();
+ eku.KeyPurpose.Add("1.3.6.1.5.5.7.3.1");
+ x509.Extensions.Add(eku);
+
+ return new X509Certificate2(x509.Sign(rsa));
+ }*/
+ }
+}
\ No newline at end of file
diff --git a/WebserverInitalConfig/ConfigHttpApi.cs b/WebserverInitalConfig/ConfigHttpApi.cs
deleted file mode 100644
index 72ddef79..00000000
--- a/WebserverInitalConfig/ConfigHttpApi.cs
+++ /dev/null
@@ -1,149 +0,0 @@
-using Security.Cryptography;
-using Security.Cryptography.X509Certificates;
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Net;
-using System.Security.Cryptography;
-using System.Security.Cryptography.X509Certificates;
-using System.Security.Permissions;
-using System.Text;
-using System.Threading.Tasks;
-using NetFwTypeLib;
-
-namespace WebserverInitalConfig
-{
- public static class ConfigHttpApi
- {
-
- public static void reserveURL(string networkString)
- {
- HttpApi.ReserveURL(networkString, "D:(A;;GX;;;S-1-1-0)");
- }
-
-
- public static void bindCert(string ip, int port, X509Certificate2 cert)
- {
- IPEndPoint endpoint = new IPEndPoint(IPAddress.Parse(ip), port);
- if (HttpApi.QuerySslCertificateInfo(endpoint) != null)
- {
- HttpApi.DeleteCertificateBinding(endpoint);
- }
-
- HttpApi.BindCertificate(endpoint, cert.GetCertHash(), StoreName.My, new Guid("{7baf41f1-48b7-42cb-b145-f815499cb48f}"));
- }
-
-
- public static void addCertToStore(X509Certificate2 cert)
- {
- X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine);
- store.Open(OpenFlags.ReadWrite);
-
- X509Certificate2Collection oldCerts = store.Certificates.Find(X509FindType.FindBySubjectDistinguishedName,
- cert.SubjectName.Name, false);
-
- foreach (var oldCert in oldCerts)
- {
- store.Remove(oldCert);
- }
-
- store.Add(cert);
- store.Close();
- }
-
-
- public static X509Certificate2 getSelfSignedCert(string subjectName)
- {
- var keyParam = new CngKeyCreationParameters
- {
- ExportPolicy = CngExportPolicies.AllowExport,
- KeyCreationOptions = CngKeyCreationOptions.MachineKey | CngKeyCreationOptions.OverwriteExistingKey,
- KeyUsage = CngKeyUsages.AllUsages,
- Provider = CngProvider.MicrosoftSoftwareKeyStorageProvider,
- };
-
- keyParam.Parameters.Add(new CngProperty("Length", BitConverter.GetBytes(2048), CngPropertyOptions.None));
-
- CngKey key = CngKey.Create(CngAlgorithm2.Rsa, Guid.NewGuid().ToString(), keyParam);
-
- X509CertificateCreationParameters param = new X509CertificateCreationParameters(
- new X500DistinguishedName(subjectName));
- param.SubjectName = new X500DistinguishedName(subjectName);
- param.EndTime = DateTime.Today.AddYears(20);
- //param.SignatureAlgorithm = X509CertificateSignatureAlgorithm.RsaSha512;
-
- OidCollection oc = new OidCollection();
- oc.Add(new Oid("1.3.6.1.5.5.7.3.1"));
- X509Extension eku = new X509EnhancedKeyUsageExtension(oc, true);
- param.Extensions.Add(eku);
-
- param.TakeOwnershipOfKey = true;
-
- byte[] rawData = key.CreateSelfSignedCertificate(param).Export(X509ContentType.Pfx, "");
- var cert = new X509Certificate2(rawData, "", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
- cert.FriendlyName = "Vocaluxe Server Certificate";
- return cert;
- }
-
- public static void addFirewallrule(string exePath, int port, bool isTCP)
- {
- INetFwMgr manage = (INetFwMgr)Activator.CreateInstance(
- Type.GetTypeFromCLSID(new Guid("{304CE942-6E39-40D8-943A-B913C40C9CD4}")));
- bool isFirewallEnabled = manage.LocalPolicy.CurrentProfile.FirewallEnabled;
-
- if (isFirewallEnabled)
- {
- INetFwAuthorizedApplications applications = manage.LocalPolicy.CurrentProfile.AuthorizedApplications;
- if ((from INetFwAuthorizedApplication a in applications
- where a.ProcessImageFileName == exePath
- select a).Count() == 0)
- {
- INetFwAuthorizedApplication application = (INetFwAuthorizedApplication)Activator.CreateInstance(
- Type.GetTypeFromCLSID(new Guid("{EC9846B3-2762-4A6B-A214-6ACB603462D2}")));
-
- application.Name = "Vocaluxe";
- application.ProcessImageFileName = exePath;
- application.Enabled = true;
- applications.Add(application);
- }
- INetFwOpenPorts openPorts = manage.LocalPolicy.CurrentProfile.GloballyOpenPorts;
- if ((from INetFwOpenPort p in openPorts
- where (p.Port == port &&
- (p.Protocol == (isTCP?NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP : NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP)))
- select p).Count() == 0)
- {
- INetFwOpenPort openPort = (INetFwOpenPort)Activator.CreateInstance(
- Type.GetTypeFromCLSID(new Guid("{0CA545C6-37AD-4A6C-BF92-9F7610067EF5}")));
- openPort.Enabled = true;
- openPort.Port = port;
- openPort.Protocol = (isTCP ? NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP : NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_UDP);
- openPort.Name = "Vocaluxe";
-
- openPorts.Add(openPort);
- }
- }
- }
- /*public static X509Certificate2 getCert(string subject)
- {
- RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
-
- Mono.Security.Authenticode.PrivateKey key = new Mono.Security.Authenticode.PrivateKey { RSA=RSA.Create()};
-
-
- Mono.Security.X509.X509CertificateBuilder x509 = new Mono.Security.X509.X509CertificateBuilder();
- x509.IssuerName = "CN=Vocaluxe Server";
- x509.NotAfter = DateTime.Today.AddYears(20);
- x509.NotBefore = DateTime.Today.AddDays(-1);
- x509.SubjectName = subject;
- x509.SerialNumber = new byte[] { 1 };
- x509.Version = 3;
- x509.SubjectPublicKey = rsa;
-
- ExtendedKeyUsageExtension eku = new ExtendedKeyUsageExtension();
- eku.KeyPurpose.Add("1.3.6.1.5.5.7.3.1");
- x509.Extensions.Add(eku);
-
- return new X509Certificate2(x509.Sign(rsa));
- }*/
- }
-}
diff --git a/WebserverInitalConfig/HttpApi.cs b/WebserverInitalConfig/HttpApi.cs
index 29f1994a..c248f8b6 100644
--- a/WebserverInitalConfig/HttpApi.cs
+++ b/WebserverInitalConfig/HttpApi.cs
@@ -1,4 +1,21 @@
-using System;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
@@ -11,28 +28,19 @@ using System.Threading.Tasks;
namespace WebserverInitalConfig
{
- internal static class HttpApi
+ static class HttpApi
{
private static readonly HTTPAPI_VERSION HttpApiVersion = new HTTPAPI_VERSION(1, 0);
#region DllImport
-
[DllImport("httpapi.dll", SetLastError = true)]
- static extern uint HttpInitialize(
+ private static extern uint HttpInitialize(
HTTPAPI_VERSION version,
uint flags,
IntPtr pReserved);
[DllImport("httpapi.dll", SetLastError = true)]
- static extern uint HttpSetServiceConfiguration(
- IntPtr serviceIntPtr,
- HTTP_SERVICE_CONFIG_ID configId,
- IntPtr pConfigInformation,
- int configInformationLength,
- IntPtr pOverlapped);
-
- [DllImport("httpapi.dll", SetLastError = true)]
- static extern uint HttpDeleteServiceConfiguration(
+ private static extern uint HttpSetServiceConfiguration(
IntPtr serviceIntPtr,
HTTP_SERVICE_CONFIG_ID configId,
IntPtr pConfigInformation,
@@ -40,26 +48,31 @@ namespace WebserverInitalConfig
IntPtr pOverlapped);
[DllImport("httpapi.dll", SetLastError = true)]
- static extern uint HttpTerminate(
+ private static extern uint HttpDeleteServiceConfiguration(
+ IntPtr serviceIntPtr,
+ HTTP_SERVICE_CONFIG_ID configId,
+ IntPtr pConfigInformation,
+ int configInformationLength,
+ IntPtr pOverlapped);
+
+ [DllImport("httpapi.dll", SetLastError = true)]
+ private static extern uint HttpTerminate(
uint Flags,
IntPtr pReserved);
[DllImport("httpapi.dll", SetLastError = true)]
- static extern uint HttpQueryServiceConfiguration(
- IntPtr serviceIntPtr,
- HTTP_SERVICE_CONFIG_ID configId,
- IntPtr pInputConfigInfo,
- int inputConfigInfoLength,
- IntPtr pOutputConfigInfo,
- int outputConfigInfoLength,
- [Optional]
- out int pReturnLength,
- IntPtr pOverlapped);
+ private static extern uint HttpQueryServiceConfiguration(
+ IntPtr serviceIntPtr,
+ HTTP_SERVICE_CONFIG_ID configId,
+ IntPtr pInputConfigInfo,
+ int inputConfigInfoLength,
+ IntPtr pOutputConfigInfo,
+ int outputConfigInfoLength,
+ [Optional] out int pReturnLength,
+ IntPtr pOverlapped);
-
- enum HTTP_SERVICE_CONFIG_ID
+ private enum HTTP_SERVICE_CONFIG_ID
{
-
HttpServiceConfigIPListenList = 0,
HttpServiceConfigSSLCertInfo,
HttpServiceConfigUrlAclInfo,
@@ -67,14 +80,14 @@ namespace WebserverInitalConfig
}
[StructLayout(LayoutKind.Sequential)]
- struct HTTP_SERVICE_CONFIG_SSL_SET
+ private struct HTTP_SERVICE_CONFIG_SSL_SET
{
public HTTP_SERVICE_CONFIG_SSL_KEY KeyDesc;
public HTTP_SERVICE_CONFIG_SSL_PARAM ParamDesc;
}
[StructLayout(LayoutKind.Sequential)]
- struct HTTP_SERVICE_CONFIG_SSL_KEY
+ private struct HTTP_SERVICE_CONFIG_SSL_KEY
{
public IntPtr pIpPort;
@@ -85,25 +98,22 @@ namespace WebserverInitalConfig
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- struct HTTP_SERVICE_CONFIG_SSL_PARAM
+ private struct HTTP_SERVICE_CONFIG_SSL_PARAM
{
public int SslHashLength;
public IntPtr pSslHash;
public Guid AppId;
- [MarshalAs(UnmanagedType.LPWStr)]
- public string pSslCertStoreName;
+ [MarshalAs(UnmanagedType.LPWStr)] public string pSslCertStoreName;
public uint DefaultCertCheckMode;
public int DefaultRevocationFreshnessTime;
public int DefaultRevocationUrlRetrievalTimeout;
- [MarshalAs(UnmanagedType.LPWStr)]
- public string pDefaultSslCtlIdentifier;
- [MarshalAs(UnmanagedType.LPWStr)]
- public string pDefaultSslCtlStoreName;
+ [MarshalAs(UnmanagedType.LPWStr)] public string pDefaultSslCtlIdentifier;
+ [MarshalAs(UnmanagedType.LPWStr)] public string pDefaultSslCtlStoreName;
public uint DefaultFlags;
}
[StructLayout(LayoutKind.Sequential, Pack = 2)]
- struct HTTPAPI_VERSION
+ private struct HTTPAPI_VERSION
{
public ushort HttpApiMajorVersion;
public ushort HttpApiMinorVersion;
@@ -116,14 +126,14 @@ namespace WebserverInitalConfig
}
[StructLayout(LayoutKind.Sequential)]
- struct HTTP_SERVICE_CONFIG_SSL_QUERY
+ private struct HTTP_SERVICE_CONFIG_SSL_QUERY
{
public HTTP_SERVICE_CONFIG_QUERY_TYPE QueryDesc;
public HTTP_SERVICE_CONFIG_SSL_KEY KeyDesc;
public uint dwToken;
}
- enum HTTP_SERVICE_CONFIG_QUERY_TYPE
+ private enum HTTP_SERVICE_CONFIG_QUERY_TYPE
{
HttpServiceConfigQueryExact = 0,
HttpServiceConfigQueryNext,
@@ -131,7 +141,7 @@ namespace WebserverInitalConfig
}
[StructLayout(LayoutKind.Sequential)]
- struct HTTP_SERVICE_CONFIG_URLACL_SET
+ private struct HTTP_SERVICE_CONFIG_URLACL_SET
{
public HTTP_SERVICE_CONFIG_URLACL_KEY KeyDesc;
public HTTP_SERVICE_CONFIG_URLACL_PARAM ParamDesc;
@@ -140,8 +150,7 @@ namespace WebserverInitalConfig
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct HTTP_SERVICE_CONFIG_URLACL_KEY
{
- [MarshalAs(UnmanagedType.LPWStr)]
- public string pUrlPrefix;
+ [MarshalAs(UnmanagedType.LPWStr)] public string pUrlPrefix;
public HTTP_SERVICE_CONFIG_URLACL_KEY(string urlPrefix)
{
@@ -150,21 +159,18 @@ namespace WebserverInitalConfig
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
- struct HTTP_SERVICE_CONFIG_URLACL_PARAM
+ private struct HTTP_SERVICE_CONFIG_URLACL_PARAM
{
- [MarshalAs(UnmanagedType.LPWStr)]
- public string pStringSecurityDescriptor;
+ [MarshalAs(UnmanagedType.LPWStr)] public string pStringSecurityDescriptor;
public HTTP_SERVICE_CONFIG_URLACL_PARAM(string securityDescriptor)
{
pStringSecurityDescriptor = securityDescriptor;
}
}
-
#endregion
#region Constants
-
public const uint HTTP_INITIALIZE_CONFIG = 0x00000002;
public const uint HTTP_SERVICE_CONFIG_SSL_FLAG_NEGOTIATE_CLIENT_CERT = 0x00000002;
public const uint HTTP_SERVICE_CONFIG_SSL_FLAG_NO_RAW_FILTER = 0x00000004;
@@ -173,11 +179,9 @@ namespace WebserverInitalConfig
private const uint ERROR_ALREADY_EXISTS = 183;
private const uint ERROR_FILE_NOT_FOUND = 2;
private const int ERROR_NO_MORE_ITEMS = 259;
-
#endregion
#region Public methods
-
public class SslCertificateInfo
{
public byte[] Hash { get; set; }
@@ -192,162 +196,158 @@ namespace WebserverInitalConfig
uint retVal;
CallHttpApi(delegate
- {
- GCHandle sockAddrHandle = CreateSockaddrStructure(ipPort);
- IntPtr pIpPort = sockAddrHandle.AddrOfPinnedObject();
- HTTP_SERVICE_CONFIG_SSL_KEY sslKey = new HTTP_SERVICE_CONFIG_SSL_KEY(pIpPort);
-
- HTTP_SERVICE_CONFIG_SSL_QUERY inputConfigInfoQuery =
- new HTTP_SERVICE_CONFIG_SSL_QUERY
- {
- QueryDesc = HTTP_SERVICE_CONFIG_QUERY_TYPE.HttpServiceConfigQueryExact,
- KeyDesc = sslKey
- };
-
- IntPtr pInputConfigInfo =
- Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_SSL_QUERY)));
- Marshal.StructureToPtr(inputConfigInfoQuery, pInputConfigInfo, false);
-
- IntPtr pOutputConfigInfo = IntPtr.Zero;
- int returnLength = 0;
-
- try
{
- HTTP_SERVICE_CONFIG_ID queryType = HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo;
- int inputConfigInfoSize = Marshal.SizeOf(inputConfigInfoQuery);
- retVal = HttpQueryServiceConfiguration(IntPtr.Zero,
- queryType,
- pInputConfigInfo,
- inputConfigInfoSize,
- pOutputConfigInfo,
- returnLength,
- out returnLength,
- IntPtr.Zero);
- if (retVal == ERROR_FILE_NOT_FOUND)
- return;
+ GCHandle sockAddrHandle = CreateSockaddrStructure(ipPort);
+ IntPtr pIpPort = sockAddrHandle.AddrOfPinnedObject();
+ HTTP_SERVICE_CONFIG_SSL_KEY sslKey = new HTTP_SERVICE_CONFIG_SSL_KEY(pIpPort);
- if (ERROR_INSUFFICIENT_BUFFER == retVal) // ERROR_INSUFFICIENT_BUFFER = 122
+ HTTP_SERVICE_CONFIG_SSL_QUERY inputConfigInfoQuery =
+ new HTTP_SERVICE_CONFIG_SSL_QUERY
+ {
+ QueryDesc = HTTP_SERVICE_CONFIG_QUERY_TYPE.HttpServiceConfigQueryExact,
+ KeyDesc = sslKey
+ };
+
+ IntPtr pInputConfigInfo =
+ Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_SSL_QUERY)));
+ Marshal.StructureToPtr(inputConfigInfoQuery, pInputConfigInfo, false);
+
+ IntPtr pOutputConfigInfo = IntPtr.Zero;
+ int returnLength = 0;
+
+ try
{
- pOutputConfigInfo = Marshal.AllocCoTaskMem(returnLength);
+ HTTP_SERVICE_CONFIG_ID queryType = HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo;
+ int inputConfigInfoSize = Marshal.SizeOf(inputConfigInfoQuery);
+ retVal = HttpQueryServiceConfiguration(IntPtr.Zero,
+ queryType,
+ pInputConfigInfo,
+ inputConfigInfoSize,
+ pOutputConfigInfo,
+ returnLength,
+ out returnLength,
+ IntPtr.Zero);
+ if (retVal == ERROR_FILE_NOT_FOUND)
+ return;
- try
+ if (ERROR_INSUFFICIENT_BUFFER == retVal) // ERROR_INSUFFICIENT_BUFFER = 122
{
- retVal = HttpQueryServiceConfiguration(IntPtr.Zero,
- queryType,
- pInputConfigInfo,
- inputConfigInfoSize,
- pOutputConfigInfo,
- returnLength,
- out returnLength,
- IntPtr.Zero);
+ pOutputConfigInfo = Marshal.AllocCoTaskMem(returnLength);
+
+ try
+ {
+ retVal = HttpQueryServiceConfiguration(IntPtr.Zero,
+ queryType,
+ pInputConfigInfo,
+ inputConfigInfoSize,
+ pOutputConfigInfo,
+ returnLength,
+ out returnLength,
+ IntPtr.Zero);
+ ThrowWin32ExceptionIfError(retVal);
+
+ var outputConfigInfo =
+ (HTTP_SERVICE_CONFIG_SSL_SET)
+ Marshal.PtrToStructure(pOutputConfigInfo, typeof(HTTP_SERVICE_CONFIG_SSL_SET));
+
+ byte[] hash = new byte[outputConfigInfo.ParamDesc.SslHashLength];
+ Marshal.Copy(outputConfigInfo.ParamDesc.pSslHash, hash, 0, hash.Length);
+
+ Guid appId = outputConfigInfo.ParamDesc.AppId;
+ string storeName = outputConfigInfo.ParamDesc.pSslCertStoreName;
+
+ result = new SslCertificateInfo {AppId = appId, Hash = hash, StoreName = storeName, IpPort = ipPort};
+ }
+ finally
+ {
+ Marshal.FreeCoTaskMem(pOutputConfigInfo);
+ }
+ }
+ else
ThrowWin32ExceptionIfError(retVal);
-
- var outputConfigInfo =
- (HTTP_SERVICE_CONFIG_SSL_SET)
- Marshal.PtrToStructure(pOutputConfigInfo, typeof(HTTP_SERVICE_CONFIG_SSL_SET));
-
- byte[] hash = new byte[outputConfigInfo.ParamDesc.SslHashLength];
- Marshal.Copy(outputConfigInfo.ParamDesc.pSslHash, hash, 0, hash.Length);
-
- Guid appId = outputConfigInfo.ParamDesc.AppId;
- string storeName = outputConfigInfo.ParamDesc.pSslCertStoreName;
-
- result = new SslCertificateInfo { AppId = appId, Hash = hash, StoreName = storeName, IpPort = ipPort };
- }
- finally
- {
- Marshal.FreeCoTaskMem(pOutputConfigInfo);
- }
}
- else
+ finally
{
- ThrowWin32ExceptionIfError(retVal);
+ Marshal.FreeCoTaskMem(pInputConfigInfo);
+ if (sockAddrHandle.IsAllocated)
+ sockAddrHandle.Free();
}
-
- }
- finally
- {
- Marshal.FreeCoTaskMem(pInputConfigInfo);
- if (sockAddrHandle.IsAllocated)
- sockAddrHandle.Free();
- }
-
- });
+ });
return result;
}
public static void BindCertificate(IPEndPoint ipPort, byte[] hash, StoreName storeName, Guid appId)
{
- if (ipPort == null) throw new ArgumentNullException("ipPort");
- if (hash == null) throw new ArgumentNullException("hash");
+ if (ipPort == null)
+ throw new ArgumentNullException("ipPort");
+ if (hash == null)
+ throw new ArgumentNullException("hash");
CallHttpApi(
delegate
- {
- HTTP_SERVICE_CONFIG_SSL_SET configSslSet = new HTTP_SERVICE_CONFIG_SSL_SET();
-
- GCHandle sockAddrHandle = CreateSockaddrStructure(ipPort);
- IntPtr pIpPort = sockAddrHandle.AddrOfPinnedObject();
- HTTP_SERVICE_CONFIG_SSL_KEY httpServiceConfigSslKey =
- new HTTP_SERVICE_CONFIG_SSL_KEY(pIpPort);
- HTTP_SERVICE_CONFIG_SSL_PARAM configSslParam = new HTTP_SERVICE_CONFIG_SSL_PARAM();
-
-
- GCHandle handleHash = GCHandle.Alloc(hash, GCHandleType.Pinned);
- configSslParam.AppId = appId;
- configSslParam.DefaultCertCheckMode = 0;
- configSslParam.DefaultFlags = 0; //HTTP_SERVICE_CONFIG_SSL_FLAG_NEGOTIATE_CLIENT_CERT;
- configSslParam.DefaultRevocationFreshnessTime = 0;
- configSslParam.DefaultRevocationUrlRetrievalTimeout = 0;
- configSslParam.pSslCertStoreName = storeName.ToString();
- configSslParam.pSslHash = handleHash.AddrOfPinnedObject();
- configSslParam.SslHashLength = hash.Length;
- configSslSet.ParamDesc = configSslParam;
- configSslSet.KeyDesc = httpServiceConfigSslKey;
-
- IntPtr pInputConfigInfo =
- Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_SSL_SET)));
- Marshal.StructureToPtr(configSslSet, pInputConfigInfo, false);
-
- try
{
- uint retVal = HttpSetServiceConfiguration(IntPtr.Zero,
- HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo,
- pInputConfigInfo,
- Marshal.SizeOf(configSslSet),
- IntPtr.Zero);
+ HTTP_SERVICE_CONFIG_SSL_SET configSslSet = new HTTP_SERVICE_CONFIG_SSL_SET();
- if (ERROR_ALREADY_EXISTS != retVal)
- {
- ThrowWin32ExceptionIfError(retVal);
- }
- else
- {
- retVal = HttpDeleteServiceConfiguration(IntPtr.Zero,
- HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo,
- pInputConfigInfo,
- Marshal.SizeOf(configSslSet),
- IntPtr.Zero);
- ThrowWin32ExceptionIfError(retVal);
+ GCHandle sockAddrHandle = CreateSockaddrStructure(ipPort);
+ IntPtr pIpPort = sockAddrHandle.AddrOfPinnedObject();
+ HTTP_SERVICE_CONFIG_SSL_KEY httpServiceConfigSslKey =
+ new HTTP_SERVICE_CONFIG_SSL_KEY(pIpPort);
+ HTTP_SERVICE_CONFIG_SSL_PARAM configSslParam = new HTTP_SERVICE_CONFIG_SSL_PARAM();
- retVal = HttpSetServiceConfiguration(IntPtr.Zero,
- HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo,
- pInputConfigInfo,
- Marshal.SizeOf(configSslSet),
- IntPtr.Zero);
- ThrowWin32ExceptionIfError(retVal);
+
+ GCHandle handleHash = GCHandle.Alloc(hash, GCHandleType.Pinned);
+ configSslParam.AppId = appId;
+ configSslParam.DefaultCertCheckMode = 0;
+ configSslParam.DefaultFlags = 0; //HTTP_SERVICE_CONFIG_SSL_FLAG_NEGOTIATE_CLIENT_CERT;
+ configSslParam.DefaultRevocationFreshnessTime = 0;
+ configSslParam.DefaultRevocationUrlRetrievalTimeout = 0;
+ configSslParam.pSslCertStoreName = storeName.ToString();
+ configSslParam.pSslHash = handleHash.AddrOfPinnedObject();
+ configSslParam.SslHashLength = hash.Length;
+ configSslSet.ParamDesc = configSslParam;
+ configSslSet.KeyDesc = httpServiceConfigSslKey;
+
+ IntPtr pInputConfigInfo =
+ Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_SSL_SET)));
+ Marshal.StructureToPtr(configSslSet, pInputConfigInfo, false);
+
+ try
+ {
+ uint retVal = HttpSetServiceConfiguration(IntPtr.Zero,
+ HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo,
+ pInputConfigInfo,
+ Marshal.SizeOf(configSslSet),
+ IntPtr.Zero);
+
+ if (ERROR_ALREADY_EXISTS != retVal)
+ ThrowWin32ExceptionIfError(retVal);
+ else
+ {
+ retVal = HttpDeleteServiceConfiguration(IntPtr.Zero,
+ HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo,
+ pInputConfigInfo,
+ Marshal.SizeOf(configSslSet),
+ IntPtr.Zero);
+ ThrowWin32ExceptionIfError(retVal);
+
+ retVal = HttpSetServiceConfiguration(IntPtr.Zero,
+ HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo,
+ pInputConfigInfo,
+ Marshal.SizeOf(configSslSet),
+ IntPtr.Zero);
+ ThrowWin32ExceptionIfError(retVal);
+ }
}
- }
- finally
- {
- Marshal.FreeCoTaskMem(pInputConfigInfo);
- if (handleHash.IsAllocated)
- handleHash.Free();
- if (sockAddrHandle.IsAllocated)
- sockAddrHandle.Free();
- }
- });
+ finally
+ {
+ Marshal.FreeCoTaskMem(pInputConfigInfo);
+ if (handleHash.IsAllocated)
+ handleHash.Free();
+ if (sockAddrHandle.IsAllocated)
+ sockAddrHandle.Free();
+ }
+ });
}
public static void DeleteCertificateBinding(params IPEndPoint[] ipPorts)
@@ -356,41 +356,41 @@ namespace WebserverInitalConfig
return;
CallHttpApi(
- delegate
- {
- foreach (var ipPort in ipPorts)
- {
- HTTP_SERVICE_CONFIG_SSL_SET configSslSet =
- new HTTP_SERVICE_CONFIG_SSL_SET();
-
- GCHandle sockAddrHandle = CreateSockaddrStructure(ipPort);
- IntPtr pIpPort = sockAddrHandle.AddrOfPinnedObject();
- HTTP_SERVICE_CONFIG_SSL_KEY httpServiceConfigSslKey =
- new HTTP_SERVICE_CONFIG_SSL_KEY(pIpPort);
- configSslSet.KeyDesc = httpServiceConfigSslKey;
-
- IntPtr pInputConfigInfo =
- Marshal.AllocCoTaskMem(
- Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_SSL_SET)));
- Marshal.StructureToPtr(configSslSet, pInputConfigInfo, false);
-
- try
+ delegate
{
- uint retVal = HttpDeleteServiceConfiguration(IntPtr.Zero,
- HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo,
- pInputConfigInfo,
- Marshal.SizeOf(configSslSet),
- IntPtr.Zero);
- ThrowWin32ExceptionIfError(retVal);
- }
- finally
- {
- Marshal.FreeCoTaskMem(pInputConfigInfo);
- if (sockAddrHandle.IsAllocated)
- sockAddrHandle.Free();
- }
- }
- });
+ foreach (IPEndPoint ipPort in ipPorts)
+ {
+ HTTP_SERVICE_CONFIG_SSL_SET configSslSet =
+ new HTTP_SERVICE_CONFIG_SSL_SET();
+
+ GCHandle sockAddrHandle = CreateSockaddrStructure(ipPort);
+ IntPtr pIpPort = sockAddrHandle.AddrOfPinnedObject();
+ HTTP_SERVICE_CONFIG_SSL_KEY httpServiceConfigSslKey =
+ new HTTP_SERVICE_CONFIG_SSL_KEY(pIpPort);
+ configSslSet.KeyDesc = httpServiceConfigSslKey;
+
+ IntPtr pInputConfigInfo =
+ Marshal.AllocCoTaskMem(
+ Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_SSL_SET)));
+ Marshal.StructureToPtr(configSslSet, pInputConfigInfo, false);
+
+ try
+ {
+ uint retVal = HttpDeleteServiceConfiguration(IntPtr.Zero,
+ HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo,
+ pInputConfigInfo,
+ Marshal.SizeOf(configSslSet),
+ IntPtr.Zero);
+ ThrowWin32ExceptionIfError(retVal);
+ }
+ finally
+ {
+ Marshal.FreeCoTaskMem(pInputConfigInfo);
+ if (sockAddrHandle.IsAllocated)
+ sockAddrHandle.Free();
+ }
+ }
+ });
}
public static SslCertificateInfo[] QuerySslCertificateInfo()
@@ -399,193 +399,186 @@ namespace WebserverInitalConfig
CallHttpApi(
delegate
- {
- uint token = 0;
-
- uint retVal;
- do
{
- HTTP_SERVICE_CONFIG_SSL_QUERY inputConfigInfoQuery =
- new HTTP_SERVICE_CONFIG_SSL_QUERY
- {
- QueryDesc = HTTP_SERVICE_CONFIG_QUERY_TYPE.HttpServiceConfigQueryNext,
- dwToken = token,
- };
+ uint token = 0;
- IntPtr pInputConfigInfo =
- Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_SSL_QUERY)));
- Marshal.StructureToPtr(inputConfigInfoQuery, pInputConfigInfo, false);
-
- IntPtr pOutputConfigInfo = IntPtr.Zero;
- int returnLength = 0;
-
- const HTTP_SERVICE_CONFIG_ID queryType = HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo;
-
- try
+ uint retVal;
+ do
{
- int inputConfigInfoSize = Marshal.SizeOf(inputConfigInfoQuery);
- retVal = HttpQueryServiceConfiguration(IntPtr.Zero,
- queryType,
- pInputConfigInfo,
- inputConfigInfoSize,
- pOutputConfigInfo,
- returnLength,
- out returnLength,
- IntPtr.Zero);
- if (ERROR_NO_MORE_ITEMS == retVal)
- break;
- if (ERROR_INSUFFICIENT_BUFFER == retVal) // ERROR_INSUFFICIENT_BUFFER = 122
- {
- pOutputConfigInfo = Marshal.AllocCoTaskMem(returnLength);
-
- try
- {
- retVal = HttpQueryServiceConfiguration(IntPtr.Zero,
- queryType,
- pInputConfigInfo,
- inputConfigInfoSize,
- pOutputConfigInfo,
- returnLength,
- out returnLength,
- IntPtr.Zero);
- ThrowWin32ExceptionIfError(retVal);
-
- var outputConfigInfo = (HTTP_SERVICE_CONFIG_SSL_SET)Marshal.PtrToStructure(
- pOutputConfigInfo, typeof(HTTP_SERVICE_CONFIG_SSL_SET));
-
- byte[] hash = new byte[outputConfigInfo.ParamDesc.SslHashLength];
- Marshal.Copy(outputConfigInfo.ParamDesc.pSslHash, hash, 0, hash.Length);
-
- Guid appId = outputConfigInfo.ParamDesc.AppId;
- string storeName = outputConfigInfo.ParamDesc.pSslCertStoreName;
- IPEndPoint ipPort = ReadSockaddrStructure(outputConfigInfo.KeyDesc.pIpPort);
-
- var resultItem = new SslCertificateInfo
+ HTTP_SERVICE_CONFIG_SSL_QUERY inputConfigInfoQuery =
+ new HTTP_SERVICE_CONFIG_SSL_QUERY
{
- AppId = appId,
- Hash = hash,
- StoreName = storeName,
- IpPort = ipPort
+ QueryDesc = HTTP_SERVICE_CONFIG_QUERY_TYPE.HttpServiceConfigQueryNext,
+ dwToken = token,
};
- result.Add(resultItem);
- token++;
- }
- finally
- {
- Marshal.FreeCoTaskMem(pOutputConfigInfo);
- }
- }
- else
+
+ IntPtr pInputConfigInfo =
+ Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_SSL_QUERY)));
+ Marshal.StructureToPtr(inputConfigInfoQuery, pInputConfigInfo, false);
+
+ IntPtr pOutputConfigInfo = IntPtr.Zero;
+ int returnLength = 0;
+
+ const HTTP_SERVICE_CONFIG_ID queryType = HTTP_SERVICE_CONFIG_ID.HttpServiceConfigSSLCertInfo;
+
+ try
{
- ThrowWin32ExceptionIfError(retVal);
+ int inputConfigInfoSize = Marshal.SizeOf(inputConfigInfoQuery);
+ retVal = HttpQueryServiceConfiguration(IntPtr.Zero,
+ queryType,
+ pInputConfigInfo,
+ inputConfigInfoSize,
+ pOutputConfigInfo,
+ returnLength,
+ out returnLength,
+ IntPtr.Zero);
+ if (ERROR_NO_MORE_ITEMS == retVal)
+ break;
+ if (ERROR_INSUFFICIENT_BUFFER == retVal) // ERROR_INSUFFICIENT_BUFFER = 122
+ {
+ pOutputConfigInfo = Marshal.AllocCoTaskMem(returnLength);
+
+ try
+ {
+ retVal = HttpQueryServiceConfiguration(IntPtr.Zero,
+ queryType,
+ pInputConfigInfo,
+ inputConfigInfoSize,
+ pOutputConfigInfo,
+ returnLength,
+ out returnLength,
+ IntPtr.Zero);
+ ThrowWin32ExceptionIfError(retVal);
+
+ var outputConfigInfo = (HTTP_SERVICE_CONFIG_SSL_SET)Marshal.PtrToStructure(
+ pOutputConfigInfo, typeof(HTTP_SERVICE_CONFIG_SSL_SET));
+
+ byte[] hash = new byte[outputConfigInfo.ParamDesc.SslHashLength];
+ Marshal.Copy(outputConfigInfo.ParamDesc.pSslHash, hash, 0, hash.Length);
+
+ Guid appId = outputConfigInfo.ParamDesc.AppId;
+ string storeName = outputConfigInfo.ParamDesc.pSslCertStoreName;
+ IPEndPoint ipPort = ReadSockaddrStructure(outputConfigInfo.KeyDesc.pIpPort);
+
+ var resultItem = new SslCertificateInfo
+ {
+ AppId = appId,
+ Hash = hash,
+ StoreName = storeName,
+ IpPort = ipPort
+ };
+ result.Add(resultItem);
+ token++;
+ }
+ finally
+ {
+ Marshal.FreeCoTaskMem(pOutputConfigInfo);
+ }
+ }
+ else
+ ThrowWin32ExceptionIfError(retVal);
}
- }
- finally
- {
- Marshal.FreeCoTaskMem(pInputConfigInfo);
- }
-
- } while (NOERROR == retVal);
-
- });
+ finally
+ {
+ Marshal.FreeCoTaskMem(pInputConfigInfo);
+ }
+ } while (NOERROR == retVal);
+ });
return result.ToArray();
}
public static void ReserveURL(string networkURL, string securityDescriptor)
{
- if (String.IsNullOrEmpty(networkURL)) throw new ArgumentNullException("networkURL");
- if (String.IsNullOrEmpty(securityDescriptor)) throw new ArgumentNullException("securityDescriptor");
+ if (String.IsNullOrEmpty(networkURL))
+ throw new ArgumentNullException("networkURL");
+ if (String.IsNullOrEmpty(securityDescriptor))
+ throw new ArgumentNullException("securityDescriptor");
CallHttpApi(
delegate
- {
- uint retVal = (uint)NOERROR; // NOERROR = 0
-
- HTTP_SERVICE_CONFIG_URLACL_KEY keyDesc = new HTTP_SERVICE_CONFIG_URLACL_KEY(networkURL);
- HTTP_SERVICE_CONFIG_URLACL_PARAM paramDesc = new HTTP_SERVICE_CONFIG_URLACL_PARAM(securityDescriptor);
-
- HTTP_SERVICE_CONFIG_URLACL_SET inputConfigInfoSet = new HTTP_SERVICE_CONFIG_URLACL_SET();
- inputConfigInfoSet.KeyDesc = keyDesc;
- inputConfigInfoSet.ParamDesc = paramDesc;
-
- IntPtr pInputConfigInfo = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_URLACL_SET)));
- Marshal.StructureToPtr(inputConfigInfoSet, pInputConfigInfo, false);
- try
{
- retVal = HttpApi.HttpSetServiceConfiguration(IntPtr.Zero,
- HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo,
- pInputConfigInfo,
- Marshal.SizeOf(inputConfigInfoSet),
- IntPtr.Zero);
+ uint retVal = (uint)NOERROR; // NOERROR = 0
- if ((uint)ERROR_ALREADY_EXISTS == retVal) // ERROR_ALREADY_EXISTS = 183
+ HTTP_SERVICE_CONFIG_URLACL_KEY keyDesc = new HTTP_SERVICE_CONFIG_URLACL_KEY(networkURL);
+ HTTP_SERVICE_CONFIG_URLACL_PARAM paramDesc = new HTTP_SERVICE_CONFIG_URLACL_PARAM(securityDescriptor);
+
+ HTTP_SERVICE_CONFIG_URLACL_SET inputConfigInfoSet = new HTTP_SERVICE_CONFIG_URLACL_SET();
+ inputConfigInfoSet.KeyDesc = keyDesc;
+ inputConfigInfoSet.ParamDesc = paramDesc;
+
+ IntPtr pInputConfigInfo = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_URLACL_SET)));
+ Marshal.StructureToPtr(inputConfigInfoSet, pInputConfigInfo, false);
+ try
{
- retVal = HttpApi.HttpDeleteServiceConfiguration(IntPtr.Zero,
- HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo,
- pInputConfigInfo,
- Marshal.SizeOf(inputConfigInfoSet),
- IntPtr.Zero);
+ retVal = HttpSetServiceConfiguration(IntPtr.Zero,
+ HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo,
+ pInputConfigInfo,
+ Marshal.SizeOf(inputConfigInfoSet),
+ IntPtr.Zero);
- if ((uint)NOERROR == retVal)
+ if (ERROR_ALREADY_EXISTS == retVal) // ERROR_ALREADY_EXISTS = 183
{
- retVal = HttpApi.HttpSetServiceConfiguration(IntPtr.Zero,
- HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo,
- pInputConfigInfo,
- Marshal.SizeOf(inputConfigInfoSet),
- IntPtr.Zero);
- }
- else if ((uint)ERROR_FILE_NOT_FOUND == retVal) // ERROR_FILE_NOT_FOUND = 2
- {
- string networkURLOld = networkURL.Contains("https") ? networkURL.Replace("https", "http") :
- networkURL.Replace("http", "https");
- HTTP_SERVICE_CONFIG_URLACL_KEY keyDescOld = new HTTP_SERVICE_CONFIG_URLACL_KEY(networkURLOld);
- HTTP_SERVICE_CONFIG_URLACL_PARAM paramDescOld = new HTTP_SERVICE_CONFIG_URLACL_PARAM(securityDescriptor);
+ retVal = HttpDeleteServiceConfiguration(IntPtr.Zero,
+ HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo,
+ pInputConfigInfo,
+ Marshal.SizeOf(inputConfigInfoSet),
+ IntPtr.Zero);
- HTTP_SERVICE_CONFIG_URLACL_SET inputConfigInfoSetOld = new HTTP_SERVICE_CONFIG_URLACL_SET();
- inputConfigInfoSetOld.KeyDesc = keyDescOld;
- inputConfigInfoSetOld.ParamDesc = paramDescOld;
-
- IntPtr pInputConfigInfoOld = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_URLACL_SET)));
- Marshal.StructureToPtr(inputConfigInfoSetOld, pInputConfigInfoOld, false);
-
- retVal = HttpApi.HttpDeleteServiceConfiguration(IntPtr.Zero,
- HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo,
- pInputConfigInfoOld,
- Marshal.SizeOf(inputConfigInfoSetOld),
- IntPtr.Zero);
-
- if ((uint)NOERROR == retVal)
+ if (NOERROR == retVal)
{
- retVal = HttpApi.HttpSetServiceConfiguration(IntPtr.Zero,
- HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo,
- pInputConfigInfo,
- Marshal.SizeOf(inputConfigInfoSet),
- IntPtr.Zero);
+ retVal = HttpSetServiceConfiguration(IntPtr.Zero,
+ HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo,
+ pInputConfigInfo,
+ Marshal.SizeOf(inputConfigInfoSet),
+ IntPtr.Zero);
+ }
+ else if (ERROR_FILE_NOT_FOUND == retVal) // ERROR_FILE_NOT_FOUND = 2
+ {
+ string networkURLOld = networkURL.Contains("https") ? networkURL.Replace("https", "http") :
+ networkURL.Replace("http", "https");
+ HTTP_SERVICE_CONFIG_URLACL_KEY keyDescOld = new HTTP_SERVICE_CONFIG_URLACL_KEY(networkURLOld);
+ HTTP_SERVICE_CONFIG_URLACL_PARAM paramDescOld = new HTTP_SERVICE_CONFIG_URLACL_PARAM(securityDescriptor);
+
+ HTTP_SERVICE_CONFIG_URLACL_SET inputConfigInfoSetOld = new HTTP_SERVICE_CONFIG_URLACL_SET();
+ inputConfigInfoSetOld.KeyDesc = keyDescOld;
+ inputConfigInfoSetOld.ParamDesc = paramDescOld;
+
+ IntPtr pInputConfigInfoOld = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(HTTP_SERVICE_CONFIG_URLACL_SET)));
+ Marshal.StructureToPtr(inputConfigInfoSetOld, pInputConfigInfoOld, false);
+
+ retVal = HttpDeleteServiceConfiguration(IntPtr.Zero,
+ HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo,
+ pInputConfigInfoOld,
+ Marshal.SizeOf(inputConfigInfoSetOld),
+ IntPtr.Zero);
+
+ if (NOERROR == retVal)
+ {
+ retVal = HttpSetServiceConfiguration(IntPtr.Zero,
+ HTTP_SERVICE_CONFIG_ID.HttpServiceConfigUrlAclInfo,
+ pInputConfigInfo,
+ Marshal.SizeOf(inputConfigInfoSet),
+ IntPtr.Zero);
+ }
}
}
- }
- }
- finally
- {
- Marshal.FreeCoTaskMem(pInputConfigInfo);
- HttpApi.HttpTerminate(HttpApi.HTTP_INITIALIZE_CONFIG, IntPtr.Zero);
- }
- if ((uint)NOERROR != retVal)
- {
- ThrowWin32ExceptionIfError(retVal);
- }
- });
+ }
+ finally
+ {
+ Marshal.FreeCoTaskMem(pInputConfigInfo);
+ HttpTerminate(HTTP_INITIALIZE_CONFIG, IntPtr.Zero);
+ }
+ if (NOERROR != retVal)
+ ThrowWin32ExceptionIfError(retVal);
+ });
}
-
#endregion
private static void ThrowWin32ExceptionIfError(uint retVal)
{
if (NOERROR != retVal)
- {
throw new Win32Exception(Convert.ToInt32(retVal));
- }
}
private static void CallHttpApi(Action body)
@@ -604,7 +597,7 @@ namespace WebserverInitalConfig
}
///
- /// Creates an unmanaged sockaddr structure to pass to a WinAPI function.
+ /// Creates an unmanaged sockaddr structure to pass to a WinAPI function.
///
/// IP address and port number
/// a handle for the structure. Use the AddrOfPinnedObject Method to get a stable pointer to the object.
@@ -617,14 +610,12 @@ namespace WebserverInitalConfig
byte[] sockAddrStructureBytes = new byte[socketAddress.Size];
GCHandle sockAddrHandle = GCHandle.Alloc(sockAddrStructureBytes, GCHandleType.Pinned);
for (int i = 0; i < socketAddress.Size; ++i)
- {
sockAddrStructureBytes[i] = socketAddress[i];
- }
return sockAddrHandle;
}
///
- /// Reads the unmanaged sockaddr structure returned by a WinAPI function
+ /// Reads the unmanaged sockaddr structure returned by a WinAPI function
///
/// pointer to the unmanaged sockaddr structure
/// IP address and port number
@@ -659,9 +650,7 @@ namespace WebserverInitalConfig
// create SocketAddress from bytes
var socketAddress = new SocketAddress(AddressFamily.Unspecified, sockAddrSructureSize);
for (int i = 0; i < sockAddrSructureSize; i++)
- {
socketAddress[i] = sockAddrSructureBytes[i];
- }
// create IPEndPoint from SocketAddress
IPEndPoint result = (IPEndPoint)ipEndPointAny.Create(socketAddress);
@@ -669,4 +658,4 @@ namespace WebserverInitalConfig
return result;
}
}
-}
+}
\ No newline at end of file
diff --git a/WebserverInitalConfig/Program.cs b/WebserverInitalConfig/Program.cs
index daf9c829..4b7ce630 100644
--- a/WebserverInitalConfig/Program.cs
+++ b/WebserverInitalConfig/Program.cs
@@ -1,18 +1,30 @@
-using System;
-using System.Collections.Generic;
-using System.Diagnostics;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System;
using System.IO;
-using System.Linq;
using System.Net;
-using System.Security.Principal;
-using System.Text;
-using System.Threading.Tasks;
+using System.Security.Cryptography.X509Certificates;
namespace WebserverInitalConfig
{
class Program
{
- static void Main(string[] args)
+ private static void Main(string[] args)
{
if (args.Length != 2)
{
@@ -20,22 +32,18 @@ namespace WebserverInitalConfig
Environment.Exit(-1);
}
- ConfigHttpApi.addFirewallrule(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,"Vocaluxe.exe"), Int32.Parse(args[0]), true);
+ CConfigHttpApi.AddFirewallRule(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "Vocaluxe.exe"), Int32.Parse(args[0]), true);
if (args[1].ToLower() == "true")
{
string hostname = Dns.GetHostName();
- var cert = ConfigHttpApi.getSelfSignedCert("CN=" + hostname + " C=DE O=Vocaluxe OU=Vocaluxe Server");
- ConfigHttpApi.addCertToStore(cert);
- ConfigHttpApi.bindCert("0.0.0.0", Int32.Parse(args[0]), cert);
- ConfigHttpApi.reserveURL("https://+:" + args[0] + "/");
+ X509Certificate2 cert = CConfigHttpApi.GetSelfSignedCert("CN=" + hostname + " C=DE O=Vocaluxe OU=Vocaluxe Server");
+ CConfigHttpApi.AddCertToStore(cert);
+ CConfigHttpApi.BindCert("0.0.0.0", Int32.Parse(args[0]), cert);
+ CConfigHttpApi.ReserveUrl("https://+:" + args[0] + "/");
}
else
- {
- ConfigHttpApi.reserveURL("http://+:" + args[0] + "/");
- }
+ CConfigHttpApi.ReserveUrl("http://+:" + args[0] + "/");
}
-
-
}
-}
+}
\ No newline at end of file
diff --git a/WebserverInitalConfig/Properties/AssemblyInfo.cs b/WebserverInitalConfig/Properties/AssemblyInfo.cs
index 4b7d7a28..4665bfa0 100644
--- a/WebserverInitalConfig/Properties/AssemblyInfo.cs
+++ b/WebserverInitalConfig/Properties/AssemblyInfo.cs
@@ -1,10 +1,28 @@
-using System.Reflection;
+#region license
+// This file is part of Vocaluxe.
+//
+// Vocaluxe is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// Vocaluxe is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with Vocaluxe. If not, see .
+#endregion
+
+using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Allgemeine Informationen über eine Assembly werden über die folgenden
// Attribute gesteuert. Ändern Sie diese Attributwerte, um die Informationen zu ändern,
// die mit einer Assembly verknüpft sind.
+
[assembly: AssemblyTitle("Vocaluxe Server Config")]
[assembly: AssemblyDescription("Configures your computer to run the Vocaluxe Server")]
[assembly: AssemblyConfiguration("")]
@@ -17,9 +35,11 @@ using System.Runtime.InteropServices;
// Durch Festlegen von ComVisible auf "false" werden die Typen in dieser Assembly unsichtbar
// für COM-Komponenten. Wenn Sie auf einen Typ in dieser Assembly von
// COM zugreifen müssen, legen Sie das ComVisible-Attribut für diesen Typ auf "true" fest.
+
[assembly: ComVisible(false)]
// Die folgende GUID bestimmt die ID der Typbibliothek, wenn dieses Projekt für COM verfügbar gemacht wird
+
[assembly: Guid("b2df9255-3927-4125-ab3c-23c35794b04d")]
// Versionsinformationen für eine Assembly bestehen aus den folgenden vier Werten:
@@ -32,5 +52,6 @@ using System.Runtime.InteropServices;
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
+
[assembly: AssemblyVersion("1.0.0.0")]
-[assembly: AssemblyFileVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
\ No newline at end of file
diff --git a/WebserverInitalConfig/WebserverInitalConfig.csproj b/WebserverInitalConfig/WebserverInitalConfig.csproj
index 83202617..7544f7a3 100644
--- a/WebserverInitalConfig/WebserverInitalConfig.csproj
+++ b/WebserverInitalConfig/WebserverInitalConfig.csproj
@@ -27,7 +27,7 @@
AnyCPU
pdbonly
true
- bin\Release\
+ ..\Output\
TRACE
prompt
4
@@ -61,7 +61,7 @@
-
+
@@ -76,6 +76,10 @@
+
+
+
+