Example #1
0
        public void Cleanup(Areas area, DateTime cutoffDate)
        {
            var client         = CloudHelper.GetCloudBlobClientReference(_cacheLocation);
            var outerContainer = client.GetContainerReference(area.ToString().ToLower());

            foreach (CloudBlockBlob blob in outerContainer.ListBlobs(useFlatBlobListing: true))
            {
                if (blob.Properties.LastModified < cutoffDate)
                {
                    blob.Delete();
                }
            }
        }
Example #2
0
        /// <summary>
        /// Clear the KPI query cache
        /// </summary>
        /// <param name="area"></param>
        /// <param name="field"></param>
        /// <param name="customerNumber"></param>
        /// <param name="date"></param>
        public bool CleanupForKPIReportByUser(Areas area, string field, string customerNumber, string userId)
        {
            if (area != Areas.KPIReport)
            {
                return(false);
            }
            try
            {
                var client         = CloudHelper.GetCloudBlobClientReference(_cacheLocation);
                var outerContainer = client.GetContainerReference(area.ToString().ToLower());
                var prefix         = string.Format("{0}/{1}", field.ToLower(), userId.ToLower());
                var innerContainer = outerContainer.GetDirectoryReference(prefix);
                prefix += "/";

                BlobContinuationToken continuationToken = null;
                do
                {
                    var iResults = innerContainer.ListBlobsSegmented(true, BlobListingDetails.None, 1000, continuationToken, null, null);
                    continuationToken = iResults.ContinuationToken;
                    var listBlobItems = iResults.Results.Where(p => p.GetType() == typeof(CloudBlockBlob));
                    foreach (var item in listBlobItems)
                    {
                        var blob = item as CloudBlockBlob;
                        if (blob == null)
                        {
                            continue;
                        }
                        if (string.IsNullOrEmpty(blob.Name) || blob.Name.Length < prefix.Length)
                        {
                            continue;
                        }
                        var nameArr = blob.Name.Substring(prefix.Length, blob.Name.Length - prefix.Length).Split('|');
                        if (nameArr.Length < 4)
                        {
                            continue;
                        }

                        if (nameArr[0].Equals(customerNumber, StringComparison.Ordinal))
                        {
                            blob.Delete();
                        }
                    }
                }while (continuationToken != null);
                return(true);
            }
            catch (Exception ex)
            {
                Trace.TraceError("CleanupForKPIReport Error: {0}", ex.ToString());
                return(false);
            }
        }
Example #3
0
 private void LoginButton_Click(object sender, EventArgs e)
 {
     // Secure login over insecure web services.
     if (LoginButton.Text == "Log In")
     {
         var o           = SettingsManager.Options;
         var saveOptions = false;
         if (o.CheckAndFixUserRsaKeys())
         {
             SettingsManager.OptionsData.Save();
         }
         var ws  = new WebServiceClient();
         var url = MainForm.Current.OptionsPanel.InternetDatabaseUrlComboBox.Text;
         ws.Url = url;
         CloudMessage results;
         // If cloud RSA keys are missing then...
         if (string.IsNullOrEmpty(o.CloudRsaPublicKey))
         {
             // Step 1: Get Server's Public RSA key for encryption.
             var msg = new CloudMessage(CloudAction.GetPublicRsaKey);
             CloudHelper.ApplySecurity(msg);
             msg.Values.Add(CloudKey.RsaPublicKey, o.UserRsaPublicKey);
             // Retrieve public RSA key.
             results = ws.Execute(msg);
             if (results.ErrorCode == 0)
             {
                 o.CloudRsaPublicKey = results.Values.GetValue <string>(CloudKey.RsaPublicKey);
                 saveOptions         = true;
             }
         }
         if (saveOptions)
         {
             SettingsManager.OptionsData.Save();
         }
         var cmd2 = new CloudMessage(CloudAction.LogIn);
         CloudHelper.ApplySecurity(cmd2, o.UserRsaPublicKey, o.CloudRsaPublicKey, UsernameTextBox.Text, PasswordTextBox.Text);
         cmd2.Values.Add(CloudKey.ComputerId, o.ComputerId, true);
         results = ws.Execute(cmd2);
         if (results.ErrorCode > 0)
         {
             MessageBoxForm.Show(results.ErrorMessage, string.Format("{0} Result", CloudAction.LogIn), MessageBoxButtons.OK, MessageBoxIcon.Information);
         }
         else
         {
             MessageBoxForm.Show(string.Format("Authorised: {0}", results.ErrorMessage), string.Format("{0} Result", CloudAction.LogIn), MessageBoxButtons.OK, MessageBoxIcon.Information);
         }
     }
     else
     {
     }
 }
Example #4
0
        public void Delete(Areas area, string field, string key)
        {
            key = EncodeBlobName(key);

            var client         = CloudHelper.GetCloudBlobClientReference(_cacheLocation);
            var outerContainer = client.GetContainerReference(area.ToString().ToLower());
            var innerContainer = outerContainer.GetDirectoryReference(field.ToLower());

            try
            {
                foreach (CloudBlockBlob blob in innerContainer.ListBlobs())
                {
                    var  pieces = blob.Name.Split('/');
                    var  name   = pieces[pieces.Length - 1];
                    bool delete = false;
                    if (key.Contains('*'))
                    {
                        var wildcards = key.Split('*');
                        if (key.StartsWith("*")) //pattern is like *8643*
                        {
                            if (name.Contains(pieces[1]))
                            {
                                delete = true;
                            }
                        }
                        else //pattern is like 1001*7244
                        {
                            if (name.StartsWith(wildcards[0]) && name.EndsWith(wildcards[1]))
                            {
                                delete = true;
                            }
                        }
                    }
                    else if (name == key)
                    {
                        delete = true;
                    }

                    if (delete)
                    {
                        blob.Delete();
                    }
                }
            }
            catch (Exception ex)
            {
                Trace.TraceError("Could not delete from blob cache {0} {1} {2}. {3}", area.ToString(), field, key, ex.Message);
            }
        }
