public ActiveDirectoryHandlerResults ModifyGroup(string identity, AdGroup group, string domain = null)
    {
        string            planName = config.Plans.Group.Modify;
        StartPlanEnvelope pe       = GetPlanEnvelope(BuildIdentity(domain, identity), group);

        return(CallPlan(planName, pe));
    }
    public ActiveDirectoryHandlerResults AddGroupToGroup(string identity, string groupIdentity, string domain = null, string groupdomain = null)
    {
        string            planName = config.Plans.Group.AddToGroup;
        StartPlanEnvelope pe       = GetPlanEnvelope(BuildIdentity(domain, identity), BuildIdentity(groupdomain, groupIdentity));

        return(CallPlan(planName, pe));
    }
    public ActiveDirectoryHandlerResults CreateUser(string identity, AdUser user, string domain = null)
    {
        string            planName = config.Plans.User.Create;
        StartPlanEnvelope pe       = GetPlanEnvelope(BuildIdentity(domain, identity), user);

        return(CallPlan(planName, pe));
    }
    public ActiveDirectoryHandlerResults Search(AdSearchRequest request)
    {
        string            planName = config.Plans.Search;
        StartPlanEnvelope pe       = GetPlanEnvelope(request);

        return(CallPlan(planName, pe));
    }
Exemple #5
0
        public object StartPlanSync([FromBody] StartPlanEnvelope planEnvelope, string planUniqueName, bool dryRun = false, string requestNumber = null,
                                    string path         = "Actions[0]:Result:ExitData", SerializationType serializationType = SerializationType.Json,
                                    bool setContentType = true, int pollingIntervalSeconds = 1, int timeoutSeconds = 120, string nodeRootUrl = null)
        {
            if (!string.IsNullOrWhiteSpace(requestNumber))
            {
                requestNumber = System.Web.HttpUtility.UrlDecode(requestNumber);
            }
            if (!string.IsNullOrWhiteSpace(nodeRootUrl))
            {
                requestNumber = System.Web.HttpUtility.UrlDecode(nodeRootUrl);
            }

            string context = GetContext(nameof(StartPlanSync), nameof(CurrentUserName), CurrentUserName,
                                        nameof(planUniqueName), planUniqueName, nameof(dryRun), dryRun, nameof(requestNumber), requestNumber,
                                        nameof(path), path, nameof(serializationType), serializationType, nameof(setContentType), setContentType,
                                        nameof(pollingIntervalSeconds), pollingIntervalSeconds, nameof(timeoutSeconds), timeoutSeconds,
                                        nameof(nodeRootUrl), nodeRootUrl);

            SynapseServer.Logger.Debug(context);

            long instanceId = StartPlan(planEnvelope, planUniqueName, dryRun, requestNumber, nodeRootUrl);

            return(WaitForTerminalStatusOrTimeout(instanceId, planUniqueName, path, serializationType,
                                                  pollingIntervalSeconds, timeoutSeconds, setContentType));
        }
    public ActiveDirectoryHandlerResults ModifyUser(string identity, AdUser user)
    {
        string            planName = config.Plans.User.Modify;
        StartPlanEnvelope pe       = GetPlanEnvelope(identity, user);

        return(CallPlan(planName, pe));
    }
    public ActiveDirectoryHandlerResults GetUser(string identity)
    {
        string            planName = config.Plans.User.Get;
        StartPlanEnvelope pe       = GetPlanEnvelope(identity);

        return(CallPlan(planName, pe));
    }
    public ActiveDirectoryHandlerResults AddUserToGroup(string identity, string groupidentity)
    {
        string            planName = config.Plans.User.AddToGroup;
        StartPlanEnvelope pe       = GetPlanEnvelope(identity, groupidentity);

        return(CallPlan(planName, pe));
    }
    private void AddPropertiesToPlan(StartPlanEnvelope pe, Dictionary <String, List <String> > properties)
    {
        if (properties != null)
        {
            // Include Entire "Properties" Structure In Dynamic Parameter "properties"
            string propStr = YamlHelpers.Serialize(properties, true, false);
            pe.DynamicParameters.Add(@"properties", propStr);

            // Include Each Property In A Dynamic Parameter Matching The Name of the Property
            foreach (KeyValuePair <string, List <string> > property in properties)
            {
                if (property.Value?.Count > 0 && !(String.IsNullOrWhiteSpace(property.Key)))
                {
                    String pName = property.Key.ToLower();
                    if (pe.DynamicParameters.ContainsKey(pName))
                    {
                        continue;
                    }
                    string values = YamlHelpers.Serialize(property.Value, true, false);
                    String pValue = values;
                    pe.DynamicParameters.Add(pName, pValue);
                }
            }
        }
    }
    // Create and Modify Group
    private StartPlanEnvelope GetPlanEnvelope(string identity, AdGroup group)
    {
        StartPlanEnvelope pe = GetPlanEnvelope(identity);

        if (group != null)
        {
            if (!string.IsNullOrWhiteSpace(group.Description))
            {
                pe.DynamicParameters.Add(@"description", group.Description);
            }
            if (!string.IsNullOrWhiteSpace(group.SamAccountName))
            {
                pe.DynamicParameters.Add(@"samaccountname", group.SamAccountName);
            }
            if (group.Scope != null)
            {
                pe.DynamicParameters.Add(@"scope", group.Scope.ToString());
            }
            if (group.IsSecurityGroup != null)
            {
                pe.DynamicParameters.Add(@"securitygroup", group.IsSecurityGroup.ToString());
            }
            if (group.ManagedBy != null)
            {
                pe.DynamicParameters.Add(@"managedby", group.ManagedBy);
            }

            AddPropertiesToPlan(pe, group.Properties);
        }

        return(pe);
    }
    public ActiveDirectoryHandlerResults GetOrgUnit(string identity)
    {
        string            planName = config.Plans.OrganizationalUnit.Get;
        StartPlanEnvelope pe       = GetPlanEnvelope(identity);

        return(CallPlan(planName, pe));
    }
