7.	Lync – MeetMeetingMax set to unlimited errors out lots of things

8.	Hosted Organization – When creating an organization manually, the Org
Name is taken as the first accepted domain for exchange, if this org name
is not a domain it creates the org incorrectly. This should take normal names
and not take this as a domain name for the accepted list, we have a good use
for non-domain org names
This commit is contained in:
robvde 2012-10-19 08:34:05 +04:00
parent 2408accc04
commit fdbda91cdd
12 changed files with 193 additions and 43 deletions

View file

@ -54,6 +54,7 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
using WebsitePanel.Providers.ResultObjects;
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
@ -85,6 +86,8 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
private System.Threading.SendOrPostCallback AddOrganizationDomainOperationCompleted;
private System.Threading.SendOrPostCallback ChangeOrganizationDomainTypeOperationCompleted;
private System.Threading.SendOrPostCallback GetOrganizationDomainsOperationCompleted;
private System.Threading.SendOrPostCallback DeleteOrganizationDomainOperationCompleted;
@ -145,6 +148,9 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
/// <remarks/>
public event AddOrganizationDomainCompletedEventHandler AddOrganizationDomainCompleted;
/// <remarks/>
public event ChangeOrganizationDomainTypeCompletedEventHandler ChangeOrganizationDomainTypeCompleted;
/// <remarks/>
public event GetOrganizationDomainsCompletedEventHandler GetOrganizationDomainsCompleted;
@ -180,20 +186,22 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/CreateOrganization", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public int CreateOrganization(int packageId, string organizationID, string organizationName) {
public int CreateOrganization(int packageId, string organizationID, string organizationName, string domainName) {
object[] results = this.Invoke("CreateOrganization", new object[] {
packageId,
organizationID,
organizationName});
organizationName,
domainName});
return ((int)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginCreateOrganization(int packageId, string organizationID, string organizationName, System.AsyncCallback callback, object asyncState) {
public System.IAsyncResult BeginCreateOrganization(int packageId, string organizationID, string organizationName, string domainName, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("CreateOrganization", new object[] {
packageId,
organizationID,
organizationName}, callback, asyncState);
organizationName,
domainName}, callback, asyncState);
}
/// <remarks/>
@ -203,19 +211,20 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
}
/// <remarks/>
public void CreateOrganizationAsync(int packageId, string organizationID, string organizationName) {
this.CreateOrganizationAsync(packageId, organizationID, organizationName, null);
public void CreateOrganizationAsync(int packageId, string organizationID, string organizationName, string domainName) {
this.CreateOrganizationAsync(packageId, organizationID, organizationName, domainName, null);
}
/// <remarks/>
public void CreateOrganizationAsync(int packageId, string organizationID, string organizationName, object userState) {
public void CreateOrganizationAsync(int packageId, string organizationID, string organizationName, string domainName, object userState) {
if ((this.CreateOrganizationOperationCompleted == null)) {
this.CreateOrganizationOperationCompleted = new System.Threading.SendOrPostCallback(this.OnCreateOrganizationOperationCompleted);
}
this.InvokeAsync("CreateOrganization", new object[] {
packageId,
organizationID,
organizationName}, this.CreateOrganizationOperationCompleted, userState);
organizationName,
domainName}, this.CreateOrganizationOperationCompleted, userState);
}
private void OnCreateOrganizationOperationCompleted(object arg) {
@ -686,6 +695,53 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/ChangeOrganizationDomainType", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public int ChangeOrganizationDomainType(int itemId, int domainId, ExchangeAcceptedDomainType newDomainType) {
object[] results = this.Invoke("ChangeOrganizationDomainType", new object[] {
itemId,
domainId,
newDomainType});
return ((int)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginChangeOrganizationDomainType(int itemId, int domainId, ExchangeAcceptedDomainType newDomainType, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("ChangeOrganizationDomainType", new object[] {
itemId,
domainId,
newDomainType}, callback, asyncState);
}
/// <remarks/>
public int EndChangeOrganizationDomainType(System.IAsyncResult asyncResult) {
object[] results = this.EndInvoke(asyncResult);
return ((int)(results[0]));
}
/// <remarks/>
public void ChangeOrganizationDomainTypeAsync(int itemId, int domainId, ExchangeAcceptedDomainType newDomainType) {
this.ChangeOrganizationDomainTypeAsync(itemId, domainId, newDomainType, null);
}
/// <remarks/>
public void ChangeOrganizationDomainTypeAsync(int itemId, int domainId, ExchangeAcceptedDomainType newDomainType, object userState) {
if ((this.ChangeOrganizationDomainTypeOperationCompleted == null)) {
this.ChangeOrganizationDomainTypeOperationCompleted = new System.Threading.SendOrPostCallback(this.OnChangeOrganizationDomainTypeOperationCompleted);
}
this.InvokeAsync("ChangeOrganizationDomainType", new object[] {
itemId,
domainId,
newDomainType}, this.ChangeOrganizationDomainTypeOperationCompleted, userState);
}
private void OnChangeOrganizationDomainTypeOperationCompleted(object arg) {
if ((this.ChangeOrganizationDomainTypeCompleted != null)) {
System.Web.Services.Protocols.InvokeCompletedEventArgs invokeArgs = ((System.Web.Services.Protocols.InvokeCompletedEventArgs)(arg));
this.ChangeOrganizationDomainTypeCompleted(this, new ChangeOrganizationDomainTypeCompletedEventArgs(invokeArgs.Results, invokeArgs.Error, invokeArgs.Cancelled, invokeArgs.UserState));
}
}
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/GetOrganizationDomains", RequestNamespace="http://tempuri.org/", ResponseNamespace="http://tempuri.org/", Use=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public OrganizationDomainName[] GetOrganizationDomains(int itemId) {
@ -736,17 +792,6 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
return ((int)(results[0]));
}
/// <remarks/>
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/ChangeOrganizationDomainType", RequestNamespace = "http://tempuri.org/", ResponseNamespace = "http://tempuri.org/", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Wrapped)]
public int ChangeOrganizationDomainType(int itemId, int domainId, ExchangeAcceptedDomainType newDomainType)
{
object[] results = this.Invoke("ChangeOrganizationDomainType", new object[] {
itemId,
domainId,
newDomainType});
return ((int)(results[0]));
}
/// <remarks/>
public System.IAsyncResult BeginDeleteOrganizationDomain(int itemId, int domainId, System.AsyncCallback callback, object asyncState) {
return this.BeginInvoke("DeleteOrganizationDomain", new object[] {
@ -1721,6 +1766,32 @@ namespace WebsitePanel.EnterpriseServer.HostedSolution {
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
public delegate void ChangeOrganizationDomainTypeCompletedEventHandler(object sender, ChangeOrganizationDomainTypeCompletedEventArgs e);
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
public partial class ChangeOrganizationDomainTypeCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgs {
private object[] results;
internal ChangeOrganizationDomainTypeCompletedEventArgs(object[] results, System.Exception exception, bool cancelled, object userState) :
base(exception, cancelled, userState) {
this.results = results;
}
/// <remarks/>
public int Result {
get {
this.RaiseExceptionIfNecessary();
return ((int)(this.results[0]));
}
}
}
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("wsdl", "2.0.50727.3038")]
public delegate void GetOrganizationDomainsCompletedEventHandler(object sender, GetOrganizationDomainsCompletedEventArgs e);

View file

@ -281,7 +281,7 @@ namespace WebsitePanel.EnterpriseServer
TaskManager.WriteError(ex);
}
}
public static int CreateOrganization(int packageId, string organizationId, string organizationName)
public static int CreateOrganization(int packageId, string organizationId, string organizationName, string domainName)
{
int itemId;
int errorCode;
@ -291,6 +291,7 @@ namespace WebsitePanel.EnterpriseServer
// place log record
TaskManager.StartTask("ORGANIZATION", "CREATE_ORG", organizationName);
TaskManager.TaskParameters["Organization ID"] = organizationId;
TaskManager.TaskParameters["DomainName"] = domainName;
try
{
@ -311,7 +312,12 @@ namespace WebsitePanel.EnterpriseServer
return BusinessErrorCodes.ERROR_ORG_ID_EXISTS;
//create temporary domain name;
string domainName = CreateTemporyDomainName(serviceId, organizationId);
if (string.IsNullOrEmpty(domainName))
{
string tmpDomainName = CreateTemporyDomainName(serviceId, organizationId);
if (!string.IsNullOrEmpty(tmpDomainName)) domainName = tmpDomainName;
}
if (string.IsNullOrEmpty(domainName))
{

View file

@ -9,7 +9,7 @@
<add name="EnterpriseServer" connectionString="server=HSTPROV01;database=WebsitePanelMerge;uid=WebsitePanel;pwd=aj7ep6fyhmw3b5qeth7c;" />
<add name="EnterpriseServer" connectionString="server=HSTWSP01;database=WebsitePanelMerge;uid=WebsitePanel;pwd=pserxfbnlc6hwmdedbp0;" providerName="System.Data.SqlClient" />
-->
<add name="EnterpriseServer" connectionString="server=HSTWSP01;database=WebsitePanelMerge;uid=WebsitePanel;pwd=pserxfbnlc6hwmdedbp0;" providerName="System.Data.SqlClient" />
<add name="EnterpriseServer" connectionString="server=HSTPROV01;database=WebsitePanelMerge;uid=WebsitePanel;pwd=aj7ep6fyhmw3b5qeth7c;" />
</connectionStrings>
<appSettings>
<!-- A1D4KDHUE83NKHddF -->
@ -17,7 +17,8 @@
<add key="WebsitePanel.CryptoKey" value="3x7eqt7zabc5n5afs6dg" />
<add key="WebsitePanel.CryptoKey" value="fr2ym4wn2gmbrj7dz336" />
-->
<add key="WebsitePanel.CryptoKey" value="fr2ym4wn2gmbrj7dz336" /> <!-- A1D4KDHUE83NKHddF -->
<add key="WebsitePanel.CryptoKey" value="3x7eqt7zabc5n5afs6dg" />
<!-- A1D4KDHUE83NKHddF -->
<add key="WebsitePanel.EncryptionEnabled" value="true" />
<!-- Web Applications -->
<add key="WebsitePanel.EnterpriseServer.WebApplicationsPath" value="~/WebApplications" />

View file

@ -46,9 +46,9 @@ namespace WebsitePanel.EnterpriseServer
#region Organizations
[WebMethod]
public int CreateOrganization(int packageId, string organizationID, string organizationName)
public int CreateOrganization(int packageId, string organizationID, string organizationName, string domainName)
{
return OrganizationController.CreateOrganization(packageId, organizationID, organizationName);
return OrganizationController.CreateOrganization(packageId, organizationID, organizationName, domainName);
}

View file

@ -199,7 +199,8 @@ namespace WebsitePanel.Providers.HostedSolution
//create conferencing policy
cmd = new Command("New-CsConferencingPolicy");
cmd.Parameters.Add("Identity", organizationId);
cmd.Parameters.Add("MaxMeetingSize", maxConferenceSize);
cmd.Parameters.Add("MaxMeetingSize", ((maxConferenceSize == -1) | (maxConferenceSize > 250)) ? 250 : maxConferenceSize);
cmd.Parameters.Add("AllowIPVideo", enableConferencingVideo);
ExecuteShellCommand(runSpace, cmd, false);
transaction.RegisterNewConferencingPolicy(organizationId);

View file

@ -156,4 +156,7 @@
<data name="valRequireOrgName.Text" xml:space="preserve">
<value>*</value>
</data>
<data name="locDomainName.Text" xml:space="preserve">
<value>Domain Name:</value>
</data>
</root>

View file

@ -27,6 +27,10 @@
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
using System;
using System.Data;
using System.Text;
using System.Collections.Generic;
using WebsitePanel.EnterpriseServer;
using WebsitePanel.Providers.HostedSolution;
@ -38,7 +42,16 @@ namespace WebsitePanel.Portal.ExchangeServer
{
DomainInfo[] domains = ES.Services.Servers.GetMyDomains(PanelSecurity.PackageId);
OrganizationDomainName[] list = ES.Services.Organizations.GetOrganizationDomains(PanelRequest.ItemID);
Organization[] orgs = ES.Services.Organizations.GetOrganizations(PanelSecurity.PackageId, false);
List<OrganizationDomainName> list = new List<OrganizationDomainName>();
foreach (Organization o in orgs)
{
OrganizationDomainName[] tmpList = ES.Services.Organizations.GetOrganizationDomains(o.Id);
foreach (OrganizationDomainName name in tmpList) list.Add(name);
}
foreach (DomainInfo d in domains)
{

View file

@ -43,6 +43,12 @@
ValidationGroup="CreateOrganization">*</asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td class="FormLabel150"><asp:Localize ID="locDomainName" runat="server" meta:resourcekey="locDomainName" Text="Domain Name:"></asp:Localize></td>
<td>
<asp:DropDownList id="ddlDomains" runat="server" CssClass="NormalTextBox" DataTextField="DomainName" DataValueField="DomainID" style="vertical-align:middle;"></asp:DropDownList>
</td>
</tr>
</table>
<div class="FormFooterClean">
<asp:Button id="btnCreate" runat="server" Text="Create Organization" CssClass="Button1" OnClick="btnCreate_Click"

View file

@ -27,7 +27,11 @@
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
using System;
using System.Data;
using System.Text;
using System.Collections.Generic;
using WebsitePanel.EnterpriseServer;
using WebsitePanel.Providers.HostedSolution;
namespace WebsitePanel.Portal.ExchangeServer
{
@ -36,6 +40,41 @@ namespace WebsitePanel.Portal.ExchangeServer
protected void Page_Load(object sender, EventArgs e)
{
DomainInfo[] domains = ES.Services.Servers.GetMyDomains(PanelSecurity.PackageId);
Organization[] orgs = ES.Services.Organizations.GetOrganizations(PanelSecurity.PackageId, false);
List<OrganizationDomainName> list = new List<OrganizationDomainName>();
foreach (Organization o in orgs)
{
OrganizationDomainName[] tmpList = ES.Services.Organizations.GetOrganizationDomains(o.Id);
foreach (OrganizationDomainName name in tmpList) list.Add(name);
}
foreach (DomainInfo d in domains)
{
if (!d.IsDomainPointer)
{
bool bAdd = true;
foreach (OrganizationDomainName acceptedDomain in list)
{
if (d.DomainName.ToLower() == acceptedDomain.DomainName.ToLower())
{
bAdd = false;
break;
}
}
if (bAdd) ddlDomains.Items.Add(d.DomainName.ToLower());
}
}
if (ddlDomains.Items.Count == 0)
{
ddlDomains.Visible = btnCreate.Enabled = false;
}
}
protected void btnCreate_Click(object sender, EventArgs e)
@ -52,7 +91,8 @@ namespace WebsitePanel.Portal.ExchangeServer
{
int itemId = ES.Services.Organizations.CreateOrganization(PanelSecurity.PackageId,
txtOrganizationID.Text.Trim().ToLower(), txtOrganizationName.Text.Trim().ToLower());
txtOrganizationID.Text.Trim().ToLower(), txtOrganizationName.Text.Trim().ToLower(),
ddlDomains.SelectedValue.Trim().ToLower());
if (itemId < 0)
{

View file

@ -120,6 +120,24 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// </remarks>
protected global::System.Web.UI.WebControls.RegularExpressionValidator valRequireCorrectOrgID;
/// <summary>
/// locDomainName control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize locDomainName;
/// <summary>
/// ddlDomains control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.DropDownList ddlDomains;
/// <summary>
/// btnCreate control.
/// </summary>
@ -137,14 +155,5 @@ namespace WebsitePanel.Portal.ExchangeServer {
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.ValidationSummary ValidationSummary1;
/// <summary>
/// FormComments control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Localize FormComments;
}
}

View file

@ -171,7 +171,7 @@ namespace WebsitePanel.Portal
if (user.Role != UserRole.Reseller)
{
ES.Services.Organizations.CreateOrganization(result.Result, domainName.ToLower(), domainName.ToLower());
ES.Services.Organizations.CreateOrganization(result.Result, domainName.ToLower(), domainName.ToLower(), domainName.ToLower());
if (result.Result < 0)
{

View file

@ -56,8 +56,8 @@ REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\OCSProxy.cs
REM %WSDL% %SERVER_URL%/esOperatingSystems.asmx /out:.\WebsitePanel.EnterpriseServer.Client\OperatingSystemsProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\OperatingSystemsProxy.cs
REM %WSDL% %SERVER_URL%/esOrganizations.asmx /out:.\WebsitePanel.EnterpriseServer.Client\OrganizationProxy.cs /namespace:WebsitePanel.EnterpriseServer.HostedSolution /type:webClient
REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\OrganizationProxy.cs
%WSDL% %SERVER_URL%/esOrganizations.asmx /out:.\WebsitePanel.EnterpriseServer.Client\OrganizationProxy.cs /namespace:WebsitePanel.EnterpriseServer.HostedSolution /type:webClient
%WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\OrganizationProxy.cs
REM %WSDL% %SERVER_URL%/esPackages.asmx /out:.\WebsitePanel.EnterpriseServer.Client\PackagesProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\PackagesProxy.cs
@ -86,8 +86,8 @@ REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\VirtualizationServerProxy
REM %WSDL% %SERVER_URL%/esWebApplicationGallery.asmx /out:.\WebsitePanel.EnterpriseServer.Client\WebApplicationGalleryProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\WebApplicationGalleryProxy.cs
%WSDL% %SERVER_URL%/esWebServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\WebServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
%WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\WebServersProxy.cs
REM %WSDL% %SERVER_URL%/esWebServers.asmx /out:.\WebsitePanel.EnterpriseServer.Client\WebServersProxy.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\WebServersProxy.cs
REM %WSDL% %SERVER_URL%/esVirtualizationServerForPrivateCloud.asmx /out:.\WebsitePanel.EnterpriseServer.Client\VirtualizationServerProxyForPrivateCloud.cs /namespace:WebsitePanel.EnterpriseServer /type:webClient
REM %WSE_CLEAN% .\WebsitePanel.EnterpriseServer.Client\VirtualizationServerProxyForPrivateCloud.cs