Example #5
0
		private void LoginButton_Click(object sender, EventArgs e)
		{
			// Secure login over insecure webservices.
			if (LoginButton.Text == "Log In")
			{
				var o = SettingsManager.Options;
				var saveOptions = false;
				// If user RSA keys are missing then...
				if (string.IsNullOrEmpty(o.UserRsaPublicKey))
				{
					// Create new RSA keys which will be used to send encrypted credentials.
					var rsa = new JocysCom.ClassLibrary.Security.Encryption(CloudKey.User);
					var keys = rsa.RsaNewKeys(2048);
					o.UserRsaPublicKey = keys.Public;
					o.UserRsaPrivateKey = keys.Private;
					saveOptions = true;
				}
				var ws = new WebServiceClient();
				var url = MainForm.Current.OptionsPanel.InternetDatabaseUrlComboBox.Text;
				ws.Url = url;
				CloudMessage results;
				// If cloud RSA keys are missing then...
				if (string.IsNullOrEmpty(o.CloudRsaPublicKey))
				{
					// Step 1: Get Server's Public RSA key for encryption.
					var msg = CloudHelper.NewMessage(CloudAction.GetPublicRsaKey);
					msg.Values.Add(CloudKey.RsaPublicKey, o.UserRsaPublicKey);
					// Retrieve public RSA key.
					results = ws.Execute(msg);
					if (results.ErrorCode == 0)
					{
						o.CloudRsaPublicKey = results.Values.GetValue<string>(CloudKey.RsaPublicKey);
						saveOptions = true;
					}
				}
				if (saveOptions)
				{
					SettingsManager.OptionsData.Save();
				}
				var cmd2 = CloudHelper.NewMessage(CloudAction.LogIn, o.UserRsaPublicKey, o.CloudRsaPublicKey, UsernameTextBox.Text, PasswordTextBox.Text);
				cmd2.Values.Add(CloudKey.HashedDiskId, o.HashedDiskId);
				results = ws.Execute(cmd2);
			}
			else
			{

			}
		}
Example #6
0
        /// <summary>
        ///     连接云引擎,下载数据
        /// </summary>
        public void ConnectCloud()
        {
            TimeSpan ts = DateTime.Now - Config.LateUpdateProxyListTime;

            if (ts.TotalSeconds > 30)
            {
                DelegateSetCloudStatus dv = SetCloudStatus;
                Invoke(dv, new object[] { Config.LocalLanguage.Messages.ConnectingCloudEngine + "...", Resources.loading });

                var  cloudHelper = new CloudHelper();
                bool isConnected = cloudHelper.DownloadProxyList();
                Invoke(dv,
                       isConnected
                           ? new object[] { Config.LocalLanguage.Messages.ConnectCloudEngineSuccess, Resources.cloud }
                           : new object[] { Config.LocalLanguage.Messages.ConnectCloudEngineFailed, Resources.cloudno });
            }
        }
Example #7
0
        /// <summary>
        /// Container Owners for Azure Blob cannot defy the naming conventions.
        /// (alphanumeric, all lowercase, & dashes only)
        /// </summary>
        /// <param name="application"></param>
        /// <returns>Async task that can be awaited</returns>
        public async Task InitializeRootFolder(string folder)
        {
            // Make folder abide by ContainerRuleConvention
            folder = ContainerRuleConvention(folder);

            // Get Cloud Storage Account, then blobclient, then container
            CloudStorageAccount cloudStorageAccount = CloudHelper.GetConnectionString();
            CloudBlobClient     cloudBlobClient     = cloudStorageAccount.CreateCloudBlobClient();

            cloudBlobContainer = cloudBlobClient.GetContainerReference(folder);
            if (await cloudBlobContainer.CreateIfNotExistsAsync())
            {
                await cloudBlobContainer.SetPermissionsAsync(new BlobContainerPermissions
                {
                    PublicAccess = BlobContainerPublicAccessType.Blob
                });
            }
        }