Exemple #12
0
    public ActiveDirectoryHandlerResults ModifyGroup(string identity, AdGroup group)
    {
        string            planName = config.Plans.Group.Modify;
        StartPlanEnvelope pe       = GetPlanEnvelope(identity, group);

        return(CallPlan(planName, pe));
    }
    public ActiveDirectoryHandlerResults DeleteComputer(string identity, string domain = null)
    {
        string            planName = config.Plans.Computer.Delete;
        StartPlanEnvelope pe       = GetPlanEnvelope(BuildIdentity(domain, identity));

        return(CallPlan(planName, pe));
    }
    public ActiveDirectoryHandlerResults DefinedSearch(string planname, Dictionary <string, string> parameters)
    {
        string            planName = planname;
        StartPlanEnvelope pe       = GetPlanEnvelope(parameters);

        return(CallPlan(planName, pe));
    }
Exemple #15
0
    public ActiveDirectoryHandlerResults RemoveGroupFromGroup(string identity, string groupIdentity)
    {
        string            planName = config.Plans.Group.RemoveFromGroup;
        StartPlanEnvelope pe       = GetPlanEnvelope(identity, groupIdentity);

        return(CallPlan(planName, pe));
    }
    // Base Envelope for Generically Defined ActiveDirectory Searches
    private StartPlanEnvelope GetPlanEnvelope(AdSearchRequest request)
    {
        StartPlanEnvelope pe = new StartPlanEnvelope()
        {
            DynamicParameters = new Dictionary <string, string>()
        };

        pe.DynamicParameters.Add(@"filter", request.Filter);

        if (request.SearchBase != null)
        {
            pe.DynamicParameters.Add(@"searchbase", request.SearchBase);
        }

        if (request.ResultsFile != null)
        {
            pe.DynamicParameters.Add(@"resultsfile", request.ResultsFile);
        }

        string attributes = YamlHelpers.Serialize(request.ReturnAttributes, true, false);

        if (attributes != null)
        {
            pe.DynamicParameters.Add(@"attributes", attributes);
        }

        return(pe);
    }
    public ActiveDirectoryHandlerResults CreateOrgUnit(string identity, AdOrganizationalUnit ou)
    {
        string            planName = config.Plans.OrganizationalUnit.Create;
        StartPlanEnvelope pe       = GetPlanEnvelope(identity, ou);

        return(CallPlan(planName, pe));
    }
    public ActiveDirectoryHandlerResults RemoveComputerFromGroup(string identity, string groupIdentity, string domain = null, string groupdomain = null)
    {
        string            planName = config.Plans.Computer.RemoveFromGroup;
        StartPlanEnvelope pe       = GetPlanEnvelope(BuildIdentity(domain, identity), BuildIdentity(groupdomain, groupIdentity));

        return(CallPlan(planName, pe));
    }
    public ActiveDirectoryHandlerResults ModifyComputer(string identity, AdComputer computer, string domain = null)
    {
        string            planName = config.Plans.Computer.Modify;
        StartPlanEnvelope pe       = GetPlanEnvelope(BuildIdentity(domain, identity), computer);

        return(CallPlan(planName, pe));
    }
