1
0
mirror of https://github.com/alex-bochkov/1c-aws-s3-browser.git synced 2024-11-19 20:31:53 +02:00

initial version

This commit is contained in:
Alex Bochkov 2022-02-24 10:40:59 -07:00
parent b1657d2676
commit 9b71dac929
12 changed files with 2939 additions and 0 deletions

686
Catalogs/AwsS3Bucket.xml Normal file
View File

@ -0,0 +1,686 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.13">
<Catalog uuid="7a2a8acd-7a8a-4282-92f1-385b530dfc81">
<InternalInfo>
<xr:GeneratedType name="CatalogObject.AwsS3Bucket" category="Object">
<xr:TypeId>8e4a27b2-8426-44ac-912a-89cdf895e16c</xr:TypeId>
<xr:ValueId>71a8cc28-ef43-43dd-a2cc-e9d08245457f</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogRef.AwsS3Bucket" category="Ref">
<xr:TypeId>67e12c0f-a616-42c2-904a-a7f4385f802d</xr:TypeId>
<xr:ValueId>c36bba83-25c7-45c7-937c-97c341d331c9</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogSelection.AwsS3Bucket" category="Selection">
<xr:TypeId>66b2ff41-8b2d-4230-83cf-155695eee0b6</xr:TypeId>
<xr:ValueId>3d835dae-7c58-4c72-a6b1-0c5fac928377</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogList.AwsS3Bucket" category="List">
<xr:TypeId>441fe36c-70f7-4131-8fae-051db5627ed9</xr:TypeId>
<xr:ValueId>8990cc96-99d4-4f97-9cfb-d1263820598b</xr:ValueId>
</xr:GeneratedType>
<xr:GeneratedType name="CatalogManager.AwsS3Bucket" category="Manager">
<xr:TypeId>cb9f2f24-fd06-4e62-bae7-b8bade5fed5a</xr:TypeId>
<xr:ValueId>b646b831-7979-4b85-a512-6ad479c8e095</xr:ValueId>
</xr:GeneratedType>
</InternalInfo>
<Properties>
<Name>AwsS3Bucket</Name>
<Synonym>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Amazon S3 bucket</v8:content>
</v8:item>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>AWS S3 Bucket</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Hierarchical>false</Hierarchical>
<HierarchyType>HierarchyFoldersAndItems</HierarchyType>
<LimitLevelCount>false</LimitLevelCount>
<LevelCount>2</LevelCount>
<FoldersOnTop>true</FoldersOnTop>
<UseStandardCommands>true</UseStandardCommands>
<Owners/>
<SubordinationUse>ToItems</SubordinationUse>
<CodeLength>9</CodeLength>
<DescriptionLength>100</DescriptionLength>
<CodeType>String</CodeType>
<CodeAllowedLength>Variable</CodeAllowedLength>
<CodeSeries>WholeCatalog</CodeSeries>
<CheckUnique>true</CheckUnique>
<Autonumbering>true</Autonumbering>
<DefaultPresentation>AsDescription</DefaultPresentation>
<StandardAttributes>
<xr:StandardAttribute name="PredefinedDataName">
<xr:LinkByType/>
<xr:FillChecking>DontCheck</xr:FillChecking>
<xr:MultiLine>false</xr:MultiLine>
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
<xr:CreateOnInput>Auto</xr:CreateOnInput>
<xr:MaxValue xsi:nil="true"/>
<xr:ToolTip/>
<xr:ExtendedEdit>false</xr:ExtendedEdit>
<xr:Format/>
<xr:ChoiceForm/>
<xr:QuickChoice>Auto</xr:QuickChoice>
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
<xr:EditFormat/>
<xr:PasswordMode>false</xr:PasswordMode>
<xr:DataHistory>Use</xr:DataHistory>
<xr:MarkNegatives>false</xr:MarkNegatives>
<xr:MinValue xsi:nil="true"/>
<xr:Synonym/>
<xr:Comment/>
<xr:FullTextSearch>Use</xr:FullTextSearch>
<xr:ChoiceParameterLinks/>
<xr:FillValue xsi:nil="true"/>
<xr:Mask/>
<xr:ChoiceParameters/>
</xr:StandardAttribute>
<xr:StandardAttribute name="Predefined">
<xr:LinkByType/>
<xr:FillChecking>DontCheck</xr:FillChecking>
<xr:MultiLine>false</xr:MultiLine>
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
<xr:CreateOnInput>Auto</xr:CreateOnInput>
<xr:MaxValue xsi:nil="true"/>
<xr:ToolTip/>
<xr:ExtendedEdit>false</xr:ExtendedEdit>
<xr:Format/>
<xr:ChoiceForm/>
<xr:QuickChoice>Auto</xr:QuickChoice>
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
<xr:EditFormat/>
<xr:PasswordMode>false</xr:PasswordMode>
<xr:DataHistory>Use</xr:DataHistory>
<xr:MarkNegatives>false</xr:MarkNegatives>
<xr:MinValue xsi:nil="true"/>
<xr:Synonym/>
<xr:Comment/>
<xr:FullTextSearch>Use</xr:FullTextSearch>
<xr:ChoiceParameterLinks/>
<xr:FillValue xsi:nil="true"/>
<xr:Mask/>
<xr:ChoiceParameters/>
</xr:StandardAttribute>
<xr:StandardAttribute name="Ref">
<xr:LinkByType/>
<xr:FillChecking>DontCheck</xr:FillChecking>
<xr:MultiLine>false</xr:MultiLine>
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
<xr:CreateOnInput>Auto</xr:CreateOnInput>
<xr:MaxValue xsi:nil="true"/>
<xr:ToolTip/>
<xr:ExtendedEdit>false</xr:ExtendedEdit>
<xr:Format/>
<xr:ChoiceForm/>
<xr:QuickChoice>Auto</xr:QuickChoice>
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
<xr:EditFormat/>
<xr:PasswordMode>false</xr:PasswordMode>
<xr:DataHistory>Use</xr:DataHistory>
<xr:MarkNegatives>false</xr:MarkNegatives>
<xr:MinValue xsi:nil="true"/>
<xr:Synonym/>
<xr:Comment/>
<xr:FullTextSearch>Use</xr:FullTextSearch>
<xr:ChoiceParameterLinks/>
<xr:FillValue xsi:nil="true"/>
<xr:Mask/>
<xr:ChoiceParameters/>
</xr:StandardAttribute>
<xr:StandardAttribute name="DeletionMark">
<xr:LinkByType/>
<xr:FillChecking>DontCheck</xr:FillChecking>
<xr:MultiLine>false</xr:MultiLine>
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
<xr:CreateOnInput>Auto</xr:CreateOnInput>
<xr:MaxValue xsi:nil="true"/>
<xr:ToolTip/>
<xr:ExtendedEdit>false</xr:ExtendedEdit>
<xr:Format/>
<xr:ChoiceForm/>
<xr:QuickChoice>Auto</xr:QuickChoice>
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
<xr:EditFormat/>
<xr:PasswordMode>false</xr:PasswordMode>
<xr:DataHistory>Use</xr:DataHistory>
<xr:MarkNegatives>false</xr:MarkNegatives>
<xr:MinValue xsi:nil="true"/>
<xr:Synonym/>
<xr:Comment/>
<xr:FullTextSearch>Use</xr:FullTextSearch>
<xr:ChoiceParameterLinks/>
<xr:FillValue xsi:nil="true"/>
<xr:Mask/>
<xr:ChoiceParameters/>
</xr:StandardAttribute>
<xr:StandardAttribute name="IsFolder">
<xr:LinkByType/>
<xr:FillChecking>DontCheck</xr:FillChecking>
<xr:MultiLine>false</xr:MultiLine>
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
<xr:CreateOnInput>Auto</xr:CreateOnInput>
<xr:MaxValue xsi:nil="true"/>
<xr:ToolTip/>
<xr:ExtendedEdit>false</xr:ExtendedEdit>
<xr:Format/>
<xr:ChoiceForm/>
<xr:QuickChoice>Auto</xr:QuickChoice>
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
<xr:EditFormat/>
<xr:PasswordMode>false</xr:PasswordMode>
<xr:DataHistory>Use</xr:DataHistory>
<xr:MarkNegatives>false</xr:MarkNegatives>
<xr:MinValue xsi:nil="true"/>
<xr:Synonym/>
<xr:Comment/>
<xr:FullTextSearch>Use</xr:FullTextSearch>
<xr:ChoiceParameterLinks/>
<xr:FillValue xsi:nil="true"/>
<xr:Mask/>
<xr:ChoiceParameters/>
</xr:StandardAttribute>
<xr:StandardAttribute name="Owner">
<xr:LinkByType/>
<xr:FillChecking>ShowError</xr:FillChecking>
<xr:MultiLine>false</xr:MultiLine>
<xr:FillFromFillingValue>true</xr:FillFromFillingValue>
<xr:CreateOnInput>Auto</xr:CreateOnInput>
<xr:MaxValue xsi:nil="true"/>
<xr:ToolTip/>
<xr:ExtendedEdit>false</xr:ExtendedEdit>
<xr:Format/>
<xr:ChoiceForm/>
<xr:QuickChoice>Auto</xr:QuickChoice>
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
<xr:EditFormat/>
<xr:PasswordMode>false</xr:PasswordMode>
<xr:DataHistory>Use</xr:DataHistory>
<xr:MarkNegatives>false</xr:MarkNegatives>
<xr:MinValue xsi:nil="true"/>
<xr:Synonym/>
<xr:Comment/>
<xr:FullTextSearch>Use</xr:FullTextSearch>
<xr:ChoiceParameterLinks/>
<xr:FillValue xsi:nil="true"/>
<xr:Mask/>
<xr:ChoiceParameters/>
</xr:StandardAttribute>
<xr:StandardAttribute name="Parent">
<xr:LinkByType/>
<xr:FillChecking>DontCheck</xr:FillChecking>
<xr:MultiLine>false</xr:MultiLine>
<xr:FillFromFillingValue>true</xr:FillFromFillingValue>
<xr:CreateOnInput>Auto</xr:CreateOnInput>
<xr:MaxValue xsi:nil="true"/>
<xr:ToolTip/>
<xr:ExtendedEdit>false</xr:ExtendedEdit>
<xr:Format/>
<xr:ChoiceForm/>
<xr:QuickChoice>Auto</xr:QuickChoice>
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
<xr:EditFormat/>
<xr:PasswordMode>false</xr:PasswordMode>
<xr:DataHistory>Use</xr:DataHistory>
<xr:MarkNegatives>false</xr:MarkNegatives>
<xr:MinValue xsi:nil="true"/>
<xr:Synonym/>
<xr:Comment/>
<xr:FullTextSearch>Use</xr:FullTextSearch>
<xr:ChoiceParameterLinks/>
<xr:FillValue xsi:nil="true"/>
<xr:Mask/>
<xr:ChoiceParameters/>
</xr:StandardAttribute>
<xr:StandardAttribute name="Description">
<xr:LinkByType/>
<xr:FillChecking>ShowError</xr:FillChecking>
<xr:MultiLine>false</xr:MultiLine>
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
<xr:CreateOnInput>Auto</xr:CreateOnInput>
<xr:MaxValue xsi:nil="true"/>
<xr:ToolTip/>
<xr:ExtendedEdit>false</xr:ExtendedEdit>
<xr:Format/>
<xr:ChoiceForm/>
<xr:QuickChoice>Auto</xr:QuickChoice>
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
<xr:EditFormat/>
<xr:PasswordMode>false</xr:PasswordMode>
<xr:DataHistory>Use</xr:DataHistory>
<xr:MarkNegatives>false</xr:MarkNegatives>
<xr:MinValue xsi:nil="true"/>
<xr:Synonym/>
<xr:Comment/>
<xr:FullTextSearch>Use</xr:FullTextSearch>
<xr:ChoiceParameterLinks/>
<xr:FillValue xsi:nil="true"/>
<xr:Mask/>
<xr:ChoiceParameters/>
</xr:StandardAttribute>
<xr:StandardAttribute name="Code">
<xr:LinkByType/>
<xr:FillChecking>DontCheck</xr:FillChecking>
<xr:MultiLine>false</xr:MultiLine>
<xr:FillFromFillingValue>false</xr:FillFromFillingValue>
<xr:CreateOnInput>Auto</xr:CreateOnInput>
<xr:MaxValue xsi:nil="true"/>
<xr:ToolTip/>
<xr:ExtendedEdit>false</xr:ExtendedEdit>
<xr:Format/>
<xr:ChoiceForm/>
<xr:QuickChoice>Auto</xr:QuickChoice>
<xr:ChoiceHistoryOnInput>Auto</xr:ChoiceHistoryOnInput>
<xr:EditFormat/>
<xr:PasswordMode>false</xr:PasswordMode>
<xr:DataHistory>Use</xr:DataHistory>
<xr:MarkNegatives>false</xr:MarkNegatives>
<xr:MinValue xsi:nil="true"/>
<xr:Synonym/>
<xr:Comment/>
<xr:FullTextSearch>Use</xr:FullTextSearch>
<xr:ChoiceParameterLinks/>
<xr:FillValue xsi:nil="true"/>
<xr:Mask/>
<xr:ChoiceParameters/>
</xr:StandardAttribute>
</StandardAttributes>
<Characteristics/>
<PredefinedDataUpdate>Auto</PredefinedDataUpdate>
<EditType>InDialog</EditType>
<QuickChoice>false</QuickChoice>
<ChoiceMode>BothWays</ChoiceMode>
<InputByString>
<xr:Field>Catalog.AwsS3Bucket.StandardAttribute.Description</xr:Field>
<xr:Field>Catalog.AwsS3Bucket.StandardAttribute.Code</xr:Field>
</InputByString>
<SearchStringModeOnInputByString>Begin</SearchStringModeOnInputByString>
<FullTextSearchOnInputByString>DontUse</FullTextSearchOnInputByString>
<ChoiceDataGetModeOnInputByString>Directly</ChoiceDataGetModeOnInputByString>
<DefaultObjectForm/>
<DefaultFolderForm/>
<DefaultListForm/>
<DefaultChoiceForm/>
<DefaultFolderChoiceForm/>
<AuxiliaryObjectForm/>
<AuxiliaryFolderForm/>
<AuxiliaryListForm/>
<AuxiliaryChoiceForm/>
<AuxiliaryFolderChoiceForm/>
<IncludeHelpInContents>false</IncludeHelpInContents>
<BasedOn/>
<DataLockFields/>
<DataLockControlMode>Managed</DataLockControlMode>
<FullTextSearch>Use</FullTextSearch>
<ObjectPresentation/>
<ExtendedObjectPresentation/>
<ListPresentation>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>AWS S3 Buckets</v8:content>
</v8:item>
</ListPresentation>
<ExtendedListPresentation/>
<Explanation/>
<CreateOnInput>Use</CreateOnInput>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<DataHistory>DontUse</DataHistory>
<UpdateDataHistoryImmediatelyAfterWrite>false</UpdateDataHistoryImmediatelyAfterWrite>
<ExecuteAfterWriteDataHistoryVersionProcessing>false</ExecuteAfterWriteDataHistoryVersionProcessing>
</Properties>
<ChildObjects>
<Attribute uuid="b9babddc-680a-46a5-a389-819daea0a2da">
<Properties>
<Name>BucketName</Name>
<Synonym>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Bucket name</v8:content>
</v8:item>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Bucket Name</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>100</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillFromFillingValue>false</FillFromFillingValue>
<FillValue xsi:type="xs:string"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Use>ForItem</Use>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Attribute uuid="06208216-5f20-4b31-9e6d-f0828940e7f7">
<Properties>
<Name>Region</Name>
<Synonym>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Region</v8:content>
</v8:item>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>AWS Region</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>15</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>for example, us-east-1</v8:content>
</v8:item>
</ToolTip>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillFromFillingValue>false</FillFromFillingValue>
<FillValue xsi:type="xs:string"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Use>ForItem</Use>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Attribute uuid="7d3bb951-884a-46ed-9067-f87dbdc7b7d2">
<Properties>
<Name>InitialFolder</Name>
<Synonym>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Initial folder</v8:content>
</v8:item>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Initial Folder</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>100</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>leave it empty to start at the root</v8:content>
</v8:item>
</ToolTip>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillFromFillingValue>false</FillFromFillingValue>
<FillValue xsi:type="xs:string"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Use>ForItem</Use>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Attribute uuid="c8e113df-4210-4742-97b4-2c400655932a">
<Properties>
<Name>PublicEndpoint</Name>
<Synonym>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Public Endpoint</v8:content>
</v8:item>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Public Endpoint</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>500</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>DNS name for publicly available bucket</v8:content>
</v8:item>
</ToolTip>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillFromFillingValue>false</FillFromFillingValue>
<FillValue xsi:type="xs:string"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Use>ForItem</Use>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Attribute uuid="cb8bd3dd-b319-412e-b2eb-d6c0cf3589e1">
<Properties>
<Name>MaxKeysPerRequest</Name>
<Synonym>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Max keys per request</v8:content>
</v8:item>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Max Keys Per Request</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:decimal</v8:Type>
<v8:NumberQualifiers>
<v8:Digits>10</v8:Digits>
<v8:FractionDigits>0</v8:FractionDigits>
<v8:AllowedSign>Any</v8:AllowedSign>
</v8:NumberQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>10-1000</v8:content>
</v8:item>
</ToolTip>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:type="xs:string">100</MinValue>
<MaxValue xsi:type="xs:string">1000</MaxValue>
<FillFromFillingValue>false</FillFromFillingValue>
<FillValue xsi:nil="true"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Use>ForItem</Use>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Attribute uuid="5fb220f8-6dfa-4f53-ad9d-453103461bbd">
<Properties>
<Name>AccessKeyId</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Access Key ID</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>100</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillFromFillingValue>false</FillFromFillingValue>
<FillValue xsi:type="xs:string"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Use>ForItem</Use>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
<Attribute uuid="babe1ae1-8b94-44a5-8ad3-b33a9aff8ce7">
<Properties>
<Name>SecretAccessKey</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Secret Access Key</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>100</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<PasswordMode>false</PasswordMode>
<Format/>
<EditFormat/>
<ToolTip/>
<MarkNegatives>false</MarkNegatives>
<Mask/>
<MultiLine>false</MultiLine>
<ExtendedEdit>false</ExtendedEdit>
<MinValue xsi:nil="true"/>
<MaxValue xsi:nil="true"/>
<FillFromFillingValue>false</FillFromFillingValue>
<FillValue xsi:type="xs:string"/>
<FillChecking>DontCheck</FillChecking>
<ChoiceFoldersAndItems>Items</ChoiceFoldersAndItems>
<ChoiceParameterLinks/>
<ChoiceParameters/>
<QuickChoice>Auto</QuickChoice>
<CreateOnInput>Auto</CreateOnInput>
<ChoiceForm/>
<LinkByType/>
<ChoiceHistoryOnInput>Auto</ChoiceHistoryOnInput>
<Use>ForItem</Use>
<Indexing>DontIndex</Indexing>
<FullTextSearch>Use</FullTextSearch>
<DataHistory>Use</DataHistory>
</Properties>
</Attribute>
</ChildObjects>
</Catalog>
</MetaDataObject>