Example #8
0
        public RemoteCameraViewModel(CaptureElement captureElement)
        {
            // Check if CaptureElement is not null and throw an exception accordingly
            ArgumentCheck.IsNull(captureElement, "captureElement");

            // Store reference to the CaptureElement
            this.captureElement = captureElement;

            // Instantiate CameraCapture and ImageProcessor
            cameraCapture  = new CameraCapture();
            ImageProcessor = new ImageProcessor(cameraCapture);

            // Instantiate CloudHelper
            CloudHelper = new CloudHelper();

            // Instantiate AnomalyDetector
            AnomalyDetector = new AnomalyDetector();
        }
        public ActionResult Delete(Guid id, String reason)
        {
            //var repo = new ReservationRepository();
            //repo.DeleteReservation(id);

            var cmd = new CancelReservation()
            {
                ReservationId = id,
                Reason        = reason
            };

            AgileWays.Cqrs.Commands.Writer.ICommandWriter writer = new AzureCommandWriter();
            writer.SendCommand(cmd);
            //CloudHelper.EnqueueCommand(cmd);

            CloudHelper.LogMessage(1, "Canceled a reservation", "CANCEL");

            return(Json(new { isValid = true }, JsonRequestBehavior.AllowGet));
        }
        public async Task <string> Delete(int id)
        {
            var claimsIdentity = User.Identity as ClaimsIdentity;
            var userId         = Convert.ToInt64(claimsIdentity.Claims.FirstOrDefault(claim => claim.Type == "Id").Value);
            var user           = _multiSourcePlaylistRepository.GetUser(userId);
            var tracks         = _multiSourcePlaylistRepository.GetUsersPlaylistTracks(id, userId);
            var mp3type        = 3;
            var mp3type2       = 5;

            foreach (var track in tracks)
            {
                if (track.Type == mp3type || track.Type == mp3type2)
                {
                    var address = track.Address;
                    _multiSourcePlaylistRepository.DeleteTrack(track.Id);

                    if (track.Type == mp3type && !_multiSourcePlaylistRepository.GetTracksByTypeAndAddress(mp3type, address, userId).Any())
                    {
                        if (!await CloudHelper.RemoveFileFromCloudFile(
                                _configuration["Production:StorageConnectionString"],
                                user.FileFolder,
                                address))
                        {
                            return("FAILED");
                        }
                    }
                    else if (track.Type == mp3type2 && !_multiSourcePlaylistRepository.GetTracksByTypeAndAddress(mp3type2, address, userId).Any())
                    {
                        if (!await CloudHelper.RemoveFileFromCloudBlob(
                                _configuration["Production:StorageConnectionString"],
                                user.FileFolder,
                                address))
                        {
                            return("FAILED");
                        }
                    }
                }
            }

            _multiSourcePlaylistRepository.DeletePlaylist(id);
            return("SUCCESS");
        }
        private void LoadFile(object state)
        {
            Console.WriteLine($"{DateTime.Now} LoadFile(..) method has been invoked.");
            var fileName = "current.xlsx";

            var stream = CloudHelper.ReadBlobAsync(storageConnectionString, blobContainerName, fileName).Result;

            stream.Seek(0, SeekOrigin.Begin);

            using (var excelPackage = new ExcelPackage(stream))
            {
                var excelWorkSheets = excelPackage.Workbook.Worksheets;

                foreach (var worksheet in excelWorkSheets)
                {
                    Console.WriteLine($"\t - Processing worksheet: {worksheet.Name}");
                    ProcessWorksheet(worksheet);
                }
            }
        }
        public ActionResult List()
        {
            CloudHelper.LogMessage(1, "Requested a list of all reservations", "LIST");

            var repo         = new ReservationRepository();
            var reservations = repo.GetAllReservations();

            var reservationModel = reservations
                                   .Select(r => new ReservationDetail
            {
                NumberOfSeats    = r.NumberOfSeats,
                IsDeleted        = r.IsDeleted,
                ReservationId    = r.ReservationId,
                ReservationMade  = r.ReservationMade,
                SeatsReservedFor = r.SeatsReservedFor,
                TotalCost        = r.TotalCost
            });

            return(View(reservationModel));
        }
Example #13
0
        /// <summary>
        ///     连接云引擎,下载数据
        /// </summary>
        public void ConnectCloud()
        {
            TimeSpan ts = DateTime.Now - Config.LateUpdateProxyListTime;

            if (ts.TotalSeconds > 30)
            {
                SetCloudStatus(Config.LocalLanguage.Messages.ConnectingCloudEngine + "...", Resources.loading);

                var  cloudHelper = new CloudHelper();
                bool isConnected = cloudHelper.DownloadProxyList();
                if (isConnected)
                {
                    SetCloudStatus(Config.LocalLanguage.Messages.ConnectCloudEngineSuccess, Resources.cloud);
                }
                else
                {
                    SetCloudStatus(Config.LocalLanguage.Messages.ConnectCloudEngineFailed, Resources.cloudno);
                }
            }
        }
        public ActionResult Create(ReservationModel model)
        {
            Guid id  = Guid.NewGuid();
            var  cmd = new CreateReservation()
            {
                Name          = model.Name,
                NumberOfSeats = model.NumberOfSeats,
                DiscountCode  = model.DiscountCode,
                ReservationId = id
            };

            //submit the command
            AgileWays.Cqrs.Commands.Writer.ICommandWriter writer = new AzureCommandWriter();
            writer.SendCommand(cmd);
            //CloudHelper.EnqueueCommand(cmd);

            CloudHelper.LogMessage(1, "Created a new reservation", "CREATE");

            //redirect to confirmation
            return(RedirectToAction("Confirmation", new { id = id }));
        }
Example #15
0
        public static Guid?FixComputerId(CloudMessage command, out string error)
        {
            var computerId = CloudHelper.GetComputerId(command, out error);

            if (computerId.HasValue)
            {
                // Fix computer id
                if (command.UserGames != null)
                {
                    foreach (var item in command.UserGames)
                    {
                        item.ComputerId = computerId.Value;
                    }
                }
                if (command.UserDevices != null)
                {
                    foreach (var item in command.UserDevices)
                    {
                        item.ComputerId = computerId.Value;
                    }
                }
            }
            return(computerId);
        }