Exemple #20
0
    public ActiveDirectoryHandlerResults DeleteGroup(string identity)
    {
        string            planName = config.Plans.Group.Delete;
        StartPlanEnvelope pe       = GetPlanEnvelope(identity);

        return(CallPlan(planName, pe));
    }
    public ActiveDirectoryHandlerResults ModifyOrgUnit(string identity, AdOrganizationalUnit ou, string domain = null)
    {
        string            planName = config.Plans.OrganizationalUnit.Modify;
        StartPlanEnvelope pe       = GetPlanEnvelope(BuildIdentity(domain, identity), ou);

        return(CallPlan(planName, pe));
    }
        object StartPlan(string planUniqueName, Dictionary <string, string> parms = null,
                         string path         = "Actions[0]:Result:ExitData", SerializationType serializationType = SerializationType.Json,
                         bool setContentType = true, int pollingIntervalSeconds = 1, int timeoutSeconds = 120, string nodeRootUrl = null, bool executeAsync = false)
        {
            StartPlanEnvelope pe = new StartPlanEnvelope {
                DynamicParameters = new Dictionary <string, string>(StringComparer.OrdinalIgnoreCase)
            };

            IEnumerable <KeyValuePair <string, string> > queryString = this.Request.GetQueryNameValuePairs();

            foreach (KeyValuePair <string, string> kvp in queryString)
            {
                pe.DynamicParameters.Add(kvp.Key, kvp.Value);
            }

            if (parms != null)
            {
                foreach (KeyValuePair <string, string> kvp in parms)
                {
                    pe.DynamicParameters[kvp.Key] = kvp.Value;
                }
            }

            string body = "body";

            if (Url.Request.Properties.ContainsKey(body) && Url.Request.Properties[body] != null)
            {
                pe.DynamicParameters["requestBody"] = Url.Request.Properties[body].ToString();
            }

            string dryrun = "dryRun";
            bool   dryRun = false;

            if (pe.DynamicParameters.ContainsKey(dryrun))
            {
                bool.TryParse(pe.DynamicParameters[dryrun], out dryRun);
            }

            string requestnumber = "requestNumber";
            string requestNumber = null;

            if (pe.DynamicParameters.ContainsKey(requestnumber))
            {
                requestNumber = pe.DynamicParameters[requestnumber];
            }

            if (executeAsync)
            {
                return(GetExecuteControllerInstance().StartPlan(planEnvelope: pe,
                                                                planUniqueName: planUniqueName, dryRun: dryRun, requestNumber: requestNumber, nodeRootUrl: nodeRootUrl));
            }
            else
            {
                return(GetExecuteControllerInstance().StartPlanSync(planEnvelope: pe,
                                                                    planUniqueName: planUniqueName, dryRun: dryRun, requestNumber: requestNumber,
                                                                    path: path, serializationType: serializationType, setContentType: setContentType,
                                                                    pollingIntervalSeconds: pollingIntervalSeconds, timeoutSeconds: timeoutSeconds, nodeRootUrl: nodeRootUrl));
            }
        }
    private ActiveDirectoryHandlerResults CallPlan(string planName, StartPlanEnvelope planEnvelope)
    {
        IExecuteController ec = GetExecuteControllerInstance();
        StartPlanEnvelope  pe = planEnvelope;

        if (pe == null)
        {
            pe = new StartPlanEnvelope()
            {
                DynamicParameters = new Dictionary <string, string>()
            }
        }
        ;

        IEnumerable <KeyValuePair <string, string> > queryString = this.Request.GetQueryNameValuePairs();

        foreach (KeyValuePair <string, string> kvp in queryString)
        {
            pe.DynamicParameters.Add(kvp.Key, kvp.Value);
        }

        object reply = ec.StartPlanSync(pe, planName, setContentType: false);
        ActiveDirectoryHandlerResults result = null;
        Type replyType = reply.GetType();

        if (replyType == typeof(string))
        {
            try
            {
                result = YamlHelpers.Deserialize <ActiveDirectoryHandlerResults>((string)reply);
            }
            catch (Exception e)
            {
                try
                {
                    // Reply was not Json or Yaml.  See if Xml
                    XmlDocument doc = new XmlDocument();
                    doc.LoadXml((string)reply);
                    result = XmlHelpers.Deserialize <ActiveDirectoryHandlerResults>(doc.InnerXml);
                }
                catch (Exception)
                {
                    throw e;
                }
            }
        }
        else if (replyType == typeof(Dictionary <object, object>))
        {
            String str = YamlHelpers.Serialize(reply);
            result = YamlHelpers.Deserialize <ActiveDirectoryHandlerResults>(str);
        }
        else if (replyType == typeof(XmlDocument))
        {
            XmlDocument doc = (XmlDocument)reply;
            result = XmlHelpers.Deserialize <ActiveDirectoryHandlerResults>(doc.InnerXml);
        }

        return(result);
    }
    public ActiveDirectoryHandlerResults MoveOrgUnit(string identity, string moveto, string domain = null, string movetodomain = null)
    {
        string            planName = config.Plans.OrganizationalUnit.Move;
        StartPlanEnvelope pe       = GetPlanEnvelope(BuildIdentity(domain, identity));

        pe.DynamicParameters.Add(nameof(moveto), BuildIdentity(movetodomain, moveto));
        return(CallPlan(planName, pe));
    }
    // Base Envelope for All Objects Retrieved By Either Name or DistinguishedName (Users, Groups and OrgUnits)
    private StartPlanEnvelope GetPlanEnvelope(string identity)
    {
        StartPlanEnvelope pe = GetPlanEnvelope();

        pe.DynamicParameters.Add(nameof(identity), identity);

        return(pe);
    }
    public ActiveDirectoryHandlerResults SetAccessRuleOnComputer(string identity, string principal, string type, string rights, string domain = null, string principaldomain = null, string inheritance = null)
    {
        string planName = config.Plans.Computer.SetAccessRule;

        AdAccessRule      rule = CreateAccessRule(BuildIdentity(principaldomain, principal), type, rights, inheritance);
        StartPlanEnvelope pe   = GetPlanEnvelope(BuildIdentity(domain, identity), rule);

        return(CallPlan(planName, pe));
    }