View File

@ -0,0 +1,12 @@

Procedure BeforeWrite(Cancel)
If Not StrEndsWith(PublicEndpoint, "/") Then
PublicEndpoint = PublicEndpoint + "/";
EndIf;
If Not StrEndsWith(InitialFolder, "/") Then
InitialFolder = InitialFolder + "/";
EndIf;
EndProcedure

48
ConfigDumpInfo.xml Normal file
View File

@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<ConfigDumpInfo xmlns="http://v8.1c.ru/8.3/xcf/dumpinfo" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" format="Hierarchical" version="2.13">
<ConfigVersions>
<Metadata name="Catalog.AwsS3Bucket" id="7a2a8acd-7a8a-4282-92f1-385b530dfc81" configVersion="95212c2527ead926843878e317aee6e32f8f1953">
<Metadata name="Catalog.AwsS3Bucket.Attribute.Region" id="06208216-5f20-4b31-9e6d-f0828940e7f7"/>
<Metadata name="Catalog.AwsS3Bucket.Attribute.AccessKeyId" id="5fb220f8-6dfa-4f53-ad9d-453103461bbd"/>
<Metadata name="Catalog.AwsS3Bucket.Attribute.InitialFolder" id="7d3bb951-884a-46ed-9067-f87dbdc7b7d2"/>
<Metadata name="Catalog.AwsS3Bucket.Attribute.BucketName" id="b9babddc-680a-46a5-a389-819daea0a2da"/>
<Metadata name="Catalog.AwsS3Bucket.Attribute.SecretAccessKey" id="babe1ae1-8b94-44a5-8ad3-b33a9aff8ce7"/>
<Metadata name="Catalog.AwsS3Bucket.Attribute.PublicEndpoint" id="c8e113df-4210-4742-97b4-2c400655932a"/>
<Metadata name="Catalog.AwsS3Bucket.Attribute.MaxKeysPerRequest" id="cb8bd3dd-b319-412e-b2eb-d6c0cf3589e1"/>
</Metadata>
<Metadata name="Catalog.AwsS3Bucket.ObjectModule" id="7a2a8acd-7a8a-4282-92f1-385b530dfc81.0" configVersion="368a0f819f855d18cbba7d05f0efa99ed96d675f"/>
<Metadata name="Configuration.AwsS3Browser" id="c34ffcdf-b7f6-488d-9dc1-728967f9bd10" configVersion="e891eca5aff40ff41d5beeeabd873d578bbff20a"/>
<Metadata name="DataProcessor.AwsS3Browser" id="8f3467a1-e7a7-4f78-920d-58358b34d4a0" configVersion="7ccfb07ff3aad7e212cd342d45bcdd5b70386164">
<Metadata name="DataProcessor.AwsS3Browser.Attribute.Region" id="0fb2750a-e409-40c6-bc98-82b8786dc48e"/>
<Metadata name="DataProcessor.AwsS3Browser.Attribute.RequestText" id="1085edf4-7628-4008-b7e0-f856b67dacc0"/>
<Metadata name="DataProcessor.AwsS3Browser.TabularSection.RequestLogs" id="1c6921dc-cee2-4656-bc87-a5ee4da5c06c"/>
<Metadata name="DataProcessor.AwsS3Browser.TabularSection.BucketObjects.Attribute.StorageClass" id="289faa04-9d20-4b3b-9e21-fceacd9b40cf"/>
<Metadata name="DataProcessor.AwsS3Browser.TabularSection.BucketObjects.Attribute.ObjectShortName" id="3d63d12c-6c91-436d-93a0-2d94f5d16b6c"/>
<Metadata name="DataProcessor.AwsS3Browser.TabularSection.BucketObjects.Attribute.Key" id="4efc7590-f22c-4d20-98a7-17850d0bb326"/>
<Metadata name="DataProcessor.AwsS3Browser.Attribute.ResponseText" id="7d3d7553-e39f-44c5-90f6-199fac506d6c"/>
<Metadata name="DataProcessor.AwsS3Browser.TabularSection.BucketObjects" id="811cd66d-1ac4-4e1a-a731-e879963c7df2"/>
<Metadata name="DataProcessor.AwsS3Browser.TabularSection.RequestLogs.Attribute.Request" id="8a63be59-3e28-4625-bb10-e4c4eac72ae9"/>
<Metadata name="DataProcessor.AwsS3Browser.TabularSection.BucketObjects.Attribute.Size" id="8a825f66-f8b5-4f65-baaf-30c61838f6d0"/>
<Metadata name="DataProcessor.AwsS3Browser.Attribute.m_NextContinuationToken" id="8b907fb2-c582-4a27-bd07-b14d65af10d7"/>
<Metadata name="DataProcessor.AwsS3Browser.Attribute.MaxKeysPerRequest" id="8dc99bd0-dd6e-4819-a654-3d7b546eea25"/>
<Metadata name="DataProcessor.AwsS3Browser.Attribute.PublicEndpoint" id="8e55cc8d-3c6e-4db3-b53e-e4292cfac595"/>
<Metadata name="DataProcessor.AwsS3Browser.TabularSection.RequestLogs.Attribute.Date" id="8f300dbd-1c9f-4ad6-bb13-e8d731f48011"/>
<Metadata name="DataProcessor.AwsS3Browser.Attribute.m_IsTruncated" id="a521767a-aef4-4c44-b474-3f4b8c9bba51"/>
<Metadata name="DataProcessor.AwsS3Browser.TabularSection.BucketObjects.Attribute.LastModified" id="ac3f0f53-33dd-4451-9c62-2c13d7212c16"/>
<Metadata name="DataProcessor.AwsS3Browser.TabularSection.BucketObjects.Attribute.isFolder" id="b07ea5b4-18c7-4479-981d-b401f5b42ab1"/>
<Metadata name="DataProcessor.AwsS3Browser.TabularSection.RequestLogs.Attribute.Response" id="b5402ec4-03ae-4005-bf9b-f2b3bbc384fb"/>
<Metadata name="DataProcessor.AwsS3Browser.TabularSection.BucketObjects.Attribute.ETag" id="b850e0df-613a-4661-bc3a-339a17e45eac"/>
<Metadata name="DataProcessor.AwsS3Browser.Attribute.m_Prefix" id="bc6f5c7d-0c01-44f0-ab38-a6929e88b112"/>
<Metadata name="DataProcessor.AwsS3Browser.Attribute.SecretKey" id="c4ef227b-0aa4-4590-bce7-a8a0f382489c"/>
<Metadata name="DataProcessor.AwsS3Browser.Attribute.AccessKey" id="cf88e5c5-0c09-45c1-a331-206dd382c959"/>
<Metadata name="DataProcessor.AwsS3Browser.Attribute.Service" id="e7a35d02-b9c1-446b-b641-1562ba81de44"/>
<Metadata name="DataProcessor.AwsS3Browser.Attribute.BucketName" id="e869cdd3-48c7-44c5-8d22-ab8ad28825d8"/>
<Metadata name="DataProcessor.AwsS3Browser.TabularSection.RequestLogs.Attribute.StatusCode" id="ed1c616e-2e73-469c-ba08-71ab91e14c83"/>
<Metadata name="DataProcessor.AwsS3Browser.Attribute.Bucket" id="f2e98bab-7609-465b-be88-f5c297e37c5f"/>
</Metadata>
<Metadata name="DataProcessor.AwsS3Browser.Form.Form" id="d22eb16d-b384-4dc1-b649-d185990be62f" configVersion="419608e84a6482f6fc54aaeebdeb36426ad62136"/>
<Metadata name="DataProcessor.AwsS3Browser.Form.Form.Form" id="d22eb16d-b384-4dc1-b649-d185990be62f.0" configVersion="bd0f730b94d45d928b617b073e779debf88a8eb4"/>
<Metadata name="Language.Русский" id="ab579006-f582-4f94-8065-312326331e05" configVersion="3afebd240b7f80dc333f52ced77652135d43467d"/>
<Metadata name="Role.S3_ОсновнаяРоль" id="15b5d659-1a77-4c3f-a005-b022aa485cc1" configVersion="c35e8d413ef7c46491f8b98823c43b581ed8403a"/>
</ConfigVersions>
</ConfigDumpInfo>