Example #16
0
        /// <summary>
        /// This function will run on different thread than UI. Make sure to use Invoke for interface update.
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        void queueTimer_DoWork(object sender, QueueTimerEventArgs e)
        {
            var item = e.Item as CloudItem;

            if (item == null)
            {
                return;
            }
            item.Try++;
            Invoke((Action) delegate()
            {
                MainForm.Current.AddTask(TaskName.CloudCommand);
            });
            Exception error = null;

            try
            {
                var ws = new WebServiceClient();
                ws.Url = SettingsManager.Options.InternetDatabaseUrl;
                CloudMessage result = null;
                var          o      = SettingsManager.Options;
                // Check if user public keys are present.
                o.CheckAndFixUserRsaKeys();
                // If cloud RSA keys are missing then...
                if (string.IsNullOrEmpty(o.CloudRsaPublicKey))
                {
                    // Step 1: Get Server's Public RSA key for encryption.
                    var msg = new CloudMessage(CloudAction.GetPublicRsaKey);
                    CloudHelper.ApplySecurity(item.Message);
                    msg.Values.Add(CloudKey.RsaPublicKey, o.UserRsaPublicKey);
                    // Retrieve public RSA key.
                    var results = ws.Execute(msg);
                    if (results.ErrorCode == 0)
                    {
                        o.CloudRsaPublicKey = results.Values.GetValue <string>(CloudKey.RsaPublicKey);
                        SettingsManager.OptionsData.Save();
                    }
                    else
                    {
                        error = new Exception(result.ErrorMessage);
                    }
                }
                // If no errors till this point then...
                if (error == null)
                {
                    // Add security.
                    CloudHelper.ApplySecurity(item.Message, o.UserRsaPublicKey, o.CloudRsaPublicKey, o.Username, o.Password);
                    // Add computer Id
                    item.Message.Values.Add(CloudKey.ComputerId, o.ComputerId, true);
                    result = ws.Execute(item.Message);
                    if (result.ErrorCode > 0)
                    {
                        error = new Exception(result.ErrorMessage);
                    }
                    else
                    {
                        Invoke((Action) delegate()
                        {
                            ProcessResult(item.Message, result);
                        });
                    }
                }
                ws.Dispose();
            }
            catch (Exception ex)
            {
                error = ex;
            }
            Invoke((Action) delegate()
            {
                MainForm.Current.RemoveTask(TaskName.CloudCommand);
            });
            var success = error == null;

            item.Error = error;
            item.State = success ? CloudState.Done : CloudState.Error;
            // If error or have not finished.
            e.Keep = !success;
            // error and no more retries left then...
            if (!success && item.Try >= item.Retries)
            {
                // Order to remove task.
                e.Keep = false;
            }
            // Exit thread (queue will be processed later)
            e.Cancel = !success;
        }
Example #17
0
        /// <summary>
        /// This function will run on different thread than UI. Make sure to use Invoke for interface update.
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        void queueTimer_DoWork(object sender, QueueTimerEventArgs e)
        {
            var item = e.Item as CloudItem;

            if (item == null)
            {
                return;
            }
            item.Try++;
            MainForm.Current.AddTask(TaskName.CloudCommand);
            Exception error = null;

            try
            {
                var ws = new WebServiceClient();
                ws.Url = SettingsManager.Options.InternetDatabaseUrl;
                CloudMessage result = null;
                var          o      = SettingsManager.Options;
                // Check if user public keys are present.
                o.CheckAndFixUserRsaKeys();
                // If cloud RSA keys are missing then...
                if (string.IsNullOrEmpty(o.CloudRsaPublicKey))
                {
                    // Step 1: Get Server's Public RSA key for encryption.
                    var msg = new CloudMessage(CloudAction.GetPublicRsaKey);
                    // Retrieve public RSA key.
                    var results = ws.Execute(msg);
                    if (results.ErrorCode == 0)
                    {
                        o.CloudRsaPublicKey = results.Values.GetValue <string>(CloudKey.RsaPublicKey);
                        SettingsManager.OptionsData.Save();
                    }
                    else
                    {
                        error = new Exception(result.ErrorMessage);
                    }
                }
                // If no errors till this point then...
                if (error == null)
                {
                    // Add security.
                    CloudHelper.ApplySecurity(item.Message, o.UserRsaPublicKey, o.CloudRsaPublicKey, o.Username, o.Password);
                    // Add computer and profile ID.
                    item.Message.Values.Add(CloudKey.ComputerId, o.ComputerId, true, true);
                    item.Message.Values.Add(CloudKey.ProfileId, o.ProfileId, true, true);
                    // Add version so it will be possible distinguish between Library (v3.x) and Virtual (v4.x) settings.
                    item.Message.Values.Add(CloudKey.ClientVersion, Application.ProductVersion, false, true);
                    // Call web service.
                    result = ws.Execute(item.Message);
                    if (result.ErrorCode != 0)
                    {
                        // If unable to decrypt error then...
                        if (result.ErrorCode == (int)CloudErrorCode.UnableToDecrypt)
                        {
                            // Get server's RSA Public key.
                            var cloudRsaPublicKey = result.Values.GetValue <string>(CloudKey.RsaPublicKey, null);
                            // If key was set then update local key.
                            if (!string.IsNullOrEmpty(cloudRsaPublicKey))
                            {
                                o.CloudRsaPublicKey = cloudRsaPublicKey;
                            }
                        }
                        error = new Exception(result.ErrorMessage);
                    }
                    else
                    {
                        ProcessResult(item.Message, result);
                    }
                }
                ws.Dispose();
            }
            catch (Exception ex)
            {
                error = ex;
            }
            MainForm.Current.RemoveTask(TaskName.CloudCommand);
            var success = error == null;

            item.Error = error;
            item.State = success ? CloudState.Done : CloudState.Error;
            // If error or have not finished.
            e.Keep = !success;
            // error and no more retries left then...
            if (!success && item.Try >= item.Retries)
            {
                // Order to remove task.
                e.Keep = false;
            }
            // Exit thread (queue will be processed later)
            e.Cancel = !success;
        }
