Initial project's source code check-in.

This commit is contained in:
ptsurbeleu 2011-07-13 16:07:32 -07:00
commit b03b0b373f
4573 changed files with 981205 additions and 0 deletions

View file

@ -0,0 +1,627 @@
// Copyright (c) 2011, Outercurve Foundation.
// All rights reserved.
//
// Redistribution and use in source and binary forms, with or without modification,
// are permitted provided that the following conditions are met:
//
// - Redistributions of source code must retain the above copyright notice, this
// list of conditions and the following disclaimer.
//
// - Redistributions in binary form must reproduce the above copyright notice,
// this list of conditions and the following disclaimer in the documentation
// and/or other materials provided with the distribution.
//
// - Neither the name of the Outercurve Foundation nor the names of its
// contributors may be used to endorse or promote products derived from this
// software without specific prior written permission.
//
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
// ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
// (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
// ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using OrderBoxCoreLib;
using OrderBoxDomainsLib;
using WebsitePanel.EnterpriseServer;
using System.IO;
using System.Reflection;
using System.Diagnostics;
namespace WebsitePanel.Ecommerce.EnterpriseServer
{
public class DirectiRegistrar : SystemPluginBase, IDomainRegistrar
{
static DirectiRegistrar()
{
// Resolve OrderBoxCoreLib library
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_OrderBoxCoreLib_AssemblyResolve);
// Resolve OrderBoxDomains library
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_OrderBoxDomainsLib_AssemblyResolve);
}
static System.Reflection.Assembly CurrentDomain_OrderBoxCoreLib_AssemblyResolve(object sender, ResolveEventArgs args)
{
//
if (!args.Name.Contains("OrderBoxCoreLib"))
return null;
//
string assemblyFile = String.Empty;
//
if (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("ProgramFiles(x86)")))
{
assemblyFile = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "OrderBoxCoreLib\\OrderBoxCoreLib.dll");
}
else
{
assemblyFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "OrderBoxCoreLib\\OrderBoxCoreLib.dll");
}
//
if (!File.Exists(assemblyFile))
{
//
EventLog.WriteEntry("WEBSITEPANELES:DIRECTI", "OrderBoxCoreLib assembly could not be found at " + assemblyFile, EventLogEntryType.Information);
return null;
}
//
return Assembly.LoadFrom(assemblyFile);
}
static System.Reflection.Assembly CurrentDomain_OrderBoxDomainsLib_AssemblyResolve(object sender, ResolveEventArgs args)
{
//
if (!args.Name.Contains("OrderBoxDomainsLib"))
return null;
//
string assemblyFile = String.Empty;
//
if (!String.IsNullOrEmpty(Environment.GetEnvironmentVariable("ProgramFiles(x86)")))
{
assemblyFile = Path.Combine(Environment.GetEnvironmentVariable("ProgramFiles(x86)"), "OrderBoxDomainsLib\\OrderBoxDomainsLib.dll");
}
else
{
assemblyFile = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), "OrderBoxDomainsLib\\OrderBoxDomainsLib.dll");
}
//
if (!File.Exists(assemblyFile))
{
//
EventLog.WriteEntry("WEBSITEPANELES:DIRECTI", "OrderBoxDomainsLib assembly could not be found at " + assemblyFile, EventLogEntryType.Information);
return null;
}
//
return Assembly.LoadFrom(assemblyFile);
}
#region Registrar's constants
public const string DEMO_SERVICE_URL = "http://api.onlyfordemo.net/anacreon/servlet/APIv3-XML";
public const string LIVE_SERVICE_URL = "http://www.myorderbox.com/anacreon/servlet/APIv3-XML";
public const string DEMO_SECURE_SERVICE_URL = "https://api.onlyfordemo.net/anacreon/servlet/APIv3-XML";
public const string LIVE_SECURE_SERVICE_URL = "https://www.myorderbox.com/anacreon/servlet/APIv3-XML";
public const string SERVICE_LANGUAGE = "en";
public const string RESELLER_ROLE = "reseller";
public const string CONTACT_ID = "contactid";
public const string NO_INVOICE = "NoInvoice";
public const string STATUS = "status";
public const string ENTITY_ID = "entityid";
public const string NO_OF_YEARS = "noofyears";
public const string EXPIRY_DATE = "expirydate";
public const string ENDTIME = "endtime";
public const string EAQID = "eaqid";
public const string ACTION_STATUS_DESC = "actionstatusdesc";
public const string ERROR = "error";
public const string RECORDS_ON_PAGE = "recsonpage";
public const string RECORDS_IN_DB = "recsindb";
#endregion
#region Properties
public override string[] SecureSettings
{
get
{
return new string[] { DirectiSettings.PASSWORD };
}
}
/// <summary>
/// Gets whether plug-in use SSL secure channel
/// </summary>
public bool SecureChannel
{
get
{
return Convert.ToBoolean(PluginSettings[DirectiSettings.SECURE_CHANNEL]);
}
}
/// <summary>
/// Gets whether plug-in running in live mode
/// </summary>
public bool LiveMode
{
get
{
return Convert.ToBoolean(PluginSettings[DirectiSettings.LIVE_MODE]);
}
}
/// <summary>
/// Gets service username
/// </summary>
public string Username
{
get { return PluginSettings[DirectiSettings.USERNAME]; }
}
/// <summary>
/// Gets service password
/// </summary>
public string Password
{
get { return PluginSettings[DirectiSettings.PASSWORD]; }
}
/// <summary>
/// Gets service account parent id
/// </summary>
public int ParentId
{
get
{
return Convert.ToInt32(PluginSettings[DirectiSettings.PARENT_ID]);
}
}
/// <summary>
/// Gets service url
/// </summary>
public string ServiceUrl
{
get
{
if (LiveMode)
{
if (SecureChannel)
return LIVE_SECURE_SERVICE_URL;
// return unsecured service url
return LIVE_SERVICE_URL;
}
if (SecureChannel)
return DEMO_SECURE_SERVICE_URL;
// return unsecured channel
return DEMO_SERVICE_URL;
}
}
public bool SubAccountRequired
{
get { return true; }
}
#endregion
#region Helper routines
private static string[] GetDomainNames(params string[] domains)
{
List<string> names = new List<string>();
foreach (string domain in domains)
{
string[] parts = domain.Split('.');
names.Add(parts[0]);
}
return names.ToArray();
}
private static string[] GetTopLevelDomains(params string[] domains)
{
int length = domains.Length;
List<string> tlds = new List<string>();
foreach (string domain in domains)
{
string[] parts = domain.Split('.');
tlds.Add(parts[1]);
}
return tlds.ToArray();
}
private string GetDialingAreaCode(string phone)
{
if (String.IsNullOrEmpty(phone))
return "000";
char[] symbols = phone.ToCharArray();
StringBuilder builder = new StringBuilder();
int count = 0, index = 0;
while (count < 3 && index < symbols.Length)
{
if (Char.IsDigit(symbols[index]))
{
builder.Append(symbols[index]);
count++;
}
index++;
}
return builder.ToString();
}
private string GetDialingNumber(string number)
{
if (String.IsNullOrEmpty(number))
return "00000000000";
StringBuilder builder = new StringBuilder();
char[] symbols = number.ToCharArray();
int count = 0, index = 0;
while (index < symbols.Length)
{
if (count == 3 && Char.IsDigit(symbols[index]))
builder.Append(symbols[index]);
else if (Char.IsDigit(symbols[index]))
count++;
index++;
}
return builder.ToString();
}
private string GetCompanyName(string companyName)
{
if (String.IsNullOrEmpty(companyName))
return "For Personal Usage Only";
return companyName;
}
private string GetAddress(string address)
{
if (String.IsNullOrEmpty(address))
return "-";
return address;
}
#endregion
#region IDomainRegistrar Members
private string registrarName;
public string RegistrarName
{
get { return registrarName; }
set { registrarName = value; }
}
public void AssemlyResolverTest()
{
// OrderBoxCoreLib test
Customer customer = new Customer();
// OrderBoxDomainsLib test
DomOrder domOrder = new DomOrder();
}
public bool CheckSubAccountExists(string emailAddress)
{
if (String.IsNullOrEmpty(emailAddress))
throw new ArgumentNullException("emailAddress");
// check sub account exists
OrderBoxCoreLib.APIKit.Properties.Url = ServiceUrl;
// create an instance
OrderBoxCoreLib.Customer customer = new OrderBoxCoreLib.Customer();
// search a user by email address
Hashtable srchResults = customer.list(Username, Password, RESELLER_ROLE, SERVICE_LANGUAGE,
ParentId, null, null, emailAddress, null, null, null, null, null, null, null, null, null, 10, 1, null);
// check search result
if (Convert.ToInt32(srchResults[RECORDS_ON_PAGE]) > 0 &&
Convert.ToInt32(srchResults[RECORDS_IN_DB]) > 0)
return true;
// customer account not found
return false;
}
public int GetCustomerAccountId(string emailAddress)
{
// check email address
if (String.IsNullOrEmpty(emailAddress))
throw new ArgumentNullException("emailAddress");
// create a customer
OrderBoxCoreLib.APIKit.Properties.Url = ServiceUrl;
// init customer api
OrderBoxCoreLib.Customer customer = new OrderBoxCoreLib.Customer();
// check does the user is already Directi customer
int customerId = customer.getCustomerId(Username, Password, RESELLER_ROLE, SERVICE_LANGUAGE,
ParentId, emailAddress);
// throws an exception
if (customerId <= 0)
throw new Exception("Couldn't find customer with the specified email: " + emailAddress);
//
return customerId;
}
public int GetDefaultContactId(int customerId)
{
// Default Contact Section
OrderBoxDomainsLib.APIKit.Properties.Url = ServiceUrl;
// init contact api
OrderBoxDomainsLib.DomContact contact = new OrderBoxDomainsLib.DomContact();
// check whether a contact is already exists
Hashtable ctHash = contact.listNames(Username, Password, RESELLER_ROLE, SERVICE_LANGUAGE,
ParentId, customerId);
// throws an exception
if (!ctHash.ContainsKey("1"))
throw new Exception("Couldn't find default contact for the specified account");
// gets contact info
Hashtable infoHash = (Hashtable)ctHash["1"];
// return result
return Convert.ToInt32(infoHash[CONTACT_ID]);
}
public int CreateCustomerAccount(ContractAccount accountInfo)
{
// setup url
OrderBoxCoreLib.APIKit.Properties.Url = ServiceUrl;
// init customer api
OrderBoxCoreLib.Customer customer = new OrderBoxCoreLib.Customer();
// create customer account if it doesn't exist
int customerId = customer.addCustomer(Username, Password, RESELLER_ROLE, SERVICE_LANGUAGE,
ParentId, accountInfo[ContractAccount.EMAIL], accountInfo[ContractAccount.PASSWORD],
String.Concat(accountInfo[ContractAccount.FIRST_NAME], " ", accountInfo[ContractAccount.LAST_NAME]),
GetCompanyName(accountInfo[ContractAccount.COMPANY_NAME]), GetAddress(accountInfo[ContractAccount.ADDRESS]),
GetAddress(null), GetAddress(null), accountInfo[ContractAccount.CITY], accountInfo[ContractAccount.STATE],
accountInfo[ContractAccount.COUNTRY], accountInfo[ContractAccount.ZIP],
GetDialingAreaCode(accountInfo[ContractAccount.PHONE_NUMBER]),
GetDialingNumber(accountInfo[ContractAccount.PHONE_NUMBER]), String.Empty, String.Empty,
GetDialingAreaCode(accountInfo[ContractAccount.FAX_NUMBER]),
GetDialingNumber(accountInfo[ContractAccount.FAX_NUMBER]), "en");
// setup url
OrderBoxDomainsLib.APIKit.Properties.Url = ServiceUrl;
// init contact api
OrderBoxDomainsLib.DomContact contact = new OrderBoxDomainsLib.DomContact();
// create default contact
int defaultContactId = contact.addDefaultContact(Username, Password, RESELLER_ROLE, SERVICE_LANGUAGE,
ParentId, customerId);
// return result
return customerId;
}
public int AddCustomerContact(int customerId, string contactType, ContractAccount accountInfo, Hashtable extraInfo)
{
// setup url
OrderBoxCoreLib.APIKit.Properties.Url = ServiceUrl;
// init customer api
OrderBoxDomainsLib.DomContact contact = new DomContact();
// create customer account if it doesn't exist
int contactId = contact.addContact(Username, Password, RESELLER_ROLE, SERVICE_LANGUAGE,
ParentId, String.Concat(accountInfo[ContractAccount.FIRST_NAME], " ", accountInfo[ContractAccount.LAST_NAME]),
accountInfo[ContractAccount.COMPANY_NAME], accountInfo[ContractAccount.EMAIL],
GetAddress(accountInfo[ContractAccount.ADDRESS]), GetAddress(null), GetAddress(null),
accountInfo[ContractAccount.CITY], accountInfo[ContractAccount.STATE], accountInfo[ContractAccount.COUNTRY],
accountInfo[ContractAccount.ZIP], GetDialingAreaCode(accountInfo[ContractAccount.PHONE_NUMBER]),
GetDialingNumber(accountInfo[ContractAccount.PHONE_NUMBER]),
GetDialingAreaCode(accountInfo[ContractAccount.FAX_NUMBER]),
GetDialingNumber(accountInfo[ContractAccount.FAX_NUMBER]), customerId, contactType, extraInfo);
//
return contactId;
}
public bool IsContactValidForProduct(int contactId, string productKey)
{
// setup service url
OrderBoxDomainsLib.APIKit.Properties.Url = ServiceUrl;
//
OrderBoxDomainsLib.DomContactExt contactExt = new DomContactExt();
//
Hashtable result = contactExt.isValidRegistrantContact(Username, Password, RESELLER_ROLE, SERVICE_LANGUAGE,
ParentId, new int[] {contactId}, new string[] { productKey });
//
Hashtable product = (Hashtable)result[productKey];
//
if (Convert.ToString(product[contactId.ToString()]) == "true")
return true;
//
return false;
}
public DomainStatus CheckDomain(string domain)
{
// check domain not empty
if (String.IsNullOrEmpty(domain))
throw new ArgumentNullException("domain");
// format values
string[] domains = GetDomainNames(domain);
string[] tlds = GetTopLevelDomains(domain);
// setup service url
OrderBoxDomainsLib.APIKit.Properties.Url = ServiceUrl;
// init domain order api
OrderBoxDomainsLib.DomOrder domOrder = new OrderBoxDomainsLib.DomOrder();
// check domain availability
Hashtable directiResult = domOrder.checkAvailabilityMultiple(
Username,
Password,
RESELLER_ROLE,
SERVICE_LANGUAGE,
ParentId,
domains,
tlds,
false
);
// get result by domain
Hashtable bunch = (Hashtable)directiResult[domain];
// check result status
if (String.Compare((String)bunch[STATUS], "available", true) == 0)
return DomainStatus.NotFound;
// return result
return DomainStatus.Registered;
}
public void RegisterDomain(DomainNameSvc domainSvc, ContractAccount accountInfo, string[] nameServers)
{
int customerId = 0;
// 1. check customer exists
if (CheckSubAccountExists(accountInfo[ContractAccount.EMAIL]))
customerId = GetCustomerAccountId(accountInfo[ContractAccount.EMAIL]);
else
customerId = CreateCustomerAccount(accountInfo);
// obtain default contact id
int contactId = GetDefaultContactId(customerId);
// check for demo mode if so then set demo-nameservers.
if (!LiveMode)
nameServers = new string[] { "ns1.onlyfordemo.net", "ns2.onlyfordemo.net" };
// fill parameters hashtable
Hashtable domainHash = new Hashtable();
// copy domain name
domainHash[domainSvc.Fqdn] = domainSvc.PeriodLength.ToString();
// setup service url
OrderBoxDomainsLib.APIKit.Properties.Url = ServiceUrl;
// init domain order api
OrderBoxDomainsLib.DomOrder domOrder = new OrderBoxDomainsLib.DomOrder();
//
int validateAttempts = 0;
VALIDATE_REGISTRATION:
// validate params
Hashtable valResult = domOrder.validateDomainRegistrationParams(Username, Password, RESELLER_ROLE, SERVICE_LANGUAGE,
ParentId, domainHash, new ArrayList(nameServers), contactId, contactId, contactId,
contactId, customerId, NO_INVOICE);
// get domain name hashtable
valResult = (Hashtable)valResult[domainSvc.Fqdn];
// check validation status
if ((String)valResult[STATUS] == "error")
{
// try to update extended contact fields and re-validate params
if (validateAttempts == 0 && domainSvc.Fqdn.EndsWith(".us"))
{
validateAttempts++;
//
OrderBoxDomainsLib.DomContactExt contactExt = new DomContactExt();
// fill extension hash
Hashtable exthash = new Hashtable();
Hashtable domus = new Hashtable();
domus["nexusCategory"] = domainSvc["NexusCategory"];
domus["applicationPurpose"] = domainSvc["ApplicationPurpose"];
exthash["domus"] = domus;
// set default contact extensions
bool succeed = contactExt.setContactDetails(Username, Password, RESELLER_ROLE, SERVICE_LANGUAGE,
ParentId, contactId, exthash, "domus");
// check result
if (succeed)
goto VALIDATE_REGISTRATION;
}
//
throw new Exception((String)valResult[ERROR]);
}
// register domain
Hashtable orderResult = domOrder.addWithoutValidation(Username, Password, RESELLER_ROLE, SERVICE_LANGUAGE,
ParentId, domainHash, new ArrayList(nameServers), contactId, contactId, contactId,
contactId, customerId, NO_INVOICE);
// switch to the nested data bunch
orderResult = (Hashtable)orderResult[domainSvc.Fqdn];
// check returned status
switch ((String)orderResult[STATUS])
{
case "error": // error
throw new Exception(Convert.ToString(orderResult[ERROR]));
case "Failed": // error
throw new Exception(Convert.ToString(orderResult[ACTION_STATUS_DESC]));
case "Success": // success
case "InvoicePaid": // success
// we are success so copy order number
domainSvc[EAQID] = Convert.ToString(orderResult[EAQID]);
domainSvc[ENTITY_ID] = Convert.ToString(orderResult[ENTITY_ID]);
break;
}
}
public void RenewDomain(DomainNameSvc domainSvc, ContractAccount accountInfo, string[] nameServers)
{
int customerId = GetCustomerAccountId(accountInfo[ContractAccount.EMAIL]);
// setup service url
OrderBoxDomainsLib.APIKit.Properties.Url = ServiceUrl;
// init domain order api
OrderBoxDomainsLib.DomOrder domOrder = new OrderBoxDomainsLib.DomOrder();
// Get all domain name registration details
Hashtable domainDetails = domOrder.getDetailsByDomain(Username, Password, RESELLER_ROLE,
SERVICE_LANGUAGE, ParentId, domainSvc.Fqdn, new ArrayList { "All" });
// fill parameters hashtable
Hashtable domainHash = new Hashtable
{
{
domainSvc.Fqdn,
new Hashtable
{
{ENTITY_ID, domainDetails[ENTITY_ID]},
{NO_OF_YEARS, domainSvc.PeriodLength.ToString()},
{EXPIRY_DATE, domainDetails[ENDTIME]}
}
}
};
// Send renewal request to the registrar
Hashtable orderResult = domOrder.renewDomain(Username, Password, RESELLER_ROLE,
SERVICE_LANGUAGE, ParentId, domainHash, NO_INVOICE);
// switch to the nested data bunch of the result received
orderResult = (Hashtable)orderResult[domainSvc.Fqdn];
// check returned status
switch ((String)orderResult[STATUS])
{
case "error": // error
throw new Exception(Convert.ToString(orderResult[ERROR]));
case "Failed": // error
throw new Exception(Convert.ToString(orderResult[ACTION_STATUS_DESC]));
case "Success": // success
case "InvoicePaid": // success
// we are success so copy order number
domainSvc[EAQID] = Convert.ToString(orderResult[EAQID]);
domainSvc[ENTITY_ID] = Convert.ToString(orderResult[ENTITY_ID]);
break;
}
}
public TransferDomainResult TransferDomain(CommandParams args, DomainContacts contacts)
{
throw new NotSupportedException();
}
#endregion
}
}

