コード例 #1
0
 /// <summary>
 /// Serializes the SharePointProvisioningData object to XML to allow it to be passed to the worker role
 /// </summary>
 /// <param name="sharePointProvisioningData">SharePointProvisioningData object</param>
 /// <returns>XML representation as a string</returns>
 private static string SerializeData(SharePointProvisioningData sharePointProvisioningData)
 {
     string serializedSharePointProvisioningaData = "";
     using (Stream stream = new MemoryStream())
     {
         new XmlSerializer(typeof(SharePointProvisioningData)).Serialize(stream, sharePointProvisioningData);
         stream.Position = 0;
         serializedSharePointProvisioningaData = new StreamReader(stream).ReadToEnd();
     }
     return serializedSharePointProvisioningaData;
 }
コード例 #2
0
        public bool ProvisionSiteCollection(SharePointProvisioningData sharePointProvisioningData)
        {
            bool success = false;

            try
            {
                // submit provisioning data to queue
                CloudQueue queue = queueStorage.GetQueueReference(queueName);
                CloudQueueMessage message = new CloudQueueMessage(SerializeData(sharePointProvisioningData));
                queue.AddMessage(message);
                success = true;
            }
            catch (Exception)
            {
                //Log error
                throw;
            }

            return success;
        }
コード例 #3
0
        public void CreateSiteCollectionOnPremises(Contract.SharePointProvisioningData sharePointProvisioningData)
        {
            //On-Prem settings
            string generalOnPremUserName       = GetConfiguration("General.OnPremUserName");
            string generalOnPremUserPassword   = EncryptionUtility.Decrypt(GetConfiguration("General.OnPremUserPassword"), GetConfiguration("General.EncryptionThumbPrint"));
            string generalOnPremUserDomain     = GetConfiguration("General.OnPremUserDomain");
            string generalOnPremWebApplication = GetConfiguration("General.OnPremWebApplication");

            SiteManager.SiteData siteData = new SiteManager.SiteData();
            siteData.Url                   = sharePointProvisioningData.Url.Substring(sharePointProvisioningData.Url.IndexOf("/sites"));
            siteData.Title                 = sharePointProvisioningData.Title;
            siteData.LcId                  = sharePointProvisioningData.Lcid.ToString();
            siteData.OwnerLogin            = GetOwnerLogin(sharePointProvisioningData, generalOnPremUserDomain);
            siteData.SecondaryContactLogin = string.Format(@"{0}\{1}", generalOnPremUserDomain, generalOnPremUserName);
            siteData.WebTemplate           = sharePointProvisioningData.Template;

            using (SiteManager.SiteManagerClient siteManager = GetSiteManagerClient(generalOnPremWebApplication, generalOnPremUserName, generalOnPremUserPassword, generalOnPremUserDomain))
            {
                siteManager.CreateSiteCollection(siteData);
            }
        }
コード例 #4
0
        public bool ProvisionSiteCollection(Contract.SharePointProvisioningData sharePointProvisioningData)
        {
            bool processed = false;

            try
            {
                SiteProvisioningBase siteToProvision = null;
                switch (sharePointProvisioningData.Template)
                {
                case SiteProvisioningTypes.ContosoCollaboration:
                    siteToProvision = new ContosoCollaboration();
                    break;

                case SiteProvisioningTypes.ContosoProject:
                    siteToProvision = new ContosoProject();
                    break;
                }

                siteToProvision.SharePointProvisioningData = sharePointProvisioningData;
                HookupAuthentication(siteToProvision);

                // Hookup class that will hold the on-prem overrides
                SiteProvisioningOnPremises spo = new SiteProvisioningOnPremises();
                siteToProvision.SiteProvisioningOnPremises = spo;

                // Provision the site collection
                processed = siteToProvision.Execute();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                //log error
            }

            return(processed);
        }
コード例 #5
0
        private string GetOwnerLogin(Contract.SharePointProvisioningData sharePointProvisioningData, string domain)
        {
            string ownerLogin = sharePointProvisioningData.Owners[0].Login.Split(new string[] { "@" }, StringSplitOptions.RemoveEmptyEntries)[0];

            return(string.Format(@"{0}\{1}", domain, ownerLogin));
        }