Example #18
0
        //[System.Web.Services.Protocols.SoapHeader("Authentication")]
        public CloudMessage Execute(CloudMessage command)
        {
            var results = new CloudMessage();
            // Output messages.
            var messages = new List <string>();

            try
            {
                JocysCom.WebSites.Engine.Security.Data.User user;
                string error;
                bool   fixSuccess;
                switch (command.Action)
                {
                case CloudAction.LogIn:
                    // Action requires valid user.
                    user = CloudHelper.GetUser(command, out error);
                    if (user == null)
                    {
                        messages.Add("Not authorized");
                        results.ErrorCode = 2;
                    }
                    break;

                case CloudAction.GetPublicRsaKey:
                    var rsa = new JocysCom.ClassLibrary.Security.Encryption(CloudKey.Cloud);
                    if (string.IsNullOrEmpty(rsa.RsaPublicKeyValue))
                    {
                        rsa.RsaNewKeysSave(2048);
                    }
                    results.Values = new KeyValueList();
                    results.Values.Add(CloudKey.RsaPublicKey, rsa.RsaPublicKeyValue);
                    break;

                case CloudAction.Insert:
                case CloudAction.Update:
                    // Insert or update user records.
                    fixSuccess = command.FixComputerId(out error);
                    if (fixSuccess)
                    {
                        DatabaseHelper.Upsert(command, messages);
                    }
                    else
                    {
                        messages.Add(error);
                        results.ErrorCode = 2;
                    }
                    break;

                case CloudAction.Select:
                    // Select user records.
                    fixSuccess = command.FixComputerId(out error);
                    if (fixSuccess)
                    {
                        DatabaseHelper.Select(command, results, messages, out error);
                    }
                    else
                    {
                        messages.Add(error);
                        results.ErrorCode = 2;
                    }
                    break;

                case CloudAction.Delete:
                    // Delete user records.
                    fixSuccess = command.FixComputerId(out error);
                    if (fixSuccess)
                    {
                        DatabaseHelper.Delete(command, messages);
                    }
                    else
                    {
                        messages.Add(error);
                        results.ErrorCode = 2;
                    }
                    break;

                case CloudAction.CheckUpdates:
                    var clientVersion = command.Values.GetValue <string>(CloudKey.ClientVersion);
                    results.Values.Add(CloudKey.ServerVersion, clientVersion);
                    //results.Values.Add(CloudKey.UpdateUrl, "https://github.com/x360ce/x360ce/blob/master/x360ce.Web/Files/x360ce.zip?raw=true");
                    results.Values.Add(CloudKey.UpdateUrl, JocysCom.ClassLibrary.Security.TokenHelper.GetApplicationUrl() + "/Files/x360ce_beta.zip");
                    break;

                default:
                    break;
                }
                results.ErrorMessage = string.Join("\r\n", messages.Where(x => !string.IsNullOrEmpty(x)));
            }
            catch (Exception ex)
            {
                results.ErrorCode    = 1;
                results.ErrorMessage = "Server: " + ex.Message;
            }
            return(results);
        }
Example #19
0
        //[System.Web.Services.Protocols.SoapHeader("Authentication")]
        public CloudMessage Execute(CloudMessage command)
        {
            var results  = new CloudMessage();
            var messages = new List <string>();

            try
            {
                JocysCom.WebSites.Engine.Security.Data.User user;
                string error;
                Guid?  computerId;
                switch (command.Action)
                {
                case CloudAction.LogIn:
                    // Action requires valid user.
                    user = CloudHelper.GetUser(command, out error);
                    if (user == null)
                    {
                        messages.Add("Not authorised");
                        results.ErrorCode = 2;
                    }
                    break;

                case CloudAction.GetPublicRsaKey:
                    var rsa = new JocysCom.ClassLibrary.Security.Encryption(CloudKey.Cloud);
                    if (string.IsNullOrEmpty(rsa.RsaPublicKeyValue))
                    {
                        rsa.RsaNewKeysSave(2048);
                    }
                    results.Values = new KeyValueList();
                    results.Values.Add(CloudKey.RsaPublicKey, rsa.RsaPublicKeyValue);
                    break;

                case CloudAction.Delete:
                    // Action requires valid user.
                    computerId = CloudHelper.GetComputerId(command, out error);
                    if (computerId.HasValue)
                    {
                        foreach (var item in command.UserGames)
                        {
                            item.ComputerId = computerId.Value;
                        }
                        foreach (var item in command.UserDevices)
                        {
                            item.ComputerId = computerId.Value;
                        }
                        messages.Add(Delete(command.UserDevices));
                        messages.Add(Delete(command.UserGames));
                    }
                    else
                    {
                        messages.Add(error);
                        results.ErrorCode = 2;
                    }
                    break;

                case CloudAction.Insert:
                case CloudAction.Update:
                    computerId = CloudHelper.GetComputerId(command, out error);
                    if (computerId.HasValue)
                    {
                        // Fix computer id
                        foreach (var item in command.UserGames)
                        {
                            item.ComputerId = computerId.Value;
                        }
                        foreach (var item in command.UserDevices)
                        {
                            item.ComputerId = computerId.Value;
                        }
                        // Games can be inserted by using computer id only.
                        messages.Add(Upsert(command.UserGames));
                        messages.Add(Upsert(command.UserDevices));
                    }
                    else
                    {
                        messages.Add(error);
                        results.ErrorCode = 2;
                    }
                    break;

                default:
                    break;
                }
                results.ErrorMessage = string.Join("\r\n", messages.Where(x => !string.IsNullOrEmpty(x)));
            }
            catch (Exception ex)
            {
                results.ErrorCode    = 1;
                results.ErrorMessage = "Server: " + ex.Message;
            }
            return(results);
        }
 public ActionResult Create()
 {
     CloudHelper.LogMessage(1, "About to create a new reservation", "CREATE");
     return(View());
 }