73
Configuration.xml Normal file
View File

@ -0,0 +1,73 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.13">
<Configuration uuid="c34ffcdf-b7f6-488d-9dc1-728967f9bd10">
<InternalInfo>
<xr:ContainedObject>
<xr:ClassId>9cd510cd-abfc-11d4-9434-004095e12fc7</xr:ClassId>
<xr:ObjectId>74cca5d4-70d2-4bd7-9f95-89d706a2aac4</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>9fcd25a0-4822-11d4-9414-008048da11f9</xr:ClassId>
<xr:ObjectId>3b20018b-8774-4983-a115-527592bdad9c</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>e3687481-0a87-462c-a166-9f34594f9bba</xr:ClassId>
<xr:ObjectId>d890f221-1c57-4542-ac03-c8277387e1b8</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>9de14907-ec23-4a07-96f0-85521cb6b53b</xr:ClassId>
<xr:ObjectId>0b7c9f62-ea75-43c9-9cab-3e00afa6ef35</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>51f2d5d8-ea4d-4064-8892-82951750031e</xr:ClassId>
<xr:ObjectId>cf98999e-665e-4991-870f-4e205463e3d1</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>e68182ea-4237-4383-967f-90c1e3370bc7</xr:ClassId>
<xr:ObjectId>e4e2b8a1-5d06-48e6-8fa6-efa3688261a5</xr:ObjectId>
</xr:ContainedObject>
<xr:ContainedObject>
<xr:ClassId>fb282519-d103-4dd3-bc12-cb271d631dfc</xr:ClassId>
<xr:ObjectId>ced96218-bde1-45c6-9732-29259c10e30a</xr:ObjectId>
</xr:ContainedObject>
</InternalInfo>
<Properties>
<Name>AwsS3Browser</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>AWS S3 Browser</v8:content>
</v8:item>
</Synonym>
<Comment/>
<ConfigurationExtensionPurpose>AddOn</ConfigurationExtensionPurpose>
<ObjectBelonging>Adopted</ObjectBelonging>
<KeepMappingToExtendedConfigurationObjectsByIDs>true</KeepMappingToExtendedConfigurationObjectsByIDs>
<NamePrefix>S3_</NamePrefix>
<ConfigurationExtensionCompatibilityMode>Version8_3_14</ConfigurationExtensionCompatibilityMode>
<DefaultRunMode>ManagedApplication</DefaultRunMode>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
</UsePurposes>
<ScriptVariant>English</ScriptVariant>
<DefaultRoles>
<xr:Item xsi:type="xr:MDObjectRef">Role.S3_ОсновнаяРоль</xr:Item>
</DefaultRoles>
<Vendor/>
<Version/>
<DefaultLanguage>Language.Русский</DefaultLanguage>
<BriefInformation/>
<DetailedInformation/>
<Copyright/>
<VendorInformationAddress/>
<ConfigurationInformationAddress/>
<InterfaceCompatibilityMode>TaxiEnableVersion8_2</InterfaceCompatibilityMode>
</Properties>
<ChildObjects>
<Language>Русский</Language>
<Role>S3_ОсновнаяРоль</Role>
<Catalog>AwsS3Bucket</Catalog>
<DataProcessor>AwsS3Browser</DataProcessor>
</ChildObjects>
</Configuration>
</MetaDataObject>

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.13">
<Form uuid="d22eb16d-b384-4dc1-b649-d185990be62f">
<Properties>
<Name>Form</Name>
<Synonym>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Form</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
<ExtendedPresentation/>
</Properties>
</Form>
</MetaDataObject>