コード例 #6
0
ファイル: Program.cs プロジェクト: BNATENSTEDT/PnP
        static void Main(string[] args)
        {

            // Determine the system connectivity mode based on the command line
            // arguments: -http, -tcp or -auto  (defaults to auto)
            ServiceBusEnvironment.SystemConnectivity.Mode = GetConnectivityMode(args);

            string serviceNamespace = ConfigurationManager.AppSettings["General.SBServiceNameSpace"];
            string issuerName = ConfigurationManager.AppSettings["General.SBIssuerName"];
            string issuerSecret = EncryptionUtility.Decrypt(ConfigurationManager.AppSettings["SBIssuerSecret"], ConfigurationManager.AppSettings["General.EncryptionThumbPrint"]);

            // create the service URI based on the service namespace
            Uri serviceUri = ServiceBusEnvironment.CreateServiceUri("sb", serviceNamespace, "SharePointProvisioning");

            // create the credentials object for the endpoint
            TransportClientEndpointBehavior sharedSecretServiceBusCredential = new TransportClientEndpointBehavior();
            sharedSecretServiceBusCredential.TokenProvider = TokenProvider.CreateSharedSecretTokenProvider(issuerName, issuerSecret);

            // create the channel factory loading the configuration
            ChannelFactory<ISharePointProvisioningChannel> channelFactory = new ChannelFactory<ISharePointProvisioningChannel>("RelayEndpoint", new EndpointAddress(serviceUri));

            // apply the Service Bus credentials
            channelFactory.Endpoint.Behaviors.Add(sharedSecretServiceBusCredential);

            // create and open the client channel
            ISharePointProvisioningChannel channel = channelFactory.CreateChannel();
            channel.Open();

            SharePointProvisioningData sharePointProvisioningData = new SharePointProvisioningData();
            sharePointProvisioningData.Title = "Test site on-premises";
            sharePointProvisioningData.Url = String.Format("{0}{1}", "https://bertonline.sharepoint.com/sites/", Guid.NewGuid().ToString());
            sharePointProvisioningData.Template = "ContosoCollaboration";
            sharePointProvisioningData.Name = "";
            sharePointProvisioningData.DataClassification = "HBI";

            SharePointUser[] owners = new SharePointUser[1];
            SharePointUser owner = new SharePointUser();
            owner.Login = "******";
            owner.Name = "Kevin Cook";
            owner.Email = "*****@*****.**";
            owners[0] = owner;
            sharePointProvisioningData.Owners = owners;

            channel.ProvisionSiteCollection(sharePointProvisioningData);

            //Console.WriteLine("Enter text to echo (or [Enter] to exit):");
            //string input = Console.ReadLine();
            //while (input != String.Empty)
            //{
            //    try
            //    {
            //        Console.WriteLine("Server echoed: {0}", channel.Echo(input));
            //    }
            //    catch (Exception e)
            //    {
            //        Console.WriteLine("Error: " + e.Message);
            //    }
            //    input = Console.ReadLine();
            //}
            Console.ReadLine();
            channel.Close();
            channelFactory.Close();

        }
