public void Init(CloudAccount account) { SaveAccount = account; WorkingAccount = account != null ? new CloudAccount { CloudID = account.CloudID, Name = account.Name, ConnectionString = account.ConnectionString, Provider = account.Provider } : new CloudAccount(); SetConnectStatus(); try { if (!string.IsNullOrEmpty(WorkingAccount.Provider)) { ServerInfo.CloudProvider v = ServerInfo.Instance.CloudProviders.FirstOrDefault(a => a.Name == WorkingAccount.Provider); if (v != null) { comboProvider.SelectedItem = v; } } if (!string.IsNullOrEmpty(WorkingAccount.Name)) { txtCloudAccountName.Text = WorkingAccount.Name; } comboProvider.Focus(); } catch (Exception ex) { Utils.ShowErrorMessage(ex); } }
public void cloudAccountIndexSimple() { List <CloudAccount> caList = CloudAccount.index(); Assert.IsNotNull(caList); Assert.IsTrue(caList.Count > 0); }
public static void Init() { JMMUser.Populate(a => a.JMMUserID); CloudAccount.Populate(a => a.CloudID); ImportFolder.Populate(a => a.ImportFolderID); AniDB_Anime.Populate(a => a.AniDB_AnimeID); AniDB_Episode.Populate(a => a.AniDB_EpisodeID); AniDB_File.Populate(a => a.AniDB_FileID); AniDB_Anime_Title.Populate(a => a.AniDB_Anime_TitleID); AniDB_Anime_Tag.Populate(a => a.AniDB_Anime_TagID); AniDB_Tag.Populate(a => a.AniDB_TagID); CustomTag.Populate(a => a.CustomTagID); CrossRef_CustomTag.Populate(a => a.CrossRef_CustomTagID); CrossRef_File_Episode.Populate(a => a.CrossRef_File_EpisodeID); VideoLocalPlace.Populate(a => a.VideoLocal_Place_ID); VideoLocal.Populate(a => a.VideoLocalID); VideoLocalUser.Populate(a => a.VideoLocal_UserID); GroupFilter.Populate(a => a.GroupFilterID); AnimeEpisode.Populate(a => a.AnimeEpisodeID); AnimeEpisode_User.Populate(a => a.AnimeEpisode_UserID); AnimeSeries.Populate(a => a.AnimeSeriesID); AnimeSeries_User.Populate(a => a.AnimeSeries_UserID); AnimeGroup.Populate(a => a.AnimeGroupID); AnimeGroup_User.Populate(a => a.AnimeGroup_UserID); GroupFilter.PostProcess(); CleanUpMemory(); }
void btnDeleteCloudAccount_Click(object sender, RoutedEventArgs e) { object obj = lbCloudAccounts.SelectedItem; if (obj == null) { return; } try { if (obj.GetType() == typeof(CloudAccount)) { CloudAccount ns = (CloudAccount)obj; MessageBoxResult res = MessageBox.Show(string.Format(Properties.Resources.CloudAccounts_RemoveMessage, ns.Name, ns.Provider), Properties.Resources.Confirm, MessageBoxButton.YesNo, MessageBoxImage.Question); if (res == MessageBoxResult.Yes) { Cursor = Cursors.Wait; Importer.DeleteCloudAccount(ns.CloudID); Cursor = Cursors.Arrow; } } } catch (Exception ex) { Cursor = Cursors.Arrow; Utils.ShowErrorMessage(ex); } }
public async Task <IActionResult> Delete(string[] ids) { Cloudinary cloudinary = CloudAccount.Cloud(); for (int g = 0; g < ids.Count(); g++) { var collectionsFinded = Context.Collections.Include(c => c.User).Where(u => u.UserId.Equals(ids[g])); foreach (Collection collection in collectionsFinded) { cloudinary.DeleteResources(collection.ImageCloudId); } } for (int i = 0; i < ids.Count(); i++) { User usr = await userManager.FindByIdAsync(ids[i]); await userManager.DeleteAsync(usr); } string signeduserId = userManager.GetUserId(HttpContext.User); for (int i = 0; i < ids.Count(); i++) { if (ids[i].Equals(signeduserId)) { return(RedirectToAction("Logout", "Entrance")); } } return(View("UsersManager", userManager.Users)); }
public static void Init() { JMMUser.Populate(); CloudAccount.Populate(); ImportFolder.Populate(); AniDB_Anime.Populate(); AniDB_Episode.Populate(); AniDB_File.Populate(); AniDB_Anime_Title.Populate(); AniDB_Anime_Tag.Populate(); AniDB_Tag.Populate(); CustomTag.Populate(); CrossRef_CustomTag.Populate(); CrossRef_File_Episode.Populate(); VideoLocalPlace.Populate(); VideoLocal.Populate(); VideoLocalUser.Populate(); GroupFilter.Populate(); AnimeEpisode.Populate(); AnimeEpisode_User.Populate(); AnimeSeries.Populate(); AnimeSeries_User.Populate(); AnimeGroup.Populate(); AnimeGroup_User.Populate(); // Update Contracts if necessary try { JMMUser.RegenerateDb(); CloudAccount.RegenerateDb(); ImportFolder.RegenerateDb(); AniDB_Anime.RegenerateDb(); AniDB_Episode.RegenerateDb(); AniDB_File.RegenerateDb(); AniDB_Anime_Title.RegenerateDb(); AniDB_Anime_Tag.RegenerateDb(); AniDB_Tag.RegenerateDb(); CustomTag.RegenerateDb(); CrossRef_CustomTag.RegenerateDb(); CrossRef_File_Episode.RegenerateDb(); VideoLocalPlace.RegenerateDb(); VideoLocal.RegenerateDb(); VideoLocalUser.RegenerateDb(); AnimeEpisode.RegenerateDb(); AnimeEpisode_User.RegenerateDb(); AnimeSeries.RegenerateDb(); AnimeSeries_User.RegenerateDb(); AnimeGroup.RegenerateDb(); AnimeGroup_User.RegenerateDb(); GroupFilter.RegenerateDb(); GroupFilter.PostProcess(); } catch (Exception e) { LogManager.GetCurrentClassLogger().Error(e, "There was an error starting the Database Factory"); } CleanUpMemory(); }
public void cloudAccountShowSimple() { CloudAccount ca = CloudAccount.show(cloudAccountID); Assert.IsNotNull(ca); Assert.IsTrue(ca.ID.Length > 0); Assert.IsTrue(ca.ID == cloudAccountID); }
void EditAccount(CloudAccount account) { CloudAccountForm frm = new CloudAccountForm(); frm.Owner = GetTopParent(); frm.Init(account); frm.ShowDialog(); ServerInfo.Instance.RefreshCloudAccounts(); }
public void RefreshFolderProviders() { FolderProviders.Clear(); CloudAccount lfs = new CloudAccount() { Name = "NA", Provider = "Local File System" }; FolderProviders.Add(lfs); RepoFactory.CloudAccount.GetAll().ForEach(a => FolderProviders.Add(a)); }
void lbCloudAccount_MouseDoubleClick(object sender, MouseButtonEventArgs e) { object obj = lbCloudAccounts.SelectedItem; if (obj == null) { return; } CloudAccount ns = (CloudAccount)obj; EditAccount(ns); }
public void cloudAccountRelationshipsTest() { CloudAccount ca = CloudAccount.show(cloudAccountID); Assert.IsNotNull(ca); Assert.IsTrue(ca.ID.Length > 0); Assert.IsTrue(ca.ID == cloudAccountID); Assert.IsNotNull(ca.account); Assert.IsTrue(ca.account.ID.Length > 0); Assert.IsNotNull(ca.cloud); Assert.IsNotNull(ca.cloud.ID.Length > 0); }
public static void Init() { JMMUser.Populate(); CloudAccount.Populate(); ImportFolder.Populate(); AniDB_Anime.Populate(); AniDB_Episode.Populate(); AniDB_File.Populate(); AniDB_Anime_Title.Populate(); AniDB_Anime_Tag.Populate(); AniDB_Tag.Populate(); CustomTag.Populate(); CrossRef_CustomTag.Populate(); CrossRef_File_Episode.Populate(); VideoLocalPlace.Populate(); VideoLocal.Populate(); VideoLocalUser.Populate(); GroupFilter.Populate(); AnimeEpisode.Populate(); AnimeEpisode_User.Populate(); AnimeSeries.Populate(); AnimeSeries_User.Populate(); AnimeGroup.Populate(); AnimeGroup_User.Populate(); // Update Contracts if necessary JMMUser.RegenerateDb(); CloudAccount.RegenerateDb(); ImportFolder.RegenerateDb(); AniDB_Anime.RegenerateDb(); AniDB_Episode.RegenerateDb(); AniDB_File.RegenerateDb(); AniDB_Anime_Title.RegenerateDb(); AniDB_Anime_Tag.RegenerateDb(); AniDB_Tag.RegenerateDb(); CustomTag.RegenerateDb(); CrossRef_CustomTag.RegenerateDb(); CrossRef_File_Episode.RegenerateDb(); VideoLocalPlace.RegenerateDb(); VideoLocal.RegenerateDb(); VideoLocalUser.RegenerateDb(); AnimeEpisode.RegenerateDb(); AnimeEpisode_User.RegenerateDb(); AnimeSeries.RegenerateDb(); AnimeSeries_User.RegenerateDb(); AnimeGroup.RegenerateDb(); AnimeGroup_User.RegenerateDb(); GroupFilter.RegenerateDb(); GroupFilter.PostProcess(); CleanUpMemory(); }
public IActionResult Delete(string[] ids) { Cloudinary cloudinary = CloudAccount.Cloud(); for (int i = 0; i < ids.Count(); i++) { Collection collection = Context.Collections.Find(ids[i]); cloudinary.DeleteResources(collection.ImageCloudId); Context.Collections.Remove(collection); Context.SaveChanges(); } return(RedirectToAction("MyCollections", "Collection")); }
public string wmTestCloudConnection(string sAccountID, string sCloudID) { acUI.acUI ui = new acUI.acUI(); string sErr = ""; Cloud c = new Cloud(sCloudID); if (c.ID == null) { return("{'result':'fail','error':'Failed to get Cloud details for Cloud ID [" + sCloudID + "].'}"); } CloudAccount ca = new CloudAccount(sAccountID); if (ca.ID == null) { return("{'result':'fail','error':'Failed to get Cloud Account details for Cloud Account ID [" + sAccountID + "].'}"); } //get the test cloud object type for this provider CloudObjectType cot = ui.GetCloudObjectType(c.Provider, c.Provider.TestObject); if (cot != null) { if (string.IsNullOrEmpty(cot.ID)) { return("{'result':'fail','error':'Cannot find definition for requested object type [" + c.Provider.TestObject + "].'}"); } } else { return("{'result':'fail','error':'GetCloudObjectType failed for [" + c.Provider.TestObject + "].'}"); } string sURL = GetURL(ca, c, cot, null, ref sErr); if (!string.IsNullOrEmpty(sErr)) { return("{'result':'fail','error':'" + ui.packJSON(sErr) + "'}"); } string sResult = ui.HTTPGet(sURL, ref sErr); if (!string.IsNullOrEmpty(sErr)) { return("{'result':'fail','error':'" + ui.packJSON(sErr) + "'}"); } return("{'result':'success','response':'" + ui.packJSON(sResult) + "'}"); }
private string GetURL(CloudAccount ca, Cloud c, CloudObjectType cot, Dictionary <string, string> AdditionalArguments, ref string sErr) { ////test output //string sOut = "STRING:<br />" + sStringToSign + "<br /><br />"; //sOut += "QueryString:<br />" + sQueryString + "<br /><br />"; //sOut += "SIGNED:<br />" + sSignature + "<br /><br />"; //sOut += "URL:<br /><a href='" + sURL + "' target='_blank'>" + sURL + "</a><br /><br />"; ////sOut += "DECRYPTED:" + Convert.FromBase64String(sSignature) + "<br />"; //char[] values = sStringToSign.ToCharArray(); //string sHex = ""; //foreach (char letter in values) //{ // // Get the integral value of the character. // int value = Convert.ToInt32(letter); // // Convert the decimal value to a hexadecimal value in string form. // sHex += String.Format("{0:X}", value); //} //sOut += "HEX STRING TO SIGN:" + sHex + "<br />"; //we have to use the provided cloud and object type to construct an endpoint //if either of these values is missing, we will attempt to use the other one standalone. string sHostName = ""; Product prod = cot.ParentProduct; //if both are there, concatenate them if (!string.IsNullOrEmpty(prod.APIUrlPrefix) && !string.IsNullOrEmpty(c.APIUrl)) { sHostName = prod.APIUrlPrefix + "." + c.APIUrl; } else if (string.IsNullOrEmpty(prod.APIUrlPrefix) && !string.IsNullOrEmpty(c.APIUrl)) { sHostName = c.APIUrl; } else if (!string.IsNullOrEmpty(prod.APIUrlPrefix) && string.IsNullOrEmpty(c.APIUrl)) { sHostName = prod.APIUrlPrefix; } if (string.IsNullOrEmpty(sHostName)) { sErr = "Unable to reconcile an endpoint from the Cloud [" + c.Name + "] or Cloud Object [" + cot.ID + "] definitions." + sErr; return(null); } //HOST URI //what's the URI... (if any) string sResourceURI = ""; if (!string.IsNullOrEmpty(prod.APIUri)) { sResourceURI = prod.APIUri; } //PARAMETERS //first, this is an explicit list of parameters in a dictionary. //in the real world, we'll probably pull these params from a table //or have to parse a querystring ParamComparer pc = new ParamComparer(); SortedDictionary <string, string> sortedRequestParams = new SortedDictionary <string, string>(pc); //call specific parameters (this is AWS specific!!!) sortedRequestParams.Add("Action", cot.APICall); //do we need to apply a group filter? If it's defined on the table then YES! if (!string.IsNullOrEmpty(cot.APIRequestGroupFilter)) { string[] sTmp = cot.APIRequestGroupFilter.Split('='); sortedRequestParams.Add(sTmp[0], sTmp[1]); } //ADDITIONAL ARGUMENTS if (AdditionalArguments != null) { //we have custom arguments... use them //for each... add to sortedRequestParams //if the same key from the group filter is defined as sAdditionalArguments it overrides the table! } //AWS auth parameters string sAccessKeyID = ca.LoginID; string sSecretAccessKeyID = ca.LoginPassword; string sDate = DateTime.UtcNow.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss", DateTimeFormatInfo.InvariantInfo); sortedRequestParams.Add("AWSAccessKeyId", sAccessKeyID); sortedRequestParams.Add("Version", prod.APIVersion); //some products use the older Expires method if (prod.Name == "s3") { sortedRequestParams.Add("Expires", "2020202020"); // a point waaaay in the distant future. } else { sortedRequestParams.Add("Timestamp", sDate); } sortedRequestParams.Add("SignatureMethod", "HmacSHA256"); sortedRequestParams.Add("SignatureVersion", "2"); //now we have all the parameters in a list, build a sorted, encoded querystring string string sQueryString = GetSortedParamsAsString(sortedRequestParams, true); //use the URL/URI plus the querystring to build the full request to be signed string sStringToSign = awsComposeStringToSign("GET", sHostName, sResourceURI, sQueryString); //and sign it //string sSignature = GetAWS3_SHA1AuthorizationValue(sSecretAccessKeyID, sStringToSign); string sSignature = awsGetSHA256AuthorizationValue(sSecretAccessKeyID, sStringToSign); //finally, urlencode the signature sSignature = PercentEncodeRfc3986(sSignature); string sHostURL = prod.APIProtocol.ToLower() + "://" + sHostName + sResourceURI; return(sHostURL + "?" + sQueryString + "&Signature=" + sSignature); }
public string GetCloudObjectsAsXML(string sCloudID, CloudObjectType cot, ref string sErr, Dictionary <string, string> AdditionalArguments) { acUI.acUI ui = new acUI.acUI(); string sXML = ""; string sAccountID = ui.GetSelectedCloudAccountID(); CloudAccount ca = new CloudAccount(sAccountID); if (ca.ID == null) { sErr = "Failed to get Cloud Account details for Cloud Account ID [" + sAccountID + "]."; return(null); } if (cot != null) { //many reasons why we'd bail here. Rather than a bunch of testing below, let's just crash //if a key field is missing. if (string.IsNullOrEmpty(cot.ID)) { sErr = "Cannot find definition for requested object type [" + cot.ID + "]"; return(null); } // if (string.IsNullOrEmpty(prod.APIUrlPrefix)) // { sErr = "APIUrlPrefix not defined for requested object type [" + cot.ID + "]"; return null; } // if (string.IsNullOrEmpty(cot.APICall)) // { sErr = "APICall not defined for requested object type [" + cot.ID + "]"; return null; } } else { sErr = "GetCloudObjectType failed for [" + cot.ID + "]"; return(null); } //get the cloud object Cloud c = new Cloud(sCloudID); if (c.ID == null) { sErr = "Failed to get Cloud details for Cloud ID [" + sCloudID + "]."; return(null); } // //HOST URL // //we have to use the provided cloud and object type to construct an endpoint // //if either of these values is missing, we will attempt to use the other one standalone. // string sHostName = ""; // // //if both are there, concatenate them // if (!string.IsNullOrEmpty(prod.APIUrlPrefix) && !string.IsNullOrEmpty(c.APIUrl)) // sHostName = prod.APIUrlPrefix + "." + c.APIUrl; // else if (string.IsNullOrEmpty(prod.APIUrlPrefix) && !string.IsNullOrEmpty(c.APIUrl)) // sHostName = c.APIUrl; // else if (!string.IsNullOrEmpty(prod.APIUrlPrefix) && string.IsNullOrEmpty(c.APIUrl)) // sHostName = prod.APIUrlPrefix; // // if (string.IsNullOrEmpty(sHostName)) { // sErr = "Unable to reconcile an endpoint from the Cloud [" + c.Name + "] or Cloud Object [" + cot.ID + "] definitions." + sErr; // return null; // } // // // //HOST URI // //what's the URI... (if any) // string sResourceURI = ""; // if (!string.IsNullOrEmpty(prod.APIUri)) // sResourceURI = prod.APIUri; // // // // //PARAMETERS // //first, this is an explicit list of parameters in a dictionary. // //in the real world, we'll probably pull these params from a table // //or have to parse a querystring // ParamComparer pc = new ParamComparer(); // SortedDictionary<string, string> sortedRequestParams = new SortedDictionary<string, string>(pc); // // //call specific parameters (this is AWS specific!!!) // sortedRequestParams.Add("Action", cot.APICall); // // //do we need to apply a group filter? If it's defined on the table then YES! // if (!string.IsNullOrEmpty(cot.APIRequestGroupFilter)) // { // string[] sTmp = cot.APIRequestGroupFilter.Split('='); // sortedRequestParams.Add(sTmp[0], sTmp[1]); // } // // //ADDITIONAL ARGUMENTS // if (AdditionalArguments != null) // { // //we have custom arguments... use them // //for each... add to sortedRequestParams // //if the same key from the group filter is defined as sAdditionalArguments it overrides the table! // } // // // //AWS auth parameters // string sDate = DateTime.UtcNow.ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss", DateTimeFormatInfo.InvariantInfo); // // sortedRequestParams.Add("AWSAccessKeyId", sAccessKeyID); // sortedRequestParams.Add("Version", prod.APIVersion); // // //some products use the older Expires method // if (prod.Name == "s3") // sortedRequestParams.Add("Expires", "2020202020"); // a point waaaay in the distant future. // else // sortedRequestParams.Add("Timestamp", sDate); // // sortedRequestParams.Add("SignatureMethod", "HmacSHA256"); // sortedRequestParams.Add("SignatureVersion", "2"); // // // // //now we have all the parameters in a list, build a sorted, encoded querystring string // string sQueryString = GetSortedParamsAsString(sortedRequestParams, true); // // // //use the URL/URI plus the querystring to build the full request to be signed // string sStringToSign = awsComposeStringToSign("GET", sHostName, sResourceURI, sQueryString); // // //and sign it // //string sSignature = GetAWS3_SHA1AuthorizationValue(sSecretAccessKeyID, sStringToSign); // string sSignature = awsGetSHA256AuthorizationValue(sSecretAccessKeyID, sStringToSign); // // //finally, urlencode the signature // sSignature = PercentEncodeRfc3986(sSignature); // // // string sHostURL = prod.APIProtocol.ToLower() + "://" + sHostName + sResourceURI; // string sURL = sHostURL + "?" + sQueryString + "&Signature=" + sSignature; string sURL = GetURL(ca, c, cot, AdditionalArguments, ref sErr); if (!string.IsNullOrEmpty(sErr)) { return(null); } sXML = ui.HTTPGet(sURL, ref sErr); if (!string.IsNullOrEmpty(sErr)) { return(null); } return(sXML); }
/// <summary> /// Cloud client provider /// </summary> /// <param name="storageAccount">The cloud storage account.</param> public CloudClient(CloudAccount storageAccount) { _cloudFileClient = storageAccount.CloudStorageAccount.CreateCloudFileClient(); }
public void Init(ImportFolder acc, string initialpath) { _account = acc.CloudAccount; PopulateMainDir(initialpath); }