View File

@ -0,0 +1,478 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.13">
<AutoCommandBar name="FormCommandBar" id="-1">
<Autofill>false</Autofill>
</AutoCommandBar>
<Events>
<Event name="OnCreateAtServer">OnCreateAtServer</Event>
</Events>
<ChildItems>
<InputField name="Bucket" id="67">
<DataPath>Object.Bucket</DataPath>
<QuickChoice>true</QuickChoice>
<ContextMenu name="BucketContextMenu" id="68"/>
<ExtendedTooltip name="BucketExtendedTooltip" id="69"/>
<Events>
<Event name="OnChange">BucketOnChange</Event>
</Events>
</InputField>
<Pages name="GroupPages" id="9">
<Title>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Group pages</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Group pages</v8:content>
</v8:item>
</ToolTip>
<PagesRepresentation>TabsOnTop</PagesRepresentation>
<ExtendedTooltip name="GroupPagesExtendedTooltip" id="10"/>
<ChildItems>
<Page name="GroupBucketObjects" id="11">
<Title>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Bucket Objects</v8:content>
</v8:item>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Bucket Content</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Group bucket objects</v8:content>
</v8:item>
</ToolTip>
<ExtendedTooltip name="GroupBucketObjectsExtendedTooltip" id="12"/>
<ChildItems>
<UsualGroup name="GroupStatus" id="54">
<Title>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Group status</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Group status</v8:content>
</v8:item>
</ToolTip>
<Behavior>Usual</Behavior>
<Representation>None</Representation>
<ShowTitle>false</ShowTitle>
<ExtendedTooltip name="GroupStatusExtendedTooltip" id="55"/>
<ChildItems>
<InputField name="m_Prefix" id="56">
<DataPath>Object.m_Prefix</DataPath>
<ReadOnly>true</ReadOnly>
<Title>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Current Folder</v8:content>
</v8:item>
</Title>
<ContextMenu name="m_PrefixContextMenu" id="57"/>
<ExtendedTooltip name="m_PrefixExtendedTooltip" id="58"/>
</InputField>
</ChildItems>
</UsualGroup>
<Table name="BucketObjects" id="13">
<ReadOnly>true</ReadOnly>
<ChangeRowSet>false</ChangeRowSet>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<DataPath>Object.BucketObjects</DataPath>
<RowFilter xsi:nil="true"/>
<ContextMenu name="BucketObjectsContextMenu" id="14"/>
<AutoCommandBar name="BucketObjectsCommandBar" id="15">
<Autofill>false</Autofill>
<ChildItems>
<Button name="ListObjects" id="1">
<Type>CommandBarButton</Type>
<Representation>Picture</Representation>
<CommandName>Form.Command.RefreshList</CommandName>
<Picture>
<xr:Ref>StdPicture.Refresh</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<ExtendedTooltip name="ListObjectsExtendedTooltip" id="2"/>
</Button>
<Button name="BucketObjectsReturnOneLevelUp" id="52">
<Type>CommandBarButton</Type>
<Representation>PictureAndText</Representation>
<CommandName>Form.Command.ReturnOneLevelUp</CommandName>
<Picture>
<xr:Ref>StdPicture.LevelUp</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<ExtendedTooltip name="BucketObjectsReturnOneLevelUpExtendedTooltip" id="53"/>
</Button>
<Button name="BucketObjectsSortListAsc" id="59">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.BucketObjects.StandardCommand.SortListAsc</CommandName>
<LocationInCommandBar>InCommandBar</LocationInCommandBar>
<ExtendedTooltip name="BucketObjectsSortListAscExtendedTooltip" id="60"/>
</Button>
<Button name="BucketObjectsSortListDesc" id="61">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.BucketObjects.StandardCommand.SortListDesc</CommandName>
<LocationInCommandBar>InCommandBar</LocationInCommandBar>
<ExtendedTooltip name="BucketObjectsSortListDescExtendedTooltip" id="62"/>
</Button>
<Button name="BucketObjectsCreateNewFolder" id="63">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.CreateNewFolder</CommandName>
<ExtendedTooltip name="BucketObjectsCreateNewFolderExtendedTooltip" id="64"/>
</Button>
<Button name="BucketObjectsUploadNewFile" id="65">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.UploadNewFile</CommandName>
<ExtendedTooltip name="BucketObjectsUploadNewFileExtendedTooltip" id="66"/>
</Button>
<Button name="BucketObjectsDeleteObject" id="102">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.DeleteObject</CommandName>
<ExtendedTooltip name="BucketObjectsDeleteObjectExtendedTooltip" id="103"/>
</Button>
<Button name="BucketObjectsContextMenuOpenInBrowser" id="70">
<Type>CommandBarButton</Type>
<CommandName>Form.Command.OpenInBrowser</CommandName>
<ExtendedTooltip name="BucketObjectsContextMenuOpenInBrowserExtendedTooltip" id="71"/>
</Button>
<Button name="BucketObjectsOutputList" id="100">
<Type>CommandBarButton</Type>
<CommandName>Form.Item.BucketObjects.StandardCommand.OutputList</CommandName>
<ExtendedTooltip name="BucketObjectsOutputListExtendedTooltip" id="101"/>
</Button>
</ChildItems>
</AutoCommandBar>
<ExtendedTooltip name="BucketObjectsExtendedTooltip" id="16"/>
<SearchStringAddition name="BucketObjectsSearchString" id="17">
<AdditionSource>
<Item>BucketObjects</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="BucketObjectsSearchStringContextMenu" id="18"/>
<ExtendedTooltip name="BucketObjectsSearchStringExtendedTooltip" id="19"/>
</SearchStringAddition>
<ViewStatusAddition name="BucketObjectsViewStatus" id="20">
<AdditionSource>
<Item>BucketObjects</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="BucketObjectsViewStatusContextMenu" id="21"/>
<ExtendedTooltip name="BucketObjectsViewStatusExtendedTooltip" id="22"/>
</ViewStatusAddition>
<SearchControlAddition name="BucketObjectsSearchControl" id="23">
<AdditionSource>
<Item>BucketObjects</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="BucketObjectsSearchControlContextMenu" id="24"/>
<ExtendedTooltip name="BucketObjectsSearchControlExtendedTooltip" id="25"/>
</SearchControlAddition>
<Events>
<Event name="Selection">BucketObjectsSelection</Event>
</Events>
<ChildItems>
<LabelField name="BucketObjectsLineNumber" id="26">
<DataPath>Object.BucketObjects.LineNumber</DataPath>
<EditMode>EnterOnInput</EditMode>
<Width>1</Width>
<ContextMenu name="BucketObjectsLineNumberContextMenu" id="27"/>
<ExtendedTooltip name="BucketObjectsLineNumberExtendedTooltip" id="28"/>
</LabelField>
<PictureField name="BucketObjectsisFolder" id="29">
<DataPath>Object.BucketObjects.isFolder</DataPath>
<ReadOnly>true</ReadOnly>
<TitleLocation>None</TitleLocation>
<EditMode>EnterOnInput</EditMode>
<ValuesPicture>
<xr:Ref>StdPicture.DocumentJournal</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</ValuesPicture>
<ContextMenu name="BucketObjectsisFolderContextMenu" id="30"/>
<ExtendedTooltip name="BucketObjectsisFolderExtendedTooltip" id="31"/>
</PictureField>
<InputField name="BucketObjectsObjectShortName" id="32">
<DataPath>Object.BucketObjects.ObjectShortName</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="BucketObjectsObjectShortNameContextMenu" id="33"/>
<ExtendedTooltip name="BucketObjectsObjectShortNameExtendedTooltip" id="34"/>
</InputField>
<InputField name="BucketObjectsLastModified" id="35">
<DataPath>Object.BucketObjects.LastModified</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="BucketObjectsLastModifiedContextMenu" id="36"/>
<ExtendedTooltip name="BucketObjectsLastModifiedExtendedTooltip" id="37"/>
</InputField>
<InputField name="BucketObjectsETag" id="38">
<DataPath>Object.BucketObjects.ETag</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="BucketObjectsETagContextMenu" id="39"/>
<ExtendedTooltip name="BucketObjectsETagExtendedTooltip" id="40"/>
</InputField>
<InputField name="BucketObjectsSize" id="41">
<DataPath>Object.BucketObjects.Size</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="BucketObjectsSizeContextMenu" id="42"/>
<ExtendedTooltip name="BucketObjectsSizeExtendedTooltip" id="43"/>
</InputField>
<InputField name="BucketObjectsStorageClass" id="44">
<DataPath>Object.BucketObjects.StorageClass</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="BucketObjectsStorageClassContextMenu" id="45"/>
<ExtendedTooltip name="BucketObjectsStorageClassExtendedTooltip" id="46"/>
</InputField>
<InputField name="BucketObjectsKey" id="47">
<DataPath>Object.BucketObjects.Key</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="BucketObjectsKeyContextMenu" id="48"/>
<ExtendedTooltip name="BucketObjectsKeyExtendedTooltip" id="49"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</Page>
<Page name="GroupRequestLog" id="50">
<Title>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Request Logs</v8:content>
</v8:item>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Request Logs</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Group request log</v8:content>
</v8:item>
</ToolTip>
<ExtendedTooltip name="GroupRequestLogExtendedTooltip" id="51"/>
<ChildItems>
<Table name="RequestLogs" id="72">
<Representation>List</Representation>
<ChangeRowSet>false</ChangeRowSet>
<ChangeRowOrder>false</ChangeRowOrder>
<AutoInsertNewRow>true</AutoInsertNewRow>
<EnableStartDrag>true</EnableStartDrag>
<EnableDrag>true</EnableDrag>
<DataPath>Object.RequestLogs</DataPath>
<RowFilter xsi:nil="true"/>
<ContextMenu name="RequestLogsContextMenu" id="73"/>
<AutoCommandBar name="RequestLogsCommandBar" id="74"/>
<ExtendedTooltip name="RequestLogsExtendedTooltip" id="75"/>
<SearchStringAddition name="RequestLogsSearchString" id="76">
<AdditionSource>
<Item>RequestLogs</Item>
<Type>SearchStringRepresentation</Type>
</AdditionSource>
<ContextMenu name="RequestLogsSearchStringContextMenu" id="77"/>
<ExtendedTooltip name="RequestLogsSearchStringExtendedTooltip" id="78"/>
</SearchStringAddition>
<ViewStatusAddition name="RequestLogsViewStatus" id="79">
<AdditionSource>
<Item>RequestLogs</Item>
<Type>ViewStatusRepresentation</Type>
</AdditionSource>
<ContextMenu name="RequestLogsViewStatusContextMenu" id="80"/>
<ExtendedTooltip name="RequestLogsViewStatusExtendedTooltip" id="81"/>
</ViewStatusAddition>
<SearchControlAddition name="RequestLogsSearchControl" id="82">
<AdditionSource>
<Item>RequestLogs</Item>
<Type>SearchControl</Type>
</AdditionSource>
<ContextMenu name="RequestLogsSearchControlContextMenu" id="83"/>
<ExtendedTooltip name="RequestLogsSearchControlExtendedTooltip" id="84"/>
</SearchControlAddition>
<ChildItems>
<LabelField name="RequestLogsLineNumber" id="85">
<DataPath>Object.RequestLogs.LineNumber</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="RequestLogsLineNumberContextMenu" id="86"/>
<ExtendedTooltip name="RequestLogsLineNumberExtendedTooltip" id="87"/>
</LabelField>
<InputField name="RequestLogsDate" id="88">
<DataPath>Object.RequestLogs.Date</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="RequestLogsDateContextMenu" id="89"/>
<ExtendedTooltip name="RequestLogsDateExtendedTooltip" id="90"/>
</InputField>
<InputField name="RequestLogsStatusCode" id="91">
<DataPath>Object.RequestLogs.StatusCode</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="RequestLogsStatusCodeContextMenu" id="92"/>
<ExtendedTooltip name="RequestLogsStatusCodeExtendedTooltip" id="93"/>
</InputField>
<InputField name="RequestLogsRequest" id="94">
<DataPath>Object.RequestLogs.Request</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="RequestLogsRequestContextMenu" id="95"/>
<ExtendedTooltip name="RequestLogsRequestExtendedTooltip" id="96"/>
</InputField>
<InputField name="RequestLogsResponse" id="97">
<DataPath>Object.RequestLogs.Response</DataPath>
<EditMode>EnterOnInput</EditMode>
<ContextMenu name="RequestLogsResponseContextMenu" id="98"/>
<ExtendedTooltip name="RequestLogsResponseExtendedTooltip" id="99"/>
</InputField>
</ChildItems>
</Table>
</ChildItems>
</Page>
</ChildItems>
</Pages>
</ChildItems>
<Attributes>
<Attribute name="Object" id="1">
<Type>
<v8:Type>cfg:DataProcessorObject.AwsS3Browser</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
</Attributes>
<Commands>
<Command name="RefreshList" id="1">
<Title>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Refresh</v8:content>
</v8:item>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Refresh</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Refresh list</v8:content>
</v8:item>
</ToolTip>
<Action>ListObjects</Action>
</Command>
<Command name="ReturnOneLevelUp" id="2">
<Title>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Go Back Up</v8:content>
</v8:item>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Go Back Up</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Return one level up</v8:content>
</v8:item>
</ToolTip>
<Action>ReturnOneLevelUp</Action>
</Command>
<Command name="CreateNewFolder" id="3">
<Title>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>New Folder</v8:content>
</v8:item>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>New Folder</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Create new folder</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.CreateFolder</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>CreateNewFolder</Action>
<Representation>TextPicture</Representation>
</Command>
<Command name="UploadNewFile" id="4">
<Title>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Upload New File</v8:content>
</v8:item>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Upload New File</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Upload new file</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.CreateListItem</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>UploadNewFile</Action>
<Representation>TextPicture</Representation>
</Command>
<Command name="OpenInBrowser" id="5">
<Title>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Open in browser</v8:content>
</v8:item>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Open In Browser</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>en</v8:lang>
<v8:content>Open in browser</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.GotoExternalURL</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>OpenInBrowser</Action>
<Representation>TextPicture</Representation>
</Command>
<Command name="DeleteObject" id="6">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Delete</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Delete object</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.Delete</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>DeleteObject</Action>
<Representation>TextPicture</Representation>
</Command>
</Commands>
</Form>

