Пример #1
0
        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);
            }
        }
Пример #2
0
        public void cloudAccountIndexSimple()
        {
            List <CloudAccount> caList = CloudAccount.index();

            Assert.IsNotNull(caList);
            Assert.IsTrue(caList.Count > 0);
        }
Пример #3
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();
 }
Пример #4
0
        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);
            }
        }
Пример #5
0
        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));
        }
Пример #6
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
            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();
        }
Пример #7
0
        public void cloudAccountShowSimple()
        {
            CloudAccount ca = CloudAccount.show(cloudAccountID);

            Assert.IsNotNull(ca);
            Assert.IsTrue(ca.ID.Length > 0);
            Assert.IsTrue(ca.ID == cloudAccountID);
        }
Пример #8
0
        void EditAccount(CloudAccount account)
        {
            CloudAccountForm frm = new CloudAccountForm();

            frm.Owner = GetTopParent();
            frm.Init(account);
            frm.ShowDialog();
            ServerInfo.Instance.RefreshCloudAccounts();
        }
Пример #9
0
        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));
        }
Пример #10
0
        void lbCloudAccount_MouseDoubleClick(object sender, MouseButtonEventArgs e)
        {
            object obj = lbCloudAccounts.SelectedItem;

            if (obj == null)
            {
                return;
            }
            CloudAccount ns = (CloudAccount)obj;

            EditAccount(ns);
        }
Пример #11
0
        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);
        }
Пример #12
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();
        }
Пример #13
0
        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"));
        }
Пример #14
0
        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) + "'}");
        }
Пример #15
0
        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);
        }
Пример #16
0
        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);
        }
Пример #17
0
 /// <summary>
 /// Cloud client provider
 /// </summary>
 /// <param name="storageAccount">The cloud storage account.</param>
 public CloudClient(CloudAccount storageAccount)
 {
     _cloudFileClient = storageAccount.CloudStorageAccount.CreateCloudFileClient();
 }
Пример #18
0
 public void Init(ImportFolder acc, string initialpath)
 {
     _account = acc.CloudAccount;
     PopulateMainDir(initialpath);
 }