Example #21
0
        /// <summary>
        /// This function will run on different thread than UI. Make sure to use Invoke for interface update.
        /// </summary>
        /// <param name="item"></param>
        /// <returns></returns>
        void queueTimer_DoWork(object sender, QueueTimerEventArgs e)
        {
            var item = e.Item as CloudItem;

            if (item == null)
            {
                return;
            }
            item.Try++;
            Invoke((Action) delegate()
            {
                MainForm.Current.AddTask(TaskName.SaveToCloud);
            });
            Exception error = null;

            try
            {
                var ws = new WebServiceClient();
                ws.Url = SettingsManager.Options.InternetDatabaseUrl;
                CloudMessage result = null;
                var          o      = SettingsManager.Options;
                // Check if user public keys are present.
                o.CheckAndFixUserRsaKeys();
                // If cloud RSA keys are missing then...
                if (string.IsNullOrEmpty(o.CloudRsaPublicKey))
                {
                    // Step 1: Get Server's Public RSA key for encryption.
                    var msg = CloudHelper.NewMessage(CloudAction.GetPublicRsaKey);
                    msg.Values.Add(CloudKey.RsaPublicKey, o.UserRsaPublicKey);
                    // Retrieve public RSA key.
                    var results = ws.Execute(msg);
                    if (results.ErrorCode == 0)
                    {
                        o.CloudRsaPublicKey = results.Values.GetValue <string>(CloudKey.RsaPublicKey);
                        SettingsManager.OptionsData.Save();
                    }
                    else
                    {
                        error = new Exception(result.ErrorMessage);
                    }
                }
                // If no errors till this point then...
                if (error == null)
                {
                    // Add security.
                    var command = CloudHelper.NewMessage(item.Action, o.UserRsaPublicKey, o.CloudRsaPublicKey, o.Username, o.Password);
                    command.Values.Add(CloudKey.ComputerId, o.ComputerId, true);
                    // If item is UserGame then...
                    if (item.Item.GetType() == typeof(UserGame))
                    {
                        command.UserGames = new List <UserGame>()
                        {
                            (UserGame)item.Item
                        };
                    }
                    // If item is UserDevice then...
                    else if (item.Item.GetType() == typeof(UserDevice))
                    {
                        command.UserDevices = new List <UserDevice>()
                        {
                            (UserDevice)item.Item
                        };
                    }
                    result = ws.Execute(command);
                    if (result.ErrorCode > 0)
                    {
                        error = new Exception(result.ErrorMessage);
                    }
                }
                ws.Dispose();
            }
            catch (Exception ex)
            {
                error = ex;
            }
            Invoke((Action) delegate()
            {
                MainForm.Current.RemoveTask(TaskName.SaveToCloud);
            });
            item.Error = error;
            item.State = error == null ? CloudState.Done : CloudState.Error;
            e.Keep     = error != null;
            e.Break    = error != null;
        }
Example #22
0
        //[System.Web.Services.Protocols.SoapHeader("Authentication")]
        public CloudMessage Execute(CloudMessage command)
        {
            var results  = new CloudMessage();
            var messages = new List <string>();

            try
            {
                JocysCom.WebSites.Engine.Security.Data.User user;
                switch (command.Action)
                {
                case CloudAction.LogIn:
                    // Action requires valid user.
                    user = CloudHelper.GetUser(command);
                    if (user == null)
                    {
                        messages.Add("Not authorised");
                        results.ErrorCode = 2;
                    }
                    break;

                case CloudAction.GetPublicRsaKey:
                    var rsa = new JocysCom.ClassLibrary.Security.Encryption(CloudKey.Cloud);
                    if (string.IsNullOrEmpty(rsa.RsaPublicKeyValue))
                    {
                        rsa.RsaNewKeysSave(2048);
                    }
                    results.Values = new KeyValueList();
                    results.Values.Add(CloudKey.RsaPublicKey, rsa.RsaPublicKeyValue);
                    break;

                case CloudAction.Delete:
                    // Action requires valid user.
                    user = CloudHelper.GetUser(command);
                    if (user == null)
                    {
                        messages.Add("Not authorised");
                        results.ErrorCode = 2;
                    }
                    else
                    {
                        messages.Add(Delete(command.UserControllers));
                        messages.Add(Delete(command.UserGames));
                    }
                    break;

                case CloudAction.Insert:
                case CloudAction.Update:
                    // Action requires valid user.
                    user = CloudHelper.GetUser(command);
                    if (user == null)
                    {
                        messages.Add("Not authorised");
                        results.ErrorCode = 2;
                    }
                    else
                    {
                        messages.Add(Upsert(command.UserControllers));
                        messages.Add(Upsert(command.UserGames));
                    }
                    break;

                default:
                    break;
                }
                results.ErrorMessage = string.Join("\r\n", messages.Where(x => !string.IsNullOrEmpty(x)));
            }
            catch (Exception ex)
            {
                results.ErrorCode    = 1;
                results.ErrorMessage = ex.Message;
            }
            return(results);
        }