View File

@ -0,0 +1,485 @@
#Region HMAC_SHA256
Function Hash(BinaryData, Type)
HashingObj = New DataHashing(Type);
HashingObj.Append(BinaryData);
Return HashingObj.HashSum;
EndFunction
Function HashFromFile(FileName, Type)
HashingObj = New DataHashing(Type);
HashingObj.AppendFile(FileName);
Return HashingObj.HashSum;
EndFunction
Function HMAC(Val KeyValue, Val Data, Type, BlockSize)
If KeyValue.Size() > BlockSize Then
KeyValue = Hash(KeyValue, Type);
EndIf;
If KeyValue.Size() < BlockSize Then
KeyValue = GetHexStringFromBinaryData(KeyValue);
KeyValue = Left(KeyValue + RepeatString("00", BlockSize), BlockSize * 2);
EndIf;
KeyValue = GetBinaryDataBufferFromBinaryData(GetBinaryDataFromHexString(KeyValue));
ipad = GetBinaryDataBufferFromHexString(RepeatString("36", BlockSize));
opad = GetBinaryDataBufferFromHexString(RepeatString("5c", BlockSize));
ipad.WriteBitwiseXor(0, KeyValue);
ikeypad = GetBinaryDataFromBinaryDataBuffer(ipad);
opad.WriteBitwiseXor(0, KeyValue);
okeypad = GetBinaryDataFromBinaryDataBuffer(opad);
Return Hash(CombineBinaryData(okeypad, Hash(CombineBinaryData(ikeypad, Data), Type)), Type);
EndFunction
Function CombineBinaryData(BinaryData1, BinaryData2)
BinaryArray = New Array;
BinaryArray.Add(BinaryData1);
BinaryArray.Add(BinaryData2);
Return ConcatBinaryData(BinaryArray);
EndFunction
Function RepeatString(String, Count)
Parts = New Array(Count);
For i = 1 To Count Do
Parts.Add(String);
EndDo;
Return StrConcat(Parts, "");
EndFunction
Function HMACSHA256(Val Key, Val Data)
Return HMAC(Key, Data, HashFunction.SHA256, 64);
EndFunction
Function GetSignatureKey(key, dateStamp, regionName, serviceName)
kSecret = GetBinaryDataFromString("AWS4" + key);
kDate = HMACSHA256(kSecret, GetBinaryDataFromString(dateStamp));
kRegion = HMACSHA256(kDate, GetBinaryDataFromString(regionName));
kService = HMACSHA256(kRegion, GetBinaryDataFromString(serviceName));
kSigning = HMACSHA256(kService, GetBinaryDataFromString("aws4_request"));
Return kSigning;
EndFunction
#EndRegion
#Region AWS_Request
&AtServer
Procedure ParseXmlResponse(ResponseText)
Object.BucketObjects.Clear();
XMLReader = New XMLReader;
XMLReader.SetString(ResponseText);
Obj = XDTOFactory.ReadXML(XMLReader);
Object.m_IsTruncated = Boolean(Obj.IsTruncated);
If Object.m_IsTruncated Then
Object.m_NextContinuationToken = Obj.NextContinuationToken;
Else
Object.m_NextContinuationToken = "";
EndIf;
If TypeOf(Obj.Prefix) = Type("String") Then
Object.m_Prefix = Obj.Prefix;
Else
Object.m_Prefix = ""
EndIf;
If Not Obj.Properties().Get("CommonPrefixes") = Undefined Then
If TypeOf(Obj.CommonPrefixes) = Type("XDTODataObject") Then
Array = New Array;
Array.Add(Obj.CommonPrefixes);
Else
Array = Obj.CommonPrefixes;
EndIf;
For Each CommonPrefix in Array Do
NewRow = Object.BucketObjects.Add();
NewRow.isFolder = True;
NewRow.Key = CommonPrefix.Prefix;
NewRow.ObjectShortName = Mid(CommonPrefix.Prefix, StrLen(Object.m_Prefix) + 1);
EndDo;
EndIf;
If Not Obj.Properties().Get("Contents") = Undefined Then
If TypeOf(Obj.Contents) = Type("XDTODataObject") Then
Array = New Array;
Array.Add(Obj.Contents);
Else
Array = Obj.Contents;
EndIf;
For Each Content in Array Do
NewRow = Object.BucketObjects.Add();
NewRow.isFolder = False;
NewRow.Key = Content.Key;
NewRow.LastModified = XMLValue(Type("Date"), Content.LastModified);
NewRow.ETag = Content.ETag;
NewRow.Size = Content.Size;
NewRow.StorageClass = Content.StorageClass;
NewRow.ObjectShortName = Mid(Content.Key, StrLen(Object.m_Prefix) + 1);
EndDo;
EndIf;
Object.BucketObjects.Sort("isFolder DESC, Key");
EndProcedure
&AtServer
Procedure ListObjectsAtServer(Prefix)
ExecuteCommand("ListFiles", Prefix);
EndProcedure
&AtServer
Procedure ExecuteCommand(Command, CurrentPrefix, LocalFilePath = Undefined, FileContentType = Undefined)
HostS3 = "s3.amazonaws.com";
AbsolutePath = "/" + Object.BucketName + "/";
contentHash = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"; //empty string
contentType = ""; //"text/plain";
verb = "GET";
Prefix = StrReplace(EncodeString(CurrentPrefix, StringEncodingMethod.URLEncoding), "%2F", "/");
PrefixEncoded = EncodeString(CurrentPrefix, StringEncodingMethod.URLEncoding);
queryParams = "delimiter=%2F&list-type=2&max-keys=" + Object.MaxKeysPerRequest + "&prefix=" + PrefixEncoded;
uri = AbsolutePath + "?delimiter=/&list-type=2&max-keys=" + Object.MaxKeysPerRequest + "&prefix=" + Prefix;
If Command = "UploadFile" Then
verb = "PUT";
queryParams = "";
uri = AbsolutePath + CurrentPrefix;
AbsolutePath = uri;
If Not FileContentType = Undefined Then
contentType = FileContentType;
EndIf;
If Not LocalFilePath = Undefined Then
contentHash = Lower(GetHexStringFromBinaryData(HashFromFile(LocalFilePath, HashFunction.SHA256)));
EndIf;
ElsIf Command = "DeleteFile" Then
verb = "DELETE";
queryParams = "";
uri = AbsolutePath + CurrentPrefix;
AbsolutePath = uri;
EndIf;
date = Format(CurrentUniversalDate(), "DF=yyyyMMddTHHmmssZ");
dateStamp = Format(CurrentUniversalDate(), "DF=yyyyMMdd");
scope = dateStamp + "/" + Object.Region + "/" + Object.Service + "/aws4_request";
NewLine = Chars.LF;
canonicalRequestPlain = verb + NewLine +
AbsolutePath + NewLine +
queryParams + NewLine +
"content-type:" + contentType + NewLine +
"host:" + HostS3 + NewLine +
"x-amz-content-sha256:" + contentHash + NewLine +
"x-amz-date:" + date + NewLine +
NewLine +
"content-type;host;x-amz-content-sha256;x-amz-date" + NewLine +
"" + contentHash;
canonicalRequestByte = Hash(canonicalRequestPlain, HashFunction.SHA256);
canonicalRequestHash = Lower(GetHexStringFromBinaryData(canonicalRequestByte));
stringToSign = "AWS4-HMAC-SHA256" + NewLine + date + NewLine + scope + NewLine + canonicalRequestHash;
sign = GetSignatureKey(Object.SecretKey, dateStamp, Object.Region, Object.Service);
signatureByte = HMACSHA256(sign, GetBinaryDataFromString(stringToSign));
signatureHash = Lower(GetHexStringFromBinaryData(signatureByte));
Authorization = "AWS4-HMAC-SHA256 Credential=" + Object.AccessKey + "/" + scope
+ ",SignedHeaders=content-type;host;x-amz-content-sha256;x-amz-date,Signature=" + signatureHash;
headers = New Map();
headers.Insert("Host", HostS3);
headers.Insert("Content-Type", contentType);
headers.Insert("x-amz-content-sha256", contentHash);
headers.Insert("x-amz-date", date);
headers.Insert("Authorization", Authorization);
Query = New HTTPRequest( uri, headers);
If Not LocalFilePath = Undefined Then
Query.SetBodyFileName(LocalFilePath);
EndIf;
Connection = New HTTPConnection(HostS3, 443,,,,, New OpenSSLSecureConnection);
Result = Connection.CallHTTPMethod(verb, Query);
Object.RequestText = canonicalRequestPlain;
Object.ResponseText = Result.GetBodyAsString();
NewLog = Object.RequestLogs.Add();
NewLog.Date = CurrentDate();
NewLog.StatusCode = Result.StatusCode;
NewLog.Request = Object.RequestText;
NewLog.Response = Object.ResponseText;
If Result.StatusCode = 200
OR Result.StatusCode = 204 Then
If ValueIsFilled(Object.ResponseText) Then
ParseXmlResponse(Object.ResponseText);
EndIf;
Else
Message("The request has failed with the status code = " + Result.StatusCode);
Items.GroupPages.CurrentPage = items.GroupRequestLog;
EndIf;
EndProcedure
#EndRegion
&AtServer
Procedure OnCreateAtServer(Cancel, StandardProcessing)
EndProcedure
&AtClient
Procedure BucketOnChange(Item)
BucketOnChangeAtServer();
EndProcedure
&AtServer
Procedure BucketOnChangeAtServer()
Object.AccessKey = Object.Bucket.AccessKeyId;
Object.SecretKey = Object.Bucket.SecretAccessKey;
Object.BucketName = Object.Bucket.BucketName;
Object.Region = Object.Bucket.Region;
Object.Service = "s3";
Object.MaxKeysPerRequest = Object.Bucket.MaxKeysPerRequest;
Object.PublicEndpoint = Object.Bucket.PublicEndpoint;
Object.m_Prefix = Object.Bucket.InitialFolder;
Items.BucketObjectsContextMenuOpenInBrowser.Visible = ValueIsFilled(Object.PublicEndpoint);
ListObjectsAtServer(Object.m_Prefix);
EndProcedure
&AtClient
Procedure ListObjects(Command)
ListObjectsAtServer(Object.m_Prefix);
EndProcedure
&AtClient
Procedure BucketObjectsSelection(Item, SelectedRow, Field, StandardProcessing)
If Not Item.CurrentData = Undefined Then
If Item.CurrentData.isFolder Then
SelectedFolder = Item.CurrentData.Key;
ListObjectsAtServer(SelectedFolder);
EndIf;
EndIf;
EndProcedure
&AtClient
Procedure ReturnOneLevelUp(Command)
CurrentFolder = Object.m_Prefix;
CurrentFolder = Left(CurrentFolder, StrFind(CurrentFolder, "/", SearchDirection.FromEnd,, 2));
ListObjectsAtServer(CurrentFolder);
EndProcedure
&AtClient
Procedure CreateNewFolder(Command)
ToolTip = "Enter a name for the new folder";
Notify = New NotifyDescription("CreateNewFolderAfterInputString", ThisObject);
ShowInputString(Notify, "", ToolTip, 0, False);
EndProcedure
&AtClient
Procedure CreateNewFolderAfterInputString(Sring, Parameters) Export
If Sring <> Undefined Then
CreateNewFolderAtServer(Sring);
EndIf;
EndProcedure
&AtServer
Procedure CreateNewFolderAtServer(ChosenFolderName)
Prefix = StrReplace(EncodeString(Object.m_Prefix + ChosenFolderName + "/", StringEncodingMethod.URLEncoding), "%2F", "/");
ExecuteCommand("UploadFile", Prefix);
ListObjectsAtServer(Object.m_Prefix);
EndProcedure
&AtClient
Procedure UploadNewFile(Command)
Notification = New NotifyDescription("UploadFileHereCompletion", ThisObject);
Dialog = New FileDialog(FileDialogMode.Open);
BeginPutFile(Notification, , Dialog, True, ThisObject.UUID);
EndProcedure
&AtClient
Procedure UploadFileHereCompletion(Result, Address, ChosenFileName, ExtraParameters) Экспорт
If Result Then
UploadFileHereAtServer(Address, ChosenFileName);
Else
Message("The file was not selected!");
EndIf;
EndProcedure
&AtServer
Procedure UploadFileHereAtServer(Address, ChosenFileName)
Data = GetFromTempStorage(Address);
TempFileName = GetTempFileName();
Data.Write(TempFileName);
ShortFileName = Right(ChosenFileName, StrLen(ChosenFileName) - StrFind(ChosenFileName, "\", SearchDirection.FromEnd));
Prefix = StrReplace(EncodeString(Object.m_Prefix + ShortFileName, StringEncodingMethod.URLEncoding), "%2F", "/");
FileContentType = "image/png";
If StrEndsWith(ShortFileName, ".jpg") Then
FileContentType = "image/jpeg";
EndIf;
ExecuteCommand("UploadFile", Prefix, TempFileName, FileContentType);
ListObjectsAtServer(Object.m_Prefix);
Try
DeleteFiles(TempFileName);
Except
EndTry;
EndProcedure
&AtClient
Procedure OpenInBrowser(Command)
If Not Items.BucketObjects.CurrentData = Undefined Then
Url = Object.PublicEndpoint + Items.BucketObjects.CurrentData.Key;
RunAppAsync(Url,, False);
EndIf;
EndProcedure
&AtServer
Procedure DeleteObjectAtServer(ObjectShortName)
Prefix = StrReplace(EncodeString(Object.m_Prefix + ObjectShortName, StringEncodingMethod.URLEncoding), "%2F", "/");
ExecuteCommand("DeleteFile", Prefix);
ListObjectsAtServer(Object.m_Prefix);
EndProcedure
&AtClient
Procedure DeleteObject(Command)
If Not Items.BucketObjects.CurrentData = Undefined Then
Notification = New NotifyDescription("DeleteObjectConfirmation", ThisObject);
ShowQueryBox(Notification,
"Do you want to delete [" + Items.BucketObjects.CurrentData.ObjectShortName + "] object?",
QuestionDialogMode.YesNoCancel,
60, // timeout in seconds
DialogReturnCode.Cancel,
"Please confirm deletion"
);
EndIf;
EndProcedure
&AtClient
Procedure DeleteObjectConfirmation(Rez, Paramaters) Export
If Rez = DialogReturnCode.Yes Then
DeleteObjectAtServer(Items.BucketObjects.CurrentData.ObjectShortName);
EndIf;
EndProcedure

View File

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.13">
<Language uuid="ab579006-f582-4f94-8065-312326331e05">
<InternalInfo/>
<Properties>
<Name>Русский</Name>
<Comment/>
<ObjectBelonging>Adopted</ObjectBelonging>
<ExtendedConfigurationObject>af1b61ff-d1b9-4053-ad85-8259b6626adc</ExtendedConfigurationObject>
<LanguageCode>ru</LanguageCode>
</Properties>
</Language>
</MetaDataObject>

View File

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.13">
<Role uuid="15b5d659-1a77-4c3f-a005-b022aa485cc1">
<Properties>
<Name>S3_ОсновнаяРоль</Name>
<Synonym/>
<Comment/>
</Properties>
</Role>
</MetaDataObject>

BIN
s3-browser.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
s3-bucket-configuration.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB