websitepanel/WebsitePanel/Sources/Tools/WebsitePanel.FixDefaultPublicFolderMailbox/Fix.cs
2014-10-29 23:29:59 +03:00

109 lines
3.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using WebsitePanel.Providers.HostedSolution;
namespace WebsitePanel.FixDefaultPublicFolderMailbox
{
class Fix
{
static private ServerContext serverContext;
public const int ERROR_USER_WRONG_PASSWORD = -110;
public const int ERROR_USER_WRONG_USERNAME = -109;
public const int ERROR_USER_ACCOUNT_CANCELLED = -105;
public const int ERROR_USER_ACCOUNT_PENDING = -103;
private static bool Connect(string server, string username, string password)
{
bool ret = true;
serverContext = new ServerContext();
serverContext.Server = server;
serverContext.Username = username;
serverContext.Password = password;
ES.InitializeServices(serverContext);
int status = -1;
try
{
status = ES.Services.Authentication.AuthenticateUser(serverContext.Username, serverContext.Password, null);
}
catch (Exception ex)
{
Log.WriteError("Authentication error", ex);
return false;
}
string errorMessage = "Check your internet connection or server URL.";
if (status != 0)
{
switch (status)
{
case ERROR_USER_WRONG_USERNAME:
errorMessage = "Wrong username.";
break;
case ERROR_USER_WRONG_PASSWORD:
errorMessage = "Wrong password.";
break;
case ERROR_USER_ACCOUNT_CANCELLED:
errorMessage = "Account cancelled.";
break;
case ERROR_USER_ACCOUNT_PENDING:
errorMessage = "Account pending.";
break;
}
Log.WriteError(
string.Format("Cannot connect to the remote server. {0}", errorMessage));
ret = false;
}
return ret;
}
public static void Start(string organizationId)
{
//Authenticates user
if (!Connect(
ConfigurationManager.AppSettings["ES.WebService"],
ConfigurationManager.AppSettings["ES.Username"],
ConfigurationManager.AppSettings["ES.Password"]))
return;
Organization[] orgs = ES.Services.ExchangeServer.GetExchangeOrganizations(1, true);
foreach (Organization org in orgs)
{
if (organizationId == null)
FixOrganization(org);
else if (org.OrganizationId == organizationId)
FixOrganization(org);
}
}
public static void FixOrganization(Organization organization)
{
if (String.IsNullOrEmpty(organization.OrganizationId))
return;
Log.WriteLine("Organization " + organization.OrganizationId);
string res = "";
try
{
res = ES.Services.ExchangeServer.SetDefaultPublicFolderMailbox(organization.Id);
}
catch(Exception ex)
{
Log.WriteError(ex.ToString());
}
Log.WriteLine(res);
}
}
}