3.0 source code
This commit is contained in:
@@ -1,7 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<connectionStrings>
|
||||
<clear />
|
||||
<!-- Line to connect to the main base -->
|
||||
<add name="ConnectionString2" connectionString="Server=localhost;database=onlyoffice;user id=root;password=onlyoffice;pooling=True;Character Set=utf8" providerName="MySql.Data.MySqlClient" />
|
||||
<add name="FileStatisticConnectionString" connectionString="Server=localhost;database=onlyoffice;user id=root;password=onlyoffice;pooling=True;Character Set=utf8" providerName="MySql.Data.MySqlClient" />
|
||||
</connectionStrings>
|
||||
Binary file not shown.
@@ -1,27 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
|
||||
</configSections>
|
||||
<log4net>
|
||||
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
|
||||
<layout type="log4net.Layout.PatternLayout">
|
||||
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
|
||||
</layout>
|
||||
<param name="File" value="E:\\Logs\\fileconverter-log-file.txt" />
|
||||
<param name="AppendToFile" value="true" />
|
||||
<param name="RollingStyle" value="Size" />
|
||||
<param name="MaximumFileSize" value="1MB" />
|
||||
<param name="MaxSizeRollBackups" value="10" />
|
||||
</appender>
|
||||
<root>
|
||||
<level value="ALL" />
|
||||
<appender-ref ref="RollingLogFileAppender" />
|
||||
</root>
|
||||
</log4net>
|
||||
<appSettings file="Settings.config">
|
||||
<add key="fileconverter.convert.presentationthemesdir" value="..\presentationthemes" />
|
||||
<add key="fileconverter.merge.script" value="merge.js" />
|
||||
<add key="fileconverter.merge.workdir" value="E:\Subversion\AVS\Sources\TeamlabOffice\trunk\OfficeWeb\Word\merge\" />
|
||||
</appSettings>
|
||||
</configuration>
|
||||
Binary file not shown.
@@ -1,41 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
|
||||
</configSections>
|
||||
<log4net>
|
||||
<appender name="DebugAppender" type="log4net.Appender.DebugAppender">
|
||||
<layout type="log4net.Layout.PatternLayout">
|
||||
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
|
||||
</layout>
|
||||
</appender>
|
||||
<root>
|
||||
<level value="ERROR" />
|
||||
<appender-ref ref="DebugAppender" />
|
||||
</root>
|
||||
</log4net>
|
||||
<system.data>
|
||||
<DbProviderFactories>
|
||||
<clear />
|
||||
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
|
||||
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite"/>
|
||||
</DbProviderFactories>
|
||||
</system.data>
|
||||
<connectionStrings configSource="ConnectionStrings.config"/>
|
||||
<appSettings file="Settings.config">
|
||||
<add key="sleeptimeout" value="5"/>
|
||||
<add key="sleeptimeoutiddle" value="5"/>
|
||||
<add key="maxconverttime" value="60"/>
|
||||
<add key="maxconverttimeiddle" value="300"/>
|
||||
<add key="maxconvertiddlefiles" value="5"/>
|
||||
<add key="maxdownloadbytes" value="100000000"/>
|
||||
<!--number of processes per processor-->
|
||||
<add key="maxprocesscount" value="1"/>
|
||||
|
||||
<!--download folder-->
|
||||
<add key="fileconverterservice.relativedir" value="..\origin"/>
|
||||
<add key="fileconverterservice.gc.removedtaskatonce" value="10" />
|
||||
<add key="fileconverterservice.gc.runperiod" value="3600" />
|
||||
<add key="fileconverterservice.percent.runperiod" value="500" />
|
||||
</appSettings>
|
||||
</configuration>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,18 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<appSettings>
|
||||
<add key="utils.common.fontdir" value=""/>
|
||||
|
||||
<add key="utils.storage.impl" value="fs" />
|
||||
<!--Filesystem storage settings-->
|
||||
<add key="utils.storage.fs.keyfiles" value=""/>
|
||||
|
||||
<add key="utils.taskresult.impl" value="db" />
|
||||
<add key="utils.taskresult.ttl" value="7.00:00:00" />
|
||||
<add key="utils.taskresult.db.connectionstring" value="ConnectionString2" />
|
||||
|
||||
<add key="utils.taskqueue.impl" value="db" />
|
||||
<add key="utils.taskqueue.db.connectionstring" value="ConnectionString2" />
|
||||
|
||||
<add key="utils.filestatistic.impl" value="db" />
|
||||
<add key="utils.filestatistic.db.connectionstring" value="ConnectionString2" />
|
||||
</appSettings>
|
||||
@@ -1,22 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
|
||||
</configSections>
|
||||
<log4net>
|
||||
<appender name="DebugAppender" type="log4net.Appender.DebugAppender">
|
||||
<layout type="log4net.Layout.PatternLayout">
|
||||
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
|
||||
</layout>
|
||||
</appender>
|
||||
<root>
|
||||
<level value="ERROR" />
|
||||
<appender-ref ref="DebugAppender" />
|
||||
</root>
|
||||
</log4net>
|
||||
<appSettings file="Settings.config">
|
||||
<add key="fileconverter.convert.presentationthemesdir" value="..\presentationthemes" />
|
||||
<add key="fileconverter.merge.script" value="merge.js" />
|
||||
<add key="fileconverter.merge.workdir" value="E:\Subversion\AVS\Sources\TeamlabOffice\trunk\OfficeWeb\Word\merge\" />
|
||||
</appSettings>
|
||||
</configuration>
|
||||
@@ -1,230 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.21022</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{321E9746-26BB-484F-BA34-266CBAF38008}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>FileConverter2</RootNamespace>
|
||||
<AssemblyName>FileConverter2</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugOpenSource|AnyCPU' ">
|
||||
<IsOpenSource>true</IsOpenSource>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE;OPEN_SOURCE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseOpenSource|AnyCPU' ">
|
||||
<IsOpenSource>true</IsOpenSource>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE;OPEN_SOURCE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Condition=" '$(IsOpenSource)' == '' " Include="ASCOfficeEWSEditor, Version=1.0.0.113, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\wwwroot\Bin\ASCOfficeEWSEditor.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="FileConverterUtils2, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\wwwroot\Bin\FileConverterUtils2.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\wwwroot\Bin\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="PdfWriter, Version=1.0.0.2, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\wwwroot\Bin\PdfWriter.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<COMReference Condition=" '$(IsOpenSource)' == '' " Include="ASCDocxFile">
|
||||
<Guid>{CBCEF68A-61B4-49FA-A35F-3BFF46FD3BE8}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Condition=" '$(IsOpenSource)' == '' " Include="ASCGraphics">
|
||||
<Guid>{AB5F2678-2773-44C4-A637-33DFBC51233B}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Condition=" '$(IsOpenSource)' == '' " Include="ASCHTMLRenderer">
|
||||
<Guid>{08DC1F03-6867-4585-B939-422C9078F5FD}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Condition=" '$(IsOpenSource)' == '' " Include="ASCImageStudio3">
|
||||
<Guid>{69DBBABC-8D59-40B8-9906-DAFD4F3EC346}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Condition=" '$(IsOpenSource)' == '' " Include="ASCMediaCore3">
|
||||
<Guid>{F0A0AAE5-06FE-4ABC-A9F1-26BFFEE2A11F}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Include="ASCOfficeDocxFile2">
|
||||
<Guid>{A1EEE61A-FAA7-47AF-B078-4E955623B9CA}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Condition=" '$(IsOpenSource)' == '' " Include="ASCOfficeFile">
|
||||
<Guid>{74CBF220-BF08-11DE-8A39-0800200C9A66}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Condition=" '$(IsOpenSource)' == '' " Include="ASCOfficeOdfFile">
|
||||
<Guid>{9AEF1F19-91CE-46C0-A380-06A7F56CE4AE}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Condition=" '$(IsOpenSource)' == '' " Include="ASCOfficePDFWriter">
|
||||
<Guid>{E0DC00B5-13BE-451C-92B5-078A5B44BEEA}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Include="ASCOfficePPTXFile">
|
||||
<Guid>{95DEE027-7707-4078-A314-33D35AE842FD}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Include="ASCOfficeUtils">
|
||||
<Guid>{92F87FA9-D3C2-4820-82F6-DEAEC0A3539D}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Condition=" '$(IsOpenSource)' == '' " Include="ASCOfficeWSHtmlFile">
|
||||
<Guid>{25B7D44B-94A1-4C94-9718-102CFA8F00D5}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Condition=" '$(IsOpenSource)' == '' " Include="ASCOfficeXlsFile">
|
||||
<Guid>{D9F21C35-D46C-42F3-996D-D4912435F7E7}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Condition=" '$(IsOpenSource)' == '' " Include="ASCPresentationEditor">
|
||||
<Guid>{B34974D7-C020-45B2-8A19-AFC20526B083}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Include="XlsxSerializerCom">
|
||||
<Guid>{E4E17295-6FF8-4BAC-B4C2-E17D72111035}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\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>
|
||||
-->
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>copy $(ProjectDir)bin\Release\$(TargetFileName) $(SolutionDir)..\..\wwwroot\Bin\</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -1,754 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Configuration;
|
||||
using System.IO;
|
||||
|
||||
using FileConverterUtils2;
|
||||
|
||||
using log4net;
|
||||
using log4net.Config;
|
||||
|
||||
#if! OPEN_SOURCE
|
||||
using ASCOfficeEWSEditor.Editor;
|
||||
#endif
|
||||
|
||||
namespace FileConverter2
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static string m_strGuidFile = "";
|
||||
static string m_strFormatFile = "";
|
||||
static int m_cnPercentConst = 10000;
|
||||
static int m_nStageIndex = 1;
|
||||
static int m_nStageCount = 1;
|
||||
|
||||
static uint c_nPageType = 0x0001;
|
||||
static int c_nHtmlRendererMode = 0x04 | 0x10;
|
||||
|
||||
static int c_nSvgDefaultWidth = 960;
|
||||
static int c_nSvgDefaultHeight = 720;
|
||||
|
||||
const int ZIP_NO_COMPRESSION = 0;
|
||||
const int ZIP_BEST_SPEED = 1;
|
||||
const int ZIP_BEST_COMPRESSION = 9;
|
||||
const int ZIP_DEFAULT_COMPRESSION = (-1);
|
||||
|
||||
const int PresentationEditorSavePptx = 1;
|
||||
const int PresentationEditorSavePdf = 2;
|
||||
const int PresentationEditorSaveHtml = 3;
|
||||
|
||||
#if! OPEN_SOURCE
|
||||
static string m_sConfigFontDir = Environment.ExpandEnvironmentVariables(ConfigurationSettings.AppSettings["utils.common.fontdir"]);
|
||||
#else
|
||||
static string m_sConfigFontDir = "";
|
||||
#endif
|
||||
static string m_sConfigThemeDir = ConfigurationSettings.AppSettings["fileconverter.convert.presentationthemesdir"];
|
||||
static string m_sTMImageGuid = "TMImageGuid";
|
||||
static int Main(string[] args)
|
||||
{
|
||||
log4net.Config.XmlConfigurator.Configure();
|
||||
ILog _log = LogManager.GetLogger(typeof(Program));
|
||||
|
||||
int nResult = (int)FileConverterUtils2.ErrorTypes.NoError;
|
||||
int nArgLength = args.Length;
|
||||
if (nArgLength < 1)
|
||||
return (int)FileConverterUtils2.ErrorTypes.Convert;
|
||||
try
|
||||
{
|
||||
ASCOfficeUtils.COfficeUtilsClass OfficeUtils = new ASCOfficeUtils.COfficeUtilsClass();
|
||||
TaskQueueDataConvert oTaskQueueDataConvert = TaskQueueDataConvert.DeserializeFromXml(File.ReadAllText(args[0], System.Text.Encoding.UTF8));
|
||||
int nFormatFrom = oTaskQueueDataConvert.m_nFormatFrom;
|
||||
int nFormatTo = oTaskQueueDataConvert.m_nFormatTo;
|
||||
string sFileFrom = oTaskQueueDataConvert.m_sFileFrom;
|
||||
string sFileTo = oTaskQueueDataConvert.m_sFileTo;
|
||||
m_strGuidFile = oTaskQueueDataConvert.m_sKey;
|
||||
m_strFormatFile = nFormatTo.ToString();
|
||||
bool? bPaid = oTaskQueueDataConvert.m_bPaid;
|
||||
bool? bEmbeddedFonts = oTaskQueueDataConvert.m_bEmbeddedFonts;
|
||||
|
||||
if (0 != (FileFormats.AVS_OFFICESTUDIO_FILE_TEAMLAB & nFormatFrom) && 0 != (FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS & nFormatTo))
|
||||
{
|
||||
OfficeUtils.ExtractToDirectory(sFileFrom, Path.GetDirectoryName(sFileTo), null, 0);
|
||||
}
|
||||
else if (0 != (FileFormats.AVS_OFFICESTUDIO_FILE_TEAMLAB & nFormatTo) && 0 != (FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS & nFormatFrom))
|
||||
{
|
||||
OfficeUtils.CompressFileOrDirectory(Path.GetDirectoryName(sFileFrom), sFileTo, ZIP_DEFAULT_COMPRESSION);
|
||||
}
|
||||
else
|
||||
{
|
||||
int nSourceFormatFrom = nFormatFrom;
|
||||
string sSourceFileFrom = sFileFrom;
|
||||
int nSourceFormatTo = nFormatTo;
|
||||
string sSourceFileTo = sFileTo;
|
||||
|
||||
string sTempDirectory = Path.Combine(Path.GetDirectoryName(sFileTo), "Temp");
|
||||
Directory.CreateDirectory(sTempDirectory);
|
||||
|
||||
string sTempConvertDir = Path.Combine(sTempDirectory, "Convert");
|
||||
Directory.CreateDirectory(sTempConvertDir);
|
||||
|
||||
if (0 != (FileFormats.AVS_OFFICESTUDIO_FILE_TEAMLAB & nFormatFrom) || FileFormats.AVS_OFFICESTUDIO_FILE_OTHER_OLD_DOCUMENT == nFormatFrom ||
|
||||
FileFormats.AVS_OFFICESTUDIO_FILE_OTHER_OLD_DRAWING == nFormatFrom || FileFormats.AVS_OFFICESTUDIO_FILE_OTHER_OLD_PRESENTATION == nFormatFrom)
|
||||
{
|
||||
string sUnzipDir = Path.Combine(sTempDirectory, "Unzip");
|
||||
Directory.CreateDirectory(sUnzipDir);
|
||||
OfficeUtils.ExtractToDirectory(sFileFrom, sUnzipDir, null, 0);
|
||||
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY == nFormatFrom)
|
||||
{
|
||||
sFileFrom = Path.Combine(sUnzipDir, "Editor.bin");
|
||||
nFormatFrom = FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS_WORD;
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY == nFormatFrom)
|
||||
{
|
||||
sFileFrom = Path.Combine(sUnzipDir, "Editor.bin");
|
||||
nFormatFrom = FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET;
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY == nFormatFrom)
|
||||
{
|
||||
sFileFrom = Path.Combine(sUnzipDir, "Editor.bin");
|
||||
nFormatFrom = FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION;
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_OTHER_OLD_DOCUMENT == nFormatFrom)
|
||||
{
|
||||
string sFileFromArch = Path.Combine(sUnzipDir, "Editor.html.arch");
|
||||
sFileFrom = Path.Combine(sUnzipDir, "Editor.html");
|
||||
if (File.Exists(sFileFromArch))
|
||||
File.Copy(sFileFromArch, sFileFrom, true);
|
||||
nFormatFrom = FileFormats.AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML;
|
||||
|
||||
OldDocumentReplaceImages oOldDocumentReplaceImages = new OldDocumentReplaceImages();
|
||||
oOldDocumentReplaceImages.sPath = Path.GetDirectoryName(sFileFrom);
|
||||
string sContent = File.ReadAllText(sFileFrom, System.Text.Encoding.UTF8);
|
||||
sContent = System.Text.RegularExpressions.Regex.Replace(sContent, "<img(.*?) src=\"(.*?)\"", oOldDocumentReplaceImages.undoReplace);
|
||||
File.WriteAllText(sFileFrom, sContent, System.Text.Encoding.UTF8);
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_OTHER_OLD_PRESENTATION == nFormatFrom)
|
||||
{
|
||||
sFileFrom = Path.Combine(sUnzipDir, "Editor.xml");
|
||||
|
||||
string sEditorPath = Path.Combine(sUnzipDir, "Editor.xml");
|
||||
string sThemesPath = Path.Combine(sUnzipDir, "Themes.xml");
|
||||
string sReplacePath = Path.GetDirectoryName(sFileFrom);
|
||||
if (File.Exists(sEditorPath))
|
||||
{
|
||||
string sContent = File.ReadAllText(sEditorPath, System.Text.Encoding.UTF8);
|
||||
sContent = sContent.Replace(m_sTMImageGuid, sReplacePath);
|
||||
File.WriteAllText(sEditorPath, sContent, System.Text.Encoding.UTF8);
|
||||
}
|
||||
if (File.Exists(sThemesPath))
|
||||
{
|
||||
string sContent = File.ReadAllText(sThemesPath, System.Text.Encoding.UTF8);
|
||||
sContent = sContent.Replace(m_sTMImageGuid, sReplacePath);
|
||||
File.WriteAllText(sThemesPath, sContent, System.Text.Encoding.UTF8);
|
||||
}
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_OTHER_OLD_DRAWING == nFormatFrom)
|
||||
{
|
||||
sFileFrom = Path.Combine(sUnzipDir, "Editor.svg");
|
||||
|
||||
string sContent = File.ReadAllText(sFileFrom, System.Text.Encoding.UTF8);
|
||||
sContent = sContent.Replace(m_sTMImageGuid, Path.GetDirectoryName(sFileFrom) + "/");
|
||||
|
||||
File.WriteAllText(sFileFrom, sContent, new System.Text.UTF8Encoding(false));
|
||||
}
|
||||
}
|
||||
string sTempToZipDir = Path.Combine(sTempDirectory, "ToZip"); ;
|
||||
if (0 != (FileFormats.AVS_OFFICESTUDIO_FILE_TEAMLAB & nFormatTo))
|
||||
{
|
||||
Directory.CreateDirectory(sTempToZipDir);
|
||||
|
||||
sFileTo = Path.Combine(sTempToZipDir, "Editor.bin");
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY == nFormatTo)
|
||||
nFormatTo = FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS_WORD;
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY == nFormatTo)
|
||||
nFormatTo = FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET;
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY == nFormatTo)
|
||||
nFormatTo = FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION;
|
||||
}
|
||||
#if! OPEN_SOURCE
|
||||
|
||||
ASCOfficeFile.CAVSOfficeFileConverterClass converter = new ASCOfficeFile.CAVSOfficeFileConverterClass();
|
||||
converter.OnProgressEx += new ASCOfficeFile._IAVSOfficeFileConverterEvents_OnProgressExEventHandler(converter_OnProgressEx);
|
||||
#endif
|
||||
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo)
|
||||
{
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_UNKNOWN == nFormatFrom)
|
||||
{
|
||||
PdfWriter.CPdfWriter oPdfWriter = new PdfWriter.CPdfWriter();
|
||||
oPdfWriter.SetThemesPlace(Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), m_sConfigThemeDir));
|
||||
oPdfWriter.SetHtmlPlace(Path.GetDirectoryName(sFileFrom));
|
||||
if (bPaid.HasValue && false == bPaid.Value)
|
||||
oPdfWriter.SetUnregistredVersion(true);
|
||||
if (false == oPdfWriter.SavePdf(sFileFrom, sFileTo))
|
||||
nResult = (int)FileConverterUtils2.ErrorTypes.Convert;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
if (nFormatTo == nFormatFrom || (FileFormats.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatFrom))
|
||||
{
|
||||
File.Copy(sFileFrom, sFileTo);
|
||||
}
|
||||
else
|
||||
{
|
||||
#if! OPEN_SOURCE
|
||||
string sAdditionalOptions = "";
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT == nFormatFrom && oTaskQueueDataConvert.m_nCsvTxtEncoding.HasValue)
|
||||
sAdditionalOptions = "<TXTOptions><Encoding>" + oTaskQueueDataConvert.m_nCsvTxtEncoding.Value + "</Encoding></TXTOptions>";
|
||||
converter.LoadFromFile(sFileFrom, sTempConvertDir, "<Options><Display/><DownloadImages>1</DownloadImages><FB2Options><GenerateContent val=\"1\"/></FB2Options>" + sAdditionalOptions + "</Options>");
|
||||
converter.FileType = FileFormats.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF;
|
||||
|
||||
m_nStageIndex = 2;
|
||||
converter.SaveToFile(sFileTo, sTempConvertDir, "");
|
||||
#else
|
||||
nResult = (int)FileConverterUtils2.ErrorTypes.Convert;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
#if! OPEN_SOURCE
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLRCanvas == nFormatTo || (FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS_WORD == nFormatTo && 0 == (FileFormats.AVS_OFFICESTUDIO_FILE_DOCUMENT & nFormatFrom)))
|
||||
{
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS_WORD == nFormatTo && 0 == (FileFormats.AVS_OFFICESTUDIO_FILE_DOCUMENT & nFormatFrom))
|
||||
{
|
||||
nFormatTo = FileFormats.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLRCanvas;
|
||||
sFileTo = Path.GetDirectoryName(sFileTo);
|
||||
}
|
||||
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_OTHER_OLD_PRESENTATION == nFormatFrom)
|
||||
{
|
||||
ASCPresentationEditor.CAVSPresentationEditor oPresEditor = new ASCPresentationEditor.CAVSPresentationEditor();
|
||||
oPresEditor.TempDirectory = sTempConvertDir;
|
||||
oPresEditor.OpenXmlFile(sFileFrom);
|
||||
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLR == nFormatTo)
|
||||
oPresEditor.Save(3, sFileTo);
|
||||
else
|
||||
oPresEditor.Save(4, sFileTo);
|
||||
oPresEditor.CloseFile(false);
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_OTHER_OLD_DRAWING == nFormatFrom)
|
||||
{
|
||||
ASCGraphics.SVGTransformerClass piSvgTransformer = new ASCGraphics.SVGTransformerClass();
|
||||
piSvgTransformer.SetAdditionalParam("DefaultWidth", c_nSvgDefaultWidth);
|
||||
piSvgTransformer.SetAdditionalParam("DefaultHeight", c_nSvgDefaultHeight);
|
||||
piSvgTransformer.LoadFile(sFileFrom);
|
||||
int nWidthPx = piSvgTransformer.Width;
|
||||
int nHeightPx = piSvgTransformer.Height;
|
||||
double dWidthMm = 2.54 * 10 * nWidthPx / 96;
|
||||
double dHeightMm = 2.54 * 10 * nHeightPx / 96;
|
||||
|
||||
ASCHTMLRenderer.CASCHTMLRenderer2 piHtmlRenderer = new ASCHTMLRenderer.CASCHTMLRenderer2();
|
||||
piHtmlRenderer.Mode = c_nHtmlRendererMode;
|
||||
piHtmlRenderer.CreateOfficeFile(sFileTo);
|
||||
piHtmlRenderer.NewPage();
|
||||
piHtmlRenderer.Width = dWidthMm;
|
||||
piHtmlRenderer.Height = dHeightMm;
|
||||
piHtmlRenderer.BeginCommand(c_nPageType);
|
||||
piSvgTransformer.Draw(piHtmlRenderer, 0, 0, dWidthMm, dHeightMm);
|
||||
piHtmlRenderer.EndCommand(c_nPageType);
|
||||
piHtmlRenderer.CloseFile();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_nStageCount = 2;
|
||||
m_nStageIndex = 1;
|
||||
|
||||
string sAdditionalOptions = "";
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT == nFormatFrom && oTaskQueueDataConvert.m_nCsvTxtEncoding.HasValue)
|
||||
sAdditionalOptions = "<TXTOptions><Encoding>" + oTaskQueueDataConvert.m_nCsvTxtEncoding.Value + "</Encoding></TXTOptions>";
|
||||
converter.LoadFromFile(sFileFrom, sTempConvertDir, "<Options><Display/><DownloadImages>1</DownloadImages><FB2Options><GenerateContent val=\"1\"/></FB2Options>" + sAdditionalOptions + "</Options>");
|
||||
converter.FileType = nFormatTo;
|
||||
|
||||
m_nStageIndex = 2;
|
||||
converter.SaveToFile(sFileTo, sTempConvertDir, "<Options><LoadInCommandRenderer/><HtmlRendererMode>" + c_nHtmlRendererMode + "</HtmlRendererMode></Options>");
|
||||
}
|
||||
|
||||
if (File.Exists(sFileFrom) && Directory.Exists(sFileTo))
|
||||
File.Copy(sFileFrom, Path.Combine(sFileTo, "origin"), true);
|
||||
|
||||
string sDirTo = sFileTo;
|
||||
string sDocumentJs = Path.Combine(sDirTo, "document.js");
|
||||
string sEditorBin = Path.Combine(sDirTo, "Editor.bin");
|
||||
if (File.Exists(sDocumentJs) && false == File.Exists(sEditorBin))
|
||||
File.Move(sDocumentJs, sEditorBin);
|
||||
}
|
||||
#endif
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS_WORD == nFormatTo)
|
||||
{
|
||||
#if! OPEN_SOURCE
|
||||
string sAdditionalOptions = "";
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT == nFormatFrom && oTaskQueueDataConvert.m_nCsvTxtEncoding.HasValue)
|
||||
sAdditionalOptions = "<TXTOptions><Encoding>" + oTaskQueueDataConvert.m_nCsvTxtEncoding.Value + "</Encoding></TXTOptions>";
|
||||
converter.LoadFromFile(sFileFrom, sTempConvertDir, "<Options><Display/><FB2Options><GenerateContent val=\"0\"/></FB2Options>" + sAdditionalOptions + "</Options>");
|
||||
#else
|
||||
OfficeUtils.ExtractToDirectory(sFileFrom, sTempConvertDir, null, 0);
|
||||
#endif
|
||||
ASCOfficeDocxFile2.CAVSOfficeDocxFile2Class oDocxFile = new ASCOfficeDocxFile2.CAVSOfficeDocxFile2Class();
|
||||
oDocxFile.SetFontDir(m_sConfigFontDir);
|
||||
|
||||
if (bEmbeddedFonts.HasValue && true == bEmbeddedFonts.Value)
|
||||
oDocxFile.SetAdditionalParam("EmbeddedFontsDirectory", Path.Combine(Path.GetDirectoryName(sFileTo), "fonts"));
|
||||
oDocxFile.OpenFile(sTempConvertDir, sFileTo);
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS_WORD == nFormatFrom)
|
||||
{
|
||||
if (oTaskQueueDataConvert.m_bFromChanges.HasValue && oTaskQueueDataConvert.m_bFromChanges.Value)
|
||||
{
|
||||
|
||||
string sDirFrom = Path.GetDirectoryName(sFileFrom);
|
||||
string sDirChanges = Path.Combine(sDirFrom, "changes");
|
||||
|
||||
string sNewFileFrom = Path.Combine(sDirFrom, "Editor1.bin");
|
||||
System.Diagnostics.Process convertProc = new System.Diagnostics.Process();
|
||||
convertProc.StartInfo.FileName = "node";
|
||||
convertProc.StartInfo.CreateNoWindow = true;
|
||||
convertProc.StartInfo.UseShellExecute = false;
|
||||
convertProc.StartInfo.WorkingDirectory = ConfigurationSettings.AppSettings["fileconverter.merge.workdir"];
|
||||
convertProc.StartInfo.Arguments = "\"" + ConfigurationSettings.AppSettings["fileconverter.merge.script"] +
|
||||
"\" \"" + sFileFrom +
|
||||
"\" \"" + sDirChanges +
|
||||
"\" \"" + sNewFileFrom + "\"";
|
||||
convertProc.Start();
|
||||
convertProc.WaitForExit();
|
||||
sFileFrom = sNewFileFrom;
|
||||
if(0 != convertProc.ExitCode)
|
||||
nResult = (int)FileConverterUtils2.ErrorTypes.Unknown;
|
||||
}
|
||||
if (nResult == (int)FileConverterUtils2.ErrorTypes.NoError)
|
||||
{
|
||||
ASCOfficeDocxFile2.CAVSOfficeDocxFile2Class oDocxWriter = new ASCOfficeDocxFile2.CAVSOfficeDocxFile2Class();
|
||||
oDocxWriter.SetAdditionalParam("FontDir", m_sConfigFontDir);
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX != nFormatTo)
|
||||
oDocxWriter.SetAdditionalParam("SaveChartAsImg", true);
|
||||
oDocxWriter.Write(sFileFrom, sTempConvertDir);
|
||||
#if! OPEN_SOURCE
|
||||
if (bPaid.HasValue && false == bPaid)
|
||||
{
|
||||
ASCDocxFile.COfficeDocxFileClass oDocxFile = new ASCDocxFile.COfficeDocxFileClass();
|
||||
oDocxFile.AddObjects(sTempConvertDir, "<AddObjects><Paragraph><Text value=\"Created by YoursDocs\"/></Paragraph><Paragraph><Link value=\"http://www.yoursdocs.com/\" href=\"http://www.yoursdocs.com/\"/></Paragraph></AddObjects>");
|
||||
}
|
||||
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_OTHER_HTMLZIP != nFormatTo)
|
||||
{
|
||||
converter.FileType = nFormatTo;
|
||||
converter.SaveToFile(sFileTo, sTempConvertDir, "");
|
||||
}
|
||||
else
|
||||
{
|
||||
string sTempConvertDir2 = Path.Combine(sTempDirectory, "Convert2");
|
||||
Directory.CreateDirectory(sTempConvertDir2);
|
||||
|
||||
converter.FileType = FileFormats.AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML;
|
||||
string sConvertFileTo = Path.Combine(sTempConvertDir2, Path.GetFileNameWithoutExtension(sFileTo) + ".html");
|
||||
converter.SaveToFile(sConvertFileTo, sTempConvertDir, "");
|
||||
|
||||
OfficeUtils.CompressFileOrDirectory(sTempConvertDir2, sFileTo, ZIP_DEFAULT_COMPRESSION);
|
||||
Directory.Delete(sTempConvertDir2, true);
|
||||
}
|
||||
#else
|
||||
OfficeUtils.CompressFileOrDirectory(sTempConvertDir, sFileTo, ZIP_DEFAULT_COMPRESSION);
|
||||
#endif
|
||||
}
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION == nFormatTo)
|
||||
{
|
||||
#if! OPEN_SOURCE
|
||||
ASCPresentationEditor.CAVSPresentationEditorClass oPresentationEditor = new ASCPresentationEditor.CAVSPresentationEditorClass();
|
||||
oPresentationEditor.TempDirectory = sTempConvertDir;
|
||||
oPresentationEditor.SetFontDir(m_sConfigFontDir);
|
||||
oPresentationEditor.ConvertToPPTY(sFileFrom, sFileTo);
|
||||
#else
|
||||
ASCOfficePPTXFile.CAVSOfficePPTXFileClass oCAVSOfficePPTXFile = new ASCOfficePPTXFile.CAVSOfficePPTXFileClass();
|
||||
oCAVSOfficePPTXFile.TempDirectory = sTempConvertDir;
|
||||
oCAVSOfficePPTXFile.SetFontDir(m_sConfigFontDir);
|
||||
if (bEmbeddedFonts.HasValue && true == bEmbeddedFonts.Value)
|
||||
oCAVSOfficePPTXFile.SetAdditionalParam("EmbeddedFontsDirectory", Path.Combine(Path.GetDirectoryName(sFileTo), "fonts"));
|
||||
oCAVSOfficePPTXFile.OpenFileToPPTY(sFileFrom, sFileTo);
|
||||
#endif
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION == nFormatFrom)
|
||||
{
|
||||
ASCOfficePPTXFile.CAVSOfficePPTXFileClass oCAVSOfficePPTXFile = new ASCOfficePPTXFile.CAVSOfficePPTXFileClass();
|
||||
oCAVSOfficePPTXFile.TempDirectory = sTempConvertDir;
|
||||
oCAVSOfficePPTXFile.SetThemesDir(Path.Combine(Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location), m_sConfigThemeDir));
|
||||
oCAVSOfficePPTXFile.ConvertPPTYToPPTX(sFileFrom, sFileTo);
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET == nFormatTo)
|
||||
{
|
||||
XlsxSerializerCom.CAVSOfficeXlsxSerizer oXlsxSerizer = new XlsxSerializerCom.CAVSOfficeXlsxSerizer();
|
||||
oXlsxSerizer.SetFontDir(m_sConfigFontDir);
|
||||
if (bEmbeddedFonts.HasValue && true == bEmbeddedFonts.Value)
|
||||
oXlsxSerizer.SetAdditionalParam("EmbeddedFontsDirectory", Path.Combine(Path.GetDirectoryName(sFileTo), "fonts"));
|
||||
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == nFormatFrom)
|
||||
{
|
||||
int nCsvEncoding = 65001;
|
||||
char cDelimiter = ',';
|
||||
if (oTaskQueueDataConvert.m_nCsvDelimiter.HasValue)
|
||||
{
|
||||
switch (oTaskQueueDataConvert.m_nCsvDelimiter.Value)
|
||||
{
|
||||
case (int)CsvDelimiter.Tab: cDelimiter = '\t'; break;
|
||||
case (int)CsvDelimiter.Semicolon: cDelimiter = ';'; break;
|
||||
case (int)CsvDelimiter.Сolon: cDelimiter = ':'; break;
|
||||
case (int)CsvDelimiter.Comma: cDelimiter = ','; break;
|
||||
case (int)CsvDelimiter.Space: cDelimiter = ' '; break;
|
||||
}
|
||||
}
|
||||
if (oTaskQueueDataConvert.m_nCsvTxtEncoding.HasValue)
|
||||
nCsvEncoding = oTaskQueueDataConvert.m_nCsvTxtEncoding.Value;
|
||||
|
||||
string strXmlOptions = string.Format("<xmlOptions><fileOptions fileType='2' codePage='{0}' delimiter='{1}' /></xmlOptions>", nCsvEncoding, cDelimiter);
|
||||
|
||||
oXlsxSerizer.SaveToFile(sFileTo, sFileFrom, strXmlOptions);
|
||||
}
|
||||
#if! OPEN_SOURCE
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS == nFormatFrom)
|
||||
{
|
||||
ASCOfficeOdfFile.COfficeOdfFileClass oOdfFile = new ASCOfficeOdfFile.COfficeOdfFileClass();
|
||||
oOdfFile.LoadFromFile(sFileFrom, sTempConvertDir, "");
|
||||
oXlsxSerizer.SaveToFile(sFileTo, sTempConvertDir, "");
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS == nFormatFrom)
|
||||
{
|
||||
ASCOfficeXlsFile.CXlsFileClass oXlsFile = new ASCOfficeXlsFile.CXlsFileClass();
|
||||
oXlsFile.LoadFromFile(sFileFrom, sTempConvertDir, "");
|
||||
oXlsxSerizer.SaveToFile(sFileTo, sTempConvertDir, "");
|
||||
}
|
||||
#endif
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX == nFormatFrom)
|
||||
{
|
||||
OfficeUtils.ExtractToDirectory(sFileFrom, sTempConvertDir, null, 0);
|
||||
oXlsxSerizer.SaveToFile(sFileTo, sTempConvertDir, "");
|
||||
}
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET == nFormatFrom)
|
||||
{
|
||||
XlsxSerializerCom.CAVSOfficeXlsxSerizer oXlsxSerizer = new XlsxSerializerCom.CAVSOfficeXlsxSerizer();
|
||||
oXlsxSerizer.LoadFromFile(sFileFrom, sTempConvertDir, "");
|
||||
|
||||
string sTempConvertDir2 = Path.Combine(sTempDirectory, "Convert2");
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX == nFormatTo)
|
||||
{
|
||||
#if! OPEN_SOURCE
|
||||
ASCDocxFile.COfficeDocxFileClass oDocxFile = new ASCDocxFile.COfficeDocxFileClass();
|
||||
oDocxFile.SaveToFile(sFileTo, sTempConvertDir, "");
|
||||
#else
|
||||
OfficeUtils.CompressFileOrDirectory(sTempConvertDir, sFileTo, ZIP_DEFAULT_COMPRESSION);
|
||||
#endif
|
||||
}
|
||||
#if! OPEN_SOURCE
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS == nFormatTo)
|
||||
{
|
||||
ASCOfficeXlsFile.CXlsFileClass oXlsFile = new ASCOfficeXlsFile.CXlsFileClass();
|
||||
oXlsFile.SaveToFile(sFileTo, sTempConvertDir, "");
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS == nFormatTo)
|
||||
{
|
||||
Directory.CreateDirectory(sTempConvertDir2);
|
||||
string sFileXlsx = Path.Combine(sTempConvertDir2, "converted.xlsx");
|
||||
ASCDocxFile.COfficeDocxFileClass oDocxFile = new ASCDocxFile.COfficeDocxFileClass();
|
||||
oDocxFile.SaveToFile(sFileXlsx, sTempConvertDir, "");
|
||||
ASCOfficeEWSEditor.Editor.ODSConverter.ODSConverter.ConvertFile(sFileXlsx, sFileTo, CleverAge.OdfConverter.OdfConverterLib.ConversionDirection.XlsxToOds);
|
||||
}
|
||||
#endif
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == nFormatTo)
|
||||
{
|
||||
int nCsvEncoding = System.Text.Encoding.UTF8.CodePage;
|
||||
if (oTaskQueueDataConvert.m_nCsvTxtEncoding.HasValue)
|
||||
nCsvEncoding = oTaskQueueDataConvert.m_nCsvTxtEncoding.Value;
|
||||
char cDelimiter = ',';
|
||||
if (oTaskQueueDataConvert.m_nCsvDelimiter.HasValue)
|
||||
{
|
||||
switch (oTaskQueueDataConvert.m_nCsvDelimiter.Value)
|
||||
{
|
||||
case 1: cDelimiter = (char)0x09; break;
|
||||
case 2: cDelimiter = ';'; break;
|
||||
case 3: cDelimiter = ':'; break;
|
||||
case 4: cDelimiter = ','; break;
|
||||
case 5: cDelimiter = ' '; break;
|
||||
}
|
||||
}
|
||||
string strXmlOptions = string.Format("<xmlOptions><fileOptions fileType='2' codePage='{0}' delimiter='{1}' /></xmlOptions>", nCsvEncoding, cDelimiter);
|
||||
oXlsxSerizer.LoadFromFile(sFileFrom, sFileTo, strXmlOptions);
|
||||
}
|
||||
#if! OPEN_SOURCE
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_OTHER_HTMLZIP == nFormatTo)
|
||||
{
|
||||
Directory.CreateDirectory(sTempConvertDir2);
|
||||
ASCOfficeWSHtmlFile.CWSHtmlFileClass oWSHtmlFile = new ASCOfficeWSHtmlFile.CWSHtmlFileClass();
|
||||
oWSHtmlFile.SaveToFile(Path.Combine(sTempConvertDir2, "main.html"), sTempConvertDir, "");
|
||||
OfficeUtils.CompressFileOrDirectory(sTempConvertDir2, sFileTo, ZIP_DEFAULT_COMPRESSION);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
#if! OPEN_SOURCE
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_OTHER_OLD_DRAWING == nFormatFrom)
|
||||
{
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF == nFormatTo)
|
||||
{
|
||||
ASCGraphics.SVGTransformerClass piSvgTransformer = new ASCGraphics.SVGTransformerClass();
|
||||
piSvgTransformer.LoadFile(sFileFrom);
|
||||
int nWidthPx = piSvgTransformer.Width;
|
||||
int nHeightPx = piSvgTransformer.Height;
|
||||
double dWidthMm = 2.54 * 10 * nWidthPx / 72;
|
||||
double dHeightMm = 2.54 * 10 * nHeightPx / 72;
|
||||
|
||||
ASCOfficePDFWriter.CPDFWriterClass piPdfWriter = new ASCOfficePDFWriter.CPDFWriterClass();
|
||||
piPdfWriter.CreatePDF();
|
||||
piPdfWriter.NewPage();
|
||||
piPdfWriter.Width = dWidthMm;
|
||||
piPdfWriter.Height = dHeightMm;
|
||||
piPdfWriter.BeginCommand(c_nPageType);
|
||||
piSvgTransformer.Draw(piPdfWriter, 0, 0, dWidthMm, dHeightMm);
|
||||
piPdfWriter.EndCommand(c_nPageType);
|
||||
piPdfWriter.SaveToFile(sFileTo);
|
||||
piPdfWriter.DeletePDF();
|
||||
}
|
||||
else
|
||||
{
|
||||
string sXmlTo = "";
|
||||
string sXmlAddition = "";
|
||||
switch (nFormatTo)
|
||||
{
|
||||
case FileFormats.AVS_OFFICESTUDIO_FILE_IMAGE_PNG: sXmlTo = "Png"; break;
|
||||
case FileFormats.AVS_OFFICESTUDIO_FILE_IMAGE_JPG: sXmlTo = "Jpeg"; sXmlAddition = " quality=\"80\""; break;
|
||||
}
|
||||
try
|
||||
{
|
||||
|
||||
ASCImageStudio3.ImageTransformsClass piImageTransform = new ASCImageStudio3.ImageTransformsClass();
|
||||
string sXml = "<transforms>";
|
||||
sXml += "<ImageFile-LoadImage sourcepath='" + sFileFrom + "'/>";
|
||||
|
||||
sXml += "</transforms>";
|
||||
|
||||
nResult = (int)FileConverterUtils2.ErrorTypes.Convert;
|
||||
if (piImageTransform.SetXml(sXml))
|
||||
if (piImageTransform.Transform())
|
||||
{
|
||||
object oFullImage;
|
||||
piImageTransform.GetResult(0, out oFullImage);
|
||||
|
||||
ASCMediaCore3.CAVSUncompressedVideoFrame piUnkFrame = (ASCMediaCore3.CAVSUncompressedVideoFrame)oFullImage;
|
||||
|
||||
if (piUnkFrame.BufferSize > 0)
|
||||
{
|
||||
piImageTransform.SetSource(0, oFullImage);
|
||||
sXml = "<transforms>";
|
||||
sXml += "<ImageFile-SaveAs" + sXmlTo + " destinationpath=\"" + sFileTo + "\" format=\"8888\"" + sXmlAddition + "/>";
|
||||
sXml += "</transforms>";
|
||||
if (piImageTransform.SetXml(sXml))
|
||||
if (piImageTransform.Transform())
|
||||
nResult = (int)FileConverterUtils2.ErrorTypes.NoError;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
nResult = (int)FileConverterUtils2.ErrorTypes.Convert;
|
||||
_log.Error("Exception catched while image transform.", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (0 != (FileFormats.AVS_OFFICESTUDIO_FILE_DOCUMENT & nFormatFrom) && 0 != (FileFormats.AVS_OFFICESTUDIO_FILE_DOCUMENT & nFormatTo))
|
||||
{
|
||||
m_nStageCount = 2;
|
||||
m_nStageIndex = 1;
|
||||
|
||||
converter.LoadFromFile(sFileFrom, sTempConvertDir, "");
|
||||
converter.FileType = nFormatTo;
|
||||
|
||||
m_nStageIndex = 2;
|
||||
converter.SaveToFile(sFileTo, sTempConvertDir, "");
|
||||
}
|
||||
else if (0 != (FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET & nFormatFrom) && 0 != (FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET & nFormatTo))
|
||||
{
|
||||
string sXlsxDir = Path.Combine(sTempConvertDir, "xlsx");
|
||||
Directory.CreateDirectory(sXlsxDir);
|
||||
if(FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX == nFormatFrom)
|
||||
{
|
||||
ASCDocxFile.COfficeDocxFileClass oDocxFileClass = new ASCDocxFile.COfficeDocxFileClass();
|
||||
oDocxFileClass.LoadFromFile(sFileFrom, sXlsxDir, "");
|
||||
}
|
||||
else if(FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS == nFormatFrom)
|
||||
{
|
||||
ASCOfficeXlsFile.CXlsFileClass oXlsFileClass = new ASCOfficeXlsFile.CXlsFileClass();
|
||||
oXlsFileClass.LoadFromFile(sFileFrom, sXlsxDir, "");
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS == nFormatFrom)
|
||||
{
|
||||
ASCOfficeOdfFile.COfficeOdfFileClass oOdfFile = new ASCOfficeOdfFile.COfficeOdfFileClass();
|
||||
oOdfFile.LoadFromFile(sFileFrom, sXlsxDir, "");
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == nFormatFrom)
|
||||
{
|
||||
string sTempFile = Path.Combine(sTempConvertDir, "temp_from.xlsx");
|
||||
using (EWSEditor oEditor = new EWSEditor())
|
||||
{
|
||||
Workbook wb = oEditor.LoadWorkbookFromCSV(sFileFrom, System.Text.Encoding.UTF8.CodePage, ',');
|
||||
wb.Save(sTempFile, ASCOfficeEWSEditor.Editor.FileFormats.Format.XLSX);
|
||||
}
|
||||
ASCDocxFile.COfficeDocxFileClass oDocxFileClass = new ASCDocxFile.COfficeDocxFileClass();
|
||||
oDocxFileClass.LoadFromFile(sTempFile, sXlsxDir, "");
|
||||
}
|
||||
else
|
||||
nResult = (int)FileConverterUtils2.ErrorTypes.Convert;
|
||||
if (nResult == (int)FileConverterUtils2.ErrorTypes.NoError)
|
||||
{
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX == nFormatTo)
|
||||
{
|
||||
ASCDocxFile.COfficeDocxFileClass oDocxFileClass = new ASCDocxFile.COfficeDocxFileClass();
|
||||
oDocxFileClass.SaveToFile(sFileTo, sXlsxDir, "");
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS == nFormatTo)
|
||||
{
|
||||
ASCOfficeXlsFile.CXlsFileClass oXlsFileClass = new ASCOfficeXlsFile.CXlsFileClass();
|
||||
oXlsFileClass.SaveToFile(sFileTo, sXlsxDir, "");
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS == nFormatTo)
|
||||
{
|
||||
string sTempFile = Path.Combine(sTempConvertDir, "temp_to.xlsx");
|
||||
ASCDocxFile.COfficeDocxFileClass oDocxFileClass = new ASCDocxFile.COfficeDocxFileClass();
|
||||
oDocxFileClass.SaveToFile(sTempFile, sXlsxDir, "");
|
||||
ASCOfficeEWSEditor.Editor.ODSConverter.ODSConverter.ConvertFile(sTempFile, sFileTo, CleverAge.OdfConverter.OdfConverterLib.ConversionDirection.XlsxToOds);
|
||||
}
|
||||
else if (FileFormats.AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV == nFormatTo)
|
||||
{
|
||||
string sTempFile = Path.Combine(sTempConvertDir, "temp_to.xlsx");
|
||||
ASCDocxFile.COfficeDocxFileClass oDocxFileClass = new ASCDocxFile.COfficeDocxFileClass();
|
||||
oDocxFileClass.SaveToFile(sTempFile, sXlsxDir, "");
|
||||
using (EWSEditor oEditor = new EWSEditor())
|
||||
{
|
||||
Workbook wb = oEditor.LoadWorkbook(sTempFile);
|
||||
int nCsvEncoding = System.Text.Encoding.UTF8.CodePage;
|
||||
if (oTaskQueueDataConvert.m_nCsvTxtEncoding.HasValue)
|
||||
nCsvEncoding = oTaskQueueDataConvert.m_nCsvTxtEncoding.Value;
|
||||
char cDelimiter = ',';
|
||||
if (oTaskQueueDataConvert.m_nCsvDelimiter.HasValue)
|
||||
{
|
||||
switch (oTaskQueueDataConvert.m_nCsvDelimiter.Value)
|
||||
{
|
||||
case 1: cDelimiter = (char)0x09; break;
|
||||
case 2: cDelimiter = ';'; break;
|
||||
case 3: cDelimiter = ':'; break;
|
||||
case 4: cDelimiter = ','; break;
|
||||
case 5: cDelimiter = ' '; break;
|
||||
}
|
||||
}
|
||||
wb.SaveToCSV(sFileTo, nCsvEncoding, cDelimiter);
|
||||
}
|
||||
}
|
||||
else
|
||||
nResult = (int)FileConverterUtils2.ErrorTypes.Convert;
|
||||
}
|
||||
}
|
||||
else if (0 != (FileFormats.AVS_OFFICESTUDIO_FILE_PRESENTATION & nFormatFrom) && 0 != (FileFormats.AVS_OFFICESTUDIO_FILE_PRESENTATION & nFormatTo))
|
||||
{
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX == nFormatTo)
|
||||
{
|
||||
ASCPresentationEditor.CAVSPresentationEditorClass oPresentationEditor = new ASCPresentationEditor.CAVSPresentationEditorClass();
|
||||
oPresentationEditor.TempDirectory = sTempConvertDir;
|
||||
oPresentationEditor.SetFontDir(m_sConfigFontDir);
|
||||
oPresentationEditor.OpenFile(sFileFrom);
|
||||
oPresentationEditor.Save(PresentationEditorSavePptx, sFileTo);
|
||||
}
|
||||
else
|
||||
nResult = (int)FileConverterUtils2.ErrorTypes.Convert;
|
||||
}
|
||||
#endif
|
||||
else
|
||||
nResult = (int)FileConverterUtils2.ErrorTypes.Convert;
|
||||
|
||||
if (0 != (FileFormats.AVS_OFFICESTUDIO_FILE_TEAMLAB & nSourceFormatTo))
|
||||
{
|
||||
if (FileFormats.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLRCanvas == nFormatTo)
|
||||
OfficeUtils.CompressFileOrDirectory(sFileTo, sSourceFileTo, ZIP_DEFAULT_COMPRESSION);
|
||||
else
|
||||
OfficeUtils.CompressFileOrDirectory(Path.GetDirectoryName(sFileTo), sSourceFileTo, ZIP_DEFAULT_COMPRESSION);
|
||||
}
|
||||
#if! OPEN_SOURCE
|
||||
|
||||
System.Runtime.InteropServices.Marshal.ReleaseComObject(converter);
|
||||
#endif
|
||||
Directory.Delete(sTempDirectory, true);
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (e is System.Runtime.InteropServices.COMException)
|
||||
{
|
||||
System.Runtime.InteropServices.COMException eCOMException = e as System.Runtime.InteropServices.COMException;
|
||||
nResult = eCOMException.ErrorCode;
|
||||
}
|
||||
else
|
||||
nResult = (int)FileConverterUtils2.ErrorTypes.Convert;
|
||||
|
||||
_log.Error("Exception catched in Main() method.", e);
|
||||
}
|
||||
return nResult;
|
||||
}
|
||||
|
||||
private static void converter_OnProgressEx(int nID, int nPercent, ref short Cancel)
|
||||
{
|
||||
nPercent /= m_cnPercentConst;
|
||||
int nStagePercentStart = (100 / m_nStageCount) * (m_nStageIndex - 1);
|
||||
int nOutputPercent = (nStagePercentStart + (nPercent / m_nStageCount));
|
||||
|
||||
nOutputPercent = nOutputPercent * 95 / 100;
|
||||
Console.WriteLine("\"" + m_strGuidFile + "\" \"" + nOutputPercent.ToString() + "\" \"" + m_strFormatFile + "\"");
|
||||
}
|
||||
private class OldDocumentReplaceImages
|
||||
{
|
||||
public string sPath;
|
||||
public string undoReplace(System.Text.RegularExpressions.Match m)
|
||||
{
|
||||
if (m.Groups.Count >= 3)
|
||||
{
|
||||
string href = m.Groups[2].Value;
|
||||
int index = href.IndexOf(m_sTMImageGuid);
|
||||
if (-1 != index)
|
||||
href = sPath + href.Substring(index + m_sTMImageGuid.Length);
|
||||
return "<img" + m.Groups[1].Value + " src=\"" + href + "\"";
|
||||
}
|
||||
else
|
||||
return m.Groups[0].Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
[assembly: AssemblyTitle("FileConverter2")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Ascensio System SIA")]
|
||||
[assembly: AssemblyProduct("FileConverter2")]
|
||||
[assembly: AssemblyCopyright("Ascensio System SIA Copyright (c) 2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
[assembly: Guid("54616771-b4e0-4242-b6f8-af0fea15f794")]
|
||||
|
||||
[assembly: AssemblyVersion("1.0.0.15")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.15")]
|
||||
@@ -1,36 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual C# Express 2008
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileConverterService2", "FileConverterService2\FileConverterService2.csproj", "{290A48D1-F7E2-4478-AFE6-AE5C744CD633}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileConverter2", "FileConverter2\FileConverter2.csproj", "{321E9746-26BB-484F-BA34-266CBAF38008}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
DebugOpenSource|Any CPU = DebugOpenSource|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
ReleaseOpenSource|Any CPU = ReleaseOpenSource|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{290A48D1-F7E2-4478-AFE6-AE5C744CD633}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{290A48D1-F7E2-4478-AFE6-AE5C744CD633}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{290A48D1-F7E2-4478-AFE6-AE5C744CD633}.DebugOpenSource|Any CPU.ActiveCfg = DebugOpenSource|Any CPU
|
||||
{290A48D1-F7E2-4478-AFE6-AE5C744CD633}.DebugOpenSource|Any CPU.Build.0 = DebugOpenSource|Any CPU
|
||||
{290A48D1-F7E2-4478-AFE6-AE5C744CD633}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{290A48D1-F7E2-4478-AFE6-AE5C744CD633}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{290A48D1-F7E2-4478-AFE6-AE5C744CD633}.ReleaseOpenSource|Any CPU.ActiveCfg = ReleaseOpenSource|Any CPU
|
||||
{290A48D1-F7E2-4478-AFE6-AE5C744CD633}.ReleaseOpenSource|Any CPU.Build.0 = ReleaseOpenSource|Any CPU
|
||||
{321E9746-26BB-484F-BA34-266CBAF38008}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{321E9746-26BB-484F-BA34-266CBAF38008}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{321E9746-26BB-484F-BA34-266CBAF38008}.DebugOpenSource|Any CPU.ActiveCfg = DebugOpenSource|Any CPU
|
||||
{321E9746-26BB-484F-BA34-266CBAF38008}.DebugOpenSource|Any CPU.Build.0 = DebugOpenSource|Any CPU
|
||||
{321E9746-26BB-484F-BA34-266CBAF38008}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{321E9746-26BB-484F-BA34-266CBAF38008}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{321E9746-26BB-484F-BA34-266CBAF38008}.ReleaseOpenSource|Any CPU.ActiveCfg = ReleaseOpenSource|Any CPU
|
||||
{321E9746-26BB-484F-BA34-266CBAF38008}.ReleaseOpenSource|Any CPU.Build.0 = ReleaseOpenSource|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -1,56 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
|
||||
</configSections>
|
||||
<!--<log4net>
|
||||
<appender name="FileAppender" type="log4net.Appender.FileAppender">
|
||||
<param name="File" value="e:\\logs\\log-file.txt" />
|
||||
<param name="AppendToFile" value="true" />
|
||||
<layout type="log4net.Layout.PatternLayout">
|
||||
<param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
|
||||
</layout>
|
||||
</appender>
|
||||
<root>
|
||||
<level value="ALL" />
|
||||
<appender-ref ref="FileAppender" />
|
||||
</root>
|
||||
</log4net>-->
|
||||
<system.data>
|
||||
<DbProviderFactories>
|
||||
<clear />
|
||||
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data" />
|
||||
<add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
|
||||
</DbProviderFactories>
|
||||
</system.data>
|
||||
<connectionStrings>
|
||||
<!--<add name="ConnectionString" connectionString="data source=D:\Projects\AVS\Sources\AVSOfficeStudio\AVSOfficeWeb\wwwroot\App_Data\sqlite.db3" providerName="System.Data.SQLite" />-->
|
||||
<add name="ConnectionString" connectionString="server=localhost;user id=usrFileConv;password=usrFileConv;database=convertdb;pooling=false;Character Set=utf8;" providerName="MySql.Data.MySqlClient" />
|
||||
<add name="ConnectionString2" connectionString="Server=localhost;database=canvaseditors;user id=canvas_usr;password=canvas_usr;pooling=True;Character Set=utf8" providerName="MySql.Data.MySqlClient" />
|
||||
</connectionStrings>
|
||||
<appSettings file="Settings.config">
|
||||
<add key="sleeptimeout" value="5" />
|
||||
<add key="sleeptimeoutiddle" value="5" />
|
||||
<add key="maxconverttime" value="60" />
|
||||
<add key="maxconverttimeiddle" value="300" />
|
||||
<add key="maxconvertiddlefiles" value="5" />
|
||||
<add key="maxdownloadbytes" value="10000000" />
|
||||
<!--number of processes per processor-->
|
||||
<add key="maxprocesscount" value="1" />
|
||||
|
||||
<!--download folder-->
|
||||
<add key="fileconverterservice.relativedir" value="..\origin" />
|
||||
<add key="fileconverterservice.gc.removedtaskatonce" value="10" />
|
||||
<add key="fileconverterservice.gc.runperiod" value="3600" />
|
||||
<add key="fileconverterservice.percent.runperiod" value="500" />
|
||||
<add key="utils.taskqueue.db.connectionstring" value="ConnectionString2"/>
|
||||
</appSettings>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="AWSSDK" publicKeyToken="CD2D24CD2BACE800" culture="neutral" />
|
||||
<bindingRedirect oldVersion="0.0.0.0-1.3.19.0" newVersion="1.3.19.0" />
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,125 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System.ServiceProcess;
|
||||
using log4net;
|
||||
using log4net.Config;
|
||||
|
||||
namespace FileConverterService2
|
||||
{
|
||||
public sealed class FileConverterService2 : ServiceBase
|
||||
{
|
||||
public const string AscFileConverterServiceName = "ASC File Converter Service2";
|
||||
private readonly ILog _log;
|
||||
private readonly FileConverter fileConverter;
|
||||
|
||||
public FileConverterService2()
|
||||
{
|
||||
log4net.Config.XmlConfigurator.Configure();
|
||||
_log = LogManager.GetLogger(typeof(FileConverterService2));
|
||||
|
||||
this.ServiceName = AscFileConverterServiceName;
|
||||
this.EventLog.Log = "Application";
|
||||
fileConverter = new FileConverter(System.Environment.MachineName);
|
||||
|
||||
this.CanHandlePowerEvent = false;
|
||||
this.CanHandleSessionChangeEvent = false;
|
||||
this.CanPauseAndContinue = false;
|
||||
this.CanShutdown = true;
|
||||
this.CanStop = true;
|
||||
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
protected override void OnStart(string[] args)
|
||||
{
|
||||
_log.Info("Service start");
|
||||
StartDaemon();
|
||||
base.OnStart(args);
|
||||
}
|
||||
|
||||
protected override void OnStop()
|
||||
{
|
||||
_log.Info("Service stop");
|
||||
fileConverter.Stop();
|
||||
base.OnStop();
|
||||
}
|
||||
|
||||
protected override void OnPause()
|
||||
{
|
||||
_log.Info("Service pause");
|
||||
base.OnPause();
|
||||
}
|
||||
|
||||
protected override void OnContinue()
|
||||
{
|
||||
_log.Info("Service continue");
|
||||
base.OnContinue();
|
||||
}
|
||||
|
||||
protected override void OnShutdown()
|
||||
{
|
||||
_log.Info("Service shutdown");
|
||||
fileConverter.Stop();
|
||||
base.OnShutdown();
|
||||
}
|
||||
|
||||
protected override void OnCustomCommand(int command)
|
||||
{
|
||||
|
||||
base.OnCustomCommand(command);
|
||||
}
|
||||
|
||||
protected override bool OnPowerEvent(PowerBroadcastStatus powerStatus)
|
||||
{
|
||||
if (powerStatus == PowerBroadcastStatus.Suspend)
|
||||
{
|
||||
fileConverter.Stop();
|
||||
}
|
||||
return base.OnPowerEvent(powerStatus);
|
||||
}
|
||||
|
||||
protected override void OnSessionChange(
|
||||
SessionChangeDescription changeDescription)
|
||||
{
|
||||
base.OnSessionChange(changeDescription);
|
||||
}
|
||||
|
||||
public void StartDaemon()
|
||||
{
|
||||
fileConverter.Start();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,154 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.21022</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{290A48D1-F7E2-4478-AFE6-AE5C744CD633}</ProjectGuid>
|
||||
<OutputType>Exe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>FileConverterService2</RootNamespace>
|
||||
<AssemblyName>FileConverterService2</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'DebugOpenSource|AnyCPU' ">
|
||||
<IsOpenSource>true</IsOpenSource>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE;OPEN_SOURCE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'ReleaseOpenSource|AnyCPU' ">
|
||||
<IsOpenSource>true</IsOpenSource>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE;OPEN_SOURCE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\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>
|
||||
-->
|
||||
<ItemGroup>
|
||||
<Compile Include="FileConverter.cs" />
|
||||
<Compile Include="FileConverterService2.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="FileConverterService2Installer.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="AWSSDK, Version=1.3.19.0, Culture=neutral, PublicKeyToken=cd2d24cd2bace800, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\wwwroot\Bin\AWSSDK.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="FileConverterUtils2, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\wwwroot\Bin\FileConverterUtils2.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Ionic.Zip.Reduced, Version=1.9.1.5, Culture=neutral, PublicKeyToken=edbe51ad942a3f5c, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\wwwroot\Bin\Ionic.Zip.Reduced.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\wwwroot\Bin\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MySql.Data, Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\wwwroot\Bin\MySql.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Configuration" />
|
||||
<Reference Include="System.Configuration.Install" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Runtime.Serialization">
|
||||
<RequiredTargetFramework>3.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.ServiceProcess" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Web.Extensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
<None Include="Settings.config">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<COMReference Condition=" '$(IsOpenSource)' == '' " Include="ASCGraphics">
|
||||
<Guid>{AB5F2678-2773-44C4-A637-33DFBC51233B}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Include="ASCOfficeFile">
|
||||
<Guid>{74CBF220-BF08-11DE-8A39-0800200C9A66}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Condition=" '$(IsOpenSource)' == 'true' " Include="OfficeCore">
|
||||
<Guid>{2FA8EF81-55E5-4F98-B399-2DF9A5DA5E41}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
</ItemGroup>
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>copy $(ProjectDir)bin\Release\$(TargetFileName) $(SolutionDir)..\..\wwwroot\Bin\</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -1,62 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System.ComponentModel;
|
||||
using System.Configuration.Install;
|
||||
using System.ServiceProcess;
|
||||
|
||||
namespace FileConverterService2
|
||||
{
|
||||
|
||||
[RunInstaller(true)]
|
||||
public class FileConverterServiceInstaller : Installer
|
||||
{
|
||||
|
||||
public FileConverterServiceInstaller()
|
||||
{
|
||||
ServiceProcessInstaller serviceProcessInstaller =
|
||||
new ServiceProcessInstaller();
|
||||
ServiceInstaller serviceInstaller = new ServiceInstaller();
|
||||
|
||||
serviceProcessInstaller.Account = ServiceAccount.LocalSystem;
|
||||
serviceProcessInstaller.Username = null;
|
||||
serviceProcessInstaller.Password = null;
|
||||
|
||||
serviceInstaller.DisplayName = FileConverterService2.AscFileConverterServiceName;
|
||||
serviceInstaller.StartType = ServiceStartMode.Automatic;
|
||||
|
||||
serviceInstaller.ServiceName = FileConverterService2.AscFileConverterServiceName;
|
||||
this.Installers.Add(serviceProcessInstaller);
|
||||
this.Installers.Add(serviceInstaller);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,52 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.ServiceProcess;
|
||||
|
||||
namespace FileConverterService2
|
||||
{
|
||||
class Program
|
||||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
var service = new FileConverterService2();
|
||||
if ((args.Length > 0 && args[0] == "-d") || Environment.UserInteractive)
|
||||
{
|
||||
service.StartDaemon();
|
||||
}
|
||||
else
|
||||
{
|
||||
ServiceBase.Run(service);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
[assembly: AssemblyTitle("FileConverterService2")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Ascensio System SIA")]
|
||||
[assembly: AssemblyProduct("FileConverterService2")]
|
||||
[assembly: AssemblyCopyright("Ascensio System SIA Copyright (c) 2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
[assembly: Guid("2f0ef597-725c-4954-976e-9808c513f9a5")]
|
||||
|
||||
[assembly: AssemblyVersion("1.0.0.26")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.26")]
|
||||
@@ -1,33 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<appSettings>
|
||||
<add key="utils.common.fontdir" value="D:\Subversion\AVS\Sources\AVSOfficeStudio\OfficeWebCommon\TM_Fonts_Generator\Generations\Input"/>
|
||||
<!--Access credentinals-->
|
||||
<add key="AWSAccessKey" value="AKIAJXWUXR4MUL4MKZMA"/>
|
||||
<add key="AWSSecretKey" value="U5yvGrCYkQBaw39DggsM9Ygt5VZoJ80Gok/YdeSv"/>
|
||||
|
||||
<add key="utils.storage.impl" value="fs"/>
|
||||
|
||||
<!--S3 storage settings-->
|
||||
<add key="utils.storage.s3.region" value="us-west-2"/>
|
||||
<add key="utils.storage.s3.bucketname" value="static-doc.teamlab.com"/>
|
||||
<add key="utils.storage.s3.foldername" value="storage"/>
|
||||
<add key="utils.storage.s3.readbuffersize" value="5242880" />
|
||||
|
||||
<!--Filesystem storage settings-->
|
||||
<add key="utils.storage.fs.keyfiles" value="E:\Subversion\AVS\Sources\TeamlabOffice\trunk\wwwroot\files"/>
|
||||
|
||||
<add key="utils.taskresult.impl" value="db"/>
|
||||
<add key="utils.taskresult.ttl" value="7.00:00:00"/>
|
||||
<add key="utils.taskresult.db.connectionstring" value="ConnectionString2"/>
|
||||
|
||||
<add key="utils.taskqueue.impl" value="db"/>
|
||||
<add key="utils.taskqueue.db.connectionstring" value="ConnectionString2"/>
|
||||
|
||||
<add key="utils.filestatistic.impl" value="db"/>
|
||||
<add key="utils.filestatistic.db.connectionstring" value="ConnectionString2"/>
|
||||
|
||||
<!--SQS settings-->
|
||||
<add key="utils.taskqueue.sqs.lp" value="https://sqs.us-west-2.amazonaws.com/997789372772/document-tasks-queue-high-priority" />
|
||||
<add key="utils.taskqueue.sqs.np" value="https://sqs.us-west-2.amazonaws.com/997789372772/document-tasks-queue-high-priority" />
|
||||
<add key="utils.taskqueue.sqs.hp" value="https://sqs.us-west-2.amazonaws.com/997789372772/document-tasks-queue-high-priority" />
|
||||
</appSettings>
|
||||
@@ -1,26 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "FileConverterUtils2", "FileConverterUtils2\FileConverterUtils2.csproj", "{665D791F-4A42-4EB0-A766-300783379D40}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LicenseTest", "LicenseTest\LicenseTest.csproj", "{02FD89FC-7CFB-4269-B082-5DE063F0FC37}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{665D791F-4A42-4EB0-A766-300783379D40}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{665D791F-4A42-4EB0-A766-300783379D40}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{665D791F-4A42-4EB0-A766-300783379D40}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{665D791F-4A42-4EB0-A766-300783379D40}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{02FD89FC-7CFB-4269-B082-5DE063F0FC37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{02FD89FC-7CFB-4269-B082-5DE063F0FC37}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{02FD89FC-7CFB-4269-B082-5DE063F0FC37}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{02FD89FC-7CFB-4269-B082-5DE063F0FC37}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -1,548 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Web;
|
||||
using System.IO;
|
||||
using System.Xml;
|
||||
using System.Net;
|
||||
|
||||
namespace FileConverterUtils2
|
||||
{
|
||||
#region TransportClass
|
||||
public class TransportClassMainAshx
|
||||
{
|
||||
public HttpContext m_oHttpContext;
|
||||
public AsyncCallback m_oAsyncCallback;
|
||||
public TransportClassMainAshx(HttpContext oHttpContext, AsyncCallback oAsyncCallback)
|
||||
{
|
||||
m_oHttpContext = oHttpContext;
|
||||
m_oAsyncCallback = oAsyncCallback;
|
||||
}
|
||||
}
|
||||
public abstract class TransportClassAsyncOperation
|
||||
{
|
||||
public AsyncCallback m_fCallback = null;
|
||||
public object m_oParam = null;
|
||||
public TransportClassAsyncOperation(AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
m_fCallback = fCallback;
|
||||
m_oParam = oParam;
|
||||
}
|
||||
public abstract void Close();
|
||||
public abstract void Dispose();
|
||||
public void DisposeAndCallback()
|
||||
{
|
||||
Dispose();
|
||||
FireCallback();
|
||||
}
|
||||
public void FireCallback()
|
||||
{
|
||||
m_fCallback(new AsyncOperationData(m_oParam));
|
||||
}
|
||||
}
|
||||
public class AsyncOperationData : IAsyncResult
|
||||
{
|
||||
protected bool _completed;
|
||||
protected Object _state;
|
||||
|
||||
bool IAsyncResult.IsCompleted { get { return _completed; } }
|
||||
WaitHandle IAsyncResult.AsyncWaitHandle { get { return null; } }
|
||||
Object IAsyncResult.AsyncState { get { return _state; } }
|
||||
bool IAsyncResult.CompletedSynchronously { get { return false; } }
|
||||
|
||||
public AsyncOperationData(Object state)
|
||||
{
|
||||
_state = state;
|
||||
_completed = false;
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region For action
|
||||
public class AsyncContextReadOperation
|
||||
{
|
||||
private Stream m_oStream = null;
|
||||
public byte[] m_aBuffer;
|
||||
private object m_oParam;
|
||||
private ErrorTypes m_eError = ErrorTypes.NoError;
|
||||
public AsyncContextReadOperation()
|
||||
{
|
||||
}
|
||||
public void ReadContextBegin(Stream oStream, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
try
|
||||
{
|
||||
m_oStream = oStream;
|
||||
m_oParam = oParam;
|
||||
int nInputLength = (int)m_oStream.Length;
|
||||
m_aBuffer = new byte[nInputLength];
|
||||
m_oStream.BeginRead(m_aBuffer, 0, nInputLength, fCallback, oParam);
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_eError = ErrorTypes.ReadRequestStream;
|
||||
}
|
||||
if (ErrorTypes.NoError != m_eError)
|
||||
fCallback.Invoke(new AsyncOperationData(oParam));
|
||||
}
|
||||
public ErrorTypes ReadContextEnd(IAsyncResult ar)
|
||||
{
|
||||
if (ErrorTypes.NoError == m_eError)
|
||||
{
|
||||
try
|
||||
{
|
||||
m_oStream.EndRead(ar);
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_eError = ErrorTypes.ReadRequestStream;
|
||||
}
|
||||
}
|
||||
return m_eError;
|
||||
}
|
||||
}
|
||||
public class AsyncClearCacheOperation
|
||||
{
|
||||
private string m_sKey;
|
||||
private TaskResult m_oTaskResult = new TaskResult();
|
||||
private Storage m_oStorage = new Storage();
|
||||
private ErrorTypes m_eError = ErrorTypes.NoError;
|
||||
private AsyncCallback m_fAsyncCallback;
|
||||
private object m_oParam;
|
||||
public void ClearCacheBegin(string sKey, AsyncCallback fAsyncCallback, object oParam)
|
||||
{
|
||||
m_sKey = sKey;
|
||||
m_fAsyncCallback = fAsyncCallback;
|
||||
m_oParam = oParam;
|
||||
try
|
||||
{
|
||||
m_oTaskResult.RemoveBegin(m_sKey, ClearCacheTaskResultCallback, null);
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_eError = ErrorTypes.Unknown;
|
||||
}
|
||||
}
|
||||
public ErrorTypes ClearCacheEnd(IAsyncResult ar)
|
||||
{
|
||||
return m_eError;
|
||||
}
|
||||
private void FireCallback()
|
||||
{
|
||||
m_fAsyncCallback.Invoke(new AsyncOperationData(m_oParam));
|
||||
}
|
||||
private void ClearCacheTaskResultCallback(IAsyncResult ar)
|
||||
{
|
||||
try
|
||||
{
|
||||
m_eError = m_oTaskResult.RemoveEnd(ar);
|
||||
if (ErrorTypes.NoError == m_eError)
|
||||
m_oStorage.RemovePathBegin(m_sKey, ClearCacheAllCallback, null);
|
||||
else
|
||||
FireCallback();
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_eError = ErrorTypes.Unknown;
|
||||
FireCallback();
|
||||
}
|
||||
}
|
||||
private void ClearCacheAllCallback(IAsyncResult ar)
|
||||
{
|
||||
try
|
||||
{
|
||||
m_eError = m_oStorage.RemovePathEnd(ar);
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_eError = ErrorTypes.Unknown;
|
||||
}
|
||||
FireCallback();
|
||||
}
|
||||
}
|
||||
public class AsyncMediaXmlOperation
|
||||
{
|
||||
private class TransportClass : TransportClassAsyncOperation
|
||||
{
|
||||
public string m_sPath;
|
||||
public Storage m_oStorage = new Storage();
|
||||
public MemoryStream m_oMemoryStream = new MemoryStream();
|
||||
public Dictionary<string, string> m_aMediaXmlMapHash;
|
||||
public Dictionary<string, string> m_aMediaXmlMapFilename;
|
||||
public Utils.getMD5HexStringDelegate m_ogetMD5HexStringDelegate;
|
||||
public StorageTreeNode m_oStorageTreeNode;
|
||||
public int m_nIndex;
|
||||
public int m_nLength;
|
||||
public ErrorTypes m_eError = ErrorTypes.NoError;
|
||||
public TransportClass(AsyncCallback fCallback, object oParam)
|
||||
: base(fCallback, oParam)
|
||||
{
|
||||
}
|
||||
public override void Close()
|
||||
{
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
m_eError = ErrorTypes.Unknown;
|
||||
}
|
||||
public void SetStorageTreeNode(StorageTreeNode oStorageTreeNode)
|
||||
{
|
||||
m_oStorageTreeNode = oStorageTreeNode;
|
||||
m_nIndex = -1;
|
||||
m_nLength = oStorageTreeNode.m_aSubNodes.Count;
|
||||
}
|
||||
public StorageTreeNode getNextTreeNode()
|
||||
{
|
||||
StorageTreeNode oRes = null;
|
||||
if (m_nIndex < 0)
|
||||
m_nIndex = 0;
|
||||
else
|
||||
m_nIndex++;
|
||||
if (m_nIndex < m_nLength)
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
StorageTreeNode oCurItem = m_oStorageTreeNode.m_aSubNodes[m_nIndex];
|
||||
if (false == oCurItem.m_bIsDirectory)
|
||||
{
|
||||
oRes = oCurItem;
|
||||
break;
|
||||
}
|
||||
if (m_nIndex >= m_nLength)
|
||||
break;
|
||||
m_nIndex++;
|
||||
}
|
||||
}
|
||||
return oRes;
|
||||
}
|
||||
}
|
||||
private TransportClass m_oGetMediaXml;
|
||||
private TransportClass m_oWriteMediaXml;
|
||||
public void GetMediaXmlBegin(string sPath, AsyncCallback fAsyncCallback, object oParam)
|
||||
{
|
||||
m_oGetMediaXml = new TransportClass(fAsyncCallback, oParam);
|
||||
m_oGetMediaXml.m_sPath = sPath;
|
||||
m_oGetMediaXml.m_aMediaXmlMapFilename = new Dictionary<string, string>();
|
||||
m_oGetMediaXml.m_aMediaXmlMapHash = new Dictionary<string, string>();
|
||||
|
||||
StorageFileInfo oStorageFileInfo;
|
||||
ErrorTypes eFileExist = m_oGetMediaXml.m_oStorage.GetFileInfo(sPath, out oStorageFileInfo);
|
||||
if (ErrorTypes.NoError == eFileExist && null != oStorageFileInfo)
|
||||
{
|
||||
|
||||
m_oGetMediaXml.m_oStorage.ReadFileBegin(sPath, m_oGetMediaXml.m_oMemoryStream, ReadMediaXmlCallback, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
m_oGetMediaXml.m_oStorage.GetTreeNodeBegin(Path.GetDirectoryName(sPath), GetTreeNodeCallback, null);
|
||||
}
|
||||
}
|
||||
public ErrorTypes GetMediaXmlEnd(IAsyncResult ar, out Dictionary<string, string> aMediaXmlMapHash, out Dictionary<string, string> aMediaXmlMapFilename)
|
||||
{
|
||||
aMediaXmlMapHash = m_oGetMediaXml.m_aMediaXmlMapHash;
|
||||
aMediaXmlMapFilename = m_oGetMediaXml.m_aMediaXmlMapFilename;
|
||||
return ErrorTypes.NoError;
|
||||
}
|
||||
private void ReadMediaXmlCallback(IAsyncResult ar)
|
||||
{
|
||||
try
|
||||
{
|
||||
int nReadWriteBytes;
|
||||
m_oGetMediaXml.m_eError = m_oGetMediaXml.m_oStorage.ReadFileEnd(ar, out nReadWriteBytes);
|
||||
if (ErrorTypes.NoError == m_oGetMediaXml.m_eError || ErrorTypes.StorageFileNoFound == m_oGetMediaXml.m_eError)
|
||||
{
|
||||
MemoryStream oMemoryStream = m_oGetMediaXml.m_oMemoryStream;
|
||||
if (nReadWriteBytes > 0)
|
||||
{
|
||||
string sXml = Encoding.UTF8.GetString(oMemoryStream.GetBuffer(), 0, (int)oMemoryStream.Position);
|
||||
using (XmlTextReader reader = new XmlTextReader(new StringReader(sXml)))
|
||||
{
|
||||
|
||||
while (reader.Read())
|
||||
{
|
||||
if ("image" == reader.Name)
|
||||
{
|
||||
string sHash = null;
|
||||
string sFilename = null;
|
||||
while (reader.MoveToNextAttribute())
|
||||
{
|
||||
if ("md5" == reader.Name)
|
||||
sHash = reader.Value;
|
||||
else if ("filename" == reader.Name)
|
||||
sFilename = reader.Value;
|
||||
}
|
||||
if (null != sHash && null != sFilename)
|
||||
{
|
||||
m_oGetMediaXml.m_aMediaXmlMapHash[sHash] = sFilename;
|
||||
m_oGetMediaXml.m_aMediaXmlMapFilename[sFilename] = sHash;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
m_oGetMediaXml.FireCallback();
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oGetMediaXml.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
private void GetTreeNodeCallback(IAsyncResult ar)
|
||||
{
|
||||
try
|
||||
{
|
||||
m_oGetMediaXml.SetStorageTreeNode(m_oGetMediaXml.m_oStorage.GetTreeNodeEnd(ar));
|
||||
m_oGetMediaXml.m_ogetMD5HexStringDelegate = new Utils.getMD5HexStringDelegate(Utils.getMD5HexString);
|
||||
m_oGetMediaXml.m_oMemoryStream = new MemoryStream();
|
||||
StorageTreeNode oFirstItem = m_oGetMediaXml.getNextTreeNode();
|
||||
if (null != oFirstItem)
|
||||
{
|
||||
|
||||
m_oGetMediaXml.m_oStorage.ReadFileBegin(Path.Combine(Path.GetDirectoryName(m_oGetMediaXml.m_sPath), oFirstItem.m_sName), m_oGetMediaXml.m_oMemoryStream, ReadNextMediaXmlCallback, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_oGetMediaXml.FireCallback();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oGetMediaXml.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
private void ReadNextMediaXmlCallback(IAsyncResult ar)
|
||||
{
|
||||
try
|
||||
{
|
||||
int nReadWriteBytes;
|
||||
ErrorTypes eError = m_oGetMediaXml.m_oStorage.ReadFileEnd(ar, out nReadWriteBytes);
|
||||
if (ErrorTypes.NoError == eError)
|
||||
{
|
||||
StorageTreeNode oCurNode = m_oGetMediaXml.m_oStorageTreeNode.m_aSubNodes[m_oGetMediaXml.m_nIndex];
|
||||
|
||||
m_oGetMediaXml.m_oMemoryStream.Position = 0;
|
||||
string sHex = Utils.getMD5HexString(m_oGetMediaXml.m_oMemoryStream);
|
||||
if (false == m_oGetMediaXml.m_aMediaXmlMapFilename.ContainsKey(oCurNode.m_sName))
|
||||
m_oGetMediaXml.m_aMediaXmlMapFilename.Add(oCurNode.m_sName, sHex);
|
||||
if (false == m_oGetMediaXml.m_aMediaXmlMapHash.ContainsKey(sHex))
|
||||
m_oGetMediaXml.m_aMediaXmlMapHash.Add(sHex, oCurNode.m_sName);
|
||||
oCurNode = m_oGetMediaXml.getNextTreeNode();
|
||||
if (null == oCurNode)
|
||||
{
|
||||
m_oGetMediaXml.FireCallback();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_oGetMediaXml.m_oMemoryStream = new MemoryStream();
|
||||
m_oGetMediaXml.m_oStorage.ReadFileBegin(Path.Combine(Path.GetDirectoryName(m_oGetMediaXml.m_sPath), oCurNode.m_sName), m_oGetMediaXml.m_oMemoryStream, ReadNextMediaXmlCallback, null);
|
||||
}
|
||||
}
|
||||
else
|
||||
m_oGetMediaXml.DisposeAndCallback();
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oGetMediaXml.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
public void WriteMediaXmlBegin(string sPath, Dictionary<string, string> aMediaXmlMapHash, AsyncCallback fAsyncCallback, object oParam)
|
||||
{
|
||||
m_oWriteMediaXml = new TransportClass(fAsyncCallback, oParam);
|
||||
try
|
||||
{
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
|
||||
sb.Append("<images>");
|
||||
foreach (KeyValuePair<string, string> kvp in aMediaXmlMapHash)
|
||||
sb.AppendFormat("<image md5=\"{0}\" filename=\"{1}\"/>", kvp.Key, kvp.Value);
|
||||
sb.Append("</images>");
|
||||
byte[] aBuffer = Encoding.UTF8.GetBytes(sb.ToString());
|
||||
MemoryStream ms = new MemoryStream(aBuffer);
|
||||
m_oWriteMediaXml.m_oStorage = new Storage();
|
||||
m_oWriteMediaXml.m_oStorage.WriteFileBegin(sPath, ms, fAsyncCallback, oParam);
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oWriteMediaXml.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
public ErrorTypes WriteMediaXmlEnd(IAsyncResult ar)
|
||||
{
|
||||
try
|
||||
{
|
||||
int nReadWriteBytes;
|
||||
m_oWriteMediaXml.m_eError = m_oWriteMediaXml.m_oStorage.WriteFileEnd(ar, out nReadWriteBytes);
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oWriteMediaXml.Dispose();
|
||||
}
|
||||
return m_oWriteMediaXml.m_eError;
|
||||
}
|
||||
}
|
||||
public class AsyncDownloadOperation
|
||||
{
|
||||
private int m_nMaxSize;
|
||||
private AsyncCallback m_fAsyncCallback;
|
||||
private object m_oParam;
|
||||
private WebClient m_oWebClient;
|
||||
private Stream m_oReadStream;
|
||||
private byte[] m_aBuffer;
|
||||
private MemoryStream m_oOutput;
|
||||
private ErrorTypes m_eError;
|
||||
public AsyncDownloadOperation(int nMaxSize)
|
||||
{
|
||||
m_nMaxSize = nMaxSize;
|
||||
m_eError = ErrorTypes.NoError;
|
||||
m_oWebClient = null;
|
||||
m_oReadStream = null;
|
||||
m_oOutput = null;
|
||||
}
|
||||
private void Clear()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (null != m_oWebClient)
|
||||
m_oWebClient.Dispose();
|
||||
if (null != m_oReadStream)
|
||||
m_oReadStream.Dispose();
|
||||
if (null != m_oOutput)
|
||||
m_oOutput.Dispose();
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
private void FireCallback()
|
||||
{
|
||||
if (null != m_fAsyncCallback)
|
||||
m_fAsyncCallback.Invoke(new AsyncOperationData(m_oParam));
|
||||
}
|
||||
private void ClearAndCallback()
|
||||
{
|
||||
Clear();
|
||||
FireCallback();
|
||||
}
|
||||
public void DownloadBegin(string sUrl, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
try
|
||||
{
|
||||
m_fAsyncCallback = fCallback;
|
||||
m_oParam = oParam;
|
||||
m_oWebClient = new WebClient();
|
||||
m_oWebClient.Headers.Add(HttpRequestHeader.UserAgent, Constants.mc_sWebClientUserAgent);
|
||||
m_oWebClient.OpenReadCompleted += new OpenReadCompletedEventHandler(m_oWebClient_OpenReadCompleted);
|
||||
m_oWebClient.OpenReadAsync(new Uri(sUrl));
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_eError = ErrorTypes.Upload;
|
||||
ClearAndCallback();
|
||||
}
|
||||
}
|
||||
private void m_oWebClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!e.Cancelled && e.Error == null)
|
||||
{
|
||||
m_oReadStream = e.Result;
|
||||
int nCurBytes = Convert.ToInt32(m_oWebClient.ResponseHeaders["Content-Length"]);
|
||||
if (m_nMaxSize > 0 && nCurBytes > m_nMaxSize)
|
||||
{
|
||||
m_eError = ErrorTypes.UploadContentLength;
|
||||
ClearAndCallback();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_oOutput = new MemoryStream((int)nCurBytes);
|
||||
m_aBuffer = new byte[nCurBytes];
|
||||
m_oReadStream.BeginRead(m_aBuffer, 0, nCurBytes, ReadCallback, null);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_eError = ErrorTypes.Upload;
|
||||
ClearAndCallback();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_eError = ErrorTypes.Upload;
|
||||
ClearAndCallback();
|
||||
}
|
||||
}
|
||||
private void ReadCallback(IAsyncResult ar)
|
||||
{
|
||||
try
|
||||
{
|
||||
int nBytesReaded = m_oReadStream.EndRead(ar);
|
||||
if (nBytesReaded > 0)
|
||||
{
|
||||
m_oOutput.Write(m_aBuffer, 0, nBytesReaded);
|
||||
m_oReadStream.BeginRead(m_aBuffer, 0, m_aBuffer.Length, ReadCallback, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
FireCallback();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_eError = ErrorTypes.Upload;
|
||||
ClearAndCallback();
|
||||
}
|
||||
}
|
||||
public void DownloadEnd(IAsyncResult ar, out ErrorTypes eError, out byte[] aBuffer)
|
||||
{
|
||||
eError = m_eError;
|
||||
aBuffer = null;
|
||||
try
|
||||
{
|
||||
if (ErrorTypes.NoError == m_eError)
|
||||
aBuffer = m_oOutput.ToArray();
|
||||
Clear();
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_eError = ErrorTypes.Upload;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
@@ -1,546 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Data;
|
||||
using System.Configuration;
|
||||
using System.Net;
|
||||
using System.Web.Script.Serialization;
|
||||
using System.IO;
|
||||
|
||||
using ASC.Common.Data;
|
||||
using ASC.Common.Data.Sql;
|
||||
using ASC.Common.Data.Sql.Expressions;
|
||||
|
||||
namespace FileConverterUtils2
|
||||
{
|
||||
public class Constants
|
||||
{
|
||||
public const string mc_sDateTimeFormat = "yyyy-MM-dd HH:mm:ss";
|
||||
public static System.Globalization.CultureInfo mc_oCultureInfo = new System.Globalization.CultureInfo(0x409);
|
||||
public const string mc_sResourceServiceUrlRel = "/ResourceService.ashx?path=";
|
||||
|
||||
public const string mc_sWebClientUserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; .NET CLR 1.0.3705;)";
|
||||
}
|
||||
public class Utils
|
||||
{
|
||||
private class TxtCsvPropertiesEncoding
|
||||
{
|
||||
public int codepage;
|
||||
public string name;
|
||||
public TxtCsvPropertiesEncoding(int _codepage, string _name)
|
||||
{
|
||||
codepage = _codepage;
|
||||
name = _name;
|
||||
}
|
||||
}
|
||||
private class TxtCsvProperties
|
||||
{
|
||||
public int? codepage;
|
||||
public int? delimiter;
|
||||
public List<TxtCsvPropertiesEncoding> encodings = new List<TxtCsvPropertiesEncoding>();
|
||||
}
|
||||
private static readonly System.Collections.Generic.Dictionary<string, string> _mappings = new System.Collections.Generic.Dictionary<string, string>()
|
||||
{
|
||||
{".docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"},
|
||||
{".doc", "application/msword"},
|
||||
{".odt", "application/vnd.oasis.opendocument.text"},
|
||||
{".rtf", "application/rtf"},
|
||||
{".txt", "text/plain"},
|
||||
{".html", "text/html"},
|
||||
{".mht", "message/rfc822"},
|
||||
{".epub", "application/zip"},
|
||||
{".fb2", "text/xml"},
|
||||
{".mobi", "application/x-mobipocket-ebook"},
|
||||
{".prc", "application/x-mobipocket-ebook"},
|
||||
{".pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation"},
|
||||
{".ppt", "application/vnd.ms-powerpoint"},
|
||||
{".odp", "application/vnd.oasis.opendocument.presentation"},
|
||||
{".xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"},
|
||||
{".xls", "application/vnd.ms-excel"},
|
||||
{".ods", "application/vnd.oasis.opendocument.spreadsheet"},
|
||||
{".csv", "text/csv"},
|
||||
{".pdf", "application/pdf"},
|
||||
{".swf", "application/x-shockwave-flash"},
|
||||
{".djvu", "image/vnd.djvu"},
|
||||
{".xps", "application/vnd.ms-xpsdocument"},
|
||||
{".svg", "image/svg+xml"},
|
||||
{ ".jpg", "image/jpeg" },
|
||||
{ ".jpeg", "image/jpeg" },
|
||||
{ ".jpe", "image/jpeg" },
|
||||
{ ".png", "image/png" },
|
||||
{ ".gif", "image/gif" },
|
||||
{ ".bmp", "image/bmp" },
|
||||
{ ".json", "application/json" },
|
||||
{ ".ttc", "application/octet-stream" },
|
||||
{ ".otf", "application/octet-stream" }
|
||||
};
|
||||
public delegate string getMD5HexStringDelegate(Stream stream);
|
||||
public static string getMD5HexString(Stream stream)
|
||||
{
|
||||
System.Text.StringBuilder sb = new System.Text.StringBuilder();
|
||||
using (System.Security.Cryptography.MD5 oMD5 = System.Security.Cryptography.MD5.Create())
|
||||
{
|
||||
byte[] aHash = oMD5.ComputeHash(stream);
|
||||
for (int i = 0, length = aHash.Length; i < length; ++i)
|
||||
sb.Append(aHash[i].ToString("X2"));
|
||||
}
|
||||
return sb.ToString();
|
||||
}
|
||||
public static string GetSerializedEncodingProperty(int? codepage, int? delimiter)
|
||||
{
|
||||
TxtCsvProperties oCsvProperties = new TxtCsvProperties();
|
||||
oCsvProperties.codepage = codepage;
|
||||
oCsvProperties.delimiter = delimiter;
|
||||
System.Text.EncodingInfo[] aSystemEncodings = System.Text.Encoding.GetEncodings();
|
||||
for (int i = 0; i < aSystemEncodings.Length; i++)
|
||||
{
|
||||
System.Text.EncodingInfo oEncodingInfo = aSystemEncodings[i];
|
||||
oCsvProperties.encodings.Add(new TxtCsvPropertiesEncoding(oEncodingInfo.CodePage, oEncodingInfo.DisplayName));
|
||||
}
|
||||
JavaScriptSerializer serializer = new JavaScriptSerializer();
|
||||
return serializer.Serialize(oCsvProperties);
|
||||
}
|
||||
|
||||
public static string GetIP4Address(string strUserHostAddress)
|
||||
{
|
||||
string IP4Address = String.Empty;
|
||||
|
||||
foreach (IPAddress IPA in Dns.GetHostAddresses(strUserHostAddress))
|
||||
{
|
||||
if (IPA.AddressFamily.ToString() == "InterNetwork")
|
||||
{
|
||||
IP4Address = IPA.ToString();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (IP4Address != String.Empty)
|
||||
{
|
||||
return IP4Address;
|
||||
}
|
||||
|
||||
foreach (IPAddress IPA in Dns.GetHostAddresses(Dns.GetHostName()))
|
||||
{
|
||||
if (IPA.AddressFamily.ToString() == "InterNetwork")
|
||||
{
|
||||
IP4Address = IPA.ToString();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return IP4Address;
|
||||
}
|
||||
public static string MySqlEscape(string strString, string strConnectionString)
|
||||
{
|
||||
string strConnectionProviderName = GetDbConnectionProviderName(strConnectionString);
|
||||
if (strConnectionProviderName == "System.Data.SQLite")
|
||||
return strString;
|
||||
if (strString == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return System.Text.RegularExpressions.Regex.Replace(strString, @"[\r\n\x00\x1a\\'""]", @"\$0");
|
||||
}
|
||||
private static string GetDbConnectionProviderName(string strConnectionString)
|
||||
{
|
||||
ConnectionStringSettings oConnectionSettings = ConfigurationManager.ConnectionStrings[strConnectionString];
|
||||
return oConnectionSettings.ProviderName;
|
||||
}
|
||||
public static int mapAscServerErrorToOldError(ErrorTypes eError)
|
||||
{
|
||||
int nRes = -1;
|
||||
switch(eError)
|
||||
{
|
||||
case ErrorTypes.NoError : nRes = 0;break;
|
||||
case ErrorTypes.TaskQueue :
|
||||
case ErrorTypes.TaskResult : nRes = -6;break;
|
||||
case ErrorTypes.ConvertDownload : nRes = -4;break;
|
||||
case ErrorTypes.ConvertTimeout : nRes = -2;break;
|
||||
case ErrorTypes.ConvertMS_OFFCRYPTO:
|
||||
case ErrorTypes.ConvertUnknownFormat :
|
||||
case ErrorTypes.ConvertReadFile :
|
||||
case ErrorTypes.Convert : nRes = -3;break;
|
||||
case ErrorTypes.UploadContentLength : nRes = -9;break;
|
||||
case ErrorTypes.UploadExtension : nRes = -10;break;
|
||||
case ErrorTypes.UploadCountFiles : nRes = -11;break;
|
||||
case ErrorTypes.VKey : nRes = -8;break;
|
||||
case ErrorTypes.VKeyEncrypt : nRes = -20;break;
|
||||
case ErrorTypes.VKeyKeyExpire : nRes = -21;break;
|
||||
case ErrorTypes.VKeyUserCountExceed : nRes = -22;break;
|
||||
case ErrorTypes.Storage :
|
||||
case ErrorTypes.StorageFileNoFound :
|
||||
case ErrorTypes.StorageRead :
|
||||
case ErrorTypes.StorageWrite :
|
||||
case ErrorTypes.StorageRemoveDir :
|
||||
case ErrorTypes.StorageCreateDir :
|
||||
case ErrorTypes.StorageGetInfo :
|
||||
case ErrorTypes.Upload :
|
||||
case ErrorTypes.ReadRequestStream :
|
||||
case ErrorTypes.Unknown : nRes = -1;break;
|
||||
}
|
||||
return nRes;
|
||||
}
|
||||
public static int GetFileFormat(byte[] aBuffer)
|
||||
{
|
||||
|
||||
int nLength = aBuffer.Length;
|
||||
|
||||
if ((3 <= nLength) && (0xFF == aBuffer[0]) && (0xD8 == aBuffer[1]) && (0xFF == aBuffer[2]))
|
||||
return FileFormats.AVS_OFFICESTUDIO_FILE_IMAGE_JPG;
|
||||
|
||||
if ((34 <= nLength) && (0x42 == aBuffer[0]) && (0x4D == aBuffer[1]) &&
|
||||
(0x00 == aBuffer[6]) && (0x00 == aBuffer[7]) && (0x01 == aBuffer[26]) && (0x00 == aBuffer[27]) &&
|
||||
((0x00 == aBuffer[28]) || (0x01 == aBuffer[28]) || (0x04 == aBuffer[28]) || (0x08 == aBuffer[28]) ||
|
||||
(0x10 == aBuffer[28]) || (0x18 == aBuffer[28]) || (0x20 == aBuffer[28])) && (0x00 == aBuffer[29]) &&
|
||||
((0x00 == aBuffer[30]) || (0x01 == aBuffer[30]) || (0x02 == aBuffer[30]) || (0x03 == aBuffer[30]) ||
|
||||
(0x04 == aBuffer[30]) || (0x05 == aBuffer[30])) && (0x00 == aBuffer[31]) && (0x00 == aBuffer[32]) && (0x00 == aBuffer[33]))
|
||||
return FileFormats.AVS_OFFICESTUDIO_FILE_IMAGE_BMP;
|
||||
|
||||
if ((4 <= nLength) && "GIF8" == System.Text.Encoding.ASCII.GetString(aBuffer, 0, "GIF8".Length))
|
||||
return FileFormats.AVS_OFFICESTUDIO_FILE_IMAGE_GIF;
|
||||
if ((6 <= nLength) && ("GIF87a" == System.Text.Encoding.ASCII.GetString(aBuffer, 0, "GIF87a".Length) || "GIF89a" == System.Text.Encoding.ASCII.GetString(aBuffer, 0, "GIF89a".Length)))
|
||||
return FileFormats.AVS_OFFICESTUDIO_FILE_IMAGE_GIF;
|
||||
|
||||
if ((16 <= nLength) && (0x89 == aBuffer[0]) && (0x50 == aBuffer[1]) && (0x4E == aBuffer[2]) && (0x47 == aBuffer[3])
|
||||
&& (0x0D == aBuffer[4]) && (0x0A == aBuffer[5]) && (0x1A == aBuffer[6]) && (0x0A == aBuffer[7])
|
||||
&& (0x00 == aBuffer[8]) && (0x00 == aBuffer[9]) && (0x00 == aBuffer[10]) && (0x0D == aBuffer[11])
|
||||
&& (0x49 == aBuffer[12]) && (0x48 == aBuffer[13]) && (0x44 == aBuffer[14]) && (0x52 == aBuffer[15]))
|
||||
return FileFormats.AVS_OFFICESTUDIO_FILE_IMAGE_PNG;
|
||||
|
||||
if ((10 <= nLength) && (0x49 == aBuffer[0]) && (0x49 == aBuffer[1]) && (0x2A == aBuffer[2])
|
||||
&& (0x00 == aBuffer[3]) && (0x10 == aBuffer[4]) && (0x00 == aBuffer[5]) && (0x00 == aBuffer[6])
|
||||
&& (0x00 == aBuffer[7]) && (0x43 == aBuffer[8]) && (0x52 == aBuffer[9]))
|
||||
return FileFormats.AVS_OFFICESTUDIO_FILE_IMAGE_CR2;
|
||||
|
||||
if (4 <= nLength)
|
||||
{
|
||||
if (((0x49 == aBuffer[0]) && (0x49 == aBuffer[1]) && (0x2A == aBuffer[2]) && (0x00 == aBuffer[3])) ||
|
||||
((0x4D == aBuffer[0]) && (0x4D == aBuffer[1]) && (0x00 == aBuffer[2]) && (0x2A == aBuffer[3])) ||
|
||||
((0x49 == aBuffer[0]) && (0x49 == aBuffer[1]) && (0x2A == aBuffer[2]) && (0x00 == aBuffer[3])))
|
||||
return FileFormats.AVS_OFFICESTUDIO_FILE_IMAGE_TIFF;
|
||||
}
|
||||
|
||||
if (6 <= nLength)
|
||||
{
|
||||
if (((0xD7 == aBuffer[0]) && (0xCD == aBuffer[1]) && (0xC6 == aBuffer[2]) && (0x9A == aBuffer[3]) && (0x00 == aBuffer[4]) && (0x00 == aBuffer[5])) ||
|
||||
((0x01 == aBuffer[0]) && (0x00 == aBuffer[1]) && (0x09 == aBuffer[2]) && (0x00 == aBuffer[3]) && (0x00 == aBuffer[4]) && (0x03 == aBuffer[5])))
|
||||
return FileFormats.AVS_OFFICESTUDIO_FILE_IMAGE_WMF;
|
||||
}
|
||||
|
||||
if ((44 <= nLength) && (0x01 == aBuffer[0]) && (0x00 == aBuffer[1]) && (0x00 == aBuffer[2]) && (0x00 == aBuffer[3]) &&
|
||||
(0x20 == aBuffer[40]) && (0x45 == aBuffer[41]) && (0x4D == aBuffer[42]) && (0x46 == aBuffer[43]))
|
||||
return FileFormats.AVS_OFFICESTUDIO_FILE_IMAGE_EMF;
|
||||
|
||||
if ((4 <= nLength) && (0x0A == aBuffer[0]) && (0x00 == aBuffer[1] || 0x01 == aBuffer[1] ||
|
||||
0x02 == aBuffer[1] || 0x03 == aBuffer[1] || 0x04 == aBuffer[1] || 0x05 == aBuffer[1]) &&
|
||||
(0x01 == aBuffer[3] || 0x02 == aBuffer[3] || 0x04 == aBuffer[3] || 0x08 == aBuffer[3]))
|
||||
return FileFormats.AVS_OFFICESTUDIO_FILE_IMAGE_PCX;
|
||||
|
||||
if ((17 <= nLength) && ((0x01 == aBuffer[1] && 0x01 == aBuffer[2]) || (0x00 == aBuffer[1] && 0x02 == aBuffer[2]) ||
|
||||
(0x00 == aBuffer[1] && 0x03 == aBuffer[2]) || (0x01 == aBuffer[1] && 0x09 == aBuffer[2]) ||
|
||||
(0x00 == aBuffer[1] && 0x0A == aBuffer[2]) || (0x00 == aBuffer[1] && 0x0B == aBuffer[2]))
|
||||
&& (0x08 == aBuffer[16] || 0x10 == aBuffer[16] || 0x18 == aBuffer[16] || 0x20 == aBuffer[16]))
|
||||
return FileFormats.AVS_OFFICESTUDIO_FILE_IMAGE_TGA;
|
||||
|
||||
if ((4 <= nLength) && (0x59 == aBuffer[0]) && (0xA6 == aBuffer[1]) && (0x6A == aBuffer[2]) && (0x95 == aBuffer[3]))
|
||||
return FileFormats.AVS_OFFICESTUDIO_FILE_IMAGE_RAS;
|
||||
|
||||
if ((13 <= nLength) && (0x38 == aBuffer[0]) && (0x42 == aBuffer[1]) && (0x50 == aBuffer[2])
|
||||
&& (0x53 == aBuffer[3]) && (0x00 == aBuffer[4]) && (0x01 == aBuffer[5]) && (0x00 == aBuffer[6])
|
||||
&& (0x00 == aBuffer[7]) && (0x00 == aBuffer[8]) && (0x00 == aBuffer[9]) && (0x00 == aBuffer[10])
|
||||
&& (0x00 == aBuffer[11]) && (0x00 == aBuffer[12]))
|
||||
return FileFormats.AVS_OFFICESTUDIO_FILE_IMAGE_PSD;
|
||||
|
||||
if ((4 <= nLength) && "<svg" == System.Text.Encoding.ASCII.GetString(aBuffer, 0, "<svg".Length))
|
||||
return FileFormats.AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_SVG;
|
||||
|
||||
return FileFormats.AVS_OFFICESTUDIO_FILE_UNKNOWN;
|
||||
}
|
||||
public static string GetMimeType(string sPath)
|
||||
{
|
||||
string sExt = Path.GetExtension(sPath).ToLower();
|
||||
string mime;
|
||||
return _mappings.TryGetValue(sExt, out mime) ? mime : "application/octet-stream";
|
||||
}
|
||||
}
|
||||
public class FileFormats
|
||||
{
|
||||
public static int FromString(string sFormat)
|
||||
{
|
||||
switch (sFormat.ToLower())
|
||||
{
|
||||
case "docx": return AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX;
|
||||
case "doc": return AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC;
|
||||
case "odt": return AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT;
|
||||
case "rtf": return AVS_OFFICESTUDIO_FILE_DOCUMENT_RTF;
|
||||
case "txt": return AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT;
|
||||
case "html": return AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML;
|
||||
case "mht": return AVS_OFFICESTUDIO_FILE_DOCUMENT_MHT;
|
||||
case "epub": return AVS_OFFICESTUDIO_FILE_DOCUMENT_EPUB;
|
||||
case "fb2": return AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2;
|
||||
case "mobi": return AVS_OFFICESTUDIO_FILE_DOCUMENT_MOBI;
|
||||
|
||||
case "pptx": return AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX;
|
||||
case "ppt": return AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT;
|
||||
case "odp": return AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP;
|
||||
|
||||
case "xlsx": return AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX;
|
||||
case "xls": return AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS;
|
||||
case "ods": return AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS;
|
||||
case "csv": return AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV;
|
||||
|
||||
case "jpeg":
|
||||
case "jpe":
|
||||
case "jpg": return AVS_OFFICESTUDIO_FILE_IMAGE_JPG;
|
||||
case "tif":
|
||||
case "tiff": return AVS_OFFICESTUDIO_FILE_IMAGE_TIFF;
|
||||
case "tga": return AVS_OFFICESTUDIO_FILE_IMAGE_TGA;
|
||||
case "gif": return AVS_OFFICESTUDIO_FILE_IMAGE_GIF;
|
||||
case "png": return AVS_OFFICESTUDIO_FILE_IMAGE_PNG;
|
||||
case "emf": return AVS_OFFICESTUDIO_FILE_IMAGE_EMF;
|
||||
case "wmf": return AVS_OFFICESTUDIO_FILE_IMAGE_WMF;
|
||||
case "bmp": return AVS_OFFICESTUDIO_FILE_IMAGE_BMP;
|
||||
case "cr2": return AVS_OFFICESTUDIO_FILE_IMAGE_CR2;
|
||||
case "pcx": return AVS_OFFICESTUDIO_FILE_IMAGE_PCX;
|
||||
case "ras": return AVS_OFFICESTUDIO_FILE_IMAGE_RAS ;
|
||||
case "psd": return AVS_OFFICESTUDIO_FILE_IMAGE_PSD;
|
||||
|
||||
case "pdf": return AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF;
|
||||
case "swf": return AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_SWF;
|
||||
case "djvu": return AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU;
|
||||
case "xps": return AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS;
|
||||
case "svg": return AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_SVG;
|
||||
case "htmlr": return AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLR;
|
||||
case "doct": return AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY;
|
||||
case "xlst": return AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY;
|
||||
case "pptt": return AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY;
|
||||
default: return AVS_OFFICESTUDIO_FILE_UNKNOWN;
|
||||
}
|
||||
}
|
||||
public static string ToString(int nFormat)
|
||||
{
|
||||
switch (nFormat)
|
||||
{
|
||||
case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX: return "docx";
|
||||
case AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC: return "doc";
|
||||
case AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT: return "odt";
|
||||
case AVS_OFFICESTUDIO_FILE_DOCUMENT_RTF: return "rtf";
|
||||
case AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT: return "txt";
|
||||
case AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML: return "html";
|
||||
case AVS_OFFICESTUDIO_FILE_DOCUMENT_MHT: return "mht";
|
||||
case AVS_OFFICESTUDIO_FILE_DOCUMENT_EPUB: return "epub";
|
||||
case AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2: return "fb2";
|
||||
case AVS_OFFICESTUDIO_FILE_DOCUMENT_MOBI: return "mobi";
|
||||
|
||||
case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX: return "pptx";
|
||||
case AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT: return "ppt";
|
||||
case AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP: return "odp";
|
||||
|
||||
case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX: return "xlsx";
|
||||
case AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS: return "xls";
|
||||
case AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS: return "ods";
|
||||
case AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV: return "csv";
|
||||
|
||||
case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF: return "pdf";
|
||||
case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_SWF: return "swf";
|
||||
case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU: return "djvu";
|
||||
case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS: return "xps";
|
||||
case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_SVG: return "svg";
|
||||
case AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLR: return "htmlr";
|
||||
|
||||
case AVS_OFFICESTUDIO_FILE_OTHER_HTMLZIP: return "zip";
|
||||
|
||||
case AVS_OFFICESTUDIO_FILE_IMAGE: return "jpg";
|
||||
case AVS_OFFICESTUDIO_FILE_IMAGE_JPG: return "jpg";
|
||||
case AVS_OFFICESTUDIO_FILE_IMAGE_TIFF: return "tiff";
|
||||
case AVS_OFFICESTUDIO_FILE_IMAGE_TGA: return "tga";
|
||||
case AVS_OFFICESTUDIO_FILE_IMAGE_GIF: return "gif";
|
||||
case AVS_OFFICESTUDIO_FILE_IMAGE_PNG: return "png";
|
||||
case AVS_OFFICESTUDIO_FILE_IMAGE_EMF: return "emf";
|
||||
case AVS_OFFICESTUDIO_FILE_IMAGE_WMF: return "wmf";
|
||||
case AVS_OFFICESTUDIO_FILE_IMAGE_BMP: return "bmp";
|
||||
case AVS_OFFICESTUDIO_FILE_IMAGE_CR2: return "cr2";
|
||||
case AVS_OFFICESTUDIO_FILE_IMAGE_PCX: return "pcx";
|
||||
case AVS_OFFICESTUDIO_FILE_IMAGE_RAS: return "ras";
|
||||
case AVS_OFFICESTUDIO_FILE_IMAGE_PSD: return "psd";
|
||||
|
||||
case AVS_OFFICESTUDIO_FILE_CANVAS_WORD:
|
||||
case AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET:
|
||||
case AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION: return "bin";
|
||||
case AVS_OFFICESTUDIO_FILE_OTHER_OLD_DOCUMENT:
|
||||
case AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY: return "doct";
|
||||
case AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY: return "xlst";
|
||||
case AVS_OFFICESTUDIO_FILE_OTHER_OLD_PRESENTATION:
|
||||
case AVS_OFFICESTUDIO_FILE_OTHER_OLD_DRAWING:
|
||||
case AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY: return "pptt";
|
||||
default: return "";
|
||||
}
|
||||
}
|
||||
public const int AVS_OFFICESTUDIO_FILE_UNKNOWN = 0x0000;
|
||||
|
||||
public const int AVS_OFFICESTUDIO_FILE_DOCUMENT = 0x0040;
|
||||
public const int AVS_OFFICESTUDIO_FILE_DOCUMENT_DOCX = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0001;
|
||||
public const int AVS_OFFICESTUDIO_FILE_DOCUMENT_DOC = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0002;
|
||||
public const int AVS_OFFICESTUDIO_FILE_DOCUMENT_ODT = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0003;
|
||||
public const int AVS_OFFICESTUDIO_FILE_DOCUMENT_RTF = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0004;
|
||||
public const int AVS_OFFICESTUDIO_FILE_DOCUMENT_TXT = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0005;
|
||||
public const int AVS_OFFICESTUDIO_FILE_DOCUMENT_HTML = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0006;
|
||||
public const int AVS_OFFICESTUDIO_FILE_DOCUMENT_MHT = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0007;
|
||||
public const int AVS_OFFICESTUDIO_FILE_DOCUMENT_EPUB = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0008;
|
||||
public const int AVS_OFFICESTUDIO_FILE_DOCUMENT_FB2 = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x0009;
|
||||
public const int AVS_OFFICESTUDIO_FILE_DOCUMENT_MOBI = AVS_OFFICESTUDIO_FILE_DOCUMENT + 0x000a;
|
||||
|
||||
public const int AVS_OFFICESTUDIO_FILE_PRESENTATION = 0x0080;
|
||||
public const int AVS_OFFICESTUDIO_FILE_PRESENTATION_PPTX = AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0001;
|
||||
public const int AVS_OFFICESTUDIO_FILE_PRESENTATION_PPT = AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0002;
|
||||
public const int AVS_OFFICESTUDIO_FILE_PRESENTATION_ODP = AVS_OFFICESTUDIO_FILE_PRESENTATION + 0x0003;
|
||||
|
||||
public const int AVS_OFFICESTUDIO_FILE_SPREADSHEET = 0x0100;
|
||||
public const int AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLSX = AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0001;
|
||||
public const int AVS_OFFICESTUDIO_FILE_SPREADSHEET_XLS = AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0002;
|
||||
public const int AVS_OFFICESTUDIO_FILE_SPREADSHEET_ODS = AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0003;
|
||||
public const int AVS_OFFICESTUDIO_FILE_SPREADSHEET_CSV = AVS_OFFICESTUDIO_FILE_SPREADSHEET + 0x0004;
|
||||
|
||||
public const int AVS_OFFICESTUDIO_FILE_CROSSPLATFORM = 0x0200;
|
||||
public const int AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_PDF = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0001;
|
||||
public const int AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_SWF = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0002;
|
||||
public const int AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0003;
|
||||
public const int AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_XPS = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0004;
|
||||
public const int AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_SVG = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0005;
|
||||
public const int AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLR = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0006;
|
||||
public const int AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLRMenu = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0007;
|
||||
public const int AVS_OFFICESTUDIO_FILE_CROSSPLATFORM_HTMLRCanvas = AVS_OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0008;
|
||||
|
||||
public const int AVS_OFFICESTUDIO_FILE_IMAGE = 0x0400;
|
||||
public const int AVS_OFFICESTUDIO_FILE_IMAGE_JPG = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0001;
|
||||
public const int AVS_OFFICESTUDIO_FILE_IMAGE_TIFF = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0002;
|
||||
public const int AVS_OFFICESTUDIO_FILE_IMAGE_TGA = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0003;
|
||||
public const int AVS_OFFICESTUDIO_FILE_IMAGE_GIF = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0004;
|
||||
public const int AVS_OFFICESTUDIO_FILE_IMAGE_PNG = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0005;
|
||||
public const int AVS_OFFICESTUDIO_FILE_IMAGE_EMF = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0006;
|
||||
public const int AVS_OFFICESTUDIO_FILE_IMAGE_WMF = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0007;
|
||||
public const int AVS_OFFICESTUDIO_FILE_IMAGE_BMP = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0008;
|
||||
public const int AVS_OFFICESTUDIO_FILE_IMAGE_CR2 = AVS_OFFICESTUDIO_FILE_IMAGE + 0x0009;
|
||||
public const int AVS_OFFICESTUDIO_FILE_IMAGE_PCX = AVS_OFFICESTUDIO_FILE_IMAGE + 0x000a;
|
||||
public const int AVS_OFFICESTUDIO_FILE_IMAGE_RAS = AVS_OFFICESTUDIO_FILE_IMAGE + 0x000b;
|
||||
public const int AVS_OFFICESTUDIO_FILE_IMAGE_PSD = AVS_OFFICESTUDIO_FILE_IMAGE + 0x000c;
|
||||
|
||||
public const int AVS_OFFICESTUDIO_FILE_OTHER = 0x0800;
|
||||
public const int AVS_OFFICESTUDIO_FILE_OTHER_EXTRACT_IMAGE = AVS_OFFICESTUDIO_FILE_OTHER + 0x0001;
|
||||
public const int AVS_OFFICESTUDIO_FILE_OTHER_MS_OFFCRYPTO = AVS_OFFICESTUDIO_FILE_OTHER + 0x0002;
|
||||
public const int AVS_OFFICESTUDIO_FILE_OTHER_HTMLZIP = AVS_OFFICESTUDIO_FILE_OTHER + 0x0003;
|
||||
public const int AVS_OFFICESTUDIO_FILE_OTHER_OLD_DOCUMENT = AVS_OFFICESTUDIO_FILE_OTHER + 0x0004;
|
||||
public const int AVS_OFFICESTUDIO_FILE_OTHER_OLD_PRESENTATION = AVS_OFFICESTUDIO_FILE_OTHER + 0x0005;
|
||||
public const int AVS_OFFICESTUDIO_FILE_OTHER_OLD_DRAWING = AVS_OFFICESTUDIO_FILE_OTHER + 0x0006;
|
||||
|
||||
public const int AVS_OFFICESTUDIO_FILE_TEAMLAB = 0x1000;
|
||||
public const int AVS_OFFICESTUDIO_FILE_TEAMLAB_DOCY = AVS_OFFICESTUDIO_FILE_TEAMLAB + 0x0001;
|
||||
public const int AVS_OFFICESTUDIO_FILE_TEAMLAB_XLSY = AVS_OFFICESTUDIO_FILE_TEAMLAB + 0x0002;
|
||||
public const int AVS_OFFICESTUDIO_FILE_TEAMLAB_PPTY = AVS_OFFICESTUDIO_FILE_TEAMLAB + 0x0003;
|
||||
|
||||
public const int AVS_OFFICESTUDIO_FILE_CANVAS = 0x2000;
|
||||
public const int AVS_OFFICESTUDIO_FILE_CANVAS_WORD = AVS_OFFICESTUDIO_FILE_CANVAS + 0x0001;
|
||||
public const int AVS_OFFICESTUDIO_FILE_CANVAS_SPREADSHEET = AVS_OFFICESTUDIO_FILE_CANVAS + 0x0002;
|
||||
public const int AVS_OFFICESTUDIO_FILE_CANVAS_PRESENTATION = AVS_OFFICESTUDIO_FILE_CANVAS + 0x0003;
|
||||
}
|
||||
public enum FileStatus : byte
|
||||
{
|
||||
None = 0,
|
||||
Ok = 1,
|
||||
WaitQueue = 2,
|
||||
NeedParams = 3,
|
||||
Convert = 4,
|
||||
Err = 5,
|
||||
ErrToReload = 6
|
||||
};
|
||||
public enum ErrorTypes : int
|
||||
{
|
||||
NoError = 0,
|
||||
Unknown = -1,
|
||||
ReadRequestStream = -3,
|
||||
TaskQueue = -20,
|
||||
TaskResult = -40,
|
||||
Storage = -60,
|
||||
StorageFileNoFound = -61,
|
||||
StorageRead = -62,
|
||||
StorageWrite = -63,
|
||||
StorageRemoveDir = -64,
|
||||
StorageCreateDir = -65,
|
||||
StorageGetInfo = -66,
|
||||
Convert = -80,
|
||||
ConvertDownload = -81,
|
||||
ConvertUnknownFormat = -82,
|
||||
ConvertTimeout = -83,
|
||||
ConvertReadFile = -84,
|
||||
ConvertMS_OFFCRYPTO = -85,
|
||||
Upload = -100,
|
||||
UploadContentLength = -101,
|
||||
UploadExtension = -102,
|
||||
UploadCountFiles = -103,
|
||||
VKey = -120,
|
||||
VKeyEncrypt = -121,
|
||||
VKeyKeyExpire = -122,
|
||||
VKeyUserCountExceed = -123,
|
||||
VKeyTimeExpire = -124,
|
||||
VKeyTimeIncorrect = -125,
|
||||
LicenseError = -140,
|
||||
LicenseErrorType = -141,
|
||||
LicenseErrorArgument = -142,
|
||||
LicenseErrorPermission = -143,
|
||||
LicenseErrorActiveConnectionQuotaExceed = -144,
|
||||
LicenseErrorInvalidDate = -145,
|
||||
LicenseErrorFile = -146
|
||||
};
|
||||
|
||||
public enum CsvDelimiter : int
|
||||
{
|
||||
None = 0,
|
||||
Tab = 1,
|
||||
Semicolon = 2,
|
||||
Сolon = 3,
|
||||
Comma = 4,
|
||||
Space = 5
|
||||
}
|
||||
public enum Priority : int
|
||||
{
|
||||
Low = 0,
|
||||
Normal = 1,
|
||||
High = 2
|
||||
};
|
||||
public enum PostMessageType : int
|
||||
{
|
||||
UploadImage = 0
|
||||
};
|
||||
}
|
||||
@@ -1,111 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.21022</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{665D791F-4A42-4EB0-A766-300783379D40}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>FileConverterUtils2</RootNamespace>
|
||||
<AssemblyName>FileConverterUtils2</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="ASC.Common, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\wwwroot\Bin\ASC.Common.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="ASC.Core.Common, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\wwwroot\Bin\ASC.Core.Common.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="AWSSDK, Version=1.5.2.2, Culture=neutral, PublicKeyToken=cd2d24cd2bace800, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\wwwroot\Bin\AWSSDK.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="Enyim.Caching, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\wwwroot\Bin\Enyim.Caching.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\wwwroot\Bin\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="MySql.Data, Version=6.3.6.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\..\..\wwwroot\Bin\MySql.Data.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.configuration" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Security" />
|
||||
<Reference Include="System.ServiceModel">
|
||||
<RequiredTargetFramework>3.0</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Web.Extensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="AsyncOperation.cs" />
|
||||
<Compile Include="FileConverterUtils2.cs" />
|
||||
<Compile Include="LicenseInfo.cs" />
|
||||
<Compile Include="LicenseMerger.cs" />
|
||||
<Compile Include="LicenseReader.cs" />
|
||||
<Compile Include="LicenseUtils.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="QueueData.cs" />
|
||||
<Compile Include="Storage.cs" />
|
||||
<Compile Include="TaskQueue.cs" />
|
||||
<Compile Include="TaskResult.cs" />
|
||||
<Compile Include="TaskResultCachedDB.cs" />
|
||||
<Compile Include="TaskResultDB.cs" />
|
||||
<Compile Include="TrackingInfo.cs" />
|
||||
<Compile Include="VariousUtils.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<WCFMetadata Include="Service References\" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\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>
|
||||
-->
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>copy $(TargetPath) $(ProjectDir)..\..\..\wwwroot\Bin\</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -1,242 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Configuration;
|
||||
|
||||
namespace FileConverterUtils2
|
||||
{
|
||||
|
||||
public abstract class LicenseInfo
|
||||
{
|
||||
protected DateTime m_dtBuildTime;
|
||||
|
||||
public enum EditorType : int
|
||||
{
|
||||
Word = 0,
|
||||
Spreadsheet = 1,
|
||||
Presentation = 2,
|
||||
Convertation = 3
|
||||
}
|
||||
|
||||
public enum LicenseType : int
|
||||
{
|
||||
NoValidation = 0,
|
||||
ByVKey = 1,
|
||||
ByUserCount = 2,
|
||||
ByActiveConnections = 3,
|
||||
ByTimeUsage = 4,
|
||||
ByDocumentSessions = 5,
|
||||
OpenSource = 6,
|
||||
ByUserCount2 = 7,
|
||||
|
||||
};
|
||||
public class LicenseRights
|
||||
{
|
||||
private bool _bCanOpen;
|
||||
private bool _bCanSave;
|
||||
private bool _bCanCoAuthoring;
|
||||
private bool _bCanExport;
|
||||
private bool _bCanPrint;
|
||||
private bool _bCanBranding;
|
||||
|
||||
public bool CanOpen
|
||||
{
|
||||
get { return _bCanOpen; }
|
||||
set { _bCanOpen = value; }
|
||||
}
|
||||
public bool CanSave
|
||||
{
|
||||
get { return _bCanSave; }
|
||||
set { _bCanSave = value; }
|
||||
}
|
||||
public bool CanCoAuthoring
|
||||
{
|
||||
get { return _bCanCoAuthoring; }
|
||||
set { _bCanCoAuthoring = value; }
|
||||
}
|
||||
public bool CanExport
|
||||
{
|
||||
get { return _bCanExport; }
|
||||
set { _bCanExport = value; }
|
||||
}
|
||||
public bool CanPrint
|
||||
{
|
||||
get { return _bCanPrint; }
|
||||
set { _bCanPrint = value; }
|
||||
}
|
||||
public bool CanBranding
|
||||
{
|
||||
get { return _bCanBranding; }
|
||||
set { _bCanBranding = value; }
|
||||
}
|
||||
public LicenseRights()
|
||||
{
|
||||
_bCanOpen = true;
|
||||
_bCanSave = false;
|
||||
_bCanCoAuthoring = false;
|
||||
_bCanExport = false;
|
||||
_bCanPrint = true;
|
||||
_bCanBranding = false;
|
||||
}
|
||||
public LicenseRights(bool bIsAllEnabled)
|
||||
: this()
|
||||
{
|
||||
if (bIsAllEnabled)
|
||||
{
|
||||
_bCanOpen = true;
|
||||
_bCanSave = true;
|
||||
_bCanCoAuthoring = true;
|
||||
_bCanExport = true;
|
||||
_bCanPrint = true;
|
||||
_bCanBranding = true;
|
||||
}
|
||||
}
|
||||
};
|
||||
public class LicenseMetaData
|
||||
{
|
||||
private string _strVKey;
|
||||
private string _strDocId;
|
||||
private string _strUserId;
|
||||
private bool _bCheckIP;
|
||||
private string _strCurrentIP;
|
||||
private int _nEditorId;
|
||||
|
||||
public string VKey
|
||||
{
|
||||
get { return _strVKey; }
|
||||
set { _strVKey = value; }
|
||||
}
|
||||
public string DocId
|
||||
{
|
||||
get { return _strDocId; }
|
||||
set { _strDocId = value; }
|
||||
}
|
||||
public string UserId
|
||||
{
|
||||
get { return _strUserId; }
|
||||
set { _strUserId = value; }
|
||||
}
|
||||
public bool IsCheckIP
|
||||
{
|
||||
get { return _bCheckIP; }
|
||||
set { _bCheckIP = value; }
|
||||
}
|
||||
public string CurrentIP
|
||||
{
|
||||
get { return _strCurrentIP; }
|
||||
set { _strCurrentIP = value; }
|
||||
}
|
||||
public int EditorId
|
||||
{
|
||||
get { return _nEditorId; }
|
||||
set { _nEditorId = value; }
|
||||
}
|
||||
|
||||
public LicenseMetaData(string vkey, string docId, string userId, int editorId)
|
||||
{
|
||||
_strVKey = vkey;
|
||||
|
||||
_strDocId = docId;
|
||||
if (null == _strDocId || _strDocId == "")
|
||||
_strDocId = "doc";
|
||||
|
||||
_strUserId = userId;
|
||||
if (null == _strUserId || _strUserId == "")
|
||||
_strUserId = "usr";
|
||||
|
||||
_nEditorId = editorId;
|
||||
}
|
||||
};
|
||||
public class LicenseCustomerInfo
|
||||
{
|
||||
public string customer;
|
||||
public string customer_addr;
|
||||
public string customer_www;
|
||||
public string customer_mail;
|
||||
public string customer_info;
|
||||
public string customer_logo;
|
||||
}
|
||||
|
||||
protected LicenseInfo()
|
||||
{
|
||||
}
|
||||
|
||||
public static LicenseInfo CreateLicenseInfo(DateTime buildTime)
|
||||
{
|
||||
|
||||
return new OpenSourceLicenseInfo();
|
||||
|
||||
}
|
||||
|
||||
public abstract LicenseCustomerInfo getCustomerInfo();
|
||||
|
||||
public abstract LicenseRights getRights(LicenseMetaData metaData, out ErrorTypes errorCode);
|
||||
|
||||
public static bool isPaid(string vkey)
|
||||
{
|
||||
bool bPaid;
|
||||
Signature.getVKeyParams(vkey, out bPaid);
|
||||
return bPaid;
|
||||
}
|
||||
protected DateTime getBuildTime()
|
||||
{
|
||||
return m_dtBuildTime;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public class OpenSourceLicenseInfo : LicenseInfo
|
||||
{
|
||||
public override LicenseRights getRights(LicenseMetaData metaData, out ErrorTypes errorCode)
|
||||
{
|
||||
LicenseRights oRights = new LicenseRights(true);
|
||||
errorCode = ErrorTypes.NoError;
|
||||
return oRights;
|
||||
}
|
||||
public override LicenseCustomerInfo getCustomerInfo()
|
||||
{
|
||||
LicenseCustomerInfo info = new LicenseCustomerInfo();
|
||||
info.customer = "Licensed under GNU Affero General Public License v3.0";
|
||||
info.customer_addr = null;
|
||||
info.customer_www = "http://www.gnu.org/licenses/agpl-3.0.html";
|
||||
info.customer_mail = null;
|
||||
info.customer_info = null;
|
||||
info.customer_logo = null;
|
||||
|
||||
return info;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,43 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using System.Xml;
|
||||
|
||||
namespace FileConverterUtils2
|
||||
{
|
||||
|
||||
}
|
||||
@@ -1,44 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.Xml;
|
||||
using System.Xml;
|
||||
|
||||
namespace FileConverterUtils2
|
||||
{
|
||||
|
||||
}
|
||||
@@ -1,49 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Security.Cryptography;
|
||||
using System.Security.Cryptography.Xml;
|
||||
using System.Xml;
|
||||
using System.IO;
|
||||
|
||||
namespace FileConverterUtils2
|
||||
{
|
||||
|
||||
public class LicenseUtils
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
[assembly: AssemblyTitle("FileConverterUtils2")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Ascensio System SIA")]
|
||||
[assembly: AssemblyProduct("FileConverterUtils2")]
|
||||
[assembly: AssemblyCopyright("Ascensio System SIA Copyright (c) 2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
[assembly: Guid("9a6d8058-b3ef-4586-8492-0136f44cedd5")]
|
||||
|
||||
[assembly: AssemblyVersion("1.0.0.45")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.45")]
|
||||
@@ -1,46 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace FileConverterUtils2
|
||||
{
|
||||
public abstract class IQueueData
|
||||
{
|
||||
public abstract string SerializeToXml();
|
||||
public abstract byte[] SerializeToBinary();
|
||||
public abstract void DeserializeFromBinary(byte[] aBuffer);
|
||||
public abstract void DeserializeFromXml(string sXml);
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,891 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using System.Configuration;
|
||||
using System.Runtime.Serialization;
|
||||
using System.Threading;
|
||||
using System.Data;
|
||||
using log4net;
|
||||
|
||||
namespace FileConverterUtils2
|
||||
{
|
||||
[Serializable()]
|
||||
public class TaskQueueData
|
||||
{
|
||||
public string m_sKey;
|
||||
public int m_nToFormat;
|
||||
public string m_sToFile;
|
||||
|
||||
public string m_sFromFormat = "";
|
||||
public string m_sFromUrl;
|
||||
public string m_sFromKey;
|
||||
|
||||
public object m_oDataKey;
|
||||
|
||||
public string m_sToUrl;
|
||||
public int? m_nCsvTxtEncoding;
|
||||
public int? m_nCsvDelimiter;
|
||||
public bool? m_bFromOrigin;
|
||||
public bool? m_bFromChanges;
|
||||
public bool? m_bPaid;
|
||||
public bool? m_bEmbeddedFonts;
|
||||
public TaskQueueData()
|
||||
{
|
||||
}
|
||||
public TaskQueueData(string sKey, int nToFormat, string sToFile)
|
||||
{
|
||||
m_sKey = sKey;
|
||||
m_nToFormat = nToFormat;
|
||||
m_sToFile = sToFile;
|
||||
}
|
||||
public static string SerializeToXml(TaskQueueData oData)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
XmlWriterSettings ws = new XmlWriterSettings();
|
||||
ws.NewLineHandling = NewLineHandling.None;
|
||||
ws.Indent = false;
|
||||
XmlWriter xw = System.Xml.XmlWriter.Create(sb, ws);
|
||||
System.Xml.Serialization.XmlSerializer formatter = new System.Xml.Serialization.XmlSerializer(typeof(TaskQueueData));
|
||||
formatter.Serialize(xw, oData);
|
||||
return sb.ToString();
|
||||
}
|
||||
public static TaskQueueData DeserializeFromXml(string sXml)
|
||||
{
|
||||
System.IO.StringReader sr = new System.IO.StringReader(sXml);
|
||||
System.Xml.Serialization.XmlSerializer formatter = new System.Xml.Serialization.XmlSerializer(typeof(TaskQueueData));
|
||||
return formatter.Deserialize(sr) as TaskQueueData;
|
||||
}
|
||||
}
|
||||
[Serializable()]
|
||||
public class TaskQueueDataConvert
|
||||
{
|
||||
public string m_sKey;
|
||||
public string m_sFileFrom;
|
||||
public string m_sFileTo;
|
||||
public int m_nFormatFrom;
|
||||
public int m_nFormatTo;
|
||||
|
||||
public int? m_nCsvTxtEncoding;
|
||||
public int? m_nCsvDelimiter;
|
||||
public bool? m_bPaid;
|
||||
public bool? m_bEmbeddedFonts;
|
||||
public bool? m_bFromChanges;
|
||||
|
||||
public TaskQueueDataConvert()
|
||||
{
|
||||
}
|
||||
public TaskQueueDataConvert(string sKey, string sFileFrom, int nFormatFrom, string sFileTo, int nFormatTo)
|
||||
{
|
||||
m_sKey = sKey;
|
||||
m_sFileFrom = sFileFrom;
|
||||
m_nFormatFrom = nFormatFrom;
|
||||
m_sFileTo = sFileTo;
|
||||
m_nFormatTo = nFormatTo;
|
||||
}
|
||||
public static string SerializeToXml(TaskQueueDataConvert oData)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
XmlWriterSettings ws = new XmlWriterSettings();
|
||||
ws.NewLineHandling = NewLineHandling.None;
|
||||
ws.Indent = false;
|
||||
XmlWriter xw = System.Xml.XmlWriter.Create(sb, ws);
|
||||
System.Xml.Serialization.XmlSerializer formatter = new System.Xml.Serialization.XmlSerializer(typeof(TaskQueueDataConvert));
|
||||
formatter.Serialize(xw, oData);
|
||||
return sb.ToString();
|
||||
}
|
||||
public static TaskQueueDataConvert DeserializeFromXml(string sXml)
|
||||
{
|
||||
System.IO.StringReader sr = new System.IO.StringReader(sXml);
|
||||
System.Xml.Serialization.XmlSerializer formatter = new System.Xml.Serialization.XmlSerializer(typeof(TaskQueueDataConvert));
|
||||
return formatter.Deserialize(sr) as TaskQueueDataConvert;
|
||||
}
|
||||
}
|
||||
public interface ITaskQueue
|
||||
{
|
||||
ErrorTypes AddTask(TaskQueueData oTask, Priority oPriority);
|
||||
void AddTaskBegin(TaskQueueData oTask, Priority oPriority, AsyncCallback fCallback, object oParam);
|
||||
ErrorTypes AddTaskEnd(IAsyncResult ar);
|
||||
|
||||
TaskQueueData GetTask();
|
||||
void GetTaskBegin(AsyncCallback fCallback, object oParam);
|
||||
TaskQueueData GetTaskEnd(IAsyncResult ar);
|
||||
|
||||
ErrorTypes RemoveTask(object key);
|
||||
void RemoveTaskBegin(object key, AsyncCallback fCallback, object oParam);
|
||||
ErrorTypes RemoveTaskEnd(IAsyncResult ar);
|
||||
}
|
||||
public class CTaskQueue : ITaskQueue
|
||||
{
|
||||
private ITaskQueue m_oTaskQueue;
|
||||
public CTaskQueue()
|
||||
{
|
||||
switch (ConfigurationManager.AppSettings["utils.taskqueue.impl"])
|
||||
{
|
||||
case "sqs":
|
||||
m_oTaskQueue = new CTaskQueueAmazonSQS();
|
||||
break;
|
||||
|
||||
case "db":
|
||||
default:
|
||||
m_oTaskQueue = new CTaskQueueDataBase();
|
||||
break;
|
||||
}
|
||||
}
|
||||
public ErrorTypes AddTask(TaskQueueData oTask, Priority oPriority)
|
||||
{
|
||||
return m_oTaskQueue.AddTask(oTask, oPriority);
|
||||
}
|
||||
public void AddTaskBegin(TaskQueueData oTask, Priority oPriority, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
m_oTaskQueue.AddTaskBegin(oTask, oPriority, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes AddTaskEnd(IAsyncResult ar)
|
||||
{
|
||||
return m_oTaskQueue.AddTaskEnd(ar);
|
||||
}
|
||||
|
||||
public TaskQueueData GetTask()
|
||||
{
|
||||
return m_oTaskQueue.GetTask();
|
||||
}
|
||||
public void GetTaskBegin(AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
m_oTaskQueue.GetTaskBegin(fCallback, oParam);
|
||||
}
|
||||
public TaskQueueData GetTaskEnd(IAsyncResult ar)
|
||||
{
|
||||
return m_oTaskQueue.GetTaskEnd(ar);
|
||||
}
|
||||
|
||||
public ErrorTypes RemoveTask(object key)
|
||||
{
|
||||
return m_oTaskQueue.RemoveTask(key);
|
||||
}
|
||||
public void RemoveTaskBegin(object key, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
m_oTaskQueue.RemoveTaskBegin(key, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes RemoveTaskEnd(IAsyncResult ar)
|
||||
{
|
||||
return m_oTaskQueue.RemoveTaskEnd(ar);
|
||||
}
|
||||
}
|
||||
|
||||
class CTaskQueueDataBase : ITaskQueue
|
||||
{
|
||||
private string m_sConnectionString = ConfigurationManager.AppSettings["utils.taskqueue.db.connectionstring"];
|
||||
private const string m_cstrTableName = "convert_queue";
|
||||
private const string m_cstrMaxConvertTime = "maxconverttime";
|
||||
private const string m_cstrMaxConvertTimeIddle = "maxconverttimeiddle";
|
||||
private double m_dMaxConvertTimeInSeconds = 0;
|
||||
|
||||
private delegate IDataReader ExecuteReader();
|
||||
private delegate int ExecuteNonQuery();
|
||||
|
||||
private enum BusyType : int
|
||||
{
|
||||
not_busy = 0,
|
||||
busy = 1
|
||||
}
|
||||
private delegate ErrorTypes DelegateRemoveTask(object key);
|
||||
private delegate ErrorTypes DelegateAddTask(TaskQueueData oTask, Priority oPriority);
|
||||
private class TransportClass : TransportClassAsyncOperation
|
||||
{
|
||||
public ExecuteReader m_delegateReader = null;
|
||||
public ExecuteNonQuery m_delegateNonQuery = null;
|
||||
public IDbConnection m_oSqlCon = null;
|
||||
public IDbCommand m_oCommand = null;
|
||||
public TaskQueueData m_oTaskQueueData = null;
|
||||
public ErrorTypes m_eError = ErrorTypes.NoError;
|
||||
public TransportClass(AsyncCallback fCallback, object oParam)
|
||||
: base(fCallback, oParam)
|
||||
{
|
||||
}
|
||||
public override void Close()
|
||||
{
|
||||
try
|
||||
{
|
||||
if (null != m_oCommand)
|
||||
{
|
||||
m_oCommand.Dispose();
|
||||
m_oCommand = null;
|
||||
}
|
||||
if (null != m_oSqlCon)
|
||||
{
|
||||
m_oSqlCon.Close();
|
||||
m_oSqlCon.Dispose();
|
||||
m_oSqlCon = null;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_eError = ErrorTypes.TaskQueue;
|
||||
}
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
m_eError = ErrorTypes.TaskQueue;
|
||||
try
|
||||
{
|
||||
if (null != m_oCommand)
|
||||
{
|
||||
m_oCommand.Dispose();
|
||||
m_oCommand = null;
|
||||
}
|
||||
if (null != m_oSqlCon)
|
||||
{
|
||||
m_oSqlCon.Dispose();
|
||||
m_oSqlCon = null;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
private TransportClass m_GetTask = null;
|
||||
private DelegateRemoveTask m_RemoveTask = null;
|
||||
private DelegateAddTask m_AddTask = null;
|
||||
|
||||
public CTaskQueueDataBase()
|
||||
{
|
||||
try
|
||||
{
|
||||
string sMaxconverttime = ConfigurationManager.AppSettings[m_cstrMaxConvertTime];
|
||||
string sMaxconverttimeiddle = ConfigurationManager.AppSettings[m_cstrMaxConvertTimeIddle];
|
||||
if (false == string.IsNullOrEmpty(sMaxconverttime) && false == string.IsNullOrEmpty(sMaxconverttimeiddle))
|
||||
{
|
||||
double dMaxconverttime = double.Parse(sMaxconverttime, Constants.mc_oCultureInfo);
|
||||
double dMaxconverttimeiddle = double.Parse(sMaxconverttimeiddle, Constants.mc_oCultureInfo);
|
||||
m_dMaxConvertTimeInSeconds = dMaxconverttime + dMaxconverttimeiddle;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public ErrorTypes AddTask(TaskQueueData oTask, Priority oPriority)
|
||||
{
|
||||
ErrorTypes eResult = ErrorTypes.TaskQueue;
|
||||
try
|
||||
{
|
||||
string strId = (string)oTask.m_sKey;
|
||||
|
||||
string strInsertRow = GetInsertString(oTask, oPriority);
|
||||
using (System.Data.IDbConnection dbConnection = GetDbConnection())
|
||||
{
|
||||
dbConnection.Open();
|
||||
using (System.Data.IDbCommand oInsertCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
oInsertCommand.CommandText = strInsertRow;
|
||||
oInsertCommand.ExecuteNonQuery();
|
||||
|
||||
eResult = ErrorTypes.NoError;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
eResult = ErrorTypes.TaskQueue;
|
||||
}
|
||||
return eResult;
|
||||
}
|
||||
public void AddTaskBegin(TaskQueueData oTask, Priority oPriority, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
m_AddTask = AddTask;
|
||||
m_AddTask.BeginInvoke(oTask, oPriority, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes AddTaskEnd(IAsyncResult ar)
|
||||
{
|
||||
ErrorTypes eRes = ErrorTypes.NoError;
|
||||
try
|
||||
{
|
||||
eRes = m_AddTask.EndInvoke(ar);
|
||||
}
|
||||
catch
|
||||
{
|
||||
eRes = ErrorTypes.TaskQueue;
|
||||
}
|
||||
return eRes;
|
||||
}
|
||||
public TaskQueueData GetTask()
|
||||
{
|
||||
TaskQueueData oData = null;
|
||||
bool bResult = false;
|
||||
|
||||
uint ncq_id = 0;
|
||||
|
||||
string strSelectSQL = GetSelectString();
|
||||
string strUpdateSQL = GetUpdateString();
|
||||
try
|
||||
{
|
||||
using (System.Data.IDbConnection dbConnection = GetDbConnection())
|
||||
{
|
||||
dbConnection.Open();
|
||||
bool bIsExist = false;
|
||||
using (IDbCommand oSelectCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
oSelectCommand.CommandText = strSelectSQL;
|
||||
using (System.Data.IDataReader oDataReader = oSelectCommand.ExecuteReader())
|
||||
{
|
||||
if (true == oDataReader.Read())
|
||||
{
|
||||
ncq_id = Convert.ToUInt32(oDataReader["cq_id"]);
|
||||
oData = TaskQueueData.DeserializeFromXml(Convert.ToString(oDataReader["cq_data"]));
|
||||
oData.m_oDataKey = ncq_id;
|
||||
|
||||
bIsExist = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (bIsExist)
|
||||
{
|
||||
using (System.Data.IDbCommand oUpdateCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
oUpdateCommand.CommandText = strUpdateSQL + ncq_id + "';";
|
||||
|
||||
if (oUpdateCommand.ExecuteNonQuery() > 0)
|
||||
bResult = true;
|
||||
else
|
||||
bResult = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
return (bResult) ? oData : null;
|
||||
}
|
||||
public void GetTaskBegin(AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
m_GetTask = new TransportClass(fCallback, oParam);
|
||||
try
|
||||
{
|
||||
DateTime oDateTimeNow = DateTime.UtcNow;
|
||||
DateTime oDateTimeNowMinusConvertTime = oDateTimeNow.AddSeconds(-1 * m_dMaxConvertTimeInSeconds);
|
||||
string strDateTimeNow = oDateTimeNow.ToString(Constants.mc_sDateTimeFormat);
|
||||
string strDateTimeNowMinusConvertTime = oDateTimeNowMinusConvertTime.ToString(Constants.mc_sDateTimeFormat);
|
||||
|
||||
string strSelectSQL = GetSelectString();
|
||||
|
||||
m_GetTask.m_oSqlCon = GetDbConnection();
|
||||
m_GetTask.m_oSqlCon.Open();
|
||||
IDbCommand oSelCommand = m_GetTask.m_oSqlCon.CreateCommand();
|
||||
oSelCommand.CommandText = strSelectSQL;
|
||||
m_GetTask.m_oCommand = oSelCommand;
|
||||
m_GetTask.m_delegateReader = new ExecuteReader(oSelCommand.ExecuteReader);
|
||||
m_GetTask.m_delegateReader.BeginInvoke(GetTaskCallback, null);
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_GetTask.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
public TaskQueueData GetTaskEnd(IAsyncResult ar)
|
||||
{
|
||||
bool bResult = false;
|
||||
if (ErrorTypes.NoError == m_GetTask.m_eError)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (null != m_GetTask.m_delegateNonQuery)
|
||||
{
|
||||
if (m_GetTask.m_delegateNonQuery.EndInvoke(ar) > 0)
|
||||
bResult = true;
|
||||
else
|
||||
bResult = false;
|
||||
|
||||
}
|
||||
m_GetTask.Close();
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_GetTask.Dispose();
|
||||
}
|
||||
}
|
||||
return (bResult) ? m_GetTask.m_oTaskQueueData : null;
|
||||
}
|
||||
public ErrorTypes RemoveTask(object key)
|
||||
{
|
||||
ErrorTypes eResult = ErrorTypes.TaskQueue;
|
||||
|
||||
try
|
||||
{
|
||||
uint nId = (uint)key;
|
||||
string strDeleteRow = GetDeleteString(nId);
|
||||
using (System.Data.IDbConnection dbConnection = GetDbConnection())
|
||||
{
|
||||
dbConnection.Open();
|
||||
using (IDbCommand oDelCommand = dbConnection.CreateCommand())
|
||||
{
|
||||
oDelCommand.CommandText = strDeleteRow;
|
||||
oDelCommand.ExecuteNonQuery();
|
||||
|
||||
eResult = ErrorTypes.NoError;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
return eResult;
|
||||
}
|
||||
public void RemoveTaskBegin(object key, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
m_RemoveTask = RemoveTask;
|
||||
m_RemoveTask.BeginInvoke(key, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes RemoveTaskEnd(IAsyncResult ar)
|
||||
{
|
||||
ErrorTypes eRes = ErrorTypes.NoError;
|
||||
try
|
||||
{
|
||||
eRes = m_RemoveTask.EndInvoke(ar);
|
||||
}
|
||||
catch
|
||||
{
|
||||
eRes = ErrorTypes.TaskQueue;
|
||||
}
|
||||
return eRes;
|
||||
}
|
||||
|
||||
private void GetTaskCallback(IAsyncResult ar)
|
||||
{
|
||||
try
|
||||
{
|
||||
uint ncq_id = 0;
|
||||
bool bIsExist = false;
|
||||
using (IDataReader oReader = m_GetTask.m_delegateReader.EndInvoke(ar))
|
||||
{
|
||||
if (true == oReader.Read())
|
||||
{
|
||||
ncq_id = Convert.ToUInt32(oReader["cq_id"]);
|
||||
m_GetTask.m_oTaskQueueData = TaskQueueData.DeserializeFromXml(Convert.ToString(oReader["cq_data"]));
|
||||
m_GetTask.m_oTaskQueueData.m_oDataKey = ncq_id;
|
||||
|
||||
bIsExist = true;
|
||||
}
|
||||
}
|
||||
if (null != m_GetTask.m_oCommand)
|
||||
{
|
||||
m_GetTask.m_oCommand.Dispose();
|
||||
m_GetTask.m_oCommand = null;
|
||||
}
|
||||
m_GetTask.Close();
|
||||
if (bIsExist)
|
||||
{
|
||||
|
||||
IDbCommand oUpdateCommand = m_GetTask.m_oSqlCon.CreateCommand();
|
||||
oUpdateCommand.CommandText = GetUpdateString();
|
||||
m_GetTask.m_oCommand = oUpdateCommand;
|
||||
m_GetTask.m_delegateNonQuery = new ExecuteNonQuery(oUpdateCommand.ExecuteNonQuery);
|
||||
m_GetTask.m_delegateNonQuery.BeginInvoke(m_GetTask.m_fCallback, m_GetTask.m_oParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_GetTask.m_delegateNonQuery = null;
|
||||
m_GetTask.FireCallback();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_GetTask.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
|
||||
private System.Data.IDbConnection GetDbConnection()
|
||||
{
|
||||
ConnectionStringSettings oConnectionSettings = ConfigurationManager.ConnectionStrings[m_sConnectionString];
|
||||
System.Data.Common.DbProviderFactory dbProvider = System.Data.Common.DbProviderFactories.GetFactory(oConnectionSettings.ProviderName);
|
||||
System.Data.IDbConnection newConnection = dbProvider.CreateConnection();
|
||||
newConnection.ConnectionString = oConnectionSettings.ConnectionString;
|
||||
return newConnection;
|
||||
}
|
||||
private string GetSelectString()
|
||||
{
|
||||
DateTime oDateTimeNow = DateTime.UtcNow;
|
||||
DateTime oDateTimeNowMinusConvertTime = oDateTimeNow.AddSeconds(-1 * m_dMaxConvertTimeInSeconds);
|
||||
string strDateTimeNow = oDateTimeNow.ToString(Constants.mc_sDateTimeFormat);
|
||||
string strDateTimeNowMinusConvertTime = oDateTimeNowMinusConvertTime.ToString(Constants.mc_sDateTimeFormat);
|
||||
return "SELECT * FROM " + m_cstrTableName + " WHERE cq_isbusy <> '" + BusyType.busy.ToString("d") + "' OR cq_time <= '" + strDateTimeNowMinusConvertTime + "' ORDER BY cq_priority";
|
||||
}
|
||||
private string GetInsertString(TaskQueueData oTask, Priority ePriority)
|
||||
{
|
||||
|
||||
string sData = TaskQueueData.SerializeToXml(oTask);
|
||||
return "INSERT INTO " + m_cstrTableName + " ( cq_data, cq_priority, cq_time, cq_isbusy ) VALUES ( '" + sData + "', '" + ePriority.ToString("d") + "', '" + DateTime.UtcNow.ToString(Constants.mc_sDateTimeFormat) + "', '" + BusyType.not_busy.ToString("d") + "' );";
|
||||
}
|
||||
private string GetDeleteString(uint nId)
|
||||
{
|
||||
return "DELETE FROM " + m_cstrTableName + " WHERE cq_id='" + nId.ToString() + "'";
|
||||
}
|
||||
private string GetUpdateString()
|
||||
{
|
||||
DateTime oDateTimeNow = DateTime.UtcNow;
|
||||
DateTime oDateTimeNowMinusConvertTime = oDateTimeNow.AddSeconds(-1 * m_dMaxConvertTimeInSeconds);
|
||||
string strDateTimeNowMinusConvertTime = oDateTimeNowMinusConvertTime.ToString(Constants.mc_sDateTimeFormat);
|
||||
|
||||
return "UPDATE " + m_cstrTableName + " SET cq_isbusy = '" + BusyType.busy.ToString("d") + "',cq_time = '" + DateTime.UtcNow.ToString(Constants.mc_sDateTimeFormat) + "' WHERE (cq_isbusy <> '" + BusyType.busy.ToString("d") + "' OR cq_time <= '" + strDateTimeNowMinusConvertTime + "') AND cq_id = '";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class CTaskQueueAmazonSQS : ITaskQueue
|
||||
{
|
||||
private static readonly ILog _log = LogManager.GetLogger(typeof(CTaskQueueAmazonSQS));
|
||||
private struct SQSDataKey
|
||||
{
|
||||
public string m_strReceiptHandle;
|
||||
public Priority m_oPriority;
|
||||
}
|
||||
|
||||
private const string m_cstrLowPriorityQueueSettings = "utils.taskqueue.sqs.lp";
|
||||
private const string m_cstrNormalPriorityQueueSettings = "utils.taskqueue.sqs.np";
|
||||
private const string m_cstrHighPriorityQueueSettings = "utils.taskqueue.sqs.hp";
|
||||
|
||||
private string m_strLowPriorityQueueUrl = ConfigurationManager.AppSettings[m_cstrLowPriorityQueueSettings];
|
||||
private string m_strNormalPriorityQueueUrl = ConfigurationManager.AppSettings[m_cstrNormalPriorityQueueSettings];
|
||||
private string m_strHighPriorityQueueUrl = ConfigurationManager.AppSettings[m_cstrHighPriorityQueueSettings];
|
||||
private bool m_LongPoolingEnable = bool.Parse(ConfigurationManager.AppSettings["utils.taskqueue.sqs.longpooling"] ?? "false");
|
||||
|
||||
private static int m_nIsHPRead;
|
||||
private static int m_nIsNPRead;
|
||||
private static int m_nIsLPRead;
|
||||
|
||||
private delegate ErrorTypes ExecuteTaskAdder(TaskQueueData oTask, Priority oPriority);
|
||||
private delegate TaskQueueData ExecuteTaskGetter();
|
||||
private delegate ErrorTypes ExecuteTaskRemover(object key);
|
||||
|
||||
private class TransportClass : TransportClassAsyncOperation
|
||||
{
|
||||
public ExecuteTaskAdder m_delegateAdder = null;
|
||||
public ExecuteTaskGetter m_delegateGetter = null;
|
||||
public ExecuteTaskRemover m_delegateRemover = null;
|
||||
|
||||
public ErrorTypes m_eError = ErrorTypes.NoError;
|
||||
public TransportClass(AsyncCallback fCallback, object oParam): base(fCallback, oParam)
|
||||
{
|
||||
}
|
||||
public override void Close()
|
||||
{
|
||||
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
m_eError = ErrorTypes.TaskQueue;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private TransportClass m_oAddTask = null;
|
||||
private TransportClass m_oGetTask = null;
|
||||
private TransportClass m_oRemoveTask = null;
|
||||
private string GetQueueUrl(Priority oPriority)
|
||||
{
|
||||
string strUrlQueue = "";
|
||||
switch (oPriority)
|
||||
{
|
||||
case Priority.Low:
|
||||
strUrlQueue = m_strLowPriorityQueueUrl;
|
||||
break;
|
||||
case Priority.Normal:
|
||||
strUrlQueue = m_strNormalPriorityQueueUrl;
|
||||
break;
|
||||
case Priority.High:
|
||||
strUrlQueue = m_strHighPriorityQueueUrl;
|
||||
break;
|
||||
}
|
||||
return strUrlQueue;
|
||||
}
|
||||
|
||||
public ErrorTypes AddTask(TaskQueueData oTask, Priority oPriority)
|
||||
{
|
||||
ErrorTypes eResult = ErrorTypes.Unknown;
|
||||
string strUrlQueue = GetQueueUrl(oPriority);
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
string strData = TaskQueueData.SerializeToXml(oTask);
|
||||
|
||||
using (Amazon.SQS.AmazonSQS oSQSClient = Amazon.AWSClientFactory.CreateAmazonSQSClient())
|
||||
{
|
||||
|
||||
Amazon.SQS.Model.SendMessageRequest oSendMessageRequest = new Amazon.SQS.Model.SendMessageRequest();
|
||||
oSendMessageRequest.QueueUrl = strUrlQueue;
|
||||
oSendMessageRequest.MessageBody = strData;
|
||||
oSQSClient.SendMessage(oSendMessageRequest);
|
||||
eResult = ErrorTypes.NoError;
|
||||
}
|
||||
}
|
||||
catch (Amazon.SQS.AmazonSQSException)
|
||||
{
|
||||
eResult = ErrorTypes.TaskQueue;
|
||||
}
|
||||
catch
|
||||
{
|
||||
eResult = ErrorTypes.TaskQueue;
|
||||
}
|
||||
|
||||
return eResult;
|
||||
}
|
||||
public void AddTaskBegin(TaskQueueData oTask, Priority oPriority, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
|
||||
m_oAddTask = new TransportClass(fCallback, oParam);
|
||||
try
|
||||
{
|
||||
m_oAddTask.m_delegateAdder = AddTask;
|
||||
m_oAddTask.m_delegateAdder.BeginInvoke(oTask, oPriority, m_oAddTask.m_fCallback, m_oAddTask.m_oParam);
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oAddTask.DisposeAndCallback();
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
public ErrorTypes AddTaskEnd(IAsyncResult ar)
|
||||
{
|
||||
ErrorTypes eResult = m_oAddTask.m_eError;
|
||||
if (ErrorTypes.NoError == m_oAddTask.m_eError)
|
||||
{
|
||||
try
|
||||
{
|
||||
m_oAddTask.m_delegateAdder.EndInvoke(ar);
|
||||
m_oAddTask.Close();
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oAddTask.Dispose();
|
||||
}
|
||||
}
|
||||
return eResult;
|
||||
}
|
||||
|
||||
private TaskQueueData GetTask(Priority oPriority)
|
||||
{
|
||||
string strUrlQueue = GetQueueUrl(oPriority);
|
||||
|
||||
TaskQueueData oData = null;
|
||||
try
|
||||
{
|
||||
|
||||
using (Amazon.SQS.AmazonSQS oSQSClient = Amazon.AWSClientFactory.CreateAmazonSQSClient())
|
||||
{
|
||||
|
||||
Amazon.SQS.Model.ReceiveMessageRequest oReceiveMessageRequest = new Amazon.SQS.Model.ReceiveMessageRequest();
|
||||
oReceiveMessageRequest.QueueUrl = strUrlQueue;
|
||||
oReceiveMessageRequest.MaxNumberOfMessages = 1;
|
||||
|
||||
Amazon.SQS.Model.ReceiveMessageResponse oReceiveMessageResponse = oSQSClient.ReceiveMessage(oReceiveMessageRequest);
|
||||
if (oReceiveMessageResponse.IsSetReceiveMessageResult())
|
||||
{
|
||||
Amazon.SQS.Model.ReceiveMessageResult oReceiveMessageResult = oReceiveMessageResponse.ReceiveMessageResult;
|
||||
foreach (Amazon.SQS.Model.Message oMessage in oReceiveMessageResult.Message)
|
||||
{
|
||||
oData = TaskQueueData.DeserializeFromXml(oMessage.Body);
|
||||
|
||||
SQSDataKey oSQSDataKey = new SQSDataKey();
|
||||
oSQSDataKey.m_oPriority = oPriority;
|
||||
oSQSDataKey.m_strReceiptHandle = oMessage.ReceiptHandle;
|
||||
oData.m_oDataKey = oSQSDataKey;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Amazon.SQS.AmazonSQSException)
|
||||
{
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
return oData;
|
||||
}
|
||||
public TaskQueueData GetTask()
|
||||
{
|
||||
TaskQueueData oData = null;
|
||||
|
||||
if(m_LongPoolingEnable)
|
||||
oData = GetTaskFromLongPoolingQueue();
|
||||
else
|
||||
oData = GetTaskFromQueue();
|
||||
|
||||
return oData;
|
||||
}
|
||||
private TaskQueueData GetTaskFromLongPoolingQueue()
|
||||
{
|
||||
TaskQueueData oData = null;
|
||||
|
||||
if (0 == Interlocked.CompareExchange(ref m_nIsHPRead, 1, 0))
|
||||
{
|
||||
_log.Debug("Try to get high priority task...");
|
||||
oData = GetTask(Priority.High);
|
||||
Interlocked.Exchange(ref m_nIsHPRead, 0);
|
||||
}
|
||||
else if (0 == Interlocked.CompareExchange(ref m_nIsNPRead, 1, 0))
|
||||
{
|
||||
_log.Debug("Try to get normal priority task...");
|
||||
oData = GetTask(Priority.Normal);
|
||||
Interlocked.Exchange(ref m_nIsNPRead, 0);
|
||||
}
|
||||
else if (0 == Interlocked.CompareExchange(ref m_nIsLPRead, 1, 0))
|
||||
{
|
||||
_log.Debug("Try to get low priority task...");
|
||||
oData = GetTask(Priority.Low);
|
||||
Interlocked.Exchange(ref m_nIsLPRead, 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
_log.Debug("All task queue listening!");
|
||||
}
|
||||
|
||||
return oData;
|
||||
}
|
||||
private TaskQueueData GetTaskFromQueue()
|
||||
{
|
||||
TaskQueueData oData = null;
|
||||
|
||||
oData = GetTask(Priority.High);
|
||||
if (null != oData)
|
||||
return oData;
|
||||
|
||||
oData = GetTask(Priority.Normal);
|
||||
if (null != oData)
|
||||
return oData;
|
||||
|
||||
oData = GetTask(Priority.Low);
|
||||
|
||||
return oData;
|
||||
}
|
||||
public void GetTaskBegin(AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
m_oGetTask = new TransportClass(fCallback, oParam);
|
||||
try
|
||||
{
|
||||
m_oGetTask.m_delegateGetter = GetTask;
|
||||
m_oGetTask.m_delegateGetter.BeginInvoke(m_oGetTask.m_fCallback, m_oGetTask.m_oParam);
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oGetTask.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
public TaskQueueData GetTaskEnd(IAsyncResult ar)
|
||||
{
|
||||
TaskQueueData oTaskQueueDate = null;
|
||||
if (ErrorTypes.NoError == m_oGetTask.m_eError)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (null != m_oGetTask.m_delegateGetter)
|
||||
{
|
||||
oTaskQueueDate = m_oGetTask.m_delegateGetter.EndInvoke(ar);
|
||||
}
|
||||
m_oGetTask.Close();
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oGetTask.Dispose();
|
||||
}
|
||||
}
|
||||
return oTaskQueueDate;
|
||||
}
|
||||
public ErrorTypes RemoveTask(object key)
|
||||
{
|
||||
ErrorTypes eResult = ErrorTypes.Unknown;
|
||||
try
|
||||
{
|
||||
SQSDataKey oSQSDataKey = (SQSDataKey)key;
|
||||
string strUrlQueue = GetQueueUrl(oSQSDataKey.m_oPriority);
|
||||
|
||||
using (Amazon.SQS.AmazonSQS oSQSClient = Amazon.AWSClientFactory.CreateAmazonSQSClient())
|
||||
{
|
||||
|
||||
Amazon.SQS.Model.DeleteMessageRequest oDeleteRequest = new Amazon.SQS.Model.DeleteMessageRequest();
|
||||
oDeleteRequest.QueueUrl = strUrlQueue;
|
||||
oDeleteRequest.ReceiptHandle = (string)oSQSDataKey.m_strReceiptHandle;
|
||||
|
||||
oSQSClient.DeleteMessage(oDeleteRequest);
|
||||
eResult = ErrorTypes.NoError;
|
||||
}
|
||||
}
|
||||
catch (Amazon.SQS.AmazonSQSException)
|
||||
{
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
|
||||
return eResult;
|
||||
}
|
||||
public void RemoveTaskBegin(object key, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
m_oRemoveTask = new TransportClass(fCallback, oParam);
|
||||
try
|
||||
{
|
||||
m_oRemoveTask.m_delegateRemover = RemoveTask;
|
||||
m_oRemoveTask.m_delegateRemover.BeginInvoke(key, fCallback, oParam);
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oRemoveTask.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
public ErrorTypes RemoveTaskEnd(IAsyncResult ar)
|
||||
{
|
||||
if (ErrorTypes.NoError == m_oRemoveTask.m_eError)
|
||||
{
|
||||
try
|
||||
{
|
||||
m_oRemoveTask.m_delegateRemover.EndInvoke(ar);
|
||||
m_oRemoveTask.Close();
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oRemoveTask.Dispose();
|
||||
}
|
||||
}
|
||||
return ErrorTypes.NoError;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,223 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Data;
|
||||
using System.Configuration;
|
||||
|
||||
using ASC.Common.Data;
|
||||
using ASC.Common.Data.Sql;
|
||||
using ASC.Common.Data.Sql.Expressions;
|
||||
|
||||
namespace FileConverterUtils2
|
||||
{
|
||||
[Serializable]
|
||||
public class TaskResultData
|
||||
{
|
||||
|
||||
public string sKey;
|
||||
public string sFormat;
|
||||
public FileStatus eStatus;
|
||||
public int nStatusInfo;
|
||||
public DateTime oLastOpenDate;
|
||||
public string sTitle;
|
||||
public TaskResultData()
|
||||
{
|
||||
sFormat = "";
|
||||
sKey = "";
|
||||
eStatus = FileStatus.None;
|
||||
nStatusInfo = 0;
|
||||
oLastOpenDate = DateTime.UtcNow;
|
||||
sTitle = "";
|
||||
}
|
||||
public TaskResultData Clone()
|
||||
{
|
||||
TaskResultData oRes = new TaskResultData();
|
||||
oRes.sFormat = sFormat;
|
||||
oRes.sKey = sKey;
|
||||
oRes.eStatus = eStatus;
|
||||
oRes.nStatusInfo = nStatusInfo;
|
||||
oRes.oLastOpenDate = oLastOpenDate;
|
||||
oRes.sTitle = sTitle;
|
||||
return oRes;
|
||||
}
|
||||
public void Update(TaskResultDataToUpdate oUpdate)
|
||||
{
|
||||
if (oUpdate != null)
|
||||
{
|
||||
if (oUpdate.eStatus != null)
|
||||
this.eStatus = (FileStatus)oUpdate.eStatus;
|
||||
|
||||
if (oUpdate.oLastOpenDate != null)
|
||||
this.oLastOpenDate = (DateTime)oUpdate.oLastOpenDate;
|
||||
|
||||
if (oUpdate.nStatusInfo != null)
|
||||
this.nStatusInfo = (int)oUpdate.nStatusInfo;
|
||||
|
||||
if (oUpdate.sFormat != null)
|
||||
this.sFormat = oUpdate.sFormat;
|
||||
|
||||
if (oUpdate.sTitle != null)
|
||||
this.sTitle = oUpdate.sTitle;
|
||||
}
|
||||
}
|
||||
}
|
||||
public class TaskResultDataToUpdate
|
||||
{
|
||||
public string sFormat;
|
||||
public FileStatus? eStatus;
|
||||
public int? nStatusInfo;
|
||||
public DateTime? oLastOpenDate;
|
||||
public string sTitle;
|
||||
public TaskResultDataToUpdate()
|
||||
{
|
||||
}
|
||||
}
|
||||
public interface ITaskResultInterface
|
||||
{
|
||||
ErrorTypes Add(string sKey, TaskResultData oTast);
|
||||
void AddBegin(string sKey, TaskResultData oTast, AsyncCallback fCallback, object oParam);
|
||||
ErrorTypes AddEnd(IAsyncResult ar);
|
||||
ErrorTypes AddRandomKey(string sKey, TaskResultData oTastToAdd, out TaskResultData oTastAdded);
|
||||
void AddRandomKeyBegin(string sKey, TaskResultData oTastToAdd, AsyncCallback fCallback, object oParam);
|
||||
ErrorTypes AddRandomKeyEnd(IAsyncResult ar, out TaskResultData oTastAdded);
|
||||
ErrorTypes Update(string sKey, TaskResultDataToUpdate oTast);
|
||||
void UpdateBegin(string sKey, TaskResultDataToUpdate oTast, AsyncCallback fCallback, object oParam);
|
||||
ErrorTypes UpdateEnd(IAsyncResult ar);
|
||||
ErrorTypes Get(string sKey, out TaskResultData oTast);
|
||||
void GetBegin(string sKey, AsyncCallback fCallback, object oParam);
|
||||
ErrorTypes GetEnd(IAsyncResult ar, out TaskResultData oTast);
|
||||
ErrorTypes GetExpired( int nMaxCount, out List <TaskResultData> aTasts);
|
||||
ErrorTypes GetOrCreate(string sKey, TaskResultData oDataToAdd, out TaskResultData oDataAdded, out bool bCreate);
|
||||
void GetOrCreateBegin(string sKey, TaskResultData oDataToAdd, AsyncCallback fCallback, object oParam);
|
||||
ErrorTypes GetOrCreateEnd(IAsyncResult ar, out TaskResultData oDataAdded, out bool bCreate);
|
||||
ErrorTypes Remove(string sKey);
|
||||
void RemoveBegin(string sKey, AsyncCallback fCallback, object oParam);
|
||||
ErrorTypes RemoveEnd(IAsyncResult ar);
|
||||
}
|
||||
public class TaskResult : ITaskResultInterface
|
||||
{
|
||||
private ITaskResultInterface piTaskResult;
|
||||
public TaskResult()
|
||||
{
|
||||
string sTaskResultImpl = ConfigurationManager.AppSettings["utils.taskresult.impl"];
|
||||
switch (sTaskResultImpl)
|
||||
{
|
||||
case "cacheddb":
|
||||
piTaskResult = new TaskResultCachedDB();
|
||||
break;
|
||||
|
||||
case "db":
|
||||
default:
|
||||
piTaskResult = new TaskResultDataBase();
|
||||
break;
|
||||
}
|
||||
}
|
||||
public ErrorTypes Add(string sKey, TaskResultData oTast)
|
||||
{
|
||||
return piTaskResult.Add(sKey, oTast);
|
||||
}
|
||||
public void AddBegin(string sKey, TaskResultData oTast, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
piTaskResult.AddBegin(sKey, oTast, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes AddEnd(IAsyncResult ar)
|
||||
{
|
||||
return piTaskResult.AddEnd(ar);
|
||||
}
|
||||
public ErrorTypes AddRandomKey(string sKey, TaskResultData oTastToAdd, out TaskResultData oTastAdded)
|
||||
{
|
||||
return piTaskResult.AddRandomKey(sKey, oTastToAdd, out oTastAdded);
|
||||
}
|
||||
public void AddRandomKeyBegin(string sKey, TaskResultData oTastToAdd, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
piTaskResult.AddRandomKeyBegin(sKey, oTastToAdd, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes AddRandomKeyEnd(IAsyncResult ar, out TaskResultData oTastAdded)
|
||||
{
|
||||
return piTaskResult.AddRandomKeyEnd(ar, out oTastAdded);
|
||||
}
|
||||
public ErrorTypes Update(string sKey, TaskResultDataToUpdate oTast)
|
||||
{
|
||||
return piTaskResult.Update(sKey, oTast);
|
||||
}
|
||||
public void UpdateBegin(string sKey, TaskResultDataToUpdate oTast, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
piTaskResult.UpdateBegin(sKey, oTast, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes UpdateEnd(IAsyncResult ar)
|
||||
{
|
||||
return piTaskResult.UpdateEnd(ar);
|
||||
}
|
||||
public ErrorTypes Get(string sKey, out TaskResultData oTast)
|
||||
{
|
||||
return piTaskResult.Get(sKey, out oTast);
|
||||
}
|
||||
public void GetBegin(string sKey, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
piTaskResult.GetBegin(sKey, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes GetEnd(IAsyncResult ar, out TaskResultData oTast)
|
||||
{
|
||||
return piTaskResult.GetEnd(ar, out oTast);
|
||||
}
|
||||
public ErrorTypes GetExpired(int nMaxCount, out List<TaskResultData> aTasts)
|
||||
{
|
||||
return piTaskResult.GetExpired(nMaxCount, out aTasts);
|
||||
}
|
||||
public ErrorTypes GetOrCreate(string sKey, TaskResultData oDataToAdd, out TaskResultData oDataAdded, out bool bCreate)
|
||||
{
|
||||
return piTaskResult.GetOrCreate(sKey, oDataToAdd, out oDataAdded, out bCreate);
|
||||
}
|
||||
public void GetOrCreateBegin(string sKey, TaskResultData oDataToAdd, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
piTaskResult.GetOrCreateBegin(sKey, oDataToAdd, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes GetOrCreateEnd(IAsyncResult ar, out TaskResultData oDataAdded, out bool bCreate)
|
||||
{
|
||||
return piTaskResult.GetOrCreateEnd(ar, out oDataAdded, out bCreate);
|
||||
}
|
||||
public ErrorTypes Remove(string sKey)
|
||||
{
|
||||
return piTaskResult.Remove(sKey);
|
||||
}
|
||||
public void RemoveBegin(string sKey, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
piTaskResult.RemoveBegin(sKey, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes RemoveEnd(IAsyncResult ar)
|
||||
{
|
||||
return piTaskResult.RemoveEnd(ar);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,476 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Data;
|
||||
using System.Configuration;
|
||||
using System.Net;
|
||||
using System.Xml.Serialization;
|
||||
|
||||
using ASC.Common.Data;
|
||||
using ASC.Common.Data.Sql;
|
||||
using ASC.Common.Data.Sql.Expressions;
|
||||
|
||||
using Enyim.Caching;
|
||||
using Enyim.Caching.Configuration;
|
||||
using Enyim.Caching.Memcached;
|
||||
|
||||
namespace FileConverterUtils2
|
||||
{
|
||||
class TaskResultCachedDB : ITaskResultInterface
|
||||
{
|
||||
private static int mc_nRandomMaxNumber = 10000;
|
||||
private static System.Random m_oRandom = new System.Random();
|
||||
private string m_sConnectionString = ConfigurationManager.AppSettings["utils.taskresult.db.connectionstring"];
|
||||
private TimeSpan m_oTtl = TimeSpan.Parse(ConfigurationManager.AppSettings["utils.taskresult.cacheddb.ttl"] ?? "0.00:15:00");
|
||||
|
||||
private TaskResultDataBase m_oTaskResultDB = new TaskResultDataBase();
|
||||
MemcachedClientConfiguration m_oMcConfig = null;
|
||||
|
||||
private delegate IDataReader ExecuteReader();
|
||||
private delegate int ExecuteNonQuery();
|
||||
private delegate ErrorTypes DelegateAdd(string sKey, TaskResultData oTast);
|
||||
private delegate ErrorTypes DelegateUpdate(string sKey, TaskResultDataToUpdate oTast);
|
||||
private delegate ErrorTypes DelegateGet(string sKey, out TaskResultData oTaskResultData);
|
||||
private delegate ErrorTypes DelegateGetBegin(string sKey, AsyncCallback fCallback, object oParam);
|
||||
private delegate ErrorTypes DelegateRemove(string sKey);
|
||||
|
||||
private delegate ErrorTypes DelegateAddToMC(string sKey, TaskResultData oTast);
|
||||
|
||||
private class TransportClass : TransportClassAsyncOperation
|
||||
{
|
||||
|
||||
public ExecuteReader m_delegateReader = null;
|
||||
public ExecuteNonQuery m_delegateNonQuery = null;
|
||||
public DelegateGet m_delegateGet = null;
|
||||
|
||||
public TaskResultData m_oTast = null;
|
||||
public ErrorTypes m_eError = ErrorTypes.NoError;
|
||||
public bool m_bCreate = false;
|
||||
public string m_sKey = null;
|
||||
public bool m_bReadFromDB = false;
|
||||
public TransportClass(AsyncCallback fCallback, object oParam)
|
||||
: base(fCallback, oParam)
|
||||
{
|
||||
}
|
||||
public override void Close()
|
||||
{
|
||||
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
m_eError = ErrorTypes.TaskResult;
|
||||
try
|
||||
{
|
||||
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
private TransportClass m_oAddRandomKey = null;
|
||||
private TransportClass m_oGetOrCreate = null;
|
||||
|
||||
private TransportClass m_oGet = null;
|
||||
|
||||
public TaskResultCachedDB()
|
||||
{
|
||||
InitMC();
|
||||
}
|
||||
private void InitMC()
|
||||
{
|
||||
if (null == m_oMcConfig)
|
||||
{
|
||||
m_oMcConfig = new MemcachedClientConfiguration();
|
||||
|
||||
string sServerName = ConfigurationManager.AppSettings["utils.taskresult.cacheddb.mc.server"] ?? "localhost:11211";
|
||||
|
||||
m_oMcConfig.AddServer(sServerName);
|
||||
m_oMcConfig.Protocol = MemcachedProtocol.Text;
|
||||
}
|
||||
}
|
||||
public ErrorTypes Add(string sKey, TaskResultData oTast)
|
||||
{
|
||||
AddToMC(sKey, oTast);
|
||||
|
||||
return m_oTaskResultDB.Add(sKey, oTast);
|
||||
}
|
||||
public void AddBegin(string sKey, TaskResultData oTast, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
DelegateAdd oDelegateAdd = new DelegateAdd(AddToMC);
|
||||
|
||||
oDelegateAdd.BeginInvoke(sKey, oTast, null, null);
|
||||
|
||||
m_oTaskResultDB.AddBegin(sKey, oTast, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes AddEnd(IAsyncResult ar)
|
||||
{
|
||||
return m_oTaskResultDB.AddEnd(ar);
|
||||
}
|
||||
public ErrorTypes AddRandomKey(string sKey, TaskResultData oTastToAdd, out TaskResultData oTastAdded)
|
||||
{
|
||||
return m_oTaskResultDB.AddRandomKey(sKey, oTastToAdd, out oTastAdded);
|
||||
}
|
||||
public void AddRandomKeyBegin(string sKey, TaskResultData oTastToAdd, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
|
||||
m_oTaskResultDB.AddRandomKeyBegin(sKey, oTastToAdd, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes AddRandomKeyEnd(IAsyncResult ar, out TaskResultData oTast)
|
||||
{
|
||||
|
||||
return m_oTaskResultDB.AddRandomKeyEnd(ar, out oTast);
|
||||
}
|
||||
public ErrorTypes Update(string sKey, TaskResultDataToUpdate oTast)
|
||||
{
|
||||
ErrorTypes oError = ErrorTypes.NoError;
|
||||
|
||||
UpdateInMC(sKey, oTast);
|
||||
|
||||
return oError;
|
||||
}
|
||||
public void UpdateBegin(string sKey, TaskResultDataToUpdate oTast, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
m_oTaskResultDB.UpdateBegin(sKey, oTast, fCallback, oParam);
|
||||
|
||||
}
|
||||
public ErrorTypes UpdateEnd(IAsyncResult ar)
|
||||
{
|
||||
return m_oTaskResultDB.UpdateEnd(ar);
|
||||
}
|
||||
public ErrorTypes Get(string sKey, out TaskResultData oTaskResultData)
|
||||
{
|
||||
oTaskResultData = null;
|
||||
ErrorTypes oError = ErrorTypes.NoError;
|
||||
try
|
||||
{
|
||||
GetFromMC(sKey, out oTaskResultData);
|
||||
|
||||
if (null == oTaskResultData)
|
||||
{
|
||||
oError = m_oTaskResultDB.Get(sKey, out oTaskResultData);
|
||||
if (oError == ErrorTypes.NoError && oTaskResultData != null)
|
||||
{
|
||||
AddToMC(sKey, oTaskResultData);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
oError = ErrorTypes.TaskResult;
|
||||
}
|
||||
|
||||
return oError;
|
||||
}
|
||||
public void GetBegin(string sKey, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
m_oGet = new TransportClass(fCallback, oParam);
|
||||
try
|
||||
{
|
||||
m_oGet.m_sKey = sKey;
|
||||
m_oGet.m_delegateGet = new DelegateGet(GetFromMC);
|
||||
m_oGet.m_delegateGet.BeginInvoke(sKey, out m_oGet.m_oTast, GetCallback, null);
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oGet.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
public ErrorTypes GetEnd(IAsyncResult ar, out TaskResultData oTast)
|
||||
{
|
||||
oTast = null;
|
||||
if (m_oGet.m_eError == ErrorTypes.NoError)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (m_oGet.m_bReadFromDB)
|
||||
{
|
||||
m_oTaskResultDB.GetEnd(ar, out oTast);
|
||||
DelegateAddToMC oDelegateAdd = new DelegateAddToMC(AddToMC);
|
||||
oDelegateAdd.BeginInvoke(m_oGet.m_sKey, oTast, null, null);
|
||||
}
|
||||
else if (m_oGet.m_oTast != null)
|
||||
oTast = m_oGet.m_oTast.Clone();
|
||||
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oGet.m_eError = ErrorTypes.TaskResult;
|
||||
}
|
||||
}
|
||||
return m_oGet.m_eError;
|
||||
}
|
||||
public ErrorTypes GetExpired(int nMaxCount, out List<TaskResultData> aTasts)
|
||||
{
|
||||
return m_oTaskResultDB.GetExpired(nMaxCount, out aTasts);
|
||||
}
|
||||
public ErrorTypes GetOrCreate(string sKey, TaskResultData oDefaultTast, out TaskResultData oTaskResultData, out bool bCreate)
|
||||
{
|
||||
return m_oTaskResultDB.GetOrCreate(sKey, oDefaultTast, out oTaskResultData, out bCreate);
|
||||
}
|
||||
public void GetOrCreateBegin(string sKey, TaskResultData oDataToAdd, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
m_oGetOrCreate = new TransportClass(fCallback, oParam);
|
||||
m_oGetOrCreate.m_oTast = oDataToAdd;
|
||||
m_oGetOrCreate.m_bCreate = true;
|
||||
m_oGetOrCreate.m_sKey = sKey;
|
||||
try
|
||||
{
|
||||
TaskResultData oTast = null;
|
||||
m_oGetOrCreate.m_delegateGet = new DelegateGet(GetFromMC);
|
||||
m_oGetOrCreate.m_delegateGet.BeginInvoke(sKey, out oTast, GetOrCreateCallback, null);
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oGetOrCreate.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
public ErrorTypes GetOrCreateEnd(IAsyncResult ar, out TaskResultData oDataAdded, out bool bCreate)
|
||||
{
|
||||
bCreate = m_oGetOrCreate.m_bCreate;
|
||||
oDataAdded = null;
|
||||
if (ErrorTypes.NoError == m_oGetOrCreate.m_eError)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (m_oGetOrCreate.m_bReadFromDB)
|
||||
{
|
||||
m_oTaskResultDB.GetOrCreateEnd(ar, out oDataAdded, out bCreate);
|
||||
if (oDataAdded != null)
|
||||
{
|
||||
DelegateAddToMC oDelegateAddToMC = new DelegateAddToMC(AddToMC);
|
||||
oDelegateAddToMC.BeginInvoke(m_oGetOrCreate.m_sKey, oDataAdded, null, null);
|
||||
}
|
||||
}
|
||||
else if (null != m_oGetOrCreate.m_oTast)
|
||||
oDataAdded = m_oGetOrCreate.m_oTast.Clone();
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oGetOrCreate.Dispose();
|
||||
}
|
||||
}
|
||||
return m_oGetOrCreate.m_eError;
|
||||
}
|
||||
public ErrorTypes Remove(string sKey)
|
||||
{
|
||||
RemoveFromMC(sKey);
|
||||
return m_oTaskResultDB.Remove(sKey);
|
||||
}
|
||||
public void RemoveBegin(string sKey, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
DelegateRemove oDelegateRemove = new DelegateRemove(RemoveFromMC);
|
||||
oDelegateRemove.BeginInvoke(sKey, null, null);
|
||||
m_oTaskResultDB.RemoveBegin(sKey, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes RemoveEnd(IAsyncResult ar)
|
||||
{
|
||||
ErrorTypes eErrorTypes = ErrorTypes.NoError;
|
||||
try
|
||||
{
|
||||
eErrorTypes = m_oTaskResultDB.RemoveEnd(ar);
|
||||
}
|
||||
catch
|
||||
{
|
||||
eErrorTypes = ErrorTypes.TaskResult;
|
||||
}
|
||||
return eErrorTypes;
|
||||
}
|
||||
private ErrorTypes AddToMC(string sKey, TaskResultData oTast)
|
||||
{
|
||||
return AddToMCWithCas(sKey, oTast, 0);
|
||||
}
|
||||
private ErrorTypes AddToMCWithCas(string sKey, TaskResultData oTast, ulong cas)
|
||||
{
|
||||
ErrorTypes oError = ErrorTypes.NoError;
|
||||
try
|
||||
{
|
||||
using (MemcachedClient oMc = new MemcachedClient(m_oMcConfig))
|
||||
{
|
||||
string sDataToStore = null;
|
||||
|
||||
XmlSerializer oXmlSerializer = new XmlSerializer(typeof(TaskResultData));
|
||||
using (StringWriter oStringWriter = new StringWriter())
|
||||
{
|
||||
oXmlSerializer.Serialize(oStringWriter, oTast);
|
||||
sDataToStore = oStringWriter.ToString();
|
||||
}
|
||||
|
||||
if (cas != 0)
|
||||
oMc.Cas(StoreMode.Set, sKey, sDataToStore, m_oTtl, cas);
|
||||
else
|
||||
oMc.Store(StoreMode.Set, sKey, sDataToStore, m_oTtl);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
oError = ErrorTypes.TaskResult;
|
||||
}
|
||||
|
||||
return oError;
|
||||
}
|
||||
private ErrorTypes GetFromMC(string sKey, out TaskResultData oTast)
|
||||
{
|
||||
ulong cas = 0;
|
||||
return GetFromMCWithCas(sKey, out oTast, out cas);
|
||||
}
|
||||
private ErrorTypes GetFromMCWithCas(string sKey, out TaskResultData oTast, out ulong cas)
|
||||
{
|
||||
ErrorTypes oError = ErrorTypes.NoError;
|
||||
oTast = null;
|
||||
cas = 0;
|
||||
try
|
||||
{
|
||||
using (MemcachedClient oMc = new MemcachedClient(m_oMcConfig))
|
||||
{
|
||||
CasResult<string> oGetData = oMc.GetWithCas<string>(sKey);
|
||||
|
||||
if (oGetData.Result != null)
|
||||
{
|
||||
cas = oGetData.Cas;
|
||||
|
||||
XmlSerializer oXmlSerializer = new XmlSerializer(typeof(TaskResultData));
|
||||
using (StringReader oStringReader = new StringReader(oGetData.Result))
|
||||
{
|
||||
oTast = (TaskResultData)oXmlSerializer.Deserialize(oStringReader);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
oError = ErrorTypes.TaskResult;
|
||||
}
|
||||
|
||||
return oError;
|
||||
}
|
||||
private ErrorTypes UpdateInMC(string sKey, TaskResultDataToUpdate oTast)
|
||||
{
|
||||
ErrorTypes oError = ErrorTypes.NoError;
|
||||
try
|
||||
{
|
||||
TaskResultData oTask = null;
|
||||
ulong cas = 0;
|
||||
GetFromMCWithCas(sKey, out oTask, out cas);
|
||||
|
||||
if (oTask == null)
|
||||
m_oTaskResultDB.Get(sKey, out oTask);
|
||||
|
||||
if (oTask != null && oTask.eStatus != FileStatus.Ok)
|
||||
{
|
||||
oTask.Update(oTast);
|
||||
|
||||
AddToMCWithCas(sKey, oTask, cas);
|
||||
|
||||
if (oTask.eStatus != FileStatus.Convert)
|
||||
oError = m_oTaskResultDB.Update(sKey, oTast);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
oError = ErrorTypes.TaskResult;
|
||||
}
|
||||
|
||||
return oError;
|
||||
}
|
||||
private ErrorTypes RemoveFromMC(string sKey)
|
||||
{
|
||||
ErrorTypes oError = ErrorTypes.NoError;
|
||||
try
|
||||
{
|
||||
using (MemcachedClient oMc = new MemcachedClient(m_oMcConfig))
|
||||
{
|
||||
oMc.Remove(sKey);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
oError = ErrorTypes.TaskResult;
|
||||
}
|
||||
return oError;
|
||||
}
|
||||
private void GetCallback(IAsyncResult ar)
|
||||
{
|
||||
try
|
||||
{
|
||||
TaskResultData oTast = null;
|
||||
m_oGet.m_eError = m_oGet.m_delegateGet.EndInvoke(out oTast, ar);
|
||||
m_oGet.m_delegateGet = null;
|
||||
|
||||
if (oTast != null)
|
||||
{
|
||||
m_oGet.m_sKey = null;
|
||||
m_oGet.m_oTast = oTast;
|
||||
m_oGet.FireCallback();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_oGet.m_bReadFromDB = true;
|
||||
m_oTaskResultDB.GetBegin(m_oGet.m_sKey, m_oGet.m_fCallback, m_oGet.m_oParam);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oGet.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
private void GetOrCreateCallback(IAsyncResult ar)
|
||||
{
|
||||
try
|
||||
{
|
||||
TaskResultData oTaskResult = null;
|
||||
m_oGetOrCreate.m_delegateGet.EndInvoke(out oTaskResult, ar);
|
||||
m_oGetOrCreate.m_delegateGet = null;
|
||||
|
||||
if (oTaskResult != null)
|
||||
{
|
||||
m_oGetOrCreate.m_bCreate = false;
|
||||
m_oGetOrCreate.m_oTast = oTaskResult;
|
||||
m_oGetOrCreate.FireCallback();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_oGetOrCreate.m_bReadFromDB = true;
|
||||
m_oTaskResultDB.GetOrCreateBegin(m_oGetOrCreate.m_sKey, m_oGetOrCreate.m_oTast, m_oGetOrCreate.m_fCallback, m_oGetOrCreate.m_oParam);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oGetOrCreate.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,684 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.Data;
|
||||
using System.Configuration;
|
||||
|
||||
using ASC.Common.Data;
|
||||
using ASC.Common.Data.Sql;
|
||||
using ASC.Common.Data.Sql.Expressions;
|
||||
|
||||
namespace FileConverterUtils2
|
||||
{
|
||||
class TaskResultDataBase : ITaskResultInterface
|
||||
{
|
||||
private static int mc_nRandomMaxNumber = 10000;
|
||||
private static System.Random m_oRandom = new System.Random();
|
||||
private string m_sConnectionString = ConfigurationManager.AppSettings["utils.taskresult.db.connectionstring"];
|
||||
|
||||
private delegate IDataReader ExecuteReader();
|
||||
private delegate int ExecuteNonQuery();
|
||||
private delegate ErrorTypes DelegateAdd(string sKey, TaskResultData oTast);
|
||||
private delegate ErrorTypes DelegateUpdate(string sKey, TaskResultDataToUpdate oTast);
|
||||
private delegate ErrorTypes DelegateGet(string sKey, out TaskResultData oTaskResultData);
|
||||
private delegate ErrorTypes DelegateRemove(string sKey);
|
||||
|
||||
private class TransportClass : TransportClassAsyncOperation
|
||||
{
|
||||
public ExecuteReader m_delegateReader = null;
|
||||
public ExecuteNonQuery m_delegateNonQuery = null;
|
||||
public IDbConnection m_oSqlCon = null;
|
||||
public IDbCommand m_oCommand = null;
|
||||
public TaskResultData m_oTast = null;
|
||||
public ErrorTypes m_eError = ErrorTypes.NoError;
|
||||
public bool m_bCreate = false;
|
||||
public TransportClass(AsyncCallback fCallback, object oParam)
|
||||
: base(fCallback, oParam)
|
||||
{
|
||||
}
|
||||
public override void Close()
|
||||
{
|
||||
if (null != m_oCommand)
|
||||
{
|
||||
m_oCommand.Dispose();
|
||||
m_oCommand = null;
|
||||
}
|
||||
if (null != m_oSqlCon)
|
||||
{
|
||||
m_oSqlCon.Close();
|
||||
m_oSqlCon.Dispose();
|
||||
m_oSqlCon = null;
|
||||
}
|
||||
}
|
||||
public override void Dispose()
|
||||
{
|
||||
m_eError = ErrorTypes.TaskResult;
|
||||
try
|
||||
{
|
||||
if (null != m_oCommand)
|
||||
{
|
||||
m_oCommand.Dispose();
|
||||
m_oCommand = null;
|
||||
}
|
||||
if (null != m_oSqlCon)
|
||||
{
|
||||
m_oSqlCon.Dispose();
|
||||
m_oSqlCon = null;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
private TransportClass m_oAddRandomKey = null;
|
||||
private TransportClass m_oGetOrCreate = null;
|
||||
private DelegateAdd m_oAdd = null;
|
||||
private DelegateUpdate m_oUpdate = null;
|
||||
private DelegateGet m_oGet = null;
|
||||
private DelegateRemove m_oRemove = null;
|
||||
|
||||
public ErrorTypes Add(string sKey, TaskResultData oTast)
|
||||
{
|
||||
ErrorTypes eError = ErrorTypes.NoError;
|
||||
try
|
||||
{
|
||||
using (IDbConnection sqlCon = GetDbConnection())
|
||||
{
|
||||
sqlCon.Open();
|
||||
using (IDbCommand oSelCommand = sqlCon.CreateCommand())
|
||||
{
|
||||
oSelCommand.CommandText = GetINSERTString(oTast);
|
||||
oSelCommand.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
eError = ErrorTypes.TaskResult;
|
||||
}
|
||||
return eError;
|
||||
}
|
||||
public void AddBegin(string sKey, TaskResultData oTast, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
DelegateAdd oDelegateAdd = new DelegateAdd(Add);
|
||||
m_oAdd = oDelegateAdd;
|
||||
oDelegateAdd.BeginInvoke(sKey, oTast, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes AddEnd(IAsyncResult ar)
|
||||
{
|
||||
ErrorTypes eError = ErrorTypes.NoError;
|
||||
try
|
||||
{
|
||||
eError = m_oAdd.EndInvoke(ar);
|
||||
}
|
||||
catch
|
||||
{
|
||||
eError = ErrorTypes.TaskResult;
|
||||
}
|
||||
return eError;
|
||||
}
|
||||
public ErrorTypes AddRandomKey(string sKey, TaskResultData oTastToAdd, out TaskResultData oTastAdded)
|
||||
{
|
||||
ErrorTypes eError = ErrorTypes.TaskResult;
|
||||
oTastAdded = oTastToAdd.Clone();
|
||||
try
|
||||
{
|
||||
using (IDbConnection sqlCon = GetDbConnection())
|
||||
{
|
||||
sqlCon.Open();
|
||||
while (true)
|
||||
{
|
||||
string sNewKey = sKey + "_" + m_oRandom.Next(mc_nRandomMaxNumber);
|
||||
oTastAdded.sKey = sNewKey;
|
||||
using (IDbCommand oAddCommand = sqlCon.CreateCommand())
|
||||
{
|
||||
oAddCommand.CommandText = GetINSERTString(oTastAdded);
|
||||
bool bExist = false;
|
||||
try
|
||||
{
|
||||
oAddCommand.ExecuteNonQuery();
|
||||
}
|
||||
catch
|
||||
{
|
||||
bExist = true;
|
||||
}
|
||||
if (false == bExist)
|
||||
{
|
||||
eError = ErrorTypes.NoError;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
eError = ErrorTypes.TaskResult;
|
||||
}
|
||||
if (ErrorTypes.NoError != eError)
|
||||
{
|
||||
oTastAdded = null;
|
||||
}
|
||||
return eError;
|
||||
}
|
||||
public void AddRandomKeyBegin(string sKey, TaskResultData oTastToAdd, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
m_oAddRandomKey = new TransportClass(fCallback, oParam);
|
||||
m_oAddRandomKey.m_oTast = oTastToAdd.Clone();
|
||||
try
|
||||
{
|
||||
m_oAddRandomKey.m_oSqlCon = GetDbConnection();
|
||||
m_oAddRandomKey.m_oSqlCon.Open();
|
||||
string sNewKey = sKey + "_" + m_oRandom.Next(mc_nRandomMaxNumber);
|
||||
m_oAddRandomKey.m_oTast.sKey = sNewKey;
|
||||
IDbCommand oSelCommand = m_oAddRandomKey.m_oSqlCon.CreateCommand();
|
||||
m_oAddRandomKey.m_oCommand = oSelCommand;
|
||||
oSelCommand.CommandText = GetINSERTString(m_oAddRandomKey.m_oTast);
|
||||
m_oAddRandomKey.m_delegateNonQuery = new ExecuteNonQuery(oSelCommand.ExecuteNonQuery);
|
||||
m_oAddRandomKey.m_delegateNonQuery.BeginInvoke(AddRandomKeyCallback, null);
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oAddRandomKey.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
public ErrorTypes AddRandomKeyEnd(IAsyncResult ar, out TaskResultData oTast)
|
||||
{
|
||||
oTast = null;
|
||||
if (ErrorTypes.NoError == m_oAddRandomKey.m_eError)
|
||||
{
|
||||
oTast = m_oAddRandomKey.m_oTast;
|
||||
}
|
||||
return m_oAddRandomKey.m_eError;
|
||||
}
|
||||
public ErrorTypes Update(string sKey, TaskResultDataToUpdate oTast)
|
||||
{
|
||||
ErrorTypes eErrorTypes = ErrorTypes.NoError;
|
||||
try
|
||||
{
|
||||
using (IDbConnection sqlCon = GetDbConnection())
|
||||
{
|
||||
sqlCon.Open();
|
||||
using (IDbCommand oSelCommand = sqlCon.CreateCommand())
|
||||
{
|
||||
oSelCommand.CommandText = GetUPDATEString(sKey, oTast);
|
||||
oSelCommand.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
eErrorTypes = ErrorTypes.TaskResult;
|
||||
}
|
||||
return eErrorTypes;
|
||||
}
|
||||
public void UpdateBegin(string sKey, TaskResultDataToUpdate oTast, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
m_oUpdate = Update;
|
||||
m_oUpdate.BeginInvoke(sKey, oTast, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes UpdateEnd(IAsyncResult ar)
|
||||
{
|
||||
ErrorTypes eErrorTypes = ErrorTypes.NoError;
|
||||
try
|
||||
{
|
||||
eErrorTypes = m_oUpdate.EndInvoke(ar);
|
||||
}
|
||||
catch
|
||||
{
|
||||
eErrorTypes = ErrorTypes.TaskResult;
|
||||
}
|
||||
return eErrorTypes;
|
||||
}
|
||||
public ErrorTypes Get(string sKey, out TaskResultData oTaskResultData)
|
||||
{
|
||||
ErrorTypes eErrorTypes = ErrorTypes.TaskResult;
|
||||
oTaskResultData = null;
|
||||
try
|
||||
{
|
||||
using (IDbConnection sqlCon = GetDbConnection())
|
||||
{
|
||||
sqlCon.Open();
|
||||
using (IDbCommand oSelCommand = sqlCon.CreateCommand())
|
||||
{
|
||||
oSelCommand.CommandText = GetSELECTString(sKey);
|
||||
using (IDataReader oReader = oSelCommand.ExecuteReader())
|
||||
{
|
||||
if (true == oReader.Read())
|
||||
{
|
||||
oTaskResultData = new TaskResultData();
|
||||
TaskResultFromReader(oTaskResultData, oReader);
|
||||
eErrorTypes = ErrorTypes.NoError;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
return eErrorTypes;
|
||||
}
|
||||
public void GetBegin(string sKey, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
TaskResultData oTast;
|
||||
m_oGet = Get;
|
||||
m_oGet.BeginInvoke(sKey, out oTast, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes GetEnd(IAsyncResult ar, out TaskResultData oTast)
|
||||
{
|
||||
oTast = null;
|
||||
ErrorTypes eErrorTypes = ErrorTypes.NoError;
|
||||
try
|
||||
{
|
||||
eErrorTypes = m_oGet.EndInvoke(out oTast, ar);
|
||||
}
|
||||
catch
|
||||
{
|
||||
eErrorTypes = ErrorTypes.TaskResult;
|
||||
}
|
||||
return eErrorTypes;
|
||||
}
|
||||
public ErrorTypes GetExpired(int nMaxCount, out List<TaskResultData> aTasts)
|
||||
{
|
||||
aTasts = null;
|
||||
ErrorTypes eErrorTypes = ErrorTypes.NoError;
|
||||
try
|
||||
{
|
||||
using (IDbConnection sqlCon = GetDbConnection())
|
||||
{
|
||||
sqlCon.Open();
|
||||
using (IDbCommand oSelCommand = sqlCon.CreateCommand())
|
||||
{
|
||||
oSelCommand.CommandText = GetSELECTExpiredTasksString(nMaxCount);
|
||||
using (IDataReader oReader = oSelCommand.ExecuteReader())
|
||||
{
|
||||
aTasts = new List<TaskResultData>();
|
||||
while (oReader.Read())
|
||||
{
|
||||
TaskResultData oTaskResultData = new TaskResultData();
|
||||
TaskResultFromReader(oTaskResultData, oReader);
|
||||
aTasts.Add(oTaskResultData);
|
||||
eErrorTypes = ErrorTypes.NoError;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
return eErrorTypes;
|
||||
}
|
||||
public ErrorTypes GetOrCreate(string sKey, TaskResultData oDefaultTast, out TaskResultData oTaskResultData, out bool bCreate)
|
||||
{
|
||||
ErrorTypes eErrorTypes = ErrorTypes.TaskResult;
|
||||
oTaskResultData = null;
|
||||
bCreate = false;
|
||||
try
|
||||
{
|
||||
using (IDbConnection sqlCon = GetDbConnection())
|
||||
{
|
||||
sqlCon.Open();
|
||||
bool bEmptyRead = true;
|
||||
using (IDbCommand oSelCommand = sqlCon.CreateCommand())
|
||||
{
|
||||
oSelCommand.CommandText = GetSELECTString(sKey);
|
||||
using (IDataReader oReader = oSelCommand.ExecuteReader())
|
||||
{
|
||||
if (true == oReader.Read())
|
||||
{
|
||||
oTaskResultData = new TaskResultData();
|
||||
TaskResultFromReader(oTaskResultData, oReader);
|
||||
|
||||
bEmptyRead = false;
|
||||
bCreate = false;
|
||||
eErrorTypes = ErrorTypes.NoError;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (bEmptyRead)
|
||||
{
|
||||
using (IDbCommand oAddCommand = sqlCon.CreateCommand())
|
||||
{
|
||||
oAddCommand.CommandText = GetINSERTString(oDefaultTast);
|
||||
bool bExist = false;
|
||||
try
|
||||
{
|
||||
oAddCommand.ExecuteNonQuery();
|
||||
oTaskResultData = oDefaultTast.Clone();
|
||||
eErrorTypes = ErrorTypes.NoError;
|
||||
bCreate = true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
bExist = true;
|
||||
}
|
||||
if (bExist)
|
||||
{
|
||||
using (IDbCommand oSelCommand = sqlCon.CreateCommand())
|
||||
{
|
||||
oSelCommand.CommandText = GetSELECTString(sKey);
|
||||
using (IDataReader oReader = oSelCommand.ExecuteReader())
|
||||
{
|
||||
if (true == oReader.Read())
|
||||
{
|
||||
oTaskResultData = new TaskResultData();
|
||||
TaskResultFromReader(oTaskResultData, oReader);
|
||||
|
||||
bCreate = false;
|
||||
eErrorTypes = ErrorTypes.NoError;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
return eErrorTypes;
|
||||
}
|
||||
public void GetOrCreateBegin(string sKey, TaskResultData oDataToAdd, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
m_oGetOrCreate = new TransportClass(fCallback, oParam);
|
||||
m_oGetOrCreate.m_oTast = oDataToAdd;
|
||||
m_oGetOrCreate.m_bCreate = true;
|
||||
try
|
||||
{
|
||||
m_oGetOrCreate.m_oSqlCon = GetDbConnection();
|
||||
m_oGetOrCreate.m_oSqlCon.Open();
|
||||
IDbCommand oSelCommand = m_oGetOrCreate.m_oSqlCon.CreateCommand();
|
||||
oSelCommand.CommandText = GetSELECTString(sKey);
|
||||
m_oGetOrCreate.m_oCommand = oSelCommand;
|
||||
m_oGetOrCreate.m_delegateReader = new ExecuteReader(oSelCommand.ExecuteReader);
|
||||
m_oGetOrCreate.m_delegateReader.BeginInvoke(GetOrCreateCallback, null);
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oGetOrCreate.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
public ErrorTypes GetOrCreateEnd(IAsyncResult ar, out TaskResultData oDataAdded, out bool bCreate)
|
||||
{
|
||||
bCreate = m_oGetOrCreate.m_bCreate;
|
||||
oDataAdded = null;
|
||||
if (ErrorTypes.NoError == m_oGetOrCreate.m_eError)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (null != m_oGetOrCreate.m_delegateReader)
|
||||
{
|
||||
using (IDataReader oReader = m_oGetOrCreate.m_delegateReader.EndInvoke(ar))
|
||||
{
|
||||
if (true == oReader.Read())
|
||||
{
|
||||
m_oGetOrCreate.m_oTast = new TaskResultData();
|
||||
TaskResultFromReader(m_oGetOrCreate.m_oTast, oReader);
|
||||
}
|
||||
else
|
||||
m_oGetOrCreate.m_eError = ErrorTypes.TaskResult;
|
||||
}
|
||||
}
|
||||
m_oGetOrCreate.Close();
|
||||
if (null != m_oGetOrCreate.m_oTast)
|
||||
oDataAdded = m_oGetOrCreate.m_oTast.Clone();
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oGetOrCreate.Dispose();
|
||||
}
|
||||
}
|
||||
return m_oGetOrCreate.m_eError;
|
||||
}
|
||||
public ErrorTypes Remove(string sKey)
|
||||
{
|
||||
ErrorTypes eErrorTypes = ErrorTypes.TaskResult;
|
||||
using (IDbConnection sqlCon = GetDbConnection())
|
||||
{
|
||||
try
|
||||
{
|
||||
sqlCon.Open();
|
||||
using (IDbCommand oSelCommand = sqlCon.CreateCommand())
|
||||
{
|
||||
oSelCommand.CommandText = GetDELETEString(sKey);
|
||||
oSelCommand.ExecuteNonQuery();
|
||||
eErrorTypes = ErrorTypes.NoError;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
return eErrorTypes;
|
||||
}
|
||||
public void RemoveBegin(string sKey, AsyncCallback fCallback, object oParam)
|
||||
{
|
||||
m_oRemove = Remove;
|
||||
m_oRemove.BeginInvoke(sKey, fCallback, oParam);
|
||||
}
|
||||
public ErrorTypes RemoveEnd(IAsyncResult ar)
|
||||
{
|
||||
ErrorTypes eErrorTypes = ErrorTypes.NoError;
|
||||
try
|
||||
{
|
||||
eErrorTypes = m_oRemove.EndInvoke(ar);
|
||||
}
|
||||
catch
|
||||
{
|
||||
eErrorTypes = ErrorTypes.TaskResult;
|
||||
}
|
||||
return eErrorTypes;
|
||||
}
|
||||
private void GetOrCreateCallback(IAsyncResult ar)
|
||||
{
|
||||
try
|
||||
{
|
||||
bool bEmptyRead = false;
|
||||
using (IDataReader oReader = m_oGetOrCreate.m_delegateReader.EndInvoke(ar))
|
||||
{
|
||||
if (true == oReader.Read())
|
||||
{
|
||||
m_oGetOrCreate.m_oTast = new TaskResultData();
|
||||
TaskResultFromReader(m_oGetOrCreate.m_oTast, oReader);
|
||||
}
|
||||
else
|
||||
bEmptyRead = true;
|
||||
}
|
||||
if (null != m_oGetOrCreate.m_oCommand)
|
||||
{
|
||||
m_oGetOrCreate.m_oCommand.Dispose();
|
||||
m_oGetOrCreate.m_oCommand = null;
|
||||
}
|
||||
if (bEmptyRead)
|
||||
{
|
||||
IDbCommand oSelCommand = m_oGetOrCreate.m_oSqlCon.CreateCommand();
|
||||
oSelCommand.CommandText = GetINSERTString(m_oGetOrCreate.m_oTast);
|
||||
m_oGetOrCreate.m_oCommand = oSelCommand;
|
||||
m_oGetOrCreate.m_delegateNonQuery = new ExecuteNonQuery(oSelCommand.ExecuteNonQuery);
|
||||
m_oGetOrCreate.m_delegateNonQuery.BeginInvoke(GetOrCreateCallback2, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_oGetOrCreate.m_bCreate = false;
|
||||
m_oGetOrCreate.m_delegateReader = null;
|
||||
m_oGetOrCreate.FireCallback();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oGetOrCreate.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
private void GetOrCreateCallback2(IAsyncResult ar)
|
||||
{
|
||||
try
|
||||
{
|
||||
bool bExist = false;
|
||||
try
|
||||
{
|
||||
m_oGetOrCreate.m_delegateNonQuery.EndInvoke(ar);
|
||||
m_oGetOrCreate.m_bCreate = true;
|
||||
if (null != m_oGetOrCreate.m_oCommand)
|
||||
{
|
||||
m_oGetOrCreate.m_oCommand.Dispose();
|
||||
m_oGetOrCreate.m_oCommand = null;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oGetOrCreate.m_bCreate = false;
|
||||
bExist = true;
|
||||
}
|
||||
if (bExist)
|
||||
{
|
||||
IDbCommand oSelCommand = m_oGetOrCreate.m_oSqlCon.CreateCommand();
|
||||
oSelCommand.CommandText = GetSELECTString(m_oGetOrCreate.m_oTast.sKey);
|
||||
m_oGetOrCreate.m_oCommand = oSelCommand;
|
||||
m_oGetOrCreate.m_delegateReader = new ExecuteReader(oSelCommand.ExecuteReader);
|
||||
m_oGetOrCreate.m_delegateReader.BeginInvoke(m_oGetOrCreate.m_fCallback, m_oGetOrCreate.m_oParam);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_oGetOrCreate.m_delegateReader = null;
|
||||
m_oGetOrCreate.FireCallback();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oGetOrCreate.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
private void AddRandomKeyCallback(IAsyncResult ar)
|
||||
{
|
||||
try
|
||||
{
|
||||
bool bExist = false;
|
||||
try
|
||||
{
|
||||
m_oAddRandomKey.m_delegateNonQuery.EndInvoke(ar);
|
||||
if (null != m_oAddRandomKey.m_oCommand)
|
||||
{
|
||||
m_oAddRandomKey.m_oCommand.Dispose();
|
||||
m_oAddRandomKey.m_oCommand = null;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
bExist = true;
|
||||
}
|
||||
if(bExist)
|
||||
{
|
||||
string sNewKey = m_oAddRandomKey.m_oTast.sKey + "_" + m_oRandom.Next(mc_nRandomMaxNumber);
|
||||
m_oAddRandomKey.m_oTast.sKey = sNewKey;
|
||||
IDbCommand oSelCommand = m_oAddRandomKey.m_oSqlCon.CreateCommand();
|
||||
m_oAddRandomKey.m_oCommand = oSelCommand;
|
||||
oSelCommand.CommandText = GetINSERTString(m_oAddRandomKey.m_oTast);
|
||||
m_oAddRandomKey.m_delegateNonQuery = new ExecuteNonQuery(oSelCommand.ExecuteNonQuery);
|
||||
m_oAddRandomKey.m_delegateNonQuery.BeginInvoke(AddRandomKeyCallback, null);
|
||||
}
|
||||
else
|
||||
{
|
||||
m_oAddRandomKey.Close();
|
||||
m_oAddRandomKey.FireCallback();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
m_oAddRandomKey.DisposeAndCallback();
|
||||
}
|
||||
}
|
||||
private IDbConnection GetDbConnection()
|
||||
{
|
||||
var cs = ConfigurationManager.ConnectionStrings[m_sConnectionString];
|
||||
var dbProvider = System.Data.Common.DbProviderFactories.GetFactory(cs.ProviderName);
|
||||
var connection = dbProvider.CreateConnection();
|
||||
connection.ConnectionString = cs.ConnectionString;
|
||||
return connection;
|
||||
}
|
||||
private DbManager GetDbManager(string connectionStringName)
|
||||
{
|
||||
var cs = ConfigurationManager.ConnectionStrings[connectionStringName];
|
||||
if (!DbRegistry.IsDatabaseRegistered(connectionStringName))
|
||||
{
|
||||
DbRegistry.RegisterDatabase(connectionStringName, cs);
|
||||
}
|
||||
return new DbManager(connectionStringName);
|
||||
}
|
||||
private void TaskResultFromReader(TaskResultData oTaskResultData, IDataReader oReader)
|
||||
{
|
||||
oTaskResultData.sKey = Convert.ToString(oReader["tr_key"]);
|
||||
oTaskResultData.sFormat = Convert.ToString(oReader["tr_format"]);
|
||||
oTaskResultData.eStatus = (FileStatus)Convert.ToByte(oReader["tr_status"]);
|
||||
oTaskResultData.nStatusInfo = Convert.ToInt32(oReader["tr_status_info"]);
|
||||
oTaskResultData.oLastOpenDate = Convert.ToDateTime(oReader["tr_last_open_date"]);
|
||||
oTaskResultData.sTitle = Convert.ToString(oReader["tr_title"]);
|
||||
}
|
||||
private string GetINSERTString(TaskResultData oTast)
|
||||
{
|
||||
return string.Format("INSERT INTO tast_result ( tr_key, tr_format, tr_status, tr_status_info, tr_last_open_date, tr_title ) VALUES ('{0}', '{1}', '{2}' , '{3}', '{4}', '{5}');", oTast.sKey, oTast.sFormat, oTast.eStatus.ToString("d"), oTast.nStatusInfo.ToString(), DateTime.UtcNow.ToString(Constants.mc_sDateTimeFormat), Utils.MySqlEscape(oTast.sTitle, m_sConnectionString));
|
||||
}
|
||||
private string GetUPDATEString(string sKey, TaskResultDataToUpdate oTast)
|
||||
{
|
||||
List<string> aValues = new List<string>();
|
||||
if (false == string.IsNullOrEmpty(oTast.sFormat))
|
||||
aValues.Add("tr_format='" + oTast.sFormat + "'");
|
||||
if (oTast.eStatus.HasValue)
|
||||
aValues.Add("tr_status='" + oTast.eStatus.Value.ToString("d") + "'");
|
||||
if (oTast.nStatusInfo.HasValue)
|
||||
aValues.Add("tr_status_info='" + oTast.nStatusInfo.Value.ToString() + "'");
|
||||
aValues.Add("tr_last_open_date='" + DateTime.UtcNow.ToString(Constants.mc_sDateTimeFormat) + "'");
|
||||
if (false == string.IsNullOrEmpty(oTast.sTitle))
|
||||
aValues.Add("tr_title='" + Utils.MySqlEscape(oTast.sTitle, m_sConnectionString) + "'");
|
||||
return string.Format("UPDATE tast_result SET {0} WHERE tr_key='{1}';", string.Join(",", aValues.ToArray()), sKey);
|
||||
}
|
||||
private string GetSELECTString(string sKey)
|
||||
{
|
||||
return string.Format("SELECT * FROM tast_result WHERE tr_key='{0}';", sKey);
|
||||
}
|
||||
private string GetDELETEString(string sKey)
|
||||
{
|
||||
return string.Format("DELETE FROM tast_result WHERE tr_key='{0}';", sKey);
|
||||
}
|
||||
private string GetSELECTExpiredTasksString(int nMaxCount)
|
||||
{
|
||||
DateTime oDateTimeExpired = DateTime.UtcNow - TimeSpan.Parse(ConfigurationManager.AppSettings["utils.taskresult.ttl"] ?? "7.00:00:00");
|
||||
string strDateTimeExpired = oDateTimeExpired.ToString(Constants.mc_sDateTimeFormat);
|
||||
return string.Format("SELECT * FROM tast_result WHERE tr_last_open_date <= '{0}' LIMIT {1};", strDateTimeExpired, nMaxCount);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,41 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Configuration;
|
||||
|
||||
namespace FileConverterUtils2
|
||||
{
|
||||
|
||||
}
|
||||
@@ -1,275 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Configuration;
|
||||
using System.Data;
|
||||
using System.Web;
|
||||
using System.Web.Caching;
|
||||
using System.Web.Script.Serialization;
|
||||
using System.Security.Cryptography;
|
||||
|
||||
using ASC.Common.Data;
|
||||
|
||||
namespace FileConverterUtils2
|
||||
{
|
||||
public class FileStatistic
|
||||
{
|
||||
private string m_sConnectionString = ConfigurationManager.AppSettings["utils.filestatistic.db.connectionstring"];
|
||||
private IDbConnection GetDbConnection(string connectionStringName)
|
||||
{
|
||||
var cs = ConfigurationManager.ConnectionStrings[connectionStringName];
|
||||
var dbProvider = System.Data.Common.DbProviderFactories.GetFactory(cs.ProviderName);
|
||||
var connection = dbProvider.CreateConnection();
|
||||
connection.ConnectionString = cs.ConnectionString;
|
||||
return connection;
|
||||
}
|
||||
|
||||
private DbManager GetDbManager(string connectionStringName)
|
||||
{
|
||||
var cs = ConfigurationManager.ConnectionStrings[connectionStringName];
|
||||
if (!DbRegistry.IsDatabaseRegistered(connectionStringName))
|
||||
{
|
||||
DbRegistry.RegisterDatabase(connectionStringName, cs);
|
||||
}
|
||||
return new DbManager(connectionStringName);
|
||||
|
||||
}
|
||||
public bool insert(string sAffiliateID, string sFileName, DateTime dtTime, string sTag)
|
||||
{
|
||||
|
||||
bool bResult = true;
|
||||
string sInsertSQL = string.Format("INSERT INTO file_statistic2 (fsc_affiliate, fsc_filename, fsc_time, fsc_tag) VALUES ('{0}', '{1}', '{2}', '{3}')",
|
||||
sAffiliateID, Utils.MySqlEscape(sFileName, m_sConnectionString), dtTime.ToString(Constants.mc_sDateTimeFormat), sTag);
|
||||
|
||||
using (IDbConnection sqlCon = GetDbConnection(m_sConnectionString))
|
||||
{
|
||||
try
|
||||
{
|
||||
sqlCon.Open();
|
||||
|
||||
using (IDbCommand oInsertCommand = sqlCon.CreateCommand())
|
||||
{
|
||||
oInsertCommand.CommandText = sInsertSQL;
|
||||
oInsertCommand.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
bResult = false;
|
||||
}
|
||||
}
|
||||
return bResult;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public static class Signature
|
||||
{
|
||||
private const double mc_dKeyDateEpsilon = 300;
|
||||
|
||||
public static string Create<T>(T obj, string secret)
|
||||
{
|
||||
var serializer = new JavaScriptSerializer();
|
||||
var str = serializer.Serialize(obj);
|
||||
var payload = GetHashBase64(str + secret) + "?" + str;
|
||||
return HttpServerUtility.UrlTokenEncode(Encoding.UTF8.GetBytes(payload));
|
||||
}
|
||||
|
||||
private static string GetHashBase64(string str)
|
||||
{
|
||||
return Convert.ToBase64String(SHA256.Create().ComputeHash(Encoding.UTF8.GetBytes(str)));
|
||||
}
|
||||
|
||||
private static string GetHashBase64MD5(string str)
|
||||
{
|
||||
return Convert.ToBase64String(MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(str)));
|
||||
}
|
||||
|
||||
private static T Read<T>(string signature, string secret, bool bUseSecret)
|
||||
{
|
||||
try
|
||||
{
|
||||
var payloadParts = Encoding.UTF8.GetString(HttpServerUtility.UrlTokenDecode(signature)).Split('?');
|
||||
if (false == bUseSecret || (GetHashBase64(payloadParts[1] + secret) == payloadParts[0]) || (GetHashBase64MD5(payloadParts[1] + secret) == payloadParts[0]))
|
||||
{
|
||||
|
||||
return new JavaScriptSerializer().Deserialize<T>(payloadParts[1]);
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
|
||||
}
|
||||
return default(T);
|
||||
}
|
||||
|
||||
public static ErrorTypes isAccept(string strVKey, string strCurrentKey, bool bCheckIP, string strCurrentIp)
|
||||
{
|
||||
try
|
||||
{
|
||||
string strKeyId = null;
|
||||
System.Collections.Generic.Dictionary<string, object> arrElements = null;
|
||||
ASC.Core.Billing.PaymentOffice oPaymentOffice = null;
|
||||
try
|
||||
{
|
||||
getVKeyStringParam(strVKey, ConfigurationSettings.AppSettings["keyKeyID"], out strKeyId);
|
||||
|
||||
oPaymentOffice = getPaymentOffice(strKeyId);
|
||||
var vElement = Read<object>(strVKey, oPaymentOffice.Key2, true);
|
||||
if (null == vElement)
|
||||
return ErrorTypes.VKeyEncrypt;
|
||||
arrElements = (System.Collections.Generic.Dictionary<string, object>)vElement;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return ErrorTypes.VKeyEncrypt;
|
||||
}
|
||||
object objValue = null;
|
||||
|
||||
DateTime oDateTimeNow = DateTime.UtcNow;
|
||||
|
||||
if (false == ( (oDateTimeNow - oPaymentOffice.EndDate).TotalSeconds < mc_dKeyDateEpsilon))
|
||||
return ErrorTypes.VKeyKeyExpire;
|
||||
|
||||
int nUserCount = 0;
|
||||
|
||||
arrElements.TryGetValue(ConfigurationSettings.AppSettings["keyUserCount"], out objValue);
|
||||
|
||||
if (null != objValue)
|
||||
nUserCount = (int)objValue;
|
||||
|
||||
if (nUserCount > oPaymentOffice.UsersCount)
|
||||
return ErrorTypes.VKeyUserCountExceed;
|
||||
|
||||
if (bCheckIP)
|
||||
{
|
||||
arrElements.TryGetValue(ConfigurationSettings.AppSettings["keyIp"], out objValue);
|
||||
if (null == objValue)
|
||||
return ErrorTypes.VKey;
|
||||
string strUserIp = (string)objValue;
|
||||
if (strCurrentIp != strUserIp)
|
||||
return ErrorTypes.VKey;
|
||||
}
|
||||
|
||||
arrElements.TryGetValue(ConfigurationSettings.AppSettings["keyKey"], out objValue);
|
||||
if (null == objValue)
|
||||
return ErrorTypes.VKey;
|
||||
string strKey = (string)objValue;
|
||||
|
||||
if (strCurrentKey.Length > strKey.Length)
|
||||
{
|
||||
int nIndexStartFormat = strCurrentKey.LastIndexOf(".");
|
||||
if (-1 != nIndexStartFormat)
|
||||
strCurrentKey = strCurrentKey.Substring(0, nIndexStartFormat);
|
||||
}
|
||||
|
||||
if (strKey != strCurrentKey && strKey + "_temp" != strCurrentKey)
|
||||
return ErrorTypes.VKey;
|
||||
|
||||
arrElements.TryGetValue(ConfigurationSettings.AppSettings["keyDate"], out objValue);
|
||||
if (null != objValue)
|
||||
{
|
||||
DateTime oDateTimeKey = (DateTime)objValue;
|
||||
DateTime oDateTimeKeyAddHour = oDateTimeKey;
|
||||
oDateTimeKeyAddHour = oDateTimeKeyAddHour.AddHours(double.Parse(ConfigurationSettings.AppSettings["keyDateInterval"] ?? "1", Constants.mc_oCultureInfo));
|
||||
|
||||
if ((oDateTimeKey - oDateTimeNow).TotalSeconds > mc_dKeyDateEpsilon)
|
||||
return ErrorTypes.VKeyTimeIncorrect;
|
||||
|
||||
if( mc_dKeyDateEpsilon < (oDateTimeNow - oDateTimeKeyAddHour).TotalSeconds)
|
||||
return ErrorTypes.VKeyTimeExpire;
|
||||
}
|
||||
}
|
||||
catch { return ErrorTypes.VKey; }
|
||||
return ErrorTypes.NoError;
|
||||
}
|
||||
public static void getVKeyParams(string strVKey, out bool bPaid)
|
||||
{
|
||||
bPaid = true;
|
||||
try
|
||||
{
|
||||
string strKeyId = null;
|
||||
getVKeyStringParam(strVKey, ConfigurationSettings.AppSettings["keyKeyID"], out strKeyId);
|
||||
|
||||
ASC.Core.Billing.PaymentOffice oPaymentOffice = getPaymentOffice(strKeyId);
|
||||
|
||||
var vElement = Read<object>(strVKey, oPaymentOffice.Key2, true);
|
||||
if (null == vElement)
|
||||
return;
|
||||
System.Collections.Generic.Dictionary<string, object> arrElements = (System.Collections.Generic.Dictionary<string, object>)vElement;
|
||||
object objValue = null;
|
||||
arrElements.TryGetValue(ConfigurationSettings.AppSettings["keyPaid"], out objValue);
|
||||
if (null == objValue)
|
||||
return;
|
||||
bPaid = (bool)objValue;
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
public static void getVKeyStringParam(string strVKey, string strParamName, out string strParam)
|
||||
{
|
||||
strParam = null;
|
||||
try
|
||||
{
|
||||
var vElement = Read<object>(strVKey, null, false);
|
||||
if (null == vElement)
|
||||
return;
|
||||
System.Collections.Generic.Dictionary<string, object> arrElements = (System.Collections.Generic.Dictionary<string, object>)vElement;
|
||||
object objValue = null;
|
||||
arrElements.TryGetValue(strParamName, out objValue);
|
||||
if (null == objValue)
|
||||
return;
|
||||
strParam = (string)objValue;
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public static ASC.Core.Billing.PaymentOffice getPaymentOffice(string strKeyId)
|
||||
{
|
||||
ASC.Core.Billing.PaymentOffice oPaymentOffice = null;
|
||||
Cache oCache = HttpRuntime.Cache;
|
||||
object oCacheVal = oCache.Get(strKeyId);
|
||||
if (null == oCacheVal)
|
||||
{
|
||||
ASC.Core.Billing.BillingClient oBillingClient = new ASC.Core.Billing.BillingClient();
|
||||
oPaymentOffice = oBillingClient.GetPaymentOffice(strKeyId);
|
||||
string sWebCacheExpireSeconds = ConfigurationSettings.AppSettings["WebCacheExpireSeconds"];
|
||||
oCache.Add(strKeyId, oPaymentOffice, null, DateTime.Now.AddSeconds(int.Parse(sWebCacheExpireSeconds)), Cache.NoSlidingExpiration, CacheItemPriority.Normal, null);
|
||||
}
|
||||
else
|
||||
oPaymentOffice = oCacheVal as ASC.Core.Billing.PaymentOffice;
|
||||
return oPaymentOffice;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,87 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
namespace LicenseTest
|
||||
{
|
||||
partial class Form1
|
||||
{
|
||||
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.button1 = new System.Windows.Forms.Button();
|
||||
this.button2 = new System.Windows.Forms.Button();
|
||||
this.SuspendLayout();
|
||||
|
||||
this.button1.Location = new System.Drawing.Point(12, 40);
|
||||
this.button1.Name = "button1";
|
||||
this.button1.Size = new System.Drawing.Size(117, 23);
|
||||
this.button1.TabIndex = 0;
|
||||
this.button1.Text = "Select license file";
|
||||
this.button1.UseVisualStyleBackColor = true;
|
||||
|
||||
this.button2.Location = new System.Drawing.Point(136, 40);
|
||||
this.button2.Name = "button2";
|
||||
this.button2.Size = new System.Drawing.Size(136, 23);
|
||||
this.button2.TabIndex = 1;
|
||||
this.button2.Text = "Select license folder";
|
||||
this.button2.UseVisualStyleBackColor = true;
|
||||
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(284, 262);
|
||||
this.Controls.Add(this.button2);
|
||||
this.Controls.Add(this.button1);
|
||||
this.Name = "Form1";
|
||||
this.Text = "Form1";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Button button1;
|
||||
private System.Windows.Forms.Button button2;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LicenseTest
|
||||
{
|
||||
public partial class Form1 : Form
|
||||
{
|
||||
public Form1()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,120 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -1,90 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.21022</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{02FD89FC-7CFB-4269-B082-5DE063F0FC37}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>LicenseTest</RootNamespace>
|
||||
<AssemblyName>LicenseTest</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Form1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Form1.Designer.cs">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="Form1.resx">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\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>
|
||||
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace LicenseTest
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new Form1());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
[assembly: AssemblyTitle("LicenseTest")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("LicenseTest")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2014")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
[assembly: Guid("666ba679-5877-43d9-9ff3-49e15e8a1ff5")]
|
||||
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
@@ -1,78 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
|
||||
namespace LicenseTest.Properties
|
||||
{
|
||||
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("LicenseTest.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,117 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
@@ -1,51 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
|
||||
namespace LicenseTest.Properties
|
||||
{
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,7 +0,0 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
||||
@@ -1,20 +0,0 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual C# Express 2008
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "PdfWriter", "PdfWriter\PdfWriter.csproj", "{D7628414-F181-49AB-9E23-76D741426641}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{D7628414-F181-49AB-9E23-76D741426641}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{D7628414-F181-49AB-9E23-76D741426641}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{D7628414-F181-49AB-9E23-76D741426641}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{D7628414-F181-49AB-9E23-76D741426641}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
@@ -1,952 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using System.IO;
|
||||
|
||||
namespace PdfWriter
|
||||
{
|
||||
enum CommandType
|
||||
{
|
||||
ctPenXML = 0,
|
||||
ctPenColor = 1,
|
||||
ctPenAlpha = 2,
|
||||
ctPenSize = 3,
|
||||
ctPenDashStyle = 4,
|
||||
ctPenLineStartCap = 5,
|
||||
ctPenLineEndCap = 6,
|
||||
ctPenLineJoin = 7,
|
||||
ctPenDashPatern = 8,
|
||||
ctPenDashPatternCount = 9,
|
||||
ctPenDashOffset = 10,
|
||||
ctPenAlign = 11,
|
||||
ctPenMiterLimit = 12,
|
||||
|
||||
ctBrushXML = 20,
|
||||
ctBrushType = 21,
|
||||
ctBrushColor1 = 22,
|
||||
ctBrushColor2 = 23,
|
||||
ctBrushAlpha1 = 24,
|
||||
ctBrushAlpha2 = 25,
|
||||
ctBrushTexturePath = 26,
|
||||
ctBrushTextureAlpha = 27,
|
||||
ctBrushTextureMode = 28,
|
||||
ctBrushRectable = 29,
|
||||
ctBrushRectableEnabled = 30,
|
||||
ctBrushGradient = 31,
|
||||
|
||||
ctFontXML = 40,
|
||||
ctFontName = 41,
|
||||
ctFontSize = 42,
|
||||
ctFontStyle = 43,
|
||||
ctFontPath = 44,
|
||||
ctFontGID = 45,
|
||||
ctFontCharSpace = 46,
|
||||
|
||||
ctShadowXML = 50,
|
||||
ctShadowVisible = 51,
|
||||
ctShadowDistanceX = 52,
|
||||
ctShadowDistanceY = 53,
|
||||
ctShadowBlurSize = 54,
|
||||
ctShadowColor = 55,
|
||||
ctShadowAlpha = 56,
|
||||
|
||||
ctEdgeXML = 70,
|
||||
ctEdgeVisible = 71,
|
||||
ctEdgeDistance = 72,
|
||||
ctEdgeColor = 73,
|
||||
ctEdgeAlpha = 74,
|
||||
|
||||
ctDrawText = 80,
|
||||
ctDrawTextEx = 81,
|
||||
|
||||
ctPathCommandMoveTo = 91,
|
||||
ctPathCommandLineTo = 92,
|
||||
ctPathCommandLinesTo = 93,
|
||||
ctPathCommandCurveTo = 94,
|
||||
ctPathCommandCurvesTo = 95,
|
||||
ctPathCommandArcTo = 96,
|
||||
ctPathCommandClose = 97,
|
||||
ctPathCommandEnd = 98,
|
||||
ctDrawPath = 99,
|
||||
ctPathCommandStart = 100,
|
||||
ctPathCommandGetCurrentPoint = 101,
|
||||
ctPathCommandText = 102,
|
||||
ctPathCommandTextEx = 103,
|
||||
|
||||
ctDrawImage = 110,
|
||||
ctDrawImageFromFile = 111,
|
||||
|
||||
ctSetParams = 120,
|
||||
|
||||
ctBeginCommand = 121,
|
||||
ctEndCommand = 122,
|
||||
|
||||
ctSetTransform = 130,
|
||||
ctResetTransform = 131,
|
||||
|
||||
ctClipMode = 140,
|
||||
|
||||
ctCommandLong1 = 150,
|
||||
ctCommandDouble1 = 151,
|
||||
ctCommandString1 = 152,
|
||||
ctCommandLong2 = 153,
|
||||
ctCommandDouble2 = 154,
|
||||
ctCommandString2 = 155,
|
||||
|
||||
ctPageWidth = 200,
|
||||
ctPageHeight = 201,
|
||||
|
||||
ctPageStart = 202,
|
||||
ctPageEnd = 203,
|
||||
|
||||
ctError = 255
|
||||
}
|
||||
|
||||
public class CPdfWriter
|
||||
{
|
||||
private string m_sHtmlPlace = "";
|
||||
private string m_sThemesPlace = "";
|
||||
private bool m_bIsUnregistredVersion = false;
|
||||
|
||||
List<string> m_arTmpTexturePrushPaths = new List<string>();
|
||||
|
||||
public void SetHtmlPlace(string sRoot)
|
||||
{
|
||||
m_sHtmlPlace = sRoot;
|
||||
}
|
||||
|
||||
public void SetThemesPlace(string sRoot)
|
||||
{
|
||||
m_sThemesPlace = sRoot;
|
||||
}
|
||||
|
||||
public void SetUnregistredVersion(bool bIsUnReg)
|
||||
{
|
||||
m_bIsUnregistredVersion = bIsUnReg;
|
||||
}
|
||||
|
||||
public bool SavePdf2(string sPathXml, string sDstFile)
|
||||
{
|
||||
try
|
||||
{
|
||||
AVSOfficePDFWriter.CPDFWriterClass oWriter = new AVSOfficePDFWriter.CPDFWriterClass();
|
||||
oWriter.CreatePDF();
|
||||
|
||||
XmlDocument oDocument = new XmlDocument();
|
||||
oDocument.Load(sPathXml);
|
||||
|
||||
XmlNodeList list = oDocument.ChildNodes[0].ChildNodes;
|
||||
int nPagesCount = list.Count;
|
||||
for (int nPage = 0; nPage < nPagesCount; ++nPage)
|
||||
{
|
||||
oWriter.NewPage();
|
||||
oWriter.BeginCommand(1);
|
||||
|
||||
XmlNodeList nodes = list[nPage].ChildNodes;
|
||||
int nCommandsCount = nodes.Count;
|
||||
|
||||
bool bIsPathOpened = false;
|
||||
for (int nCommand = 0; nCommand < nCommandsCount; ++nCommand)
|
||||
{
|
||||
XmlNode oNode = nodes[nCommand];
|
||||
XmlAttributeCollection attr = oNode.Attributes;
|
||||
CommandType type = (CommandType)Convert.ToInt32(oNode.Attributes["t"].Value);
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case CommandType.ctPenColor:
|
||||
oWriter.PenColor = Convert.ToInt32(attr["v"].Value);
|
||||
break;
|
||||
case CommandType.ctPenAlpha:
|
||||
oWriter.PenAlpha = Convert.ToInt32(attr["v"].Value);
|
||||
break;
|
||||
case CommandType.ctPenSize:
|
||||
oWriter.PenSize = Convert.ToDouble(attr["v"].Value);
|
||||
break;
|
||||
case CommandType.ctBrushColor1:
|
||||
oWriter.BrushColor1 = Convert.ToInt32(attr["v"].Value);
|
||||
break;
|
||||
case CommandType.ctBrushAlpha1:
|
||||
oWriter.BrushAlpha1 = Convert.ToInt32(attr["v"].Value);
|
||||
break;
|
||||
case CommandType.ctBrushColor2:
|
||||
oWriter.BrushColor2 = Convert.ToInt32(attr["v"].Value);
|
||||
break;
|
||||
case CommandType.ctBrushAlpha2:
|
||||
oWriter.BrushAlpha2 = Convert.ToInt32(attr["v"].Value);
|
||||
break;
|
||||
case CommandType.ctSetTransform:
|
||||
oWriter.SetTransform(Convert.ToDouble(attr["m1"].Value), Convert.ToDouble(attr["m2"].Value), Convert.ToDouble(attr["m3"].Value),
|
||||
Convert.ToDouble(attr["m4"].Value), Convert.ToDouble(attr["m5"].Value), Convert.ToDouble(attr["m6"].Value));
|
||||
break;
|
||||
case CommandType.ctPathCommandStart:
|
||||
if (bIsPathOpened)
|
||||
{
|
||||
oWriter.PathCommandEnd();
|
||||
oWriter.EndCommand(4);
|
||||
oWriter.PathCommandStart();
|
||||
oWriter.BeginCommand(4);
|
||||
}
|
||||
else
|
||||
{
|
||||
oWriter.PathCommandStart();
|
||||
oWriter.BeginCommand(4);
|
||||
}
|
||||
bIsPathOpened = true;
|
||||
break;
|
||||
case CommandType.ctPathCommandMoveTo:
|
||||
oWriter.PathCommandMoveTo(Convert.ToDouble(attr["x"].Value), Convert.ToDouble(attr["y"].Value));
|
||||
break;
|
||||
case CommandType.ctPathCommandLineTo:
|
||||
oWriter.PathCommandLineTo(Convert.ToDouble(attr["x"].Value), Convert.ToDouble(attr["y"].Value));
|
||||
break;
|
||||
case CommandType.ctPathCommandCurveTo:
|
||||
oWriter.PathCommandCurveTo(Convert.ToDouble(attr["x1"].Value), Convert.ToDouble(attr["y1"].Value), Convert.ToDouble(attr["x2"].Value),
|
||||
Convert.ToDouble(attr["y2"].Value), Convert.ToDouble(attr["x3"].Value), Convert.ToDouble(attr["y3"].Value));
|
||||
break;
|
||||
case CommandType.ctPathCommandClose:
|
||||
oWriter.PathCommandClose();
|
||||
break;
|
||||
case CommandType.ctDrawPath:
|
||||
oWriter.DrawPath(Convert.ToInt32(attr["v"].Value));
|
||||
break;
|
||||
case CommandType.ctDrawImageFromFile:
|
||||
oWriter.DrawImageFromFile(attr["src"].Value, Convert.ToDouble(attr["x"].Value), Convert.ToDouble(attr["y"].Value),
|
||||
Convert.ToDouble(attr["w"]), Convert.ToDouble(attr["h"].Value));
|
||||
break;
|
||||
case CommandType.ctFontName:
|
||||
oWriter.FontName = attr["v"].Value;
|
||||
break;
|
||||
case CommandType.ctFontSize:
|
||||
oWriter.FontSize = Convert.ToDouble(attr["v"].Value);
|
||||
break;
|
||||
case CommandType.ctFontStyle:
|
||||
oWriter.FontStyle = Convert.ToInt32(attr["v"].Value);
|
||||
break;
|
||||
case CommandType.ctDrawText:
|
||||
oWriter.CommandDrawText(attr["v"].Value, Convert.ToDouble(attr["x"].Value), Convert.ToDouble(attr["y"].Value), 0, 0, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
if (bIsPathOpened)
|
||||
{
|
||||
oWriter.PathCommandEnd();
|
||||
oWriter.EndCommand(4);
|
||||
}
|
||||
|
||||
oWriter.EndCommand(1);
|
||||
}
|
||||
|
||||
oWriter.SaveToFile(sDstFile);
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public bool SavePdf(string sPathXml, string sDstFile)
|
||||
{
|
||||
m_arTmpTexturePrushPaths.Clear();
|
||||
|
||||
CommandType eCommand = CommandType.ctError;
|
||||
|
||||
int len = 0;
|
||||
int curindex = 0;
|
||||
|
||||
int nCountPages = 0;
|
||||
string sTempLogo = "";
|
||||
try
|
||||
{
|
||||
AVSGraphics.CAVSWinFonts winfonts = new AVSGraphics.CAVSWinFontsClass();
|
||||
AVSOfficePDFWriter.CPDFWriterClass oWriter = new AVSOfficePDFWriter.CPDFWriterClass();
|
||||
oWriter.CreatePDF();
|
||||
oWriter.SetPDFCompressionMode(15);
|
||||
|
||||
bool bIsPathOpened = false;
|
||||
|
||||
StringBuilder sHypers = new StringBuilder();
|
||||
sHypers.Append("<linker>");
|
||||
|
||||
unsafe
|
||||
{
|
||||
string[] array50 = File.ReadAllLines(sPathXml, Encoding.UTF8);
|
||||
|
||||
for (int index50 = 0; index50 < array50.Length; index50++)
|
||||
{
|
||||
byte[] dstArray = Convert.FromBase64String(array50[index50]);
|
||||
len = dstArray.Length;
|
||||
curindex = 0;
|
||||
|
||||
Int32* m = null;
|
||||
UInt16* ms = null;
|
||||
int _sLen = 0;
|
||||
string s = "";
|
||||
|
||||
double m1 = 0;
|
||||
double m2 = 0;
|
||||
double m3 = 0;
|
||||
double m4 = 0;
|
||||
double m5 = 0;
|
||||
double m6 = 0;
|
||||
|
||||
string imgPath = "";
|
||||
string base64Temp = "";
|
||||
|
||||
fixed (byte* p = dstArray)
|
||||
{
|
||||
byte* current = p;
|
||||
while (curindex < len)
|
||||
{
|
||||
eCommand = (CommandType)(*current);
|
||||
current++;
|
||||
curindex++;
|
||||
switch (eCommand)
|
||||
{
|
||||
case CommandType.ctPageWidth:
|
||||
m = (Int32*)current;
|
||||
current += 4;
|
||||
curindex += 4;
|
||||
oWriter.Width = ((*m) / 100000.0);
|
||||
break;
|
||||
case CommandType.ctPageHeight:
|
||||
m = (Int32*)current;
|
||||
current += 4;
|
||||
curindex += 4;
|
||||
oWriter.Height = ((*m) / 100000.0);
|
||||
break;
|
||||
case CommandType.ctPageStart:
|
||||
oWriter.NewPage();
|
||||
oWriter.BeginCommand(1);
|
||||
++nCountPages;
|
||||
break;
|
||||
case CommandType.ctPageEnd:
|
||||
if (bIsPathOpened)
|
||||
{
|
||||
oWriter.PathCommandEnd();
|
||||
oWriter.EndCommand(4);
|
||||
}
|
||||
|
||||
bIsPathOpened = false;
|
||||
|
||||
if (m_bIsUnregistredVersion)
|
||||
{
|
||||
double ww = oWriter.Width;
|
||||
double wh = oWriter.Height;
|
||||
|
||||
double dR = ww - 13;
|
||||
double dB = wh - 5;
|
||||
double k = 1.0;
|
||||
|
||||
if (ww <= wh)
|
||||
{
|
||||
|
||||
double k1 = ww / 210;
|
||||
double k2 = wh / 297;
|
||||
k = Math.Min(k1, k2);
|
||||
}
|
||||
else
|
||||
{
|
||||
double k1 = ww / 297;
|
||||
double k2 = wh / 210;
|
||||
k = Math.Min(k1, k2);
|
||||
}
|
||||
double dW = 15 * 5.9 * k;
|
||||
double dH = 15 * k;
|
||||
|
||||
double dKoef = 72 / 25.4;
|
||||
|
||||
sHypers.AppendFormat("<link><source x=\"{0}\" y=\"{1}\" width=\"{2}\" height=\"{3}\" page=\"{4}\"/>", (int)((dR - dW) * dKoef), (int)((dB - dH) * dKoef), (int)(dW * dKoef), (int)(dH * dKoef), nCountPages - 1);
|
||||
sHypers.Append("<target url=\"www.teamlab.com\"/></link>");
|
||||
|
||||
oWriter.ResetTransform();
|
||||
|
||||
if ("" == sTempLogo)
|
||||
{
|
||||
sTempLogo = Path.GetTempFileName();
|
||||
File.WriteAllBytes(sTempLogo, PdfWriter.Properties.Resources.logo);
|
||||
}
|
||||
oWriter.DrawImageFromFile(sTempLogo, dR - dW, dB - dH, dW, dH);
|
||||
}
|
||||
|
||||
oWriter.EndCommand(1);
|
||||
break;
|
||||
case CommandType.ctPenColor:
|
||||
m = (Int32*)current;
|
||||
oWriter.PenColor = *m;
|
||||
current += 4;
|
||||
curindex += 4;
|
||||
break;
|
||||
case CommandType.ctPenAlpha:
|
||||
oWriter.PenAlpha = *current;
|
||||
current++;
|
||||
curindex++;
|
||||
break;
|
||||
case CommandType.ctPenSize:
|
||||
m = (Int32*)current;
|
||||
oWriter.PenSize = *m / 100000.0;
|
||||
current += 4;
|
||||
curindex += 4;
|
||||
break;
|
||||
case CommandType.ctPenLineJoin:
|
||||
oWriter.PenLineJoin = *current;
|
||||
current++;
|
||||
curindex++;
|
||||
break;
|
||||
case CommandType.ctBrushType:
|
||||
m = (Int32*)current;
|
||||
oWriter.BrushType = *m;
|
||||
current += 4;
|
||||
curindex += 4;
|
||||
break;
|
||||
case CommandType.ctBrushColor1:
|
||||
m = (Int32*)current;
|
||||
oWriter.BrushColor1 = *m;
|
||||
current += 4;
|
||||
curindex += 4;
|
||||
break;
|
||||
case CommandType.ctBrushAlpha1:
|
||||
oWriter.BrushAlpha1 = *current;
|
||||
current++;
|
||||
curindex++;
|
||||
break;
|
||||
case CommandType.ctBrushColor2:
|
||||
m = (Int32*)current;
|
||||
oWriter.BrushColor1 = *m;
|
||||
current += 4;
|
||||
curindex += 4;
|
||||
break;
|
||||
case CommandType.ctBrushAlpha2:
|
||||
oWriter.BrushAlpha2 = *current;
|
||||
current++;
|
||||
curindex++;
|
||||
break;
|
||||
case CommandType.ctBrushRectable:
|
||||
m = (Int32*)current;
|
||||
current += 4 * 4;
|
||||
curindex += 4 * 4;
|
||||
|
||||
m1 = (*m++) / 100000.0;
|
||||
m2 = (*m++) / 100000.0;
|
||||
m3 = (*m++) / 100000.0;
|
||||
m4 = (*m++) / 100000.0;
|
||||
|
||||
oWriter.BrushRect(0, m1, m2, m3, m4);
|
||||
break;
|
||||
case CommandType.ctBrushRectableEnabled:
|
||||
bool bEn = (1 == *current);
|
||||
oWriter.SetAdditionalParam("BrushFillBoundsEnable", bEn);
|
||||
|
||||
current += 1;
|
||||
curindex += 1;
|
||||
break;
|
||||
case CommandType.ctBrushTexturePath:
|
||||
ms = (UInt16*)current;
|
||||
current += 2;
|
||||
curindex += 2;
|
||||
|
||||
_sLen = (int)(*ms);
|
||||
s = new string((char*)current, 0, _sLen);
|
||||
imgPath = s;
|
||||
|
||||
if (0 != s.IndexOf("http:") &&
|
||||
0 != s.IndexOf("https:") &&
|
||||
0 != s.IndexOf("ftp:") &&
|
||||
0 != s.IndexOf("file:"))
|
||||
{
|
||||
if (0 == s.IndexOf("theme"))
|
||||
{
|
||||
imgPath = Path.Combine(m_sThemesPlace, s);
|
||||
}
|
||||
else
|
||||
{
|
||||
imgPath = Path.Combine(m_sHtmlPlace, s);
|
||||
|
||||
int _len = imgPath.Length;
|
||||
int ind = imgPath.LastIndexOf(".svg");
|
||||
if (ind != -1)
|
||||
{
|
||||
if (ind == (_len - 4))
|
||||
{
|
||||
string sInterest = imgPath.Substring(0, ind);
|
||||
|
||||
if (File.Exists(sInterest + ".emf"))
|
||||
imgPath = sInterest + ".emf";
|
||||
else if (File.Exists(sInterest + ".wmf"))
|
||||
imgPath = sInterest + ".wmf";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
base64Temp = "";
|
||||
if (0 == s.IndexOf("data:"))
|
||||
{
|
||||
try
|
||||
{
|
||||
int nFind = s.IndexOf(",");
|
||||
s = s.Remove(0, nFind + 1);
|
||||
|
||||
base64Temp = Path.GetTempFileName();
|
||||
byte[] byteIm = Convert.FromBase64String(s);
|
||||
File.WriteAllBytes(base64Temp, byteIm);
|
||||
|
||||
imgPath = base64Temp;
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
current += 2 * _sLen;
|
||||
curindex += 2 * _sLen;
|
||||
|
||||
oWriter.BrushTexturePath = imgPath;
|
||||
|
||||
if (base64Temp != "")
|
||||
{
|
||||
m_arTmpTexturePrushPaths.Add(base64Temp);
|
||||
}
|
||||
break;
|
||||
case CommandType.ctBrushGradient:
|
||||
current++;
|
||||
curindex++;
|
||||
|
||||
string strAttrMain = "";
|
||||
string strColors = "";
|
||||
bool bIsLinear = true;
|
||||
|
||||
while (true)
|
||||
{
|
||||
byte _command = *current;
|
||||
current++;
|
||||
curindex++;
|
||||
|
||||
if (251 == _command)
|
||||
break;
|
||||
|
||||
switch (_command)
|
||||
{
|
||||
case 0:
|
||||
{
|
||||
current += 5;
|
||||
curindex += 5;
|
||||
|
||||
m = (Int32*)current;
|
||||
current += 4 * 4;
|
||||
curindex += 4 * 4;
|
||||
|
||||
double d1 = (*m++) / 100000.0;
|
||||
double d2 = (*m++) / 100000.0;
|
||||
double d3 = (*m++) / 100000.0;
|
||||
double d4 = (*m++) / 100000.0;
|
||||
|
||||
strAttrMain = String.Format("x1=\"{0}\" y1=\"{1}\" x2=\"{2}\" y2=\"{3}\" gradientUnits=\"userSpaceOnUse\"", d1, d2, d3, d4);
|
||||
strAttrMain = strAttrMain.Replace(',', '.');
|
||||
break;
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
bIsLinear = false;
|
||||
|
||||
current++;
|
||||
curindex++;
|
||||
|
||||
m = (Int32*)current;
|
||||
current += 6 * 4;
|
||||
curindex += 6 * 4;
|
||||
|
||||
double d1 = (*m++) / 100000.0;
|
||||
double d2 = (*m++) / 100000.0;
|
||||
double d3 = (*m++) / 100000.0;
|
||||
double d4 = (*m++) / 100000.0;
|
||||
double d5 = (*m++) / 100000.0;
|
||||
double d6 = (*m++) / 100000.0;
|
||||
|
||||
strAttrMain = String.Format("cx=\"{0}\" cy=\"{1}\" r0=\"{2}\" r1=\"{3}\" rx=\"{4}\" ry=\"{5}\" gradientUnits=\"userSpaceOnUse\"", d1, d2, d5, d6, d1, d2);
|
||||
strAttrMain = strAttrMain.Replace(',', '.');
|
||||
break;
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
int nCountColors = *((Int32*)current);
|
||||
|
||||
current += 4;
|
||||
curindex += 4;
|
||||
|
||||
for (int nI = 0; nI < nCountColors; ++nI)
|
||||
{
|
||||
int pos = *((Int32*)current);
|
||||
current += 4;
|
||||
curindex += 4;
|
||||
|
||||
double dPos = pos / 100000.0;
|
||||
byte _r = *current++;
|
||||
byte _g = *current++;
|
||||
byte _b = *current++;
|
||||
byte _a = *current++;
|
||||
|
||||
curindex += 4;
|
||||
|
||||
int _color = ((_b << 16) & 0xFF0000) | ((_g << 8) & 0xFF00) | _r;
|
||||
string sColor = String.Format("<stop stop-color=\"{0}\" stop-opacity=\"{1}\" offset=\"{2}\" />", _color, _a / 255.0, dPos);
|
||||
|
||||
sColor = sColor.Replace(',', '.');
|
||||
strColors += sColor;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
break;
|
||||
};
|
||||
}
|
||||
|
||||
string strXml = "";
|
||||
|
||||
if (bIsLinear)
|
||||
{
|
||||
strXml = "<linearGradient " + strAttrMain + ">" + strColors + "</linearGradient>";
|
||||
oWriter.SetAdditionalParam("Fill-LinearGradient", strXml);
|
||||
}
|
||||
else
|
||||
{
|
||||
strXml = "<radialGradient " + strAttrMain + ">" + strColors + "</radialGradient>";
|
||||
oWriter.SetAdditionalParam("Fill-RadialGradient", strXml);
|
||||
}
|
||||
|
||||
break;
|
||||
case CommandType.ctBrushTextureMode:
|
||||
int mode = (int)(*current);
|
||||
oWriter.BrushTextureMode = mode;
|
||||
|
||||
current += 1;
|
||||
curindex += 1;
|
||||
break;
|
||||
case CommandType.ctBrushTextureAlpha:
|
||||
int txalpha = (int)(*current);
|
||||
oWriter.BrushTextureAlpha = txalpha;
|
||||
|
||||
current += 1;
|
||||
curindex += 1;
|
||||
break;
|
||||
case CommandType.ctSetTransform:
|
||||
m = (Int32*)current;
|
||||
current += 6 * 4;
|
||||
curindex += 6 * 4;
|
||||
|
||||
m1 = (*m++) / 100000.0;
|
||||
m2 = (*m++) / 100000.0;
|
||||
m3 = (*m++) / 100000.0;
|
||||
m4 = (*m++) / 100000.0;
|
||||
m5 = (*m++) / 100000.0;
|
||||
m6 = (*m++) / 100000.0;
|
||||
|
||||
oWriter.SetTransform(m1, m2, m3, m4, m5, m6);
|
||||
break;
|
||||
case CommandType.ctPathCommandStart:
|
||||
if (bIsPathOpened)
|
||||
{
|
||||
oWriter.PathCommandEnd();
|
||||
oWriter.EndCommand(4);
|
||||
oWriter.BeginCommand(4);
|
||||
oWriter.PathCommandStart();
|
||||
}
|
||||
else
|
||||
{
|
||||
oWriter.BeginCommand(4);
|
||||
oWriter.PathCommandStart();
|
||||
}
|
||||
bIsPathOpened = true;
|
||||
break;
|
||||
case CommandType.ctPathCommandEnd:
|
||||
if (bIsPathOpened)
|
||||
{
|
||||
oWriter.PathCommandEnd();
|
||||
oWriter.EndCommand(4);
|
||||
bIsPathOpened = false;
|
||||
}
|
||||
break;
|
||||
case CommandType.ctPathCommandMoveTo:
|
||||
m = (Int32*)current;
|
||||
current += 2 * 4;
|
||||
curindex += 2 * 4;
|
||||
|
||||
m1 = (*m++) / 100000.0;
|
||||
m2 = (*m++) / 100000.0;
|
||||
oWriter.PathCommandMoveTo(m1, m2);
|
||||
break;
|
||||
case CommandType.ctPathCommandLineTo:
|
||||
m = (Int32*)current;
|
||||
current += 2 * 4;
|
||||
curindex += 2 * 4;
|
||||
|
||||
m1 = (*m++) / 100000.0;
|
||||
m2 = (*m++) / 100000.0;
|
||||
oWriter.PathCommandLineTo(m1, m2);
|
||||
break;
|
||||
case CommandType.ctPathCommandCurveTo:
|
||||
m = (Int32*)current;
|
||||
current += 6 * 4;
|
||||
curindex += 6 * 4;
|
||||
|
||||
m1 = (*m++) / 100000.0;
|
||||
m2 = (*m++) / 100000.0;
|
||||
m3 = (*m++) / 100000.0;
|
||||
m4 = (*m++) / 100000.0;
|
||||
m5 = (*m++) / 100000.0;
|
||||
m6 = (*m++) / 100000.0;
|
||||
|
||||
oWriter.PathCommandCurveTo(m1, m2, m3, m4, m5, m6);
|
||||
break;
|
||||
case CommandType.ctPathCommandClose:
|
||||
oWriter.PathCommandClose();
|
||||
break;
|
||||
case CommandType.ctDrawPath:
|
||||
m = (Int32*)current;
|
||||
current += 4;
|
||||
curindex += 4;
|
||||
|
||||
oWriter.DrawPath(*m);
|
||||
break;
|
||||
case CommandType.ctDrawImageFromFile:
|
||||
m = (Int32*)current;
|
||||
current += 4;
|
||||
curindex += 4;
|
||||
|
||||
_sLen = (int)(*m);
|
||||
_sLen /= 2;
|
||||
s = new string((char*)current, 0, _sLen);
|
||||
|
||||
imgPath = s;
|
||||
|
||||
if (0 != s.IndexOf("http:") &&
|
||||
0 != s.IndexOf("https:") &&
|
||||
0 != s.IndexOf("ftp:") &&
|
||||
0 != s.IndexOf("file:"))
|
||||
{
|
||||
if (0 == s.IndexOf("theme"))
|
||||
{
|
||||
imgPath = Path.Combine(m_sThemesPlace, s);
|
||||
}
|
||||
else
|
||||
{
|
||||
imgPath = Path.Combine(m_sHtmlPlace, s);
|
||||
|
||||
int _len = imgPath.Length;
|
||||
int ind = imgPath.LastIndexOf(".svg");
|
||||
if (ind != -1)
|
||||
{
|
||||
if (ind == (_len - 4))
|
||||
{
|
||||
string sInterest = imgPath.Substring(0, ind);
|
||||
|
||||
if (File.Exists(sInterest + ".emf"))
|
||||
imgPath = sInterest + ".emf";
|
||||
else if (File.Exists(sInterest + ".wmf"))
|
||||
imgPath = sInterest + ".wmf";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
base64Temp = "";
|
||||
if (0 == s.IndexOf("data:"))
|
||||
{
|
||||
try
|
||||
{
|
||||
int nFind = s.IndexOf(",");
|
||||
s = s.Remove(0, nFind + 1);
|
||||
|
||||
base64Temp = Path.GetTempFileName();
|
||||
byte[] byteIm = Convert.FromBase64String(s);
|
||||
File.WriteAllBytes(base64Temp, byteIm);
|
||||
|
||||
imgPath = base64Temp;
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
current += 2 * _sLen;
|
||||
curindex += 2 * _sLen;
|
||||
|
||||
m = (Int32*)current;
|
||||
current += 4 * 4;
|
||||
curindex += 4 * 4;
|
||||
|
||||
m1 = (*m++) / 100000.0;
|
||||
m2 = (*m++) / 100000.0;
|
||||
m3 = (*m++) / 100000.0;
|
||||
m4 = (*m++) / 100000.0;
|
||||
|
||||
try
|
||||
{
|
||||
oWriter.DrawImageFromFile(imgPath, m1, m2, m3, m4);
|
||||
}
|
||||
catch { }
|
||||
|
||||
if (base64Temp != "")
|
||||
{
|
||||
File.Delete(base64Temp);
|
||||
}
|
||||
break;
|
||||
case CommandType.ctFontName:
|
||||
ms = (UInt16*)current;
|
||||
current += 2;
|
||||
curindex += 2;
|
||||
|
||||
_sLen = (int)(*ms);
|
||||
s = new string((char*)current, 0, _sLen);
|
||||
|
||||
current += 2 * _sLen;
|
||||
curindex += 2 * _sLen;
|
||||
oWriter.FontName = s;
|
||||
break;
|
||||
case CommandType.ctFontSize:
|
||||
m = (Int32*)current;
|
||||
current += 4;
|
||||
curindex += 4;
|
||||
|
||||
m1 = (*m++) / 100000.0;
|
||||
|
||||
oWriter.FontSize = Math.Min(m1, 1000.0);
|
||||
break;
|
||||
case CommandType.ctFontStyle:
|
||||
m = (Int32*)current;
|
||||
current += 4;
|
||||
curindex += 4;
|
||||
|
||||
oWriter.FontStyle = *m;
|
||||
break;
|
||||
case CommandType.ctDrawText:
|
||||
ms = (UInt16*)current;
|
||||
current += 2;
|
||||
curindex += 2;
|
||||
|
||||
_sLen = (int)(*ms);
|
||||
s = new string((char*)current, 0, _sLen);
|
||||
|
||||
current += 2 * _sLen;
|
||||
curindex += 2 * _sLen;
|
||||
|
||||
m = (Int32*)current;
|
||||
current += 2 * 4;
|
||||
curindex += 2 * 4;
|
||||
|
||||
m1 = (*m++) / 100000.0;
|
||||
m2 = (*m++) / 100000.0;
|
||||
oWriter.CommandDrawText(s, m1, m2, 0, 0, 0);
|
||||
break;
|
||||
case CommandType.ctBeginCommand:
|
||||
m = (Int32*)current;
|
||||
current += 4;
|
||||
curindex += 4;
|
||||
if (bIsPathOpened)
|
||||
{
|
||||
oWriter.PathCommandEnd();
|
||||
oWriter.EndCommand(4);
|
||||
bIsPathOpened = false;
|
||||
}
|
||||
oWriter.BeginCommand((uint)(*m));
|
||||
break;
|
||||
case CommandType.ctEndCommand:
|
||||
m = (Int32*)current;
|
||||
current += 4;
|
||||
curindex += 4;
|
||||
if (bIsPathOpened)
|
||||
{
|
||||
oWriter.PathCommandEnd();
|
||||
oWriter.EndCommand(4);
|
||||
bIsPathOpened = false;
|
||||
}
|
||||
oWriter.EndCommand((uint)(*m));
|
||||
oWriter.PathCommandEnd();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sHypers.Append("</linker>");
|
||||
|
||||
if (m_bIsUnregistredVersion)
|
||||
{
|
||||
oWriter.BeginCommand(8);
|
||||
string strHypers = sHypers.ToString();
|
||||
oWriter.CommandDrawText(strHypers, 0, 0, 0, 0, 0);
|
||||
oWriter.EndCommand(8);
|
||||
}
|
||||
|
||||
if (sTempLogo != "")
|
||||
File.Delete(sTempLogo);
|
||||
|
||||
DeleteTmpFiles();
|
||||
|
||||
oWriter.SaveToFile(sDstFile);
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
if (sTempLogo != "")
|
||||
File.Delete(sTempLogo);
|
||||
|
||||
DeleteTmpFiles();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void DeleteTmpFiles()
|
||||
{
|
||||
int len = m_arTmpTexturePrushPaths.Count;
|
||||
for (int i = 0; i < len; ++i)
|
||||
{
|
||||
if (File.Exists(m_arTmpTexturePrushPaths[i]))
|
||||
File.Delete(m_arTmpTexturePrushPaths[i]);
|
||||
}
|
||||
m_arTmpTexturePrushPaths.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,101 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.21022</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{D7628414-F181-49AB-9E23-76D741426641}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>PdfWriter</RootNamespace>
|
||||
<AssemblyName>PdfWriter</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.ServiceModel.Web">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Xml.Linq">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data.DataSetExtensions">
|
||||
<RequiredTargetFramework>3.5</RequiredTargetFramework>
|
||||
</Reference>
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DesignTime>True</DesignTime>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Unreg.cs" />
|
||||
<Compile Include="Main.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<COMReference Include="AVSGraphics">
|
||||
<Guid>{AB5F2678-2773-44C4-A637-33DFBC51233B}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
<COMReference Include="AVSOfficePDFWriter">
|
||||
<Guid>{E0DC00B5-13BE-451C-92B5-078A5B44BEEA}</Guid>
|
||||
<VersionMajor>1</VersionMajor>
|
||||
<VersionMinor>0</VersionMinor>
|
||||
<Lcid>0</Lcid>
|
||||
<WrapperTool>tlbimp</WrapperTool>
|
||||
<Isolated>False</Isolated>
|
||||
</COMReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\logo.wmf" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\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>
|
||||
-->
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>copy $(ProjectDir)bin\Release\$(TargetFileName) $(SolutionDir)..\wwwroot\Bin\</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -1,50 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
[assembly: AssemblyTitle("PdfWriter")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Ascensio System SIA")]
|
||||
[assembly: AssemblyProduct("PdfWriter")]
|
||||
[assembly: AssemblyCopyright("Ascensio System SIA Copyright (c) 2013")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
[assembly: Guid("8af8f799-b208-44f3-ac7a-9b37a5918982")]
|
||||
|
||||
[assembly: AssemblyVersion("1.0.0.2")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.2")]
|
||||
@@ -1,77 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
|
||||
namespace PdfWriter.Properties {
|
||||
using System;
|
||||
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("PdfWriter.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
internal static byte[] logo {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("logo", resourceCulture);
|
||||
return ((byte[])(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,124 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="logo" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\logo.wmf;System.Byte[], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</data>
|
||||
</root>
|
||||
Binary file not shown.
@@ -1,188 +0,0 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Xml;
|
||||
using System.IO;
|
||||
|
||||
namespace PdfWriter
|
||||
{
|
||||
class ResoursesLogo
|
||||
{
|
||||
public static string Logo1 = @"<?xml version='1.0' encoding='utf-8'?>
|
||||
<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
|
||||
<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'>
|
||||
<svg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px'
|
||||
width='514px' height='166px' viewBox='0 0 514 166' enable-background='new 0 0 514 166' xml:space='preserve'>
|
||||
<polygon fill='#ADADAD' points='185.909,63.292 150.09,126.283 138.083,133.77 147.648,90.781 '/>
|
||||
<path fill='#E2E2E2' d='M30.81,97.145l23.264-2.098l-2.035,8.742L30.81,97.145z'/>
|
||||
<polygon fill='#CBCBCB' points='128.623,82.445 86.899,10.32 84.527,12.627 88.611,98.982 '/>
|
||||
<polygon fill='#E6E7E8' points='80.275,14.986 82.244,13.838 84.845,100.539 72.577,105.609 '/>
|
||||
<polygon fill='#BBBBBB' points='77.797,16.375 74.384,19.014 55.035,104.729 66.041,107.846 68.579,107.262 '/>
|
||||
<path fill='#DFDFDF' d='M69.945,141.207c-0.748,0.043-1.229,0.053-1.385,0.023c-1.771-0.322-16.562-4.101-22.613-5.91l4.778-5.078
|
||||
l0,0l15.179-16.127L69.945,141.207L69.945,141.207z'/>
|
||||
<path fill='#F0F0F0' d='M130.174,133.486l2.209,0.725l1.779,0.584c-12.788,1.369-49.015,5.215-61.423,6.211l-0.184-1.268
|
||||
l-3.614-24.908l-0.22-1.52l29.698,9.75l10.305,3.383L130.174,133.486L130.174,133.486z'/>
|
||||
<path fill='#D6D6D6' d='M52.964,108.27h0.004l11.655,3.726l-0.458,0.467l-20.814,21.302c-3.793-6.021-18.209-29.06-20.418-34.865
|
||||
l4.5,1.215L52.964,108.27L52.964,108.27z'/>
|
||||
<path fill='#F8F8F8' d='M185.28,64.085l-27.599,44.2l-18.449,23.926l-69.109-21.385l83.576-34.077
|
||||
C171.808,69.663,185.297,64.315,185.28,64.085L185.28,64.085z'/>
|
||||
<path fill='#AFAFAF' d='M46.08,134.242l17.944,4.713c135.917-18.133,206.353-10.34,206.312-9.541
|
||||
c-0.041,0.801-88.329,0.379-144.937,9.678s-69.276,12.629-80.254,14.891c-10.978,2.265-9.999-10.776-9.999-10.776l0.128-0.021
|
||||
C35.518,140.416,37.232,135.527,46.08,134.242L46.08,134.242z'/>
|
||||
<path fill='#AFAFAF' d='M193.304,44.696h8.928c0.667,0,1.18,0.16,1.539,0.481c0.206,0.184,0.411,0.481,0.616,0.894l6.08,13.886
|
||||
c0,0.092,0.128,0.275,0.385,0.55c0.205-0.184,0.333-0.344,0.385-0.48l6.926-13.817c0.308-0.55,0.629-0.939,0.962-1.169
|
||||
c0.334-0.229,0.706-0.344,1.116-0.344h9.005c1.18,0,1.77,0.39,1.77,1.169c0,0.275-0.051,0.504-0.154,0.688
|
||||
c-0.103,0.183-0.154,0.298-0.154,0.344L217.47,69.857c-0.205,0.367-0.436,0.791-0.693,1.272c-0.256,0.48-0.385,1.042-0.385,1.684
|
||||
V90.41c0,1.055-0.218,1.719-0.654,1.994c-0.437,0.275-1.116,0.412-2.04,0.412h-6.003c-0.923,0-1.539-0.092-1.847-0.275
|
||||
c-0.564-0.365-0.847-1.076-0.847-2.131V72.811c0-0.642-0.026-1.077-0.077-1.306c-0.052-0.229-0.308-0.779-0.77-1.65l-12.161-22.959
|
||||
c-0.257-0.551-0.385-0.963-0.385-1.237c0-0.413,0.167-0.676,0.5-0.791C192.444,44.753,192.842,44.696,193.304,44.696L193.304,44.696
|
||||
z M234.172,75.286V62.225c0-4.583,0.667-8.157,2.001-10.724c2.565-4.903,7.491-7.355,14.777-7.355c6.825,0,11.571,2.2,14.239,6.6
|
||||
c1.692,2.795,2.539,6.622,2.539,11.479v13.061c0,4.537-0.666,8.089-2,10.655c-2.566,4.949-7.492,7.424-14.778,7.424
|
||||
c-5.696,0-9.915-1.479-12.661-4.434C235.545,85.975,234.172,81.426,234.172,75.286z M256.338,74.118V63.394
|
||||
c0-3.575-0.23-6.004-0.693-7.287c-0.718-2.017-2.283-3.024-4.694-3.024c-2.411,0-3.977,0.985-4.694,2.956
|
||||
c-0.463,1.283-0.693,3.734-0.693,7.355v10.724c0,3.574,0.23,6.003,0.693,7.286c0.718,2.017,2.283,3.024,4.694,3.024
|
||||
c2.411,0,3.977-0.985,4.694-2.956C256.108,80.189,256.338,77.738,256.338,74.118L256.338,74.118z M274.271,77.554V47.102
|
||||
c0-0.825,0.102-1.375,0.307-1.649c0.412-0.505,1.207-0.757,2.387-0.757h6.004c1.18,0,1.924,0.195,2.23,0.584
|
||||
c0.309,0.39,0.463,0.997,0.463,1.822v30.384c0,1.741,0.205,3.048,0.615,3.918c0.82,1.741,2.412,2.612,4.771,2.612
|
||||
c1.897,0,3.271-0.502,4.119-1.512c0.847-1.008,1.271-2.681,1.271-5.018V47.102c0-0.825,0.102-1.375,0.307-1.649
|
||||
c0.41-0.505,1.207-0.757,2.387-0.757h6.004c1.18,0,1.924,0.195,2.23,0.584c0.309,0.39,0.463,0.997,0.463,1.822v30.452
|
||||
c0,4.079-0.873,7.379-2.617,9.899c-2.721,3.941-7.439,5.912-14.162,5.912c-6.721,0-11.441-1.947-14.16-5.844
|
||||
C275.143,85.002,274.271,81.679,274.271,77.554L274.271,77.554z M317.447,44.696h14.24c6.516,0,11.391,1.489,14.623,4.469
|
||||
c2.617,2.383,3.926,5.385,3.926,9.005c0,3.3-0.873,6.049-2.619,8.249c-1.385,1.787-3.104,3.002-5.154,3.643
|
||||
c-0.463,0.092-0.693,0.299-0.693,0.619c0,0.275,0.127,0.642,0.385,1.1l9.621,18.56c0.152,0.367,0.23,0.688,0.23,0.964
|
||||
c0,1.008-0.615,1.512-1.848,1.512h-8.004c-1.129,0-1.924-0.205-2.387-0.619c-0.154-0.137-0.332-0.412-0.539-0.824L330.07,73.5
|
||||
c-0.359-0.642-0.898-0.963-1.615-0.963h-1.463c-0.564,0-0.848,0.275-0.848,0.825v17.047c0,1.055-0.217,1.719-0.654,1.993
|
||||
c-0.436,0.275-1.115,0.412-2.039,0.412h-6.004c-0.922,0-1.539-0.092-1.846-0.274c-0.564-0.365-0.848-1.076-0.848-2.131V47.102
|
||||
c0-0.825,0.104-1.375,0.309-1.649C315.473,44.948,316.268,44.696,317.447,44.696L317.447,44.696z M326.145,54.664v8.387
|
||||
c0,0.688,0.359,1.03,1.078,1.03h3.617c2.154,0,3.875-0.48,5.156-1.443c1.283-0.962,1.924-2.245,1.924-3.85
|
||||
c0-1.466-0.486-2.657-1.461-3.574c-1.232-1.146-3.105-1.719-5.619-1.719h-3.387C326.582,53.495,326.145,53.884,326.145,54.664
|
||||
L326.145,54.664z'/>
|
||||
<path fill='#CECECE' d='M355.93,90.408V47.101c0-0.825,0.104-1.375,0.309-1.65c0.41-0.504,1.205-0.756,2.385-0.756h13.316
|
||||
c5.797,0,10.197,1.501,13.199,4.502c3.002,3.002,4.502,7.321,4.502,12.958V73.91c0,5.179-0.898,9.211-2.693,12.098
|
||||
c-2.82,4.537-7.852,6.807-15.086,6.807h-13.238c-0.922,0-1.537-0.092-1.846-0.274C356.213,92.172,355.93,91.461,355.93,90.408z
|
||||
M367.32,55.143v27.565c0,0.504,0.078,0.858,0.23,1.065c0.152,0.205,0.539,0.31,1.154,0.31h2.615c2.361,0,4.105-0.746,5.234-2.235
|
||||
c1.129-1.489,1.693-4.159,1.693-8.008V63.804c0-2.887-0.309-5.063-0.924-6.53c-1.025-2.521-2.977-3.78-5.85-3.78h-2.771
|
||||
c-0.615,0-1.002,0.16-1.154,0.48C367.398,54.295,367.32,54.685,367.32,55.143L367.32,55.143z M394.951,75.285V62.224
|
||||
c0-4.583,0.666-8.157,2.002-10.725c2.564-4.903,7.49-7.354,14.777-7.354c6.824,0,11.57,2.199,14.238,6.599
|
||||
c1.691,2.796,2.539,6.622,2.539,11.48v13.061c0,4.537-0.666,8.088-2.002,10.654c-2.564,4.949-7.49,7.424-14.775,7.424
|
||||
c-5.697,0-9.916-1.479-12.662-4.434C396.324,85.975,394.951,81.425,394.951,75.285z M417.117,74.116V63.392
|
||||
c0-3.574-0.23-6.003-0.693-7.286c-0.719-2.017-2.283-3.024-4.693-3.024c-2.412,0-3.979,0.985-4.695,2.955
|
||||
c-0.463,1.283-0.691,3.735-0.691,7.355v10.724c0,3.574,0.229,6.004,0.691,7.286c0.719,2.017,2.283,3.026,4.695,3.026
|
||||
c2.41,0,3.975-0.986,4.693-2.957C416.887,80.188,417.117,77.736,417.117,74.116L417.117,74.116z M462.295,46.276V52.6
|
||||
c0,0.366-0.051,0.652-0.154,0.859c-0.102,0.206-0.357,0.31-0.77,0.31c-1.18-0.229-2.398-0.447-3.654-0.653
|
||||
c-1.258-0.207-2.4-0.31-3.426-0.31c-3.488,0-5.773,0.985-6.85,2.956c-0.668,1.237-1,3.46-1,6.668v11.617
|
||||
c0,3.941,0.576,6.564,1.73,7.871c1.152,1.306,3.373,1.959,6.656,1.959c1.85,0,3.105-0.148,3.771-0.447s1.77-0.446,3.309-0.446
|
||||
c0.771,0,1.154,0.412,1.154,1.237v6.119c0,1.053-0.629,1.82-1.885,2.303c-1.258,0.48-4.143,0.721-8.658,0.721
|
||||
c-7.082,0-11.982-1.694-14.701-5.086c-1.848-2.338-2.77-5.888-2.77-10.655V58.099c0-4.078,1.076-7.218,3.23-9.418
|
||||
c2.926-3.024,7.877-4.536,14.855-4.536c3.848,0,6.465,0.229,7.85,0.687C461.859,45.107,462.295,45.588,462.295,46.276
|
||||
L462.295,46.276z M468.068,90.133v-6.188c0-0.549,0.18-0.927,0.539-1.133c0.371-0.207,0.73-0.31,1.09-0.31
|
||||
c0.41,0,0.896,0.068,1.436,0.206c0.541,0.138,0.938,0.229,1.207,0.275c0.871,0.229,2.193,0.458,3.949,0.688
|
||||
c1.758,0.229,3.156,0.343,4.195,0.343c2.271,0,4.066-0.424,5.387-1.271c1.322-0.848,1.977-2.005,1.977-3.471
|
||||
c0-2.154-1.488-4.171-4.465-6.05c-2.154-1.237-3.744-2.153-4.771-2.75c-3.797-2.245-6.387-4.147-7.771-5.705
|
||||
c-1.85-2.063-2.771-4.629-2.771-7.699c0-4.216,1.59-7.424,4.771-9.624c3.182-2.199,7.49-3.299,12.93-3.299
|
||||
c2.359,0,4.695,0.183,7.004,0.55c3.488,0.55,5.234,1.352,5.234,2.406v6.187c0,0.183,0,0.344,0,0.48
|
||||
c-0.154,0.551-0.592,0.825-1.309,0.825l-3.695-0.619c-2.104-0.366-3.424-0.584-3.963-0.652c-0.539-0.069-1.348-0.104-2.424-0.104
|
||||
c-2.105,0-3.631,0.298-4.58,0.894c-0.949,0.596-1.424,1.329-1.424,2.2c0,1.558,2.898,4.01,8.697,7.355
|
||||
c3.385,2.017,5.85,3.918,7.389,5.705c2.463,2.842,3.693,6.187,3.693,10.036c0,4.309-1.693,7.71-5.066,10.208
|
||||
s-8.004,3.746-13.879,3.746c-1.912,0-4.08-0.125-6.492-0.379c-2.424-0.252-4.207-0.584-5.336-0.996
|
||||
c-0.68-0.229-1.102-0.504-1.281-0.824S468.068,90.5,468.068,90.133z'/>
|
||||
<path fill='#AFAFAF' d='M204.477,118.375v-15.918h5.481c1.238,0,2.183,0.078,2.835,0.23c0.912,0.207,1.69,0.588,2.335,1.137
|
||||
c0.837,0.713,1.468,1.617,1.882,2.721c0.419,1.104,0.626,2.365,0.626,3.783c0,1.209-0.141,2.279-0.426,3.213
|
||||
c-0.281,0.936-0.641,1.709-1.086,2.32c-0.44,0.611-0.922,1.094-1.449,1.443c-0.522,0.352-1.156,0.616-1.897,0.799
|
||||
c-0.745,0.182-1.597,0.271-2.558,0.271L204.477,118.375L204.477,118.375z M206.582,116.496h3.398c1.049,0,1.875-0.098,2.472-0.293
|
||||
c0.597-0.197,1.071-0.471,1.427-0.826c0.5-0.496,0.889-1.172,1.167-2.014c0.278-0.844,0.418-1.863,0.418-3.068
|
||||
c0-1.664-0.274-2.941-0.819-3.836c-0.548-0.896-1.212-1.492-1.994-1.797c-0.563-0.219-1.475-0.326-2.724-0.326h-3.347v12.16H206.582
|
||||
z M220.58,118.375v-15.918h11.508v1.879h-9.402v4.873h8.806v1.869h-8.806v5.418h9.773v1.879H220.58L220.58,118.375z M234.652,113.26
|
||||
l1.986-0.174c0.093,0.797,0.312,1.449,0.656,1.961c0.344,0.512,0.878,0.922,1.601,1.238c0.723,0.314,1.538,0.471,2.442,0.471
|
||||
c0.804,0,1.513-0.119,2.128-0.357c0.615-0.239,1.074-0.565,1.375-0.979c0.3-0.42,0.451-0.871,0.451-1.364
|
||||
c0-0.5-0.145-0.935-0.438-1.308c-0.289-0.375-0.767-0.687-1.43-0.938c-0.43-0.168-1.371-0.428-2.836-0.779
|
||||
c-1.459-0.352-2.486-0.682-3.072-0.991c-0.76-0.397-1.327-0.896-1.701-1.483c-0.371-0.589-0.556-1.248-0.556-1.982
|
||||
c0-0.799,0.226-1.553,0.682-2.248c0.456-0.701,1.123-1.23,1.998-1.594c0.878-0.359,1.85-0.541,2.921-0.541
|
||||
c1.182,0,2.22,0.188,3.124,0.569c0.9,0.378,1.594,0.938,2.079,1.677c0.481,0.735,0.744,1.573,0.781,2.508l-2.021,0.152
|
||||
c-0.111-1.005-0.479-1.769-1.104-2.279c-0.627-0.517-1.55-0.771-2.773-0.771c-1.273,0-2.201,0.234-2.786,0.701
|
||||
c-0.582,0.467-0.875,1.029-0.875,1.686c0,0.574,0.208,1.045,0.619,1.412c0.407,0.371,1.464,0.748,3.177,1.135
|
||||
c1.711,0.39,2.887,0.728,3.523,1.017c0.927,0.43,1.613,0.971,2.053,1.623c0.441,0.655,0.66,1.411,0.66,2.264
|
||||
c0,0.851-0.24,1.646-0.727,2.396c-0.485,0.748-1.182,1.33-2.09,1.75c-0.908,0.414-1.931,0.621-3.064,0.621
|
||||
c-1.441,0-2.65-0.207-3.621-0.629c-0.975-0.42-1.738-1.049-2.294-1.896C234.97,115.279,234.678,114.324,234.652,113.26
|
||||
L234.652,113.26z M250.11,118.375v-15.918h2.109v7.895l7.904-7.895h2.854l-6.678,6.449l6.971,9.469h-2.779l-5.667-8.057
|
||||
l-2.604,2.541v5.516H250.11L250.11,118.375z M269.082,118.375v-14.039h-5.244v-1.879h12.615v1.879h-5.268v14.039H269.082z
|
||||
M277.572,110.621c0-2.643,0.707-4.709,2.127-6.203s3.25-2.242,5.496-2.242c1.467,0,2.795,0.352,3.973,1.053
|
||||
c1.18,0.703,2.08,1.683,2.699,2.939c0.617,1.252,0.926,2.678,0.926,4.268c0,1.617-0.322,3.063-0.975,4.334
|
||||
c-0.652,1.273-1.576,2.238-2.771,2.896c-1.196,0.653-2.481,0.979-3.864,0.979c-1.5,0-2.838-0.358-4.019-1.086
|
||||
c-1.183-0.723-2.074-1.711-2.683-2.965C277.875,113.346,277.572,112.02,277.572,110.621L277.572,110.621z M279.744,110.654
|
||||
c0,1.92,0.514,3.43,1.545,4.533c1.033,1.104,2.328,1.656,3.885,1.656c1.586,0,2.891-0.556,3.912-1.673
|
||||
c1.023-1.114,1.539-2.696,1.539-4.746c0-1.295-0.223-2.424-0.66-3.394c-0.438-0.967-1.078-1.715-1.92-2.247
|
||||
c-0.844-0.531-1.789-0.798-2.838-0.798c-1.494,0-2.777,0.513-3.852,1.537C280.281,106.549,279.744,108.262,279.744,110.654z
|
||||
M295.51,118.375v-15.918h6.004c1.057,0,1.863,0.053,2.42,0.152c0.781,0.129,1.438,0.377,1.967,0.744
|
||||
c0.527,0.362,0.953,0.879,1.275,1.535c0.322,0.659,0.482,1.383,0.482,2.172c0,1.352-0.43,2.502-1.291,3.438
|
||||
c-0.863,0.935-2.42,1.403-4.668,1.403h-4.086v6.472L295.51,118.375L295.51,118.375z M297.613,110.025h4.119
|
||||
c1.359,0,2.326-0.252,2.896-0.76c0.57-0.509,0.855-1.222,0.855-2.14c0-0.668-0.168-1.237-0.504-1.713
|
||||
c-0.338-0.476-0.779-0.785-1.332-0.938c-0.354-0.092-1.008-0.141-1.963-0.141h-4.074v5.691H297.613z M328.182,116.67
|
||||
c0.975,0.674,1.879,1.164,2.701,1.475l-0.617,1.469c-1.143-0.411-2.283-1.063-3.422-1.952c-1.178,0.655-2.479,0.983-3.906,0.983
|
||||
c-1.441,0-2.746-0.348-3.92-1.041c-1.172-0.697-2.076-1.672-2.709-2.932c-0.635-1.26-0.949-2.68-0.949-4.254
|
||||
c0-1.572,0.318-3.002,0.955-4.291c0.639-1.287,1.543-2.27,2.721-2.943c1.178-0.67,2.49-1.008,3.943-1.008
|
||||
c1.471,0,2.795,0.348,3.977,1.049c1.182,0.697,2.08,1.674,2.697,2.932c0.619,1.257,0.928,2.673,0.928,4.25
|
||||
c0,1.31-0.195,2.486-0.598,3.531C329.586,114.984,328.986,115.895,328.182,116.67L328.182,116.67z M323.545,113.975
|
||||
c1.217,0.342,2.217,0.851,3.006,1.523c1.238-1.129,1.857-2.826,1.857-5.092c0-1.289-0.219-2.416-0.656-3.379
|
||||
c-0.438-0.961-1.078-1.709-1.92-2.242c-0.844-0.531-1.789-0.797-2.842-0.797c-1.568,0-2.873,0.537-3.906,1.611
|
||||
c-1.037,1.073-1.553,2.68-1.553,4.817c0,2.067,0.512,3.658,1.533,4.767c1.027,1.104,2.336,1.66,3.926,1.66
|
||||
c0.756,0,1.463-0.142,2.131-0.423c-0.66-0.43-1.357-0.733-2.086-0.911L323.545,113.975L323.545,113.975z M343.859,102.457h2.107
|
||||
v9.199c0,1.598-0.184,2.867-0.545,3.809c-0.363,0.941-1.018,1.705-1.959,2.295c-0.945,0.592-2.186,0.885-3.721,0.885
|
||||
c-1.486,0-2.713-0.256-3.654-0.77c-0.949-0.512-1.631-1.258-2.031-2.232c-0.408-0.975-0.607-2.301-0.607-3.986v-9.198h2.104v9.188
|
||||
c0,1.383,0.131,2.399,0.387,3.053c0.256,0.656,0.699,1.16,1.322,1.518c0.627,0.355,1.393,0.533,2.297,0.533
|
||||
c1.551,0,2.654-0.354,3.314-1.057c0.656-0.701,0.986-2.049,0.986-4.047V102.457L343.859,102.457z M347.725,118.375l6.115-15.918
|
||||
h2.268l6.516,15.918h-2.4l-1.857-4.822h-6.656l-1.744,4.822H347.725z M352.316,111.838h5.398l-1.664-4.408
|
||||
c-0.504-1.338-0.881-2.438-1.127-3.301c-0.203,1.021-0.488,2.035-0.859,3.043L352.316,111.838L352.316,111.838z M364.217,118.375
|
||||
v-15.918h2.107v14.039h7.84v1.879H364.217z M377.031,118.375v-15.918h2.105v15.918H377.031z M386.9,118.375v-14.039h-5.244v-1.879
|
||||
h12.615v1.879h-5.266v14.039H386.9L386.9,118.375z M400.918,118.375v-6.742l-6.135-9.176h2.561l3.139,4.799
|
||||
c0.58,0.896,1.117,1.795,1.617,2.695c0.479-0.834,1.057-1.771,1.738-2.813l3.082-4.683h2.455l-6.354,9.176v6.742L400.918,118.375
|
||||
L400.918,118.375z M416.4,110.621c0-2.643,0.709-4.709,2.129-6.203c1.418-1.494,3.25-2.242,5.496-2.242
|
||||
c1.467,0,2.793,0.352,3.973,1.053c1.178,0.703,2.078,1.683,2.697,2.938c0.619,1.254,0.926,2.681,0.926,4.271
|
||||
c0,1.617-0.322,3.063-0.975,4.334c-0.652,1.272-1.574,2.238-2.768,2.895c-1.197,0.654-2.482,0.98-3.865,0.98
|
||||
c-1.502,0-2.84-0.359-4.02-1.086c-1.182-0.724-2.074-1.711-2.684-2.965C416.705,113.346,416.4,112.02,416.4,110.621L416.4,110.621z
|
||||
M418.572,110.654c0,1.92,0.516,3.428,1.547,4.533c1.033,1.104,2.326,1.656,3.883,1.656c1.586,0,2.891-0.558,3.914-1.673
|
||||
c1.023-1.114,1.537-2.696,1.537-4.746c0-1.295-0.223-2.424-0.658-3.394c-0.438-0.967-1.08-1.715-1.92-2.247
|
||||
c-0.846-0.531-1.791-0.798-2.84-0.798c-1.494,0-2.775,0.513-3.85,1.537C419.109,106.549,418.572,108.262,418.572,110.654z
|
||||
M434.316,118.375v-15.918h2.16l8.361,12.496v-12.496h2.02v15.918h-2.16l-8.361-12.508v12.508H434.316z M450.309,118.375v-15.918
|
||||
h2.107v14.039h7.84v1.879H450.309z M463.123,118.375v-15.918h2.105v15.918H463.123z M468.92,118.375v-15.918h2.16l8.361,12.496
|
||||
v-12.496h2.02v15.918h-2.16l-8.361-12.508v12.508H468.92z M485.045,118.375v-15.918h11.508v1.879h-9.402v4.873h8.805v1.869h-8.805
|
||||
v5.418h9.771v1.879H485.045L485.045,118.375z'/>
|
||||
<polygon fill='#B5B5B5' points='80.268,117.346 69.612,121.502 68.397,113.484 '/>
|
||||
<path fill='#A6A8AB' d='M58.024,118.588l-33.43-11.02c0.458-0.15-3.059-6.269-4.434-9.16l6.949,1.877l36.893,11.797L58.024,118.588z'/>
|
||||
<path fill='#B5B5B5' d='M60.703,119.469l0.238-0.232l5.237-5.416l0.899,7.623C65.023,120.861,62.443,119.998,60.703,119.469z'/>
|
||||
<path fill='#D0D2D3' d='M178.142,85.885l-93.671,29.594l-14.48-4.477l117.176-47.806C186.073,67.116,179.371,82.425,178.142,85.885z'/>
|
||||
</svg>";
|
||||
}
|
||||
}
|
||||
@@ -1,146 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- Generator: Adobe Illustrator 14.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 43363) -->
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="514px" height="166px" viewBox="0 0 514 166" enable-background="new 0 0 514 166" xml:space="preserve">
|
||||
<polygon fill="#ADADAD" points="185.909,63.292 150.09,126.283 138.083,133.77 147.648,90.781 "/>
|
||||
<path fill="#E2E2E2" d="M30.81,97.145l23.264-2.098l-2.035,8.742L30.81,97.145z"/>
|
||||
<polygon fill="#CBCBCB" points="128.623,82.445 86.899,10.32 84.527,12.627 88.611,98.982 "/>
|
||||
<polygon fill="#E6E7E8" points="80.275,14.986 82.244,13.838 84.845,100.539 72.577,105.609 "/>
|
||||
<polygon fill="#BBBBBB" points="77.797,16.375 74.384,19.014 55.035,104.729 66.041,107.846 68.579,107.262 "/>
|
||||
<path fill="#DFDFDF" d="M69.945,141.207c-0.748,0.043-1.229,0.053-1.385,0.023c-1.771-0.322-16.562-4.101-22.613-5.91l4.778-5.078
|
||||
l0,0l15.179-16.127L69.945,141.207L69.945,141.207z"/>
|
||||
<path fill="#F0F0F0" d="M130.174,133.486l2.209,0.725l1.779,0.584c-12.788,1.369-49.015,5.215-61.423,6.211l-0.184-1.268
|
||||
l-3.614-24.908l-0.22-1.52l29.698,9.75l10.305,3.383L130.174,133.486L130.174,133.486z"/>
|
||||
<path fill="#D6D6D6" d="M52.964,108.27h0.004l11.655,3.726l-0.458,0.467l-20.814,21.302c-3.793-6.021-18.209-29.06-20.418-34.865
|
||||
l4.5,1.215L52.964,108.27L52.964,108.27z"/>
|
||||
<path fill="#F8F8F8" d="M185.28,64.085l-27.599,44.2l-18.449,23.926l-69.109-21.385l83.576-34.077
|
||||
C171.808,69.663,185.297,64.315,185.28,64.085L185.28,64.085z"/>
|
||||
<path fill="#AFAFAF" d="M46.08,134.242l17.944,4.713c135.917-18.133,206.353-10.34,206.312-9.541
|
||||
c-0.041,0.801-88.329,0.379-144.937,9.678s-69.276,12.629-80.254,14.891c-10.978,2.265-9.999-10.776-9.999-10.776l0.128-0.021
|
||||
C35.518,140.416,37.232,135.527,46.08,134.242L46.08,134.242z"/>
|
||||
<path fill="#AFAFAF" d="M193.304,44.696h8.928c0.667,0,1.18,0.16,1.539,0.481c0.206,0.184,0.411,0.481,0.616,0.894l6.08,13.886
|
||||
c0,0.092,0.128,0.275,0.385,0.55c0.205-0.184,0.333-0.344,0.385-0.48l6.926-13.817c0.308-0.55,0.629-0.939,0.962-1.169
|
||||
c0.334-0.229,0.706-0.344,1.116-0.344h9.005c1.18,0,1.77,0.39,1.77,1.169c0,0.275-0.051,0.504-0.154,0.688
|
||||
c-0.103,0.183-0.154,0.298-0.154,0.344L217.47,69.857c-0.205,0.367-0.436,0.791-0.693,1.272c-0.256,0.48-0.385,1.042-0.385,1.684
|
||||
V90.41c0,1.055-0.218,1.719-0.654,1.994c-0.437,0.275-1.116,0.412-2.04,0.412h-6.003c-0.923,0-1.539-0.092-1.847-0.275
|
||||
c-0.564-0.365-0.847-1.076-0.847-2.131V72.811c0-0.642-0.026-1.077-0.077-1.306c-0.052-0.229-0.308-0.779-0.77-1.65l-12.161-22.959
|
||||
c-0.257-0.551-0.385-0.963-0.385-1.237c0-0.413,0.167-0.676,0.5-0.791C192.444,44.753,192.842,44.696,193.304,44.696L193.304,44.696
|
||||
z M234.172,75.286V62.225c0-4.583,0.667-8.157,2.001-10.724c2.565-4.903,7.491-7.355,14.777-7.355c6.825,0,11.571,2.2,14.239,6.6
|
||||
c1.692,2.795,2.539,6.622,2.539,11.479v13.061c0,4.537-0.666,8.089-2,10.655c-2.566,4.949-7.492,7.424-14.778,7.424
|
||||
c-5.696,0-9.915-1.479-12.661-4.434C235.545,85.975,234.172,81.426,234.172,75.286z M256.338,74.118V63.394
|
||||
c0-3.575-0.23-6.004-0.693-7.287c-0.718-2.017-2.283-3.024-4.694-3.024c-2.411,0-3.977,0.985-4.694,2.956
|
||||
c-0.463,1.283-0.693,3.734-0.693,7.355v10.724c0,3.574,0.23,6.003,0.693,7.286c0.718,2.017,2.283,3.024,4.694,3.024
|
||||
c2.411,0,3.977-0.985,4.694-2.956C256.108,80.189,256.338,77.738,256.338,74.118L256.338,74.118z M274.271,77.554V47.102
|
||||
c0-0.825,0.102-1.375,0.307-1.649c0.412-0.505,1.207-0.757,2.387-0.757h6.004c1.18,0,1.924,0.195,2.23,0.584
|
||||
c0.309,0.39,0.463,0.997,0.463,1.822v30.384c0,1.741,0.205,3.048,0.615,3.918c0.82,1.741,2.412,2.612,4.771,2.612
|
||||
c1.897,0,3.271-0.502,4.119-1.512c0.847-1.008,1.271-2.681,1.271-5.018V47.102c0-0.825,0.102-1.375,0.307-1.649
|
||||
c0.41-0.505,1.207-0.757,2.387-0.757h6.004c1.18,0,1.924,0.195,2.23,0.584c0.309,0.39,0.463,0.997,0.463,1.822v30.452
|
||||
c0,4.079-0.873,7.379-2.617,9.899c-2.721,3.941-7.439,5.912-14.162,5.912c-6.721,0-11.441-1.947-14.16-5.844
|
||||
C275.143,85.002,274.271,81.679,274.271,77.554L274.271,77.554z M317.447,44.696h14.24c6.516,0,11.391,1.489,14.623,4.469
|
||||
c2.617,2.383,3.926,5.385,3.926,9.005c0,3.3-0.873,6.049-2.619,8.249c-1.385,1.787-3.104,3.002-5.154,3.643
|
||||
c-0.463,0.092-0.693,0.299-0.693,0.619c0,0.275,0.127,0.642,0.385,1.1l9.621,18.56c0.152,0.367,0.23,0.688,0.23,0.964
|
||||
c0,1.008-0.615,1.512-1.848,1.512h-8.004c-1.129,0-1.924-0.205-2.387-0.619c-0.154-0.137-0.332-0.412-0.539-0.824L330.07,73.5
|
||||
c-0.359-0.642-0.898-0.963-1.615-0.963h-1.463c-0.564,0-0.848,0.275-0.848,0.825v17.047c0,1.055-0.217,1.719-0.654,1.993
|
||||
c-0.436,0.275-1.115,0.412-2.039,0.412h-6.004c-0.922,0-1.539-0.092-1.846-0.274c-0.564-0.365-0.848-1.076-0.848-2.131V47.102
|
||||
c0-0.825,0.104-1.375,0.309-1.649C315.473,44.948,316.268,44.696,317.447,44.696L317.447,44.696z M326.145,54.664v8.387
|
||||
c0,0.688,0.359,1.03,1.078,1.03h3.617c2.154,0,3.875-0.48,5.156-1.443c1.283-0.962,1.924-2.245,1.924-3.85
|
||||
c0-1.466-0.486-2.657-1.461-3.574c-1.232-1.146-3.105-1.719-5.619-1.719h-3.387C326.582,53.495,326.145,53.884,326.145,54.664
|
||||
L326.145,54.664z"/>
|
||||
<path fill="#CECECE" d="M355.93,90.408V47.101c0-0.825,0.104-1.375,0.309-1.65c0.41-0.504,1.205-0.756,2.385-0.756h13.316
|
||||
c5.797,0,10.197,1.501,13.199,4.502c3.002,3.002,4.502,7.321,4.502,12.958V73.91c0,5.179-0.898,9.211-2.693,12.098
|
||||
c-2.82,4.537-7.852,6.807-15.086,6.807h-13.238c-0.922,0-1.537-0.092-1.846-0.274C356.213,92.172,355.93,91.461,355.93,90.408z
|
||||
M367.32,55.143v27.565c0,0.504,0.078,0.858,0.23,1.065c0.152,0.205,0.539,0.31,1.154,0.31h2.615c2.361,0,4.105-0.746,5.234-2.235
|
||||
c1.129-1.489,1.693-4.159,1.693-8.008V63.804c0-2.887-0.309-5.063-0.924-6.53c-1.025-2.521-2.977-3.78-5.85-3.78h-2.771
|
||||
c-0.615,0-1.002,0.16-1.154,0.48C367.398,54.295,367.32,54.685,367.32,55.143L367.32,55.143z M394.951,75.285V62.224
|
||||
c0-4.583,0.666-8.157,2.002-10.725c2.564-4.903,7.49-7.354,14.777-7.354c6.824,0,11.57,2.199,14.238,6.599
|
||||
c1.691,2.796,2.539,6.622,2.539,11.48v13.061c0,4.537-0.666,8.088-2.002,10.654c-2.564,4.949-7.49,7.424-14.775,7.424
|
||||
c-5.697,0-9.916-1.479-12.662-4.434C396.324,85.975,394.951,81.425,394.951,75.285z M417.117,74.116V63.392
|
||||
c0-3.574-0.23-6.003-0.693-7.286c-0.719-2.017-2.283-3.024-4.693-3.024c-2.412,0-3.979,0.985-4.695,2.955
|
||||
c-0.463,1.283-0.691,3.735-0.691,7.355v10.724c0,3.574,0.229,6.004,0.691,7.286c0.719,2.017,2.283,3.026,4.695,3.026
|
||||
c2.41,0,3.975-0.986,4.693-2.957C416.887,80.188,417.117,77.736,417.117,74.116L417.117,74.116z M462.295,46.276V52.6
|
||||
c0,0.366-0.051,0.652-0.154,0.859c-0.102,0.206-0.357,0.31-0.77,0.31c-1.18-0.229-2.398-0.447-3.654-0.653
|
||||
c-1.258-0.207-2.4-0.31-3.426-0.31c-3.488,0-5.773,0.985-6.85,2.956c-0.668,1.237-1,3.46-1,6.668v11.617
|
||||
c0,3.941,0.576,6.564,1.73,7.871c1.152,1.306,3.373,1.959,6.656,1.959c1.85,0,3.105-0.148,3.771-0.447s1.77-0.446,3.309-0.446
|
||||
c0.771,0,1.154,0.412,1.154,1.237v6.119c0,1.053-0.629,1.82-1.885,2.303c-1.258,0.48-4.143,0.721-8.658,0.721
|
||||
c-7.082,0-11.982-1.694-14.701-5.086c-1.848-2.338-2.77-5.888-2.77-10.655V58.099c0-4.078,1.076-7.218,3.23-9.418
|
||||
c2.926-3.024,7.877-4.536,14.855-4.536c3.848,0,6.465,0.229,7.85,0.687C461.859,45.107,462.295,45.588,462.295,46.276
|
||||
L462.295,46.276z M468.068,90.133v-6.188c0-0.549,0.18-0.927,0.539-1.133c0.371-0.207,0.73-0.31,1.09-0.31
|
||||
c0.41,0,0.896,0.068,1.436,0.206c0.541,0.138,0.938,0.229,1.207,0.275c0.871,0.229,2.193,0.458,3.949,0.688
|
||||
c1.758,0.229,3.156,0.343,4.195,0.343c2.271,0,4.066-0.424,5.387-1.271c1.322-0.848,1.977-2.005,1.977-3.471
|
||||
c0-2.154-1.488-4.171-4.465-6.05c-2.154-1.237-3.744-2.153-4.771-2.75c-3.797-2.245-6.387-4.147-7.771-5.705
|
||||
c-1.85-2.063-2.771-4.629-2.771-7.699c0-4.216,1.59-7.424,4.771-9.624c3.182-2.199,7.49-3.299,12.93-3.299
|
||||
c2.359,0,4.695,0.183,7.004,0.55c3.488,0.55,5.234,1.352,5.234,2.406v6.187c0,0.183,0,0.344,0,0.48
|
||||
c-0.154,0.551-0.592,0.825-1.309,0.825l-3.695-0.619c-2.104-0.366-3.424-0.584-3.963-0.652c-0.539-0.069-1.348-0.104-2.424-0.104
|
||||
c-2.105,0-3.631,0.298-4.58,0.894c-0.949,0.596-1.424,1.329-1.424,2.2c0,1.558,2.898,4.01,8.697,7.355
|
||||
c3.385,2.017,5.85,3.918,7.389,5.705c2.463,2.842,3.693,6.187,3.693,10.036c0,4.309-1.693,7.71-5.066,10.208
|
||||
s-8.004,3.746-13.879,3.746c-1.912,0-4.08-0.125-6.492-0.379c-2.424-0.252-4.207-0.584-5.336-0.996
|
||||
c-0.68-0.229-1.102-0.504-1.281-0.824S468.068,90.5,468.068,90.133z"/>
|
||||
<path fill="#AFAFAF" d="M204.477,118.375v-15.918h5.481c1.238,0,2.183,0.078,2.835,0.23c0.912,0.207,1.69,0.588,2.335,1.137
|
||||
c0.837,0.713,1.468,1.617,1.882,2.721c0.419,1.104,0.626,2.365,0.626,3.783c0,1.209-0.141,2.279-0.426,3.213
|
||||
c-0.281,0.936-0.641,1.709-1.086,2.32c-0.44,0.611-0.922,1.094-1.449,1.443c-0.522,0.352-1.156,0.616-1.897,0.799
|
||||
c-0.745,0.182-1.597,0.271-2.558,0.271L204.477,118.375L204.477,118.375z M206.582,116.496h3.398c1.049,0,1.875-0.098,2.472-0.293
|
||||
c0.597-0.197,1.071-0.471,1.427-0.826c0.5-0.496,0.889-1.172,1.167-2.014c0.278-0.844,0.418-1.863,0.418-3.068
|
||||
c0-1.664-0.274-2.941-0.819-3.836c-0.548-0.896-1.212-1.492-1.994-1.797c-0.563-0.219-1.475-0.326-2.724-0.326h-3.347v12.16H206.582
|
||||
z M220.58,118.375v-15.918h11.508v1.879h-9.402v4.873h8.806v1.869h-8.806v5.418h9.773v1.879H220.58L220.58,118.375z M234.652,113.26
|
||||
l1.986-0.174c0.093,0.797,0.312,1.449,0.656,1.961c0.344,0.512,0.878,0.922,1.601,1.238c0.723,0.314,1.538,0.471,2.442,0.471
|
||||
c0.804,0,1.513-0.119,2.128-0.357c0.615-0.239,1.074-0.565,1.375-0.979c0.3-0.42,0.451-0.871,0.451-1.364
|
||||
c0-0.5-0.145-0.935-0.438-1.308c-0.289-0.375-0.767-0.687-1.43-0.938c-0.43-0.168-1.371-0.428-2.836-0.779
|
||||
c-1.459-0.352-2.486-0.682-3.072-0.991c-0.76-0.397-1.327-0.896-1.701-1.483c-0.371-0.589-0.556-1.248-0.556-1.982
|
||||
c0-0.799,0.226-1.553,0.682-2.248c0.456-0.701,1.123-1.23,1.998-1.594c0.878-0.359,1.85-0.541,2.921-0.541
|
||||
c1.182,0,2.22,0.188,3.124,0.569c0.9,0.378,1.594,0.938,2.079,1.677c0.481,0.735,0.744,1.573,0.781,2.508l-2.021,0.152
|
||||
c-0.111-1.005-0.479-1.769-1.104-2.279c-0.627-0.517-1.55-0.771-2.773-0.771c-1.273,0-2.201,0.234-2.786,0.701
|
||||
c-0.582,0.467-0.875,1.029-0.875,1.686c0,0.574,0.208,1.045,0.619,1.412c0.407,0.371,1.464,0.748,3.177,1.135
|
||||
c1.711,0.39,2.887,0.728,3.523,1.017c0.927,0.43,1.613,0.971,2.053,1.623c0.441,0.655,0.66,1.411,0.66,2.264
|
||||
c0,0.851-0.24,1.646-0.727,2.396c-0.485,0.748-1.182,1.33-2.09,1.75c-0.908,0.414-1.931,0.621-3.064,0.621
|
||||
c-1.441,0-2.65-0.207-3.621-0.629c-0.975-0.42-1.738-1.049-2.294-1.896C234.97,115.279,234.678,114.324,234.652,113.26
|
||||
L234.652,113.26z M250.11,118.375v-15.918h2.109v7.895l7.904-7.895h2.854l-6.678,6.449l6.971,9.469h-2.779l-5.667-8.057
|
||||
l-2.604,2.541v5.516H250.11L250.11,118.375z M269.082,118.375v-14.039h-5.244v-1.879h12.615v1.879h-5.268v14.039H269.082z
|
||||
M277.572,110.621c0-2.643,0.707-4.709,2.127-6.203s3.25-2.242,5.496-2.242c1.467,0,2.795,0.352,3.973,1.053
|
||||
c1.18,0.703,2.08,1.683,2.699,2.939c0.617,1.252,0.926,2.678,0.926,4.268c0,1.617-0.322,3.063-0.975,4.334
|
||||
c-0.652,1.273-1.576,2.238-2.771,2.896c-1.196,0.653-2.481,0.979-3.864,0.979c-1.5,0-2.838-0.358-4.019-1.086
|
||||
c-1.183-0.723-2.074-1.711-2.683-2.965C277.875,113.346,277.572,112.02,277.572,110.621L277.572,110.621z M279.744,110.654
|
||||
c0,1.92,0.514,3.43,1.545,4.533c1.033,1.104,2.328,1.656,3.885,1.656c1.586,0,2.891-0.556,3.912-1.673
|
||||
c1.023-1.114,1.539-2.696,1.539-4.746c0-1.295-0.223-2.424-0.66-3.394c-0.438-0.967-1.078-1.715-1.92-2.247
|
||||
c-0.844-0.531-1.789-0.798-2.838-0.798c-1.494,0-2.777,0.513-3.852,1.537C280.281,106.549,279.744,108.262,279.744,110.654z
|
||||
M295.51,118.375v-15.918h6.004c1.057,0,1.863,0.053,2.42,0.152c0.781,0.129,1.438,0.377,1.967,0.744
|
||||
c0.527,0.362,0.953,0.879,1.275,1.535c0.322,0.659,0.482,1.383,0.482,2.172c0,1.352-0.43,2.502-1.291,3.438
|
||||
c-0.863,0.935-2.42,1.403-4.668,1.403h-4.086v6.472L295.51,118.375L295.51,118.375z M297.613,110.025h4.119
|
||||
c1.359,0,2.326-0.252,2.896-0.76c0.57-0.509,0.855-1.222,0.855-2.14c0-0.668-0.168-1.237-0.504-1.713
|
||||
c-0.338-0.476-0.779-0.785-1.332-0.938c-0.354-0.092-1.008-0.141-1.963-0.141h-4.074v5.691H297.613z M328.182,116.67
|
||||
c0.975,0.674,1.879,1.164,2.701,1.475l-0.617,1.469c-1.143-0.411-2.283-1.063-3.422-1.952c-1.178,0.655-2.479,0.983-3.906,0.983
|
||||
c-1.441,0-2.746-0.348-3.92-1.041c-1.172-0.697-2.076-1.672-2.709-2.932c-0.635-1.26-0.949-2.68-0.949-4.254
|
||||
c0-1.572,0.318-3.002,0.955-4.291c0.639-1.287,1.543-2.27,2.721-2.943c1.178-0.67,2.49-1.008,3.943-1.008
|
||||
c1.471,0,2.795,0.348,3.977,1.049c1.182,0.697,2.08,1.674,2.697,2.932c0.619,1.257,0.928,2.673,0.928,4.25
|
||||
c0,1.31-0.195,2.486-0.598,3.531C329.586,114.984,328.986,115.895,328.182,116.67L328.182,116.67z M323.545,113.975
|
||||
c1.217,0.342,2.217,0.851,3.006,1.523c1.238-1.129,1.857-2.826,1.857-5.092c0-1.289-0.219-2.416-0.656-3.379
|
||||
c-0.438-0.961-1.078-1.709-1.92-2.242c-0.844-0.531-1.789-0.797-2.842-0.797c-1.568,0-2.873,0.537-3.906,1.611
|
||||
c-1.037,1.073-1.553,2.68-1.553,4.817c0,2.067,0.512,3.658,1.533,4.767c1.027,1.104,2.336,1.66,3.926,1.66
|
||||
c0.756,0,1.463-0.142,2.131-0.423c-0.66-0.43-1.357-0.733-2.086-0.911L323.545,113.975L323.545,113.975z M343.859,102.457h2.107
|
||||
v9.199c0,1.598-0.184,2.867-0.545,3.809c-0.363,0.941-1.018,1.705-1.959,2.295c-0.945,0.592-2.186,0.885-3.721,0.885
|
||||
c-1.486,0-2.713-0.256-3.654-0.77c-0.949-0.512-1.631-1.258-2.031-2.232c-0.408-0.975-0.607-2.301-0.607-3.986v-9.198h2.104v9.188
|
||||
c0,1.383,0.131,2.399,0.387,3.053c0.256,0.656,0.699,1.16,1.322,1.518c0.627,0.355,1.393,0.533,2.297,0.533
|
||||
c1.551,0,2.654-0.354,3.314-1.057c0.656-0.701,0.986-2.049,0.986-4.047V102.457L343.859,102.457z M347.725,118.375l6.115-15.918
|
||||
h2.268l6.516,15.918h-2.4l-1.857-4.822h-6.656l-1.744,4.822H347.725z M352.316,111.838h5.398l-1.664-4.408
|
||||
c-0.504-1.338-0.881-2.438-1.127-3.301c-0.203,1.021-0.488,2.035-0.859,3.043L352.316,111.838L352.316,111.838z M364.217,118.375
|
||||
v-15.918h2.107v14.039h7.84v1.879H364.217z M377.031,118.375v-15.918h2.105v15.918H377.031z M386.9,118.375v-14.039h-5.244v-1.879
|
||||
h12.615v1.879h-5.266v14.039H386.9L386.9,118.375z M400.918,118.375v-6.742l-6.135-9.176h2.561l3.139,4.799
|
||||
c0.58,0.896,1.117,1.795,1.617,2.695c0.479-0.834,1.057-1.771,1.738-2.813l3.082-4.683h2.455l-6.354,9.176v6.742L400.918,118.375
|
||||
L400.918,118.375z M416.4,110.621c0-2.643,0.709-4.709,2.129-6.203c1.418-1.494,3.25-2.242,5.496-2.242
|
||||
c1.467,0,2.793,0.352,3.973,1.053c1.178,0.703,2.078,1.683,2.697,2.938c0.619,1.254,0.926,2.681,0.926,4.271
|
||||
c0,1.617-0.322,3.063-0.975,4.334c-0.652,1.272-1.574,2.238-2.768,2.895c-1.197,0.654-2.482,0.98-3.865,0.98
|
||||
c-1.502,0-2.84-0.359-4.02-1.086c-1.182-0.724-2.074-1.711-2.684-2.965C416.705,113.346,416.4,112.02,416.4,110.621L416.4,110.621z
|
||||
M418.572,110.654c0,1.92,0.516,3.428,1.547,4.533c1.033,1.104,2.326,1.656,3.883,1.656c1.586,0,2.891-0.558,3.914-1.673
|
||||
c1.023-1.114,1.537-2.696,1.537-4.746c0-1.295-0.223-2.424-0.658-3.394c-0.438-0.967-1.08-1.715-1.92-2.247
|
||||
c-0.846-0.531-1.791-0.798-2.84-0.798c-1.494,0-2.775,0.513-3.85,1.537C419.109,106.549,418.572,108.262,418.572,110.654z
|
||||
M434.316,118.375v-15.918h2.16l8.361,12.496v-12.496h2.02v15.918h-2.16l-8.361-12.508v12.508H434.316z M450.309,118.375v-15.918
|
||||
h2.107v14.039h7.84v1.879H450.309z M463.123,118.375v-15.918h2.105v15.918H463.123z M468.92,118.375v-15.918h2.16l8.361,12.496
|
||||
v-12.496h2.02v15.918h-2.16l-8.361-12.508v12.508H468.92z M485.045,118.375v-15.918h11.508v1.879h-9.402v4.873h8.805v1.869h-8.805
|
||||
v5.418h9.771v1.879H485.045L485.045,118.375z"/>
|
||||
<polygon fill="#B5B5B5" points="80.268,117.346 69.612,121.502 68.397,113.484 "/>
|
||||
<path fill="#A6A8AB" d="M58.024,118.588l-33.43-11.02c0.458-0.15-3.059-6.269-4.434-9.16l6.949,1.877l36.893,11.797L58.024,118.588z
|
||||
"/>
|
||||
<path fill="#B5B5B5" d="M60.703,119.469l0.238-0.232l5.237-5.416l0.899,7.623C65.023,120.861,62.443,119.998,60.703,119.469z"/>
|
||||
<path fill="#D0D2D3" d="M178.142,85.885l-93.671,29.594l-14.48-4.477l117.176-47.806C186.073,67.116,179.371,82.425,178.142,85.885z
|
||||
"/>
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 15 KiB |
Binary file not shown.
Reference in New Issue
Block a user