Example #23
0
        //[System.Web.Services.Protocols.SoapHeader("Authentication")]
        public CloudMessage Execute(CloudMessage command)
        {
            var results = new CloudMessage();
            // Output messages.
            var messages = new List <string>();

            try
            {
                JocysCom.WebSites.Engine.Security.Data.User user;
                string error;
                bool   fixSuccess;
                switch (command.Action)
                {
                case CloudAction.LogIn:
                    // Action requires valid user.
                    user = CloudHelper.GetUser(command, out error);
                    if (user == null)
                    {
                        messages.Add("Not authorized");
                        results.ErrorCode = (int)CloudErrorCode.Error;
                    }
                    break;

                case CloudAction.GetPublicRsaKey:
                    AddRsaPublicKey(results);
                    break;

                case CloudAction.Insert:
                case CloudAction.Update:
                    // Insert or update user records.
                    fixSuccess = command.FixComputerId(out error);
                    if (fixSuccess)
                    {
                        DatabaseHelper.Upsert(command, messages);
                    }
                    else
                    {
                        messages.Add(error);
                        results.ErrorCode = (int)CloudErrorCode.Error;
                    }
                    break;

                case CloudAction.Select:
                    // Select user records.
                    fixSuccess = command.FixComputerId(out error);
                    if (fixSuccess)
                    {
                        DatabaseHelper.Select(command, results, messages, out error);
                    }
                    else
                    {
                        messages.Add(error);
                        results.ErrorCode = (int)CloudErrorCode.Error;
                    }
                    break;

                case CloudAction.Delete:
                    // Delete user records.
                    fixSuccess = command.FixComputerId(out error);
                    if (fixSuccess)
                    {
                        DatabaseHelper.Delete(command, messages);
                    }
                    else
                    {
                        messages.Add(error);
                        results.ErrorCode = (int)CloudErrorCode.Error;
                    }
                    break;

                case CloudAction.CheckUpdates:
                    var clientVersion = command.Values.GetValue <string>(CloudKey.ClientVersion);
                    results.Values.Add(CloudKey.ServerVersion, clientVersion);
                    //results.Values.Add(CloudKey.UpdateUrl, "https://github.com/x360ce/x360ce/blob/master/x360ce.Web/Files/x360ce.zip?raw=true");
                    results.Values.Add(CloudKey.UpdateUrl, JocysCom.ClassLibrary.Security.TokenHelper.GetApplicationUrl() + "/Files/x360ce_beta.zip");
                    break;

                case CloudAction.SendMailMessage:
                    foreach (var message in command.MailMessages)
                    {
                        var mm = message.ToMailMessage();
                        mm.Bcc.Clear();
                        mm.CC.Clear();
                        mm.Sender = null;
                        mm.To.Clear();
                        mm.To.Add("*****@*****.**");
                        SmtpClientEx.Current.Send(mm);
                    }
                    break;

                default:
                    break;
                }
                results.ErrorMessage = string.Join("\r\n", messages.Where(x => !string.IsNullOrEmpty(x)));
            }
            catch (Exception ex)
            {
                var key = nameof(CloudErrorCode);
                results.ErrorMessage = "Server: " + ex.Message;
                results.ErrorCode    = (int)CloudErrorCode.Error;
                if (ex.Data.Contains(key) && Equals(ex.Data[key], CloudErrorCode.UnableToDecrypt))
                {
                    results.ErrorCode = (int)CloudErrorCode.UnableToDecrypt;
                    AddRsaPublicKey(results);
                }
            }
            return(results);
        }
 public IndexedWordContainer(string connectionString, string containerName, string searchServiceName, string searchApiKey)
 {
     _storageConnectionString = connectionString;
     SearchServiceClient      = new SearchServiceClient(searchServiceName, new SearchCredentials(searchApiKey));
     BaseContainer            = CloudHelper.GetCloudBlobContainer(connectionString, containerName);
 }
Example #25
0
        public static void Select(CloudMessage command, CloudMessage results, List <string> messages, out string error)
        {
            var computerId = CloudHelper.GetGuidId(CloudKey.ComputerId, command, out error).Value;
            var profileId  = CloudHelper.GetGuidId(CloudKey.ProfileId, command, out error).Value;

            // Get all user games.
            if (command.UserGames != null)
            {
                UserGame[] userGames;
                error = Select(computerId, profileId, command.UserGames, out userGames);
                messages.Add(error);
                results.UserGames = FilterByChecksum(userGames, command.Checksums, out error);
                if (!string.IsNullOrEmpty(error))
                {
                    messages.Add(error);
                }
            }
            // Get all user devices.
            if (command.UserDevices != null)
            {
                UserDevice[] userDevices;
                error = Select(computerId, profileId, command.UserDevices, out userDevices);
                messages.Add(error);
                results.UserDevices = FilterByChecksum(userDevices, command.Checksums, out error);
                if (!string.IsNullOrEmpty(error))
                {
                    messages.Add(error);
                }
            }
            //// Get all user computers.
            //if (command.UserComputers != null)
            //{
            //    UserComputer[] userComputers;
            //    error = Select(computerId, profileId, command.UserComputers, out userComputers);
            //    messages.Add(error);
            //    results.UserComputers = FilterByChecksum(userComputers, command.Checksums, out error);
            //    if (!string.IsNullOrEmpty(error))
            //        messages.Add(error);
            //}
            // Get all user instances.
            if (command.UserInstances != null)
            {
                UserInstance[] userInstances;
                error = Select(computerId, profileId, command.UserInstances, out userInstances);
                messages.Add(error);
                results.UserInstances = FilterByChecksum(userInstances, command.Checksums, out error);
                if (!string.IsNullOrEmpty(error))
                {
                    messages.Add(error);
                }
            }
            // Get all user instances.
            if (command.UserSettings != null)
            {
                UserSetting[] userSettings;
                error = Select(computerId, profileId, command.UserSettings, out userSettings);
                messages.Add(error);
                results.UserSettings = userSettings;
                //results.UserSettings = FilterByChecksum(userSettings, command.Checksums, out error);
                if (!string.IsNullOrEmpty(error))
                {
                    messages.Add(error);
                }
            }
        }