コード例 #7
0
ファイル: Default.aspx.cs プロジェクト: Calisto1980/PnP
        private void ProcessSiteRequest()
        {
            try
            {
                string generalSiteDirectoryUrl = RoleEnvironment.GetConfigurationSettingValue("General.SiteDirectoryUrl");
                string generalSiteDirectoryListName = RoleEnvironment.GetConfigurationSettingValue("General.SiteDirectoryListName");
                string generalSiteDirectoryProvisioningPage = RoleEnvironment.GetConfigurationSettingValue("General.SiteDirectoryProvisioningPage");
                string generalSiteCollectionUrl = RoleEnvironment.GetConfigurationSettingValue("General.SiteCollectionUrl");
                string generalMailSMTPServer = RoleEnvironment.GetConfigurationSettingValue("General.MailSMTPServer");
                string generalMailUser = RoleEnvironment.GetConfigurationSettingValue("General.MailUser");
                string generalMailUserPassword = RoleEnvironment.GetConfigurationSettingValue("General.MailUserPassword");
                string generalMailSiteRequested = RoleEnvironment.GetConfigurationSettingValue("General.MailSiteRequested");
                string generalEncryptionThumbPrint = RoleEnvironment.GetConfigurationSettingValue("General.EncryptionThumbPrint");

                //Manager initiation
                SiteDirectoryManager siteDirectoryManager = new SiteDirectoryManager();

                //Decrypt mail password
                generalMailUserPassword = EncryptionUtility.Decrypt(generalMailUserPassword, generalEncryptionThumbPrint);

                // SharePoint context for the host web
                var spContext = SharePointContextProvider.Current.GetSharePointContext(Context);
                ClientContext hostWebClientContext = spContext.CreateAppOnlyClientContextForSPHost();                

                // Object that contains data about the site collection we're gonna provision
                SharePointProvisioningData siteData = new SharePointProvisioningData();

                siteData.Url = String.Format("{0}{1}", generalSiteCollectionUrl, Guid.NewGuid().ToString());

                // Deal with the Title
                siteData.Title = txtTitle.Text;

                // Deal with the template
                siteData.Template = drlTemplate.SelectedItem.Value;

                // Deal with the data classification
                siteData.DataClassification = drlClassification.SelectedItem.Value;

                // Deal with the site name (empty for root)
                siteData.Name = "";

                // Deal with the site owners
                List<SharePointUser> ownersList = JsonUtility.Deserialize<List<SharePointUser>>(hdnAdministrators.Value);
                SharePointUser[] owners = new SharePointUser[ownersList.Count];
                List<String> mailTo = new List<string>(ownersList.Count);
                string ownerNames = "";
                string ownerAccounts = "";

                int i = 0;
                foreach (SharePointUser owner in ownersList)
                {
                    owner.Login = StripUPN(owner.Login);
                    owners[i] = owner;

                    mailTo.Add(owner.Email);

                    if (ownerNames.Length > 0)
                    {
                        ownerNames = ownerNames + ", ";
                        ownerAccounts = ownerAccounts + ", ";
                    }
                    ownerNames = ownerNames + owner.Name;
                    ownerAccounts = ownerAccounts + owner.Login;

                    i++;
                }
                siteData.Owners = owners;

#if (DEBUG)
                //In debug mode have the WCF call ignore certificate errors
                System.Net.ServicePointManager.ServerCertificateValidationCallback += (se, cert, chain, sslerror) =>
                {
                    return true;
                };
#endif
                // Provision site collection on the 
                using (SharePointProvisioning.SharePointProvisioningServiceClient service = new SharePointProvisioning.SharePointProvisioningServiceClient())
                {
                    if (service.ProvisionSiteCollection(siteData))
                    {
                        string[] ownerLogins = new string[owners.Length];
                        int j = 0;
                        foreach (SharePointUser owner in owners)
                        {
                            ownerLogins[j] = owner.Login;
                            j++;
                        }

                        siteDirectoryManager.AddSiteDirectoryEntry(hostWebClientContext, hostWebClientContext.Web, generalSiteDirectoryUrl, generalSiteDirectoryProvisioningPage, generalSiteDirectoryListName, siteData.Title, siteData.Url, siteData.Template, ownerLogins);

                        string mailBody = String.Format(generalMailSiteRequested, siteData.Title, ownerNames, ownerAccounts);
                        MailUtility.SendEmail(generalMailSMTPServer, generalMailUser, generalMailUserPassword, mailTo, null, "Your SharePoint site request has been registered", mailBody);
                    }
                }

                if (Page.Request["IsDlg"].Equals("0", StringComparison.InvariantCultureIgnoreCase))
                {
                    // redirect to host web home page
                    Response.Redirect(Page.Request["SPHostUrl"]);
                }
                else
                {
                    // refresh the page from which the dialog was opened. Normally this is always the SPHostUrl
                    ClientScript.RegisterStartupScript(typeof(Default), "RedirectToSite", "navigateParent('" + Page.Request["SPHostUrl"] + "');", true);
                }

            }
            catch (Exception ex)
            {
                lblErrors.Text = String.Format("Error: {0} \n\r Stacktrace: {1}", ex.Message, ex.StackTrace);
            }
        }
コード例 #8
0
        /// <summary>
        /// Launches a site collection creation and waits for the creation to finish
        /// </summary>
        /// <param name="properties">Describes the site collection to be created</param>
        public void AddSiteCollection(SharePointProvisioningData properties)
        {
            if (this.CreateOnPremises)
            {
                this.SiteProvisioningOnPremises.CreateSiteCollectionOnPremises(this.SharePointProvisioningData);
                this.createdSiteContext = this.SiteProvisioningOnPremises.SpOnPremiseAuthentication(this.SharePointProvisioningData.Url);
            }
            else
            {
                SiteEntity newSite = new SiteEntity
                {
                    Description = properties.Description,
                    Title = properties.Title,
                    Url = properties.Url,
                    Template = properties.Template,
                    Lcid = properties.Lcid,
                    SiteOwnerLogin = properties.SiteOwner.Login,
                    StorageMaximumLevel = properties.StorageMaximumLevel,
                    StorageWarningLevel = properties.StorageWarningLevel,
                    TimeZoneId = properties.TimeZoneId,
                    UserCodeMaximumLevel = properties.UserCodeMaximumLevel,
                    UserCodeWarningLevel = properties.UserCodeWarningLevel,
                };

                Tenant tenant = new Tenant(this.AppOnlyClientContext);
                tenant.CreateSiteCollection(newSite);
                InstantiateCreatedSiteClientContext(newSite.Url);
            }
        }