Example #1
0
        private static void SetToken(Dictionary <string, string> args)
        {
            Global.Initialize(false);

            AdapterBase adapter = GetAdapter(args);
            string      file;

            if (!args.TryGetValue("file", out file))
            {
                throw new Exception("/file is required");
            }

            if (adapter.Configuration.AdapterTypeId == OneDriveAdapter.TargetTypeId)
            {
                string        tokenContent = File.ReadAllText(file);
                TokenResponse token        = JsonConvert.DeserializeObject <TokenResponse>(tokenContent);

                // Encrypt the token if not already encrypted
                token.Protect();

                ((OneDriveAdapterConfiguration)adapter.Configuration).CurrentToken = token;

                adapter.SaveConfiguration();
            }
            else
            {
                AdapterRegistration registration =
                    AdapterRegistry.GetRegistrationByTypeId(adapter.Configuration.AdapterTypeId);

                throw new Exception(
                          string.Format("Cannot set token from adapter with type {0} ({1})",
                                        registration.AdapterType.Name, adapter.Configuration.AdapterTypeId));
            }
        }
Example #2
0
        private static void DumpConfig()
        {
            Global.Initialize(false);

            string localAppDataPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
            string appDataRoot      = Path.Combine(localAppDataPath, "SyncPro");

            DirectoryInfo appDataRootDir = new DirectoryInfo(appDataRoot);

            foreach (DirectoryInfo relationshipDir in appDataRootDir.GetDirectories())
            {
                Guid guid;
                if (!Guid.TryParse(relationshipDir.Name, out guid))
                {
                    WriteWarning("Failed to parse relationship directory '{0}' as a GUID", relationshipDir.Name);
                    continue;
                }

                SyncRelationship relationship = SyncRelationship.Load(guid);
                //relationship.BeginInitialize();

                // TODO: Do we really need to initialize the relationship in order to dump the configuration?
                //relationship.InitializeAsync().Wait();

                Console.WriteLine("---------------------------- [Relationship] ----------------------------");
                Console.WriteLine("RelationshipId: " + relationship.Configuration.RelationshipId);
                Console.WriteLine("Name: " + relationship.Configuration.Name);
                Console.WriteLine("Description: " + relationship.Configuration.Description);
                Console.WriteLine("Scope: " + relationship.Configuration.Scope);
                Console.WriteLine("SyncAttributes: " + relationship.Configuration.SyncAttributes);
                Console.WriteLine("TriggerType: " + relationship.Configuration.TriggerConfiguration.TriggerType);
                Console.WriteLine("SourceAdapter: " + relationship.Configuration.SourceAdapterId);
                Console.WriteLine("DestinationAdapter: " + relationship.Configuration.DestinationAdapterId);
                Console.WriteLine();
                Console.WriteLine("---------- [Adapters] ---------- ");

                foreach (AdapterBase adapter in relationship.Adapters)
                {
                    Console.WriteLine("Id: " + adapter.Configuration.Id);
                    Console.WriteLine("AdapterTypeId: " + adapter.Configuration.AdapterTypeId);
                    Console.WriteLine("AdapterTypeName: " +
                                      AdapterRegistry.GetRegistrationByTypeId(adapter.Configuration.AdapterTypeId).AdapterType.Name);
                    Console.WriteLine("IsOriginator: " + adapter.Configuration.IsOriginator);
                    Console.WriteLine("Flags: " +
                                      string.Join(",", StringExtensions.GetSetFlagNames <Data.AdapterFlags>(adapter.Configuration.Flags)));
                    Console.WriteLine();
                }

                Console.WriteLine();
            }
        }
Example #3
0
        public static SyncRelationship Load(Guid relationshipId)
        {
            string relationshipDir           = Path.Combine(Global.AppDataRoot, relationshipId.ToString("N"));
            RelationshipConfiguration config = RelationshipConfiguration.Load(relationshipDir);

            Logger.RelationshipLoaded(
                config.RelationshipId,
                new Dictionary <string, object>()
            {
                { "Name", config.Name },
                { "RelationshipId", config.RelationshipId },
                { "InitiallyCreatedUtc", config.InitiallyCreatedUtc },
                { "Scope", config.Scope }
            });

            SyncRelationship relationship = new SyncRelationship(config);

            // Get the adapters from the configuration for this relationship
            foreach (AdapterConfiguration adapterConfig in config.Adapters)
            {
                // Get the adapter registration information for this type of adapter
                AdapterRegistration registration =
                    AdapterRegistry.GetRegistrationByTypeId(adapterConfig.AdapterTypeId);

                if (registration == null)
                {
                    throw new Exception("No adapter registration found with TypeId " + adapterConfig.AdapterTypeId);
                }

                // Create the adapter object based on its config from the database
                AdapterBase adapter = (AdapterBase)Activator.CreateInstance(
                    registration.AdapterType,
                    relationship,
                    adapterConfig);

                relationship.Adapters.Add(adapter);

                // Load adapter-specific configuration settings
                adapter.LoadConfiguration();
            }

            return(relationship);
        }
Example #4
0
        private static void ExtractToken(Dictionary <string, string> args)
        {
            Global.Initialize(false);

            AdapterBase adapter = GetAdapter(args);

            bool   formatToken = args.ContainsKey("formatToken");
            string file;

            args.TryGetValue("file", out file);

            if (adapter.Configuration.AdapterTypeId == OneDriveAdapter.TargetTypeId)
            {
                TokenResponse token = ((OneDriveAdapterConfiguration)adapter.Configuration).CurrentToken;

                if (args.ContainsKey("decrypt"))
                {
                    token.Unprotect();
                }

                string formattedToken = JsonConvert.SerializeObject(token, formatToken ? Formatting.Indented : Formatting.None);

                if (string.IsNullOrEmpty(file))
                {
                    Console.WriteLine(formattedToken);
                }
                else
                {
                    File.WriteAllText(file, formattedToken);
                }
            }
            else
            {
                AdapterRegistration registration =
                    AdapterRegistry.GetRegistrationByTypeId(adapter.Configuration.AdapterTypeId);

                throw new Exception(
                          string.Format("Cannot extract token from adapter with type {0} ({1})",
                                        registration.AdapterType.Name, adapter.Configuration.AdapterTypeId));
            }
        }
Example #5
0
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            JObject jObject = JObject.Load(reader);
            Guid    typeId  = Guid.Parse(jObject["AdapterTypeId"].Value <string>());

            //if (typeId == OneDriveAdapter.TargetTypeId)
            //{
            //    return JsonConvert.DeserializeObject<OneDriveAdapterConfiguration>(
            //        jObject.ToString(),
            //        SerializerSettings);
            //}

            //if (typeId == WindowsFileSystemAdapter.TargetTypeId)
            //{
            //    return JsonConvert.DeserializeObject<WindowsFileSystemAdapterConfiguration>(
            //        jObject.ToString(),
            //        SerializerSettings);
            //}

            //if (typeId == BackblazeB2Adapter.TargetTypeId)
            //{
            //    return JsonConvert.DeserializeObject<BackblazeB2AdapterConfiguration>(
            //        jObject.ToString(),
            //        SerializerSettings);
            //}

            AdapterRegistration registration = AdapterRegistry.GetRegistrationByTypeId(typeId);

            if (registration == null)
            {
                throw new Exception("No adapter registration found with TypeId " + typeId);
            }

            return(JsonConvert.DeserializeObject(
                       jObject.ToString(),
                       registration.AdapterConfigurationType,
                       SerializerSettings));

            //throw new NotImplementedException("Cannot read adapter configuration for type ID " + typeId);
        }