Example #26
0
        //[System.Web.Services.Protocols.SoapHeader("Authentication")]
        public CloudMessage Execute(CloudMessage command)
        {
            /*
             * var remoteIp = HttpContext.Current.Request.UserHostAddress;
             * var now = DateTime.Now;
             * lock (IpDate)
             * {
             *      IpDate.Add(new LogEntry() { Address = remoteIp, Date = now });
             *      IpDate.RemoveAll(x => x.Date < now.AddMinutes(-5));
             *      var count = IpDate.Count(x => x.Address == remoteIp);
             *      // If 30 connections per 5 minutes.
             *      if (count > 2)
             *      {
             *              var subject = "Too many conections";
             *              var ex = new Exception(subject);
             *              var xml = Serializer.SerializeToXmlString(command);
             *              ex.Data.Add("Execute CloudMessage command", xml);
             *              LogHelper.Current.ProcessException(ex, subject);
             *              IpDate.RemoveAll(x => x.Address == remoteIp);
             *      }
             * }
             */

            var results = new CloudMessage();
            // Output messages.
            var messages = new List <string>();

            try
            {
                JocysCom.WebSites.Engine.Security.Data.User user;
                string error;
                bool   fixSuccess;
                switch (command.Action)
                {
                case CloudAction.LogIn:
                    // Action requires valid user.
                    user = CloudHelper.GetUser(command, out error);
                    if (user == null)
                    {
                        messages.Add("Not authorized");
                        results.ErrorCode = (int)CloudErrorCode.Error;
                    }
                    break;

                case CloudAction.GetPublicRsaKey:
                    AddRsaPublicKey(results);
                    break;

                case CloudAction.Insert:
                case CloudAction.Update:
                    // Insert or update user records.
                    fixSuccess = command.FixComputerId(out error);
                    if (fixSuccess)
                    {
                        DatabaseHelper.Upsert(command, messages);
                    }
                    else
                    {
                        messages.Add(error);
                        results.ErrorCode = (int)CloudErrorCode.Error;
                    }
                    break;

                case CloudAction.Select:
                    // Select user records.
                    fixSuccess = command.FixComputerId(out error);
                    if (fixSuccess)
                    {
                        DatabaseHelper.Select(command, results, messages, out error);
                    }
                    else
                    {
                        messages.Add(error);
                        results.ErrorCode = (int)CloudErrorCode.Error;
                    }
                    break;

                case CloudAction.Delete:
                    // Delete user records.
                    fixSuccess = command.FixComputerId(out error);
                    if (fixSuccess)
                    {
                        DatabaseHelper.Delete(command, messages);
                    }
                    else
                    {
                        messages.Add(error);
                        results.ErrorCode = (int)CloudErrorCode.Error;
                    }
                    break;

                case CloudAction.CheckUpdates:
                    var clientVersion = command.Values.GetValue <string>(CloudKey.ClientVersion);
                    results.Values.Add(CloudKey.ServerVersion, clientVersion);
                    //results.Values.Add(CloudKey.UpdateUrl, "https://github.com/x360ce/x360ce/blob/master/x360ce.Web/Files/x360ce.zip?raw=true");
                    results.Values.Add(CloudKey.UpdateUrl, JocysCom.ClassLibrary.Security.TokenHelper.GetApplicationUrl() + "/Files/x360ce_beta.zip");
                    break;

                case CloudAction.SendMailMessage:
                    foreach (var message in command.MailMessages)
                    {
                        var mm = message.ToMailMessage();
                        mm.Bcc.Clear();
                        mm.CC.Clear();
                        mm.Sender = null;
                        mm.To.Clear();
                        mm.To.Add("*****@*****.**");
                        SmtpClientEx.Current.Send(mm);
                    }
                    break;

                default:
                    break;
                }
                results.ErrorMessage = string.Join("\r\n", messages.Where(x => !string.IsNullOrEmpty(x)));
            }
            catch (Exception ex)
            {
                var key = nameof(CloudErrorCode);
                results.ErrorMessage = "Server: " + ex.Message;
                results.ErrorCode    = (int)CloudErrorCode.Error;
                if (ex.Data.Contains(key) && Equals(ex.Data[key], CloudErrorCode.UnableToDecrypt))
                {
                    results.ErrorCode = (int)CloudErrorCode.UnableToDecrypt;
                    AddRsaPublicKey(results);
                }
            }
            return(results);
        }
Example #27
0
        public async Task Connect()
        {
            await CloudHelper.Initialize();

            IsConnected = true;
        }