View file

@ -0,0 +1,21 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("WebsitePanel.Registrars.Directi")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyProduct("WebsitePanel.Registrars.Directi")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("6a905f65-ee8d-4c82-a1a4-b22131a65f53")]

View file

@ -0,0 +1,106 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.30729</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{823D6FA5-F84F-4E50-9091-040C256955A5}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>WebsitePanel.Ecommerce.EnterpriseServer</RootNamespace>
<AssemblyName>WebsitePanel.Plugins.Directi</AssemblyName>
<FileUpgradeFlags>
</FileUpgradeFlags>
<OldToolsVersion>3.5</OldToolsVersion>
<UpgradeBackupLocation>
</UpgradeBackupLocation>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<PublishUrl>publish\</PublishUrl>
<Install>true</Install>
<InstallFrom>Disk</InstallFrom>
<UpdateEnabled>false</UpdateEnabled>
<UpdateMode>Foreground</UpdateMode>
<UpdateInterval>7</UpdateInterval>
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
<UpdatePeriodically>false</UpdatePeriodically>
<UpdateRequired>false</UpdateRequired>
<MapFileExtensions>true</MapFileExtensions>
<ApplicationRevision>0</ApplicationRevision>
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\WebsitePanel.EnterpriseServer\bin\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<WarningsAsErrors>618</WarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\WebsitePanel.EnterpriseServer\bin\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
<WarningsAsErrors>618</WarningsAsErrors>
</PropertyGroup>
<ItemGroup>
<Reference Include="OrderBoxCoreLib">
<HintPath>..\..\Lib\References\Directi\OrderBoxCoreLib.dll</HintPath>
</Reference>
<Reference Include="OrderBoxDomainsLib">
<HintPath>..\..\Lib\References\Directi\OrderBoxDomainsLib.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="..\VersionInfo.cs">
<Link>VersionInfo.cs</Link>
</Compile>
<Compile Include="DirectiRegistrar.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\WebsitePanel.EnterpriseServer.Base\WebsitePanel.EnterpriseServer.Base.csproj">
<Project>{C09CE910-F16B-48A1-B2CC-C99B8C1CF775}</Project>
<Name>WebsitePanel.EnterpriseServer.Base</Name>
</ProjectReference>
</ItemGroup>
<ItemGroup>
<BootstrapperPackage Include="Microsoft.Net.Client.3.5">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1 Client Profile</ProductName>
<Install>false</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
<Visible>False</Visible>
<ProductName>.NET Framework 3.5 SP1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
<BootstrapperPackage Include="Microsoft.Windows.Installer.3.1">
<Visible>False</Visible>
<ProductName>Windows Installer 3.1</ProductName>
<Install>true</Install>
</BootstrapperPackage>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>