Exemple #27
0
    public ActiveDirectoryHandlerResults SetAccessRuleOnGroup(string identity, string principal, string type, string rights)
    {
        string planName = config.Plans.Group.SetAccessRule;

        AdAccessRule      rule = CreateAccessRule(principal, type, rights);
        StartPlanEnvelope pe   = GetPlanEnvelope(identity, rule);

        return(CallPlan(planName, pe));
    }
    public ActiveDirectoryHandlerResults RemoveAccessRuleFromOrgUnit(string identity, string principal, string type, string rights, string domain = null, string principaldomain = null, string inheritance = null)
    {
        string planName = config.Plans.OrganizationalUnit.RemoveAccessRule;

        AdAccessRule      rule = CreateAccessRule(BuildIdentity(principaldomain, principal), type, rights, inheritance);
        StartPlanEnvelope pe   = GetPlanEnvelope(BuildIdentity(domain, identity), rule);

        return(CallPlan(planName, pe));
    }
    public ActiveDirectoryHandlerResults PurgeAccessRulesOnOrgUnit(string identity, string principal, string domain = null, string principaldomain = null)
    {
        string planName = config.Plans.OrganizationalUnit.PurgeAccessRules;

        AdAccessRule      rule = CreateAccessRule(BuildIdentity(principaldomain, principal), null, null, null);
        StartPlanEnvelope pe   = GetPlanEnvelope(BuildIdentity(domain, identity), rule);

        return(CallPlan(planName, pe));
    }
Exemple #30
0
    public ActiveDirectoryHandlerResults PurgeAccessRulesOnGroup(string identity, string principal)
    {
        string planName = config.Plans.Group.PurgeAccessRules;

        AdAccessRule      rule = CreateAccessRule(principal, null, null);
        StartPlanEnvelope pe   = GetPlanEnvelope(identity, rule);

        return(CallPlan(planName